@opengeni/db 0.28.9 → 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.
- package/dist/attached-browser-devices.d.ts +42 -0
- package/dist/attempt-tool-catalogs.d.ts +16 -0
- package/dist/browser-auth.d.ts +91 -0
- package/dist/browser-identities.d.ts +128 -0
- package/dist/browser-sessions.d.ts +272 -0
- package/dist/browser-state-artifacts.d.ts +17 -0
- package/dist/capability-components.d.ts +37 -0
- package/dist/capability-integrations.d.ts +192 -0
- package/dist/chunk-F5FT7BEZ.js +3535 -0
- package/dist/chunk-F5FT7BEZ.js.map +1 -0
- package/dist/chunk-ISI2TIUG.js +639 -0
- package/dist/chunk-ISI2TIUG.js.map +1 -0
- package/dist/chunk-MWDVXQOL.js +11639 -0
- package/dist/chunk-MWDVXQOL.js.map +1 -0
- package/dist/chunk-NBE6CHRI.js +955 -0
- package/dist/chunk-NBE6CHRI.js.map +1 -0
- package/dist/{chunk-VHBFHMPC.js → chunk-YHZXQ7HP.js} +754 -11
- package/dist/chunk-YHZXQ7HP.js.map +1 -0
- package/dist/codemode-operations.d.ts +117 -0
- package/dist/codex-token-resolver.d.ts +2 -2
- package/dist/company-profile-schema.d.ts +798 -0
- package/dist/company-profile.d.ts +268 -0
- package/dist/computer-sessions.d.ts +109 -0
- package/dist/connection-token-resolver.d.ts +9 -4
- package/dist/database.d.ts +52 -3
- package/dist/editable-artifact-durable-export.d.ts +153 -0
- package/dist/editable-artifact-durable-export.js +788 -0
- package/dist/editable-artifact-durable-export.js.map +1 -0
- package/dist/editable-artifact-materialization.d.ts +123 -0
- package/dist/editable-artifacts-schema.d.ts +4152 -0
- package/dist/editable-artifacts.d.ts +610 -0
- package/dist/editable-artifacts.js +26 -0
- package/dist/editable-artifacts.js.map +1 -0
- package/dist/generated-images.d.ts +139 -0
- package/dist/index.d.ts +698 -111
- package/dist/index.js +27573 -10322
- package/dist/index.js.map +1 -1
- package/dist/insights.d.ts +51 -4
- package/dist/integration-bindings.d.ts +70 -0
- package/dist/integration-features.d.ts +99 -0
- package/dist/interaction-revisions.d.ts +3 -0
- package/dist/interaction-schema.d.ts +5372 -0
- package/dist/knowledge-source-sync-schema.d.ts +1679 -0
- package/dist/knowledge-source-sync.d.ts +274 -0
- package/dist/memory-governance.d.ts +2 -2
- package/dist/memory-slack-delivery.d.ts +101 -0
- package/dist/new-session-drafts.d.ts +2 -2
- package/dist/pack-components.d.ts +76 -0
- package/dist/pack-installations.d.ts +86 -0
- package/dist/persistence-errors.d.ts +3 -3
- package/dist/plugin-packages.d.ts +126 -0
- package/dist/preference-registry.d.ts +1 -1
- package/dist/provision-roles.d.ts +9 -1
- package/dist/provision-roles.js +1 -1
- package/dist/runtime-posture.d.ts +18 -6
- package/dist/schema.d.ts +18342 -9099
- package/dist/schema.js +165 -1
- package/dist/scoped-knowledge.d.ts +97 -1
- package/dist/session-control.d.ts +4 -4
- package/dist/session-queue-commands.d.ts +19 -11
- package/dist/session-realtime-context.d.ts +2 -2
- package/dist/session-realtime-ledger.d.ts +4 -4
- package/dist/session-realtime-mirror.d.ts +2 -2
- package/dist/session-realtime-state.d.ts +1 -1
- package/dist/session-realtime-terminal.d.ts +1 -1
- package/dist/session-realtime.d.ts +7 -7
- package/dist/session-tool-call-settlement.d.ts +1 -1
- package/dist/slack-user-link-access.d.ts +54 -0
- package/dist/transcription-recordings.d.ts +2 -2
- package/dist/turn-initiator.d.ts +2 -2
- package/dist/video-generation.d.ts +216 -0
- package/dist/video-generation.js +66 -0
- package/dist/video-generation.js.map +1 -0
- package/dist/workspace-artifacts.d.ts +1 -1
- package/dist/workspace-instruction-policies.d.ts +1 -1
- package/dist/workspace-learning-policy-schema.d.ts +932 -0
- package/dist/workspace-learning-policy.d.ts +161 -0
- package/drizzle/0183_model_call_provider_cost_estimates.sql +39 -0
- package/drizzle/0184_sandbox_drain_teardown_fence.sql +682 -0
- package/drizzle/0185_temporal_schedule_cleanup_outbox.sql +168 -0
- package/drizzle/0186_sandbox_capture_provider_contract.sql +400 -0
- package/drizzle/0187_generated_image_artifacts.sql +173 -0
- package/drizzle/0188_image_generation_retention_failure.sql +25 -0
- package/drizzle/0189_retained_session_image_formats.sql +13 -0
- package/drizzle/0190_timeline_annotations.sql +31 -0
- package/drizzle/0191_editable_artifact_engine.sql +3853 -0
- package/drizzle/0192_editable_artifact_live_tickets.sql +338 -0
- package/drizzle/0193_editable_artifact_authorization.sql +190 -0
- package/drizzle/0194_editable_artifact_durable_exports.sql +160 -0
- package/drizzle/0195_editable_artifact_import_authorization.sql +203 -0
- package/drizzle/0196_rig_provider_images.sql +152 -0
- package/drizzle/0197_knowledge_source_sync_schedules.sql +523 -0
- package/drizzle/0198_memory_slack_publication_delivery.sql +393 -0
- package/drizzle/0199_workspace_learning_policy.sql +980 -0
- package/drizzle/0201_company_profile_authority.sql +849 -0
- package/drizzle/0202_document_index_checkpoints.sql +85 -0
- package/drizzle/0203_durable_video_generation.sql +353 -0
- package/drizzle/0204_video_generation_funding.sql +44 -0
- package/drizzle/0205_attempt_tool_catalogs.sql +230 -0
- package/drizzle/0206_browser_sessions.sql +646 -0
- package/drizzle/0207_browser_identities.sql +379 -0
- package/drizzle/0208_attached_browser_devices.sql +165 -0
- package/drizzle/0209_computer_sessions.sql +575 -0
- package/drizzle/0210_browser_auth_network_interventions.sql +441 -0
- package/drizzle/0211_editable_artifact_session_links.sql +58 -0
- package/drizzle/0212_slack_installation_bindings.sql +348 -0
- package/drizzle/0213_slack_user_link_access_requests.sql +177 -0
- package/drizzle/0214_session_activity_commit_gate.sql +262 -0
- package/drizzle/0215_capabilities_platform.sql +980 -0
- package/drizzle/0216_pack_component_ownership.sql +235 -0
- package/drizzle/0217_capability_definition_delete_authority.sql +32 -0
- package/package.json +18 -5
- package/src/attached-browser-devices.ts +371 -0
- package/src/attempt-tool-catalogs.ts +131 -0
- package/src/browser-auth.ts +1896 -0
- package/src/browser-identities.ts +1168 -0
- package/src/browser-sessions.ts +2005 -0
- package/src/browser-state-artifacts.ts +59 -0
- package/src/capability-components.ts +166 -0
- package/src/capability-integrations.ts +1663 -0
- package/src/codemode-operations.ts +674 -0
- package/src/company-profile-schema.ts +143 -0
- package/src/company-profile.ts +968 -0
- package/src/computer-sessions.ts +1130 -0
- package/src/connection-token-resolver.ts +270 -25
- package/src/database.ts +427 -23
- package/src/editable-artifact-durable-export.ts +1201 -0
- package/src/editable-artifact-materialization.ts +893 -0
- package/src/editable-artifacts-schema.ts +879 -0
- package/src/editable-artifacts.ts +5404 -0
- package/src/generated-images.ts +740 -0
- package/src/index.ts +5917 -1182
- package/src/insights.ts +160 -13
- package/src/integration-bindings.ts +455 -0
- package/src/integration-features.ts +859 -0
- package/src/interaction-revisions.ts +40 -0
- package/src/interaction-schema.ts +1303 -0
- package/src/knowledge-source-sync-schema.ts +192 -0
- package/src/knowledge-source-sync.ts +1922 -0
- package/src/memory-slack-delivery.ts +801 -0
- package/src/pack-components.ts +954 -0
- package/src/pack-installations.ts +929 -0
- package/src/persistence-errors.ts +4 -7
- package/src/plugin-packages.ts +1186 -0
- package/src/provision-roles.ts +302 -1
- package/src/runtime-posture-cli.ts +9 -0
- package/src/runtime-posture.ts +508 -5
- package/src/schema.ts +5117 -3119
- package/src/scoped-knowledge-schema.ts +1 -1
- package/src/scoped-knowledge.ts +655 -3
- package/src/session-control.ts +8 -5
- package/src/session-queue-commands.ts +187 -14
- package/src/session-realtime-context.ts +2 -2
- package/src/session-realtime-ledger.ts +3 -3
- package/src/session-realtime.ts +7 -7
- package/src/session-tool-call-settlement.ts +9 -0
- package/src/slack-user-link-access.ts +702 -0
- package/src/video-generation.ts +1452 -0
- package/src/workspace-learning-policy-schema.ts +139 -0
- package/src/workspace-learning-policy.ts +595 -0
- package/dist/chunk-P6CUHXQZ.js +0 -7248
- package/dist/chunk-P6CUHXQZ.js.map +0 -1
- package/dist/chunk-VHBFHMPC.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/schema.ts","../src/lossless-columns.ts","../src/lossless-json.ts","../src/editable-artifacts-schema.ts","../src/workspace-instruction-policies-schema.ts","../src/company-profile-schema.ts","../src/workspace-learning-policy-schema.ts","../src/preference-registry-schema.ts","../src/memory-governance-schema.ts","../src/scoped-knowledge-schema.ts","../src/knowledge-source-sync-schema.ts","../src/transcription-recordings-schema.ts","../src/interaction-schema.ts"],"sourcesContent":["import type {\n AttemptToolCatalog,\n AttemptToolResult,\n DraftTimelineAnnotation,\n FirstPartyMcpToolName,\n McpPersonalConnectionDelegation,\n McpServerConnectionRef,\n RigProviderImages,\n SessionMcpApprovalPolicy,\n SlackUserLinkAccessRequest,\n TimelineAnnotation,\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 customType,\n foreignKey,\n index,\n integer,\n jsonb,\n numeric,\n pgTable,\n primaryKey,\n text,\n timestamp,\n unique,\n uniqueIndex,\n uuid,\n} from \"drizzle-orm/pg-core\";\nimport { losslessCodecVersion, losslessJsonb, losslessText } from \"./lossless-columns\";\n\nexport * from \"./editable-artifacts-schema\";\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. Updated-order\n// discovery reads the committed value through plain MVCC. Semantic writers\n// advance it once at their explicit commit gate, after every other deferred\n// constraint and row lock has settled.\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\n// One durable routing authority per installed Slack team. The active partial\n// unique index is the database fence that prevents a team from being routed to\n// two OpenGeni workspaces. Legacy ambiguous rows are retained as quarantined\n// evidence instead of deleting credentials or guessing a winner.\nexport const slackInstallationBindings = pgTable(\n \"slack_installation_bindings\",\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 slackTeamName: text(\"slack_team_name\").notNull(),\n botId: text(\"bot_id\").notNull(),\n botUserId: text(\"bot_user_id\").notNull(),\n botDisplayName: text(\"bot_display_name\").notNull(),\n state: text(\"state\").$type<\"active\" | \"quarantined\">().notNull(),\n quarantineReason: text(\"quarantine_reason\"),\n version: integer(\"version\").notNull().default(1),\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 connection: uniqueIndex(\"slack_installation_bindings_connection_uq\").on(table.connectionId),\n activeTeam: uniqueIndex(\"slack_installation_bindings_active_team_uq\")\n .on(table.slackTeamId)\n .where(sql`${table.state} = 'active'`),\n workspaceState: index(\"slack_installation_bindings_workspace_state_idx\").on(\n table.workspaceId,\n table.state,\n table.updatedAt,\n ),\n workspaceAccount: foreignKey({\n name: \"slack_installation_bindings_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n stateValid: check(\n \"slack_installation_bindings_state_check\",\n sql`${table.state} in ('active', 'quarantined')`,\n ),\n quarantineConsistent: check(\n \"slack_installation_bindings_quarantine_check\",\n sql`(${table.state} = 'active' and ${table.quarantineReason} is null)\n or (${table.state} = 'quarantined' and length(btrim(${table.quarantineReason})) > 0)`,\n ),\n identityBounded: check(\n \"slack_installation_bindings_identity_check\",\n sql`octet_length(${table.slackTeamId}) between 1 and 64\n and octet_length(${table.slackTeamName}) between 1 and 256\n and octet_length(${table.botId}) between 1 and 64\n and octet_length(${table.botUserId}) between 1 and 64\n and ${table.botDisplayName} = 'OpenGeni'`,\n ),\n versionPositive: check(\"slack_installation_bindings_version_check\", sql`${table.version} > 0`),\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 slackUserLinkAccessRequests = pgTable(\n \"slack_user_link_access_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 tokenDigest: text(\"token_digest\").notNull(),\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 subjectLabel: text(\"subject_label\"),\n status: text(\"status\").notNull().default(\"prepared\"),\n version: integer(\"version\").notNull().default(1),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n requestedAt: timestamp(\"requested_at\", { withTimezone: true }),\n decidedAt: timestamp(\"decided_at\", { withTimezone: true }),\n decisionBySubjectId: text(\"decision_by_subject_id\"),\n approvedRole: text(\"approved_role\"),\n approvedPermissions: jsonb(\"approved_permissions\").$type<string[]>(),\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 workspaceAccount: foreignKey({\n name: \"slack_user_link_access_requests_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n tenantIdentity: unique(\"slack_user_link_access_requests_tenant_uq\").on(\n table.id,\n table.workspaceId,\n table.accountId,\n ),\n tokenDigestUnique: uniqueIndex(\"slack_user_link_access_requests_token_digest_uq\").on(\n table.tokenDigest,\n ),\n activePrincipal: uniqueIndex(\"slack_user_link_access_requests_active_principal_uq\")\n .on(table.workspaceId, table.connectionId, table.slackUserId, table.subjectId)\n .where(sql`${table.status} in ('prepared', 'pending')`),\n workspacePending: index(\"slack_user_link_access_requests_workspace_pending_idx\").on(\n table.workspaceId,\n table.status,\n table.expiresAt,\n table.createdAt,\n ),\n subjectLookup: index(\"slack_user_link_access_requests_subject_idx\").on(\n table.workspaceId,\n table.subjectId,\n table.id,\n ),\n identityValid: check(\n \"slack_user_link_access_requests_identity_check\",\n sql`length(${table.tokenDigest}) = 64\n and ${table.tokenDigest} ~ '^[0-9a-f]{64}$'\n and length(${table.slackTeamId}) between 1 and 64\n and length(${table.slackUserId}) between 1 and 64\n and length(${table.subjectId}) between 1 and 512\n and (${table.subjectLabel} is null or length(${table.subjectLabel}) between 1 and 512)\n and ${table.version} > 0`,\n ),\n statusValid: check(\n \"slack_user_link_access_requests_status_check\",\n sql`${table.status} in ('prepared', 'pending', 'completed', 'denied', 'cancelled', 'expired')`,\n ),\n lifecycleValid: check(\n \"slack_user_link_access_requests_lifecycle_check\",\n sql`(${table.status} = 'prepared' and ${table.requestedAt} is null and ${table.decidedAt} is null and ${table.completedAt} is null)\n or (${table.status} = 'pending' and ${table.requestedAt} is not null and ${table.decidedAt} is null and ${table.completedAt} is null)\n or (${table.status} = 'completed' and ${table.completedAt} is not null)\n or (${table.status} in ('denied', 'cancelled', 'expired') and ${table.decidedAt} is not null and ${table.completedAt} is null)`,\n ),\n }),\n);\n\nexport const slackUserLinkAccessRequestOperations = pgTable(\n \"slack_user_link_access_request_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 requestId: uuid(\"request_id\").notNull(),\n actorSubjectId: text(\"actor_subject_id\").notNull(),\n operation: text(\"operation\").notNull(),\n idempotencyKey: text(\"idempotency_key\").notNull(),\n requestDigest: text(\"request_digest\").notNull(),\n expectedVersion: integer(\"expected_version\").notNull(),\n resultVersion: integer(\"result_version\").notNull(),\n resultStatus: text(\"result_status\").notNull(),\n result: jsonb(\"result\").$type<SlackUserLinkAccessRequest>().notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"slack_user_link_access_request_operations_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n requestTenant: foreignKey({\n name: \"slack_user_link_access_request_operations_request_tenant_fk\",\n columns: [table.requestId, table.workspaceId, table.accountId],\n foreignColumns: [\n slackUserLinkAccessRequests.id,\n slackUserLinkAccessRequests.workspaceId,\n slackUserLinkAccessRequests.accountId,\n ],\n }).onDelete(\"cascade\"),\n idempotency: uniqueIndex(\"slack_user_link_access_request_operations_idempotency_uq\").on(\n table.requestId,\n table.actorSubjectId,\n table.operation,\n table.idempotencyKey,\n ),\n resultVersionUnique: uniqueIndex(\n \"slack_user_link_access_request_operations_result_version_uq\",\n ).on(table.requestId, table.resultVersion),\n identityValid: check(\n \"slack_user_link_access_request_operations_identity_check\",\n sql`length(${table.actorSubjectId}) between 1 and 512\n and length(${table.idempotencyKey}) between 1 and 200\n and ${table.idempotencyKey} = btrim(${table.idempotencyKey})\n and length(${table.requestDigest}) = 64\n and ${table.requestDigest} ~ '^[0-9a-f]{64}$'\n and ${table.expectedVersion} > 0\n and ${table.resultVersion} = ${table.expectedVersion} + 1\n and ${table.operation} in ('request', 'cancel', 'approve', 'deny')\n and ${table.resultStatus} in ('pending', 'completed', 'denied', 'cancelled')\n and jsonb_typeof(${table.result}) = 'object'\n and ${table.result} ?& array[\n 'id', 'workspaceId', 'workspaceDisplayName', 'subjectLabel', 'status', 'version',\n 'expiresAt', 'requestedAt', 'decidedAt', 'completedAt', 'createdAt', 'updatedAt'\n ]\n and ${table.result} - array[\n 'id', 'workspaceId', 'workspaceDisplayName', 'subjectLabel', 'status', 'version',\n 'expiresAt', 'requestedAt', 'decidedAt', 'completedAt', 'createdAt', 'updatedAt'\n ] = '{}'::jsonb\n and jsonb_typeof(${table.result}->'id') = 'string'\n and jsonb_typeof(${table.result}->'workspaceId') = 'string'\n and jsonb_typeof(${table.result}->'workspaceDisplayName') in ('string', 'null')\n and jsonb_typeof(${table.result}->'subjectLabel') in ('string', 'null')\n and jsonb_typeof(${table.result}->'status') = 'string'\n and jsonb_typeof(${table.result}->'version') = 'number'\n and jsonb_typeof(${table.result}->'expiresAt') = 'string'\n and jsonb_typeof(${table.result}->'requestedAt') in ('string', 'null')\n and jsonb_typeof(${table.result}->'decidedAt') in ('string', 'null')\n and jsonb_typeof(${table.result}->'completedAt') in ('string', 'null')\n and jsonb_typeof(${table.result}->'createdAt') = 'string'\n and jsonb_typeof(${table.result}->'updatedAt') = 'string'\n and ${table.result}->>'id' = ${table.requestId}::text\n and ${table.result}->>'workspaceId' = ${table.workspaceId}::text\n and ${table.result}->>'status' = ${table.resultStatus}\n and ${table.result}->'version' = to_jsonb(${table.resultVersion})`,\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\nexport const memorySlackPublicationConfigurations = pgTable(\n \"memory_slack_publication_configurations\",\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 revision: integer(\"revision\").notNull(),\n enabled: boolean(\"enabled\").notNull(),\n connectionId: uuid(\"connection_id\"),\n slackTeamId: text(\"slack_team_id\"),\n slackChannelId: text(\"slack_channel_id\"),\n slackChannelName: text(\"slack_channel_name\"),\n autoImportances: text(\"auto_importances\").array().notNull().default([\"major\"]),\n reviewImportances: text(\"review_importances\").array().notNull().default([\"normal\"]),\n createdBySubjectId: text(\"created_by_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceRevision: uniqueIndex(\n \"memory_slack_publication_configurations_workspace_revision_uq\",\n ).on(table.workspaceId, table.revision),\n workspaceCreated: index(\"memory_slack_publication_configurations_workspace_created_idx\").on(\n table.workspaceId,\n table.revision,\n ),\n revisionValid: check(\n \"memory_slack_publication_configurations_revision_check\",\n sql`${table.revision} > 0`,\n ),\n destinationValid: check(\n \"memory_slack_publication_configurations_destination_check\",\n sql`not ${table.enabled} or (\n ${table.connectionId} is not null\n and octet_length(${table.slackTeamId}) between 1 and 64\n and octet_length(${table.slackChannelId}) between 1 and 64\n )`,\n ),\n channelNameValid: check(\n \"memory_slack_publication_configurations_channel_name_check\",\n sql`${table.slackChannelName} is null\n or octet_length(${table.slackChannelName}) between 1 and 256`,\n ),\n policyValid: check(\n \"memory_slack_publication_configurations_policy_check\",\n sql`${table.autoImportances} <@ array['major', 'normal', 'minor']::text[]\n and ${table.reviewImportances} <@ array['major', 'normal', 'minor']::text[]\n and cardinality(${table.autoImportances}) <= 3\n and cardinality(${table.reviewImportances}) <= 3\n and not (${table.autoImportances} && ${table.reviewImportances})`,\n ),\n actorValid: check(\n \"memory_slack_publication_configurations_actor_check\",\n sql`octet_length(${table.createdBySubjectId}) between 1 and 1024`,\n ),\n }),\n);\n\nexport const memorySlackPublications = pgTable(\n \"memory_slack_publications\",\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 configurationId: uuid(\"configuration_id\")\n .notNull()\n .references(() => memorySlackPublicationConfigurations.id, { onDelete: \"restrict\" }),\n configurationRevision: integer(\"configuration_revision\").notNull(),\n connectionId: uuid(\"connection_id\").notNull(),\n slackTeamId: text(\"slack_team_id\").notNull(),\n slackChannelId: text(\"slack_channel_id\").notNull(),\n sourceType: text(\"source_type\").$type<\"workspace_memory\" | \"durable_learning\">().notNull(),\n sourceId: text(\"source_id\").notNull(),\n sourceVersion: text(\"source_version\"),\n sourceIdempotencyKey: text(\"source_idempotency_key\").notNull(),\n projection: jsonb(\"projection\").$type<Record<string, unknown>>().notNull(),\n projectionSha256: text(\"projection_sha256\").notNull(),\n importance: text(\"importance\").$type<\"major\" | \"normal\" | \"minor\">().notNull(),\n deliveryMode: text(\"delivery_mode\").$type<\"auto\" | \"review\">().notNull(),\n state: text(\"state\")\n .$type<\n | \"review_pending\"\n | \"queued\"\n | \"delivering\"\n | \"retry_wait\"\n | \"delivered\"\n | \"rejected\"\n | \"failed\"\n | \"cancelled\"\n >()\n .notNull(),\n operationId: uuid(\"operation_id\").notNull(),\n initiatorKind: text(\"initiator_kind\").$type<\"human\" | \"agent\" | \"service\">().notNull(),\n initiatorSubjectId: text(\"initiator_subject_id\").notNull(),\n initiatingHumanSubjectId: text(\"initiating_human_subject_id\"),\n sessionId: uuid(\"session_id\"),\n turnId: uuid(\"turn_id\"),\n attemptId: uuid(\"attempt_id\"),\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 slackMessageTimestamp: text(\"slack_message_timestamp\"),\n deliveredAt: timestamp(\"delivered_at\", { withTimezone: true }),\n terminalAt: timestamp(\"terminal_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 source: uniqueIndex(\"memory_slack_publications_source_uq\").on(\n table.workspaceId,\n table.sourceIdempotencyKey,\n ),\n operation: uniqueIndex(\"memory_slack_publications_operation_uq\").on(\n table.workspaceId,\n table.operationId,\n ),\n claim: index(\"memory_slack_publications_claim_idx\").on(\n table.state,\n table.retryAt,\n table.createdAt,\n table.id,\n ),\n workspaceHistory: index(\"memory_slack_publications_workspace_history_idx\").on(\n table.workspaceId,\n table.createdAt,\n table.id,\n ),\n sourceTypeValid: check(\n \"memory_slack_publications_source_type_check\",\n sql`${table.sourceType} in ('workspace_memory', 'durable_learning')`,\n ),\n sourceValid: check(\n \"memory_slack_publications_source_check\",\n sql`octet_length(${table.sourceId}) between 1 and 1024\n and (${table.sourceVersion} is null or octet_length(${table.sourceVersion}) between 1 and 512)\n and octet_length(${table.sourceIdempotencyKey}) between 1 and 256`,\n ),\n projectionValid: check(\n \"memory_slack_publications_projection_check\",\n sql`jsonb_typeof(${table.projection}) = 'object'\n and octet_length(${table.projection}::text) between 2 and 8192\n and ${table.projectionSha256} ~ '^[0-9a-f]{64}$'`,\n ),\n distributionValid: check(\n \"memory_slack_publications_distribution_check\",\n sql`${table.importance} in ('major', 'normal', 'minor')\n and ${table.deliveryMode} in ('auto', 'review')`,\n ),\n stateValid: check(\n \"memory_slack_publications_state_check\",\n sql`${table.state} in (\n 'review_pending', 'queued', 'delivering', 'retry_wait',\n 'delivered', 'rejected', 'failed', 'cancelled'\n )`,\n ),\n destinationValid: check(\n \"memory_slack_publications_destination_check\",\n sql`${table.configurationRevision} > 0\n and octet_length(${table.slackTeamId}) between 1 and 64\n and octet_length(${table.slackChannelId}) between 1 and 64`,\n ),\n initiatorValid: check(\n \"memory_slack_publications_initiator_check\",\n sql`${table.initiatorKind} in ('human', 'agent', 'service')\n and octet_length(${table.initiatorSubjectId}) between 1 and 1024\n and (${table.initiatingHumanSubjectId} is null\n or octet_length(${table.initiatingHumanSubjectId}) between 1 and 1024)`,\n ),\n claimValid: check(\n \"memory_slack_publications_claim_check\",\n sql`(${table.state} = 'delivering'\n and ${table.claimHolderId} is not null\n and ${table.claimExpiresAt} is not null\n and ${table.retryAt} is null)\n or (${table.state} = 'retry_wait'\n and ${table.claimHolderId} is null\n and ${table.claimExpiresAt} is null\n and ${table.retryAt} is not null)\n or (${table.state} not in ('delivering', 'retry_wait')\n and ${table.claimHolderId} is null\n and ${table.claimExpiresAt} is null\n and ${table.retryAt} is null)`,\n ),\n attemptValid: check(\"memory_slack_publications_attempt_check\", sql`${table.attemptCount} >= 0`),\n errorValid: check(\n \"memory_slack_publications_error_check\",\n sql`${table.lastErrorCode} is null or octet_length(${table.lastErrorCode}) between 1 and 128`,\n ),\n }),\n);\n\nexport const memorySlackPublicationReceipts = pgTable(\n \"memory_slack_publication_receipts\",\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 publicationId: uuid(\"publication_id\")\n .notNull()\n .references(() => memorySlackPublications.id, { onDelete: \"cascade\" }),\n sequence: integer(\"sequence\").notNull(),\n kind: text(\"kind\")\n .$type<\n | \"enqueued\"\n | \"review_approved\"\n | \"review_rejected\"\n | \"delivery_claimed\"\n | \"retry_scheduled\"\n | \"delivered\"\n | \"failed\"\n | \"cancelled\"\n | \"manual_retry\"\n >()\n .notNull(),\n state: text(\"state\")\n .$type<\n | \"review_pending\"\n | \"queued\"\n | \"delivering\"\n | \"retry_wait\"\n | \"delivered\"\n | \"rejected\"\n | \"failed\"\n | \"cancelled\"\n >()\n .notNull(),\n attemptNumber: integer(\"attempt_number\").notNull(),\n actorKind: text(\"actor_kind\").$type<\"human\" | \"agent\" | \"service\">().notNull(),\n actorSubjectId: text(\"actor_subject_id\").notNull(),\n operationId: uuid(\"operation_id\").notNull(),\n errorCode: text(\"error_code\"),\n retryAt: timestamp(\"retry_at\", { withTimezone: true }),\n slackChannelId: text(\"slack_channel_id\"),\n slackMessageTimestamp: text(\"slack_message_timestamp\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n sequenceUnique: uniqueIndex(\"memory_slack_publication_receipts_sequence_uq\").on(\n table.publicationId,\n table.sequence,\n ),\n workspaceHistory: index(\"memory_slack_publication_receipts_workspace_history_idx\").on(\n table.workspaceId,\n table.publicationId,\n table.sequence,\n ),\n kindValid: check(\n \"memory_slack_publication_receipts_kind_check\",\n sql`${table.kind} in (\n 'enqueued', 'review_approved', 'review_rejected', 'delivery_claimed',\n 'retry_scheduled', 'delivered', 'failed', 'cancelled', 'manual_retry'\n )`,\n ),\n stateValid: check(\n \"memory_slack_publication_receipts_state_check\",\n sql`${table.state} in (\n 'review_pending', 'queued', 'delivering', 'retry_wait',\n 'delivered', 'rejected', 'failed', 'cancelled'\n )`,\n ),\n attemptValid: check(\n \"memory_slack_publication_receipts_attempt_check\",\n sql`${table.sequence} > 0 and ${table.attemptNumber} >= 0`,\n ),\n actorValid: check(\n \"memory_slack_publication_receipts_actor_check\",\n sql`${table.actorKind} in ('human', 'agent', 'service')\n and octet_length(${table.actorSubjectId}) between 1 and 1024`,\n ),\n errorValid: check(\n \"memory_slack_publication_receipts_error_check\",\n sql`${table.errorCode} is null or octet_length(${table.errorCode}) between 1 and 128`,\n ),\n providerValid: check(\n \"memory_slack_publication_receipts_provider_check\",\n sql`((${table.slackChannelId} is null) = (${table.slackMessageTimestamp} is null))\n and (${table.slackChannelId} is null\n or octet_length(${table.slackChannelId}) between 1 and 64)\n and (${table.slackMessageTimestamp} is null\n or octet_length(${table.slackMessageTimestamp}) between 1 and 64)`,\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: losslessText(\"initial_message\").notNull(),\n initialMessageCodecVersion: losslessCodecVersion(\"initial_message_codec_version\"),\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 once by the explicit transaction commit gate whenever canonical\n // updated_at activity advances. Raw delta-only writers intentionally omit\n // updated_at and therefore do not allocate revisions.\n activityRevision: bigint(\"activity_revision\", { mode: \"number\" }).notNull().default(0),\n // Transaction ownership marker between the cheap row trigger and the\n // once-per-transaction commit gate. Committed rows must always be null.\n activityRevisionPendingXid: bigint(\"activity_revision_pending_xid\", { mode: \"bigint\" }),\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 workspaceActivityPending: index(\"sessions_workspace_activity_pending_idx\")\n .on(table.workspaceId, table.activityRevisionPendingXid, table.id)\n .where(sql`${table.activityRevisionPendingXid} is not null`),\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: losslessText(\"text\"),\n textCodecVersion: losslessCodecVersion(\"text_codec_version\"),\n payload: losslessJsonb(\"payload\").$type<Record<string, unknown>>().notNull().default({}),\n payloadCodecVersion: losslessCodecVersion(\"payload_codec_version\"),\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 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 scopeIdentity: uniqueIndex(\"files_scope_id_uq\").on(\n table.accountId,\n table.workspaceId,\n table.id,\n ),\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\n/** Permanent generated-image correlation; canonical bytes stay in `files`. */\nexport const generatedImageArtifacts = pgTable(\n \"generated_image_artifacts\",\n {\n artifactId: uuid(\"artifact_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 sessionId: uuid(\"session_id\").references(() => sessions.id, { onDelete: \"set null\" }),\n // Turn/attempt foreign keys are installed by the migration; those tables\n // are declared later in this monolithic schema module.\n turnId: uuid(\"turn_id\"),\n attemptId: uuid(\"attempt_id\"),\n uploadId: uuid(\"upload_id\").references(() => fileUploads.id, {\n onDelete: \"set null\",\n }),\n settlementKey: text(\"settlement_key\").notNull(),\n toolCallId: text(\"tool_call_id\").notNull(),\n sourceStrategy: text(\"source_strategy\").$type<\"native_hosted\" | \"provider_adapter\">().notNull(),\n providerId: text(\"provider_id\").notNull(),\n providerBindingHash: text(\"provider_binding_hash\").notNull(),\n providerItemId: text(\"provider_item_id\"),\n status: text(\"status\").$type<\"pending\" | \"ready\">().notNull().default(\"pending\"),\n mediaType: text(\"media_type\").notNull(),\n sizeBytes: bigint(\"size_bytes\", { mode: \"number\" }).notNull(),\n sha256: text(\"sha256\").notNull(),\n width: integer(\"width\").notNull(),\n height: integer(\"height\").notNull(),\n sandboxPath: text(\"sandbox_path\").notNull(),\n readyAt: timestamp(\"ready_at\", { withTimezone: true }),\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 settlementKey: uniqueIndex(\"generated_image_artifacts_settlement_key_uq\").on(\n table.workspaceId,\n table.settlementKey,\n ),\n sessionCreated: index(\"generated_image_artifacts_session_created_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.createdAt,\n table.artifactId,\n ),\n providerItem: uniqueIndex(\"generated_image_artifacts_provider_item_uq\")\n .on(table.workspaceId, table.providerId, table.providerBindingHash, table.providerItemId)\n .where(sql`${table.providerItemId} is not null`),\n workspaceAccount: foreignKey({\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n name: \"generated_image_artifacts_workspace_account_fk\",\n }).onDelete(\"cascade\"),\n workspaceFile: foreignKey({\n columns: [table.workspaceId, table.artifactId],\n foreignColumns: [files.workspaceId, files.id],\n name: \"generated_image_artifacts_workspace_file_fk\",\n }).onDelete(\"cascade\"),\n sourceStrategyValid: check(\n \"generated_image_artifacts_source_strategy_chk\",\n sql`${table.sourceStrategy} in ('native_hosted', 'provider_adapter')`,\n ),\n sourceShapeValid: check(\n \"generated_image_artifacts_source_shape_chk\",\n sql`(${table.sourceStrategy} = 'native_hosted' and ${table.providerItemId} is not null)\n or (${table.sourceStrategy} = 'provider_adapter' and ${table.providerItemId} is null)`,\n ),\n statusValid: check(\n \"generated_image_artifacts_status_chk\",\n sql`${table.status} in ('pending', 'ready')`,\n ),\n readyShapeValid: check(\n \"generated_image_artifacts_ready_shape_chk\",\n sql`(${table.status} = 'ready') = (${table.readyAt} is not null)`,\n ),\n mediaTypeValid: check(\n \"generated_image_artifacts_media_type_chk\",\n sql`${table.mediaType} in ('image/png', 'image/jpeg', 'image/webp')`,\n ),\n sizeValid: check(\n \"generated_image_artifacts_size_chk\",\n sql`${table.sizeBytes} > 0 and ${table.sizeBytes} <= 67108864`,\n ),\n sha256Valid: check(\n \"generated_image_artifacts_sha256_chk\",\n sql`${table.sha256} ~ '^[0-9a-f]{64}$'`,\n ),\n bindingHashValid: check(\n \"generated_image_artifacts_binding_hash_chk\",\n sql`${table.providerBindingHash} ~ '^[0-9a-f]{64}$'`,\n ),\n identityBoundsValid: check(\n \"generated_image_artifacts_identity_bounds_chk\",\n sql`${table.settlementKey} ~ '^[0-9a-f]{64}$'\n and octet_length(${table.toolCallId}) between 1 and 512\n and octet_length(${table.providerId}) between 1 and 128\n and (${table.providerItemId} is null or octet_length(${table.providerItemId}) between 1 and 512)\n and (${table.lastError} is null or octet_length(${table.lastError}) <= 16384)`,\n ),\n dimensionsValid: check(\n \"generated_image_artifacts_dimensions_chk\",\n sql`${table.width} between 1 and 16384 and ${table.height} between 1 and 16384 and (${table.width}::bigint * ${table.height}::bigint) <= 67108864`,\n ),\n sandboxPathValid: check(\n \"generated_image_artifacts_sandbox_path_chk\",\n sql`${table.sandboxPath} ~ '^/workspace/generated-images/generated-image-[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\\\\.(png|jpg|webp)$'`,\n ),\n }),\n);\n\n/** Paid non-native generation admission; prevents ambiguous automatic replay. */\nexport const imageGenerationOperations = pgTable(\n \"image_generation_operations\",\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 sessionId: uuid(\"session_id\").references(() => sessions.id, {\n onDelete: \"cascade\",\n }),\n turnId: uuid(\"turn_id\"),\n attemptId: uuid(\"attempt_id\"),\n operationKey: text(\"operation_key\").notNull(),\n toolCallId: text(\"tool_call_id\").notNull(),\n providerId: text(\"provider_id\").notNull(),\n providerBindingHash: text(\"provider_binding_hash\").notNull(),\n modelId: text(\"model_id\").notNull(),\n requestDigest: text(\"request_digest\").notNull(),\n expectedArtifactId: uuid(\"expected_artifact_id\").notNull(),\n status: text(\"status\")\n .$type<\n \"prepared\" | \"provider_started\" | \"completed\" | \"outcome_unknown\" | \"retention_failed\"\n >()\n .notNull()\n .default(\"prepared\"),\n providerStartedAt: timestamp(\"provider_started_at\", { withTimezone: true }),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\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 operationKey: uniqueIndex(\"image_generation_operations_operation_key_uq\").on(\n table.workspaceId,\n table.operationKey,\n ),\n sessionCreated: index(\"image_generation_operations_session_created_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.createdAt,\n table.id,\n ),\n workspaceAccount: foreignKey({\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n name: \"image_generation_operations_workspace_account_fk\",\n }).onDelete(\"cascade\"),\n statusValid: check(\n \"image_generation_operations_status_chk\",\n sql`${table.status} in ('prepared', 'provider_started', 'completed', 'outcome_unknown', 'retention_failed')`,\n ),\n digestValid: check(\n \"image_generation_operations_digest_chk\",\n sql`${table.operationKey} ~ '^[0-9a-f]{64}$'\n and ${table.providerBindingHash} ~ '^[0-9a-f]{64}$'\n and ${table.requestDigest} ~ '^[0-9a-f]{64}$'`,\n ),\n identityBoundsValid: check(\n \"image_generation_operations_identity_bounds_chk\",\n sql`octet_length(${table.toolCallId}) between 1 and 512\n and octet_length(${table.providerId}) between 1 and 128\n and octet_length(${table.modelId}) between 1 and 256\n and (${table.lastError} is null or octet_length(${table.lastError}) <= 16384)`,\n ),\n stateValid: check(\n \"image_generation_operations_state_chk\",\n sql`(${table.status} = 'prepared' and ${table.providerStartedAt} is null and ${table.completedAt} is null)\n or (${table.status} in ('provider_started', 'outcome_unknown', 'retention_failed') and ${table.providerStartedAt} is not null and ${table.completedAt} is null)\n or (${table.status} = 'completed' and ${table.providerStartedAt} is not null and ${table.completedAt} is not null)`,\n ),\n }),\n);\n\n/** Workspace policy for provider-neutral video generation. Disabled by default. */\nexport const workspaceVideoGenerationPolicies = pgTable(\n \"workspace_video_generation_policies\",\n {\n workspaceId: uuid(\"workspace_id\")\n .primaryKey()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n revision: bigint(\"revision\", { mode: \"number\" }).notNull().default(0),\n fundingSource: text(\"funding_source\").notNull().default(\"workspace_gateway\"),\n enabledModelIds: jsonb(\"enabled_model_ids\").$type<string[]>().notNull().default([]),\n defaultModelId: text(\"default_model_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 workspaceAccount: foreignKey({\n name: \"workspace_video_generation_policies_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n revisionValid: check(\n \"workspace_video_generation_policies_revision_chk\",\n sql`${table.revision} between 0 and 9007199254740991`,\n ),\n modelsValid: check(\n \"workspace_video_generation_policies_models_chk\",\n sql`jsonb_typeof(${table.enabledModelIds}) = 'array'\n and jsonb_array_length(${table.enabledModelIds}) <= 16\n and (${table.defaultModelId} is null or ${table.enabledModelIds} ? ${table.defaultModelId})`,\n ),\n fundingSourceValid: check(\n \"workspace_video_generation_policies_funding_source_chk\",\n sql`${table.fundingSource} in ('opengeni_credits', 'workspace_gateway')`,\n ),\n }),\n);\n\n/** Exact pending/ready accounting for permanent generated-video files. */\nexport const workspaceVideoGenerationQuotas = pgTable(\n \"workspace_video_generation_quotas\",\n {\n workspaceId: uuid(\"workspace_id\")\n .primaryKey()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n reservedBytes: bigint(\"reserved_bytes\", { mode: \"number\" }).notNull().default(0),\n readyBytes: bigint(\"ready_bytes\", { mode: \"number\" }).notNull().default(0),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"workspace_video_generation_quotas_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n nonnegative: check(\n \"workspace_video_generation_quotas_nonnegative_chk\",\n sql`${table.reservedBytes} >= 0 and ${table.readyBytes} >= 0`,\n ),\n }),\n);\n\n/**\n * Paid asynchronous provider operation. This aggregate owns recovery; the\n * originating session is nullable provenance and never owns its lifecycle.\n */\nexport const videoGenerationOperations = pgTable(\n \"video_generation_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 sessionId: uuid(\"session_id\").references(() => sessions.id, { onDelete: \"set null\" }),\n turnId: uuid(\"turn_id\"),\n attemptId: uuid(\"attempt_id\"),\n toolCallId: text(\"tool_call_id\").notNull(),\n admissionKey: text(\"admission_key\").notNull(),\n requestDigest: text(\"request_digest\").notNull(),\n promptDigest: text(\"prompt_digest\").notNull(),\n requestEncrypted: text(\"request_encrypted\"),\n modelId: text(\"model_id\").notNull(),\n sourceMode: text(\"source_mode\").notNull(),\n capabilityRevision: text(\"capability_revision\").notNull(),\n fundingSource: text(\"funding_source\").notNull().default(\"workspace_gateway\"),\n pricedCostMicros: bigint(\"priced_cost_micros\", { mode: \"number\" }).notNull().default(0),\n creditState: text(\"credit_state\").notNull().default(\"not_applicable\"),\n connectionId: uuid(\"connection_id\"),\n credentialVersion: integer(\"credential_version\").notNull(),\n credentialEncrypted: text(\"credential_encrypted\"),\n providerIdempotencyKey: text(\"provider_idempotency_key\").notNull(),\n providerJobId: text(\"provider_job_id\"),\n /** Exact provider start body, encrypted before the first network byte. */\n providerRequestEncrypted: text(\"provider_request_encrypted\"),\n /** Bearer URLs inside the frozen body are unusable after this instant. */\n providerRequestExpiresAt: timestamp(\"provider_request_expires_at\", { withTimezone: true }),\n expectedArtifactId: uuid(\"expected_artifact_id\").notNull(),\n expectedFileId: uuid(\"expected_file_id\").notNull(),\n reservedBytes: bigint(\"reserved_bytes\", { mode: \"number\" }).notNull(),\n quotaState: text(\"quota_state\").notNull().default(\"reserved\"),\n status: text(\"status\").notNull().default(\"preparing\"),\n admissionOutputState: text(\"admission_output_state\").notNull().default(\"pending\"),\n terminalUpdateState: text(\"terminal_update_state\").notNull().default(\"ineligible\"),\n terminalUpdateId: uuid(\"terminal_update_id\"),\n reconcileRevision: bigint(\"reconcile_revision\", { mode: \"number\" }).notNull().default(0),\n reconcileLeaseOwner: text(\"reconcile_lease_owner\"),\n reconcileLeaseExpiresAt: timestamp(\"reconcile_lease_expires_at\", { withTimezone: true }),\n nextReconcileAt: timestamp(\"next_reconcile_at\", { withTimezone: true }),\n providerRequestSentAt: timestamp(\"provider_request_sent_at\", { withTimezone: true }),\n providerStartedAt: timestamp(\"provider_started_at\", { withTimezone: true }),\n recoveryDeadlineAt: timestamp(\"recovery_deadline_at\", { withTimezone: true }).notNull(),\n terminalAt: timestamp(\"terminal_at\", { withTimezone: true }),\n privateDataEraseAfter: timestamp(\"private_data_erase_after\", { withTimezone: true }),\n boundedPublicReason: text(\"bounded_public_reason\"),\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 admission: uniqueIndex(\"video_generation_operations_admission_uq\").on(\n table.workspaceId,\n table.admissionKey,\n ),\n expectedArtifact: uniqueIndex(\"video_generation_operations_expected_artifact_uq\").on(\n table.workspaceId,\n table.expectedArtifactId,\n ),\n expectedFile: uniqueIndex(\"video_generation_operations_expected_file_uq\").on(\n table.workspaceId,\n table.expectedFileId,\n ),\n due: index(\"video_generation_operations_due_idx\").on(\n table.status,\n table.nextReconcileAt,\n table.id,\n ),\n workspaceCreated: index(\"video_generation_operations_workspace_created_idx\").on(\n table.workspaceId,\n table.createdAt,\n table.id,\n ),\n workspaceAccount: foreignKey({\n name: \"video_generation_operations_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n hashesValid: check(\n \"video_generation_operations_hashes_chk\",\n sql`${table.admissionKey} ~ '^[0-9a-f]{64}$'\n and ${table.requestDigest} ~ '^[0-9a-f]{64}$'\n and ${table.promptDigest} ~ '^[0-9a-f]{64}$'\n and ${table.capabilityRevision} ~ '^[0-9a-f]{64}$'`,\n ),\n shapeValid: check(\n \"video_generation_operations_shape_chk\",\n sql`octet_length(${table.toolCallId}) between 1 and 512\n and octet_length(${table.modelId}) between 1 and 256\n and octet_length(${table.providerIdempotencyKey}) between 1 and 128\n and ${table.sourceMode} in ('text','first_frame','first_and_last_frames','image_reference','video_reference')\n and ${table.reservedBytes} > 0 and ${table.reservedBytes} <= 536870912\n and (${table.boundedPublicReason} is null or octet_length(${table.boundedPublicReason}) <= 4000)\n and (${table.lastError} is null or octet_length(${table.lastError}) <= 16384)`,\n ),\n stateValid: check(\n \"video_generation_operations_state_chk\",\n sql`${table.status} in ('preparing','prepared','accepted','submission_uncertain','provider_started','retaining','completed','provider_failed','cancelled_before_submit','outcome_unknown','retention_failed')\n and ${table.admissionOutputState} in ('pending','recorded')\n and ${table.terminalUpdateState} in ('ineligible','pending','leased','delivered','suppressed')\n and ${table.quotaState} in ('reserved','ready','released')\n and ((${table.terminalAt} is not null) = (${table.status} in ('completed','provider_failed','cancelled_before_submit','outcome_unknown','retention_failed')))\n and (${table.status} <> 'submission_uncertain' or (${table.providerRequestEncrypted} is not null and ${table.providerRequestExpiresAt} is not null))\n and (${table.providerRequestEncrypted} is null or ${table.status} = 'submission_uncertain')\n and (${table.status} not in ('provider_started','retaining','completed','retention_failed') or ${table.providerJobId} is not null)\n and (${table.providerJobId} is null or ${table.status} in ('provider_started','retaining','completed','provider_failed','retention_failed'))`,\n ),\n fundingStateValid: check(\n \"video_generation_operations_funding_state_chk\",\n sql`(${table.fundingSource} = 'workspace_gateway'\n and ${table.connectionId} is not null\n and ${table.pricedCostMicros} = 0\n and ${table.creditState} = 'not_applicable')\n or (${table.fundingSource} = 'opengeni_credits'\n and ${table.connectionId} is null\n and ((${table.pricedCostMicros} = 0 and ${table.creditState} = 'not_applicable')\n or (${table.pricedCostMicros} > 0\n and ((${table.status} in ('provider_failed','cancelled_before_submit','outcome_unknown','retention_failed')\n and ${table.creditState} = 'refunded')\n or (${table.status} not in ('provider_failed','cancelled_before_submit','outcome_unknown','retention_failed')\n and ${table.creditState} = 'debited')))))`,\n ),\n fundingValuesValid: check(\n \"video_generation_operations_funding_values_chk\",\n sql`${table.fundingSource} in ('opengeni_credits','workspace_gateway')\n and ${table.pricedCostMicros} between 0 and 1000000000\n and ${table.creditState} in ('not_applicable','debited','refunded')`,\n ),\n }),\n);\n\n/** Immutable operation reference snapshots; provider-facing URLs never persist here. */\nexport const videoGenerationReferences = pgTable(\n \"video_generation_references\",\n {\n operationId: uuid(\"operation_id\")\n .notNull()\n .references(() => videoGenerationOperations.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n ordinal: integer(\"ordinal\").notNull(),\n role: text(\"role\").notNull(),\n contentType: text(\"content_type\").notNull(),\n sizeBytes: bigint(\"size_bytes\", { mode: \"number\" }).notNull(),\n sha256: text(\"sha256\").notNull(),\n stagingObjectKey: text(\"staging_object_key\"),\n grantExpiresAt: timestamp(\"grant_expires_at\", { withTimezone: true }),\n cleanupAfter: timestamp(\"cleanup_after\", { withTimezone: true }),\n cleanedAt: timestamp(\"cleaned_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({\n name: \"video_generation_references_pk\",\n columns: [table.operationId, table.ordinal],\n }),\n workspaceAccount: foreignKey({\n name: \"video_generation_references_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n hashValid: check(\n \"video_generation_references_hash_chk\",\n sql`${table.sha256} ~ '^[0-9a-f]{64}$'`,\n ),\n boundsValid: check(\n \"video_generation_references_bounds_chk\",\n sql`${table.ordinal} between 0 and 1\n and ${table.role} in ('first_frame','last_frame','image_reference','video_reference')\n and octet_length(${table.contentType}) between 3 and 128\n and ${table.sizeBytes} > 0 and ${table.sizeBytes} <= 209715200`,\n ),\n }),\n);\n\n/** Permanent generated-video product; canonical bytes remain a separate File. */\nexport const generatedVideoArtifacts = pgTable(\n \"generated_video_artifacts\",\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 primaryFileId: uuid(\"primary_file_id\")\n .notNull()\n .references(() => files.id, { onDelete: \"restrict\" }),\n operationId: uuid(\"operation_id\")\n .notNull()\n .references(() => videoGenerationOperations.id, { onDelete: \"restrict\" }),\n sessionId: uuid(\"session_id\").references(() => sessions.id, { onDelete: \"set null\" }),\n turnId: uuid(\"turn_id\"),\n attemptId: uuid(\"attempt_id\"),\n modelId: text(\"model_id\").notNull(),\n sourceMode: text(\"source_mode\").notNull(),\n promptDigest: text(\"prompt_digest\").notNull(),\n contentType: text(\"content_type\").notNull(),\n sizeBytes: bigint(\"size_bytes\", { mode: \"number\" }).notNull(),\n sha256: text(\"sha256\").notNull(),\n durationMillis: integer(\"duration_millis\").notNull(),\n width: integer(\"width\").notNull(),\n height: integer(\"height\").notNull(),\n fpsMilli: integer(\"fps_milli\").notNull(),\n videoCodec: text(\"video_codec\").notNull(),\n audioCodec: text(\"audio_codec\"),\n hasAudio: boolean(\"has_audio\").notNull(),\n sandboxFilename: text(\"sandbox_filename\").notNull(),\n deletedAt: timestamp(\"deleted_at\", { withTimezone: true }),\n readyAt: timestamp(\"ready_at\", { withTimezone: true }).notNull().defaultNow(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceFile: uniqueIndex(\"generated_video_artifacts_workspace_file_uq\").on(\n table.workspaceId,\n table.primaryFileId,\n ),\n workspaceOperation: uniqueIndex(\"generated_video_artifacts_workspace_operation_uq\").on(\n table.workspaceId,\n table.operationId,\n ),\n sessionCreated: index(\"generated_video_artifacts_session_created_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.createdAt,\n table.id,\n ),\n workspaceAccount: foreignKey({\n name: \"generated_video_artifacts_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceFileScope: foreignKey({\n name: \"generated_video_artifacts_workspace_file_scope_fk\",\n columns: [table.accountId, table.workspaceId, table.primaryFileId],\n foreignColumns: [files.accountId, files.workspaceId, files.id],\n }).onDelete(\"restrict\"),\n valuesValid: check(\n \"generated_video_artifacts_values_chk\",\n sql`${table.contentType} = 'video/mp4'\n and ${table.sizeBytes} > 0 and ${table.sizeBytes} <= 536870912\n and ${table.sha256} ~ '^[0-9a-f]{64}$'\n and ${table.promptDigest} ~ '^[0-9a-f]{64}$'\n and ${table.durationMillis} between 1 and 120000\n and ${table.width} between 1 and 8192\n and ${table.height} between 1 and 8192\n and ${table.fpsMilli} between 1 and 120000\n and ${table.videoCodec} = 'h264'\n and ((${table.hasAudio} and ${table.audioCodec} = 'aac') or (not ${table.hasAudio} and ${table.audioCodec} is null))\n and ${table.sandboxFilename} = 'generated-video-' || ${table.id}::text || '.mp4'`,\n ),\n }),\n);\n\n/** Exact pending/ready byte accounting for retained computer screenshots. */\nexport const workspaceScreenshotQuotas = pgTable(\n \"workspace_screenshot_quotas\",\n {\n workspaceId: uuid(\"workspace_id\")\n .primaryKey()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n reservedBytes: bigint(\"reserved_bytes\", { mode: \"number\" }).notNull().default(0),\n readyBytes: bigint(\"ready_bytes\", { mode: \"number\" }).notNull().default(0),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n name: \"workspace_screenshot_quotas_workspace_account_fk\",\n }).onDelete(\"cascade\"),\n nonnegative: check(\n \"workspace_screenshot_quotas_nonnegative_chk\",\n sql`${table.reservedBytes} >= 0 and ${table.readyBytes} >= 0`,\n ),\n }),\n);\n\n/** Provider-neutral screenshot lifecycle; canonical bytes stay in `files` storage. */\nexport const retainedScreenshotArtifacts = pgTable(\n \"retained_screenshot_artifacts\",\n {\n // The composite file FK is RESTRICT in migration 0176: only the retained\n // screenshot lifecycle may remove its backing file after provider cleanup.\n artifactId: uuid(\"artifact_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 sessionId: uuid(\"session_id\").references(() => sessions.id, {\n onDelete: \"set null\",\n }),\n // Turn/attempt foreign keys are installed by migrations 0140/0176.\n // Those tables are declared later in this monolithic schema module, so\n // referencing them here would create an eager initialization cycle.\n turnId: uuid(\"turn_id\"),\n attemptId: uuid(\"attempt_id\"),\n settlementKey: text(\"settlement_key\").notNull(),\n toolCallId: text(\"tool_call_id\").notNull(),\n toolOutputId: text(\"tool_output_id\").notNull(),\n status: text(\"status\")\n .$type<\n | \"pending\"\n | \"reconciling\"\n | \"ready\"\n | \"cleanup_queued\"\n | \"cleanup_pending\"\n | \"failed\"\n | \"expired\"\n | \"deleted\"\n >()\n .notNull()\n .default(\"pending\"),\n quotaState: text(\"quota_state\")\n .$type<\"reserved\" | \"ready\" | \"released\">()\n .notNull()\n .default(\"reserved\"),\n mediaType: text(\"media_type\").notNull(),\n sizeBytes: bigint(\"size_bytes\", { mode: \"number\" }).notNull(),\n sha256: text(\"sha256\").notNull(),\n width: integer(\"width\").notNull(),\n height: integer(\"height\").notNull(),\n retentionExpiresAt: timestamp(\"retention_expires_at\", { withTimezone: true }).notNull(),\n readyAt: timestamp(\"ready_at\", { withTimezone: true }),\n cleanupReason: text(\"cleanup_reason\"),\n lastError: text(\"last_error\"),\n maintenanceClaimId: uuid(\"maintenance_claim_id\"),\n maintenanceClaimedAt: timestamp(\"maintenance_claimed_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 settlementKey: uniqueIndex(\"retained_screenshot_artifacts_settlement_key_uq\").on(\n table.settlementKey,\n ),\n sessionCreated: index(\"retained_screenshot_artifacts_session_created_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.createdAt,\n table.artifactId,\n ),\n readyExpiry: index(\"retained_screenshot_artifacts_ready_expiry_idx\")\n .on(table.retentionExpiresAt, table.artifactId)\n .where(sql`${table.status} = 'ready'`),\n pendingReconcile: index(\"retained_screenshot_artifacts_pending_reconcile_idx\")\n .on(table.updatedAt, table.artifactId)\n .where(\n sql`${table.status} in ('pending', 'reconciling', 'cleanup_queued', 'cleanup_pending')`,\n ),\n workspaceAccount: foreignKey({\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n name: \"retained_screenshot_artifacts_workspace_account_fk\",\n }).onDelete(\"cascade\"),\n workspaceFile: foreignKey({\n columns: [table.workspaceId, table.artifactId],\n foreignColumns: [files.workspaceId, files.id],\n name: \"retained_screenshot_artifacts_workspace_file_fk\",\n }).onDelete(\"restrict\"),\n statusValid: check(\n \"retained_screenshot_artifacts_status_chk\",\n sql`${table.status} in ('pending', 'reconciling', 'ready', 'cleanup_queued', 'cleanup_pending', 'failed', 'expired', 'deleted')`,\n ),\n quotaStateValid: check(\n \"retained_screenshot_artifacts_quota_state_chk\",\n sql`${table.quotaState} in ('reserved', 'ready', 'released')`,\n ),\n statusQuotaValid: check(\n \"retained_screenshot_artifacts_status_quota_chk\",\n sql`(${table.status} in ('pending', 'reconciling') and ${table.quotaState} = 'reserved')\n or (${table.status} = 'ready' and ${table.quotaState} = 'ready')\n or (${table.status} in ('cleanup_queued', 'cleanup_pending') and ${table.quotaState} in ('reserved', 'ready'))\n or (${table.status} in ('failed', 'expired', 'deleted') and ${table.quotaState} = 'released')`,\n ),\n claimShapeValid: check(\n \"retained_screenshot_artifacts_claim_shape_chk\",\n sql`(${table.status} in ('reconciling', 'cleanup_pending')\n and ${table.maintenanceClaimId} is not null\n and ${table.maintenanceClaimedAt} is not null)\n or (${table.status} not in ('reconciling', 'cleanup_pending')\n and ${table.maintenanceClaimId} is null\n and ${table.maintenanceClaimedAt} is null)`,\n ),\n dimensionsValid: check(\n \"retained_screenshot_artifacts_dimensions_chk\",\n sql`${table.width} between 1 and 16384 and ${table.height} between 1 and 16384 and (${table.width}::bigint * ${table.height}::bigint) <= 67108864`,\n ),\n mediaTypeValid: check(\n \"retained_screenshot_artifacts_media_type_v2_chk\",\n sql`${table.mediaType} in ('image/png', 'image/jpeg', 'image/webp')`,\n ),\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 // Connector imports keep immutable source-object/version identity separate\n // from the content-addressed file row so equal bytes never collapse two\n // independently authorized provider objects into one Document.\n knowledgeSourceIdentity: text(\"knowledge_source_identity\"),\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 // Assigned only by the database whenever indexing transitions to ready.\n // Unlike updated_at, metadata refreshes and base moves cannot advance this\n // checkpoint order.\n indexSequence: bigint(\"index_sequence\", { mode: \"bigint\" }),\n indexedAt: timestamp(\"indexed_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 baseFile: uniqueIndex(\"documents_workspace_base_file_idx\")\n .on(table.workspaceId, table.baseId, table.fileId)\n .where(sql`${table.knowledgeSourceIdentity} is null`),\n knowledgeSourceIdentity: uniqueIndex(\"documents_workspace_knowledge_source_identity_uq\")\n .on(table.workspaceId, table.knowledgeSourceIdentity)\n .where(sql`${table.knowledgeSourceIdentity} is not null`),\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 accountIndexSequence: index(\"documents_account_index_sequence_idx\")\n .on(table.accountId, table.indexSequence)\n .where(sql`${table.status} = 'ready' and ${table.indexSequence} is not null`),\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 knowledgeSourceIdentityBounds: check(\n \"documents_knowledge_source_identity_chk\",\n sql`${table.knowledgeSourceIdentity} is null or length(btrim(${table.knowledgeSourceIdentity})) between 1 and 512`,\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 indexSequenceState: check(\n \"documents_index_sequence_chk\",\n sql`(${table.indexSequence} is null or ${table.indexSequence} > 0)\n and (${table.status} <> 'ready' or (${table.indexSequence} is not null and ${table.indexedAt} is not null))`,\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: losslessText(\"text\").notNull(),\n textCodecVersion: losslessCodecVersion(\"text_codec_version\"),\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: losslessText(\"prompt\").notNull(),\n promptCodecVersion: losslessCodecVersion(\"prompt_codec_version\"),\n annotations: jsonb(\"annotations\").$type<TimelineAnnotation[]>().notNull().default([]),\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 Codemode 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 codemode 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 `codemodeMaxCallsPerTurn` succeed.\n codemodeCallCount: integer(\"codemode_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\n// Immutable executable tool universe admitted to one exact attempt. Model MCP\n// and sandbox Codemode use the same digest and opaque identities from this row.\nexport const sessionAttemptToolCatalogs = pgTable(\n \"session_attempt_tool_catalogs\",\n {\n attemptId: uuid(\"attempt_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 catalogVersion: integer(\"catalog_version\").notNull(),\n generation: integer(\"generation\").notNull(),\n digest: text(\"digest\").notNull(),\n catalog: jsonb(\"catalog\").$type<AttemptToolCatalog>().notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull(),\n },\n (table) => ({\n attemptOwner: foreignKey({\n name: \"session_attempt_tool_catalogs_attempt_owner_fk\",\n columns: [table.accountId, table.workspaceId, table.sessionId, table.turnId, table.attemptId],\n foreignColumns: [\n sessionTurnAttempts.accountId,\n sessionTurnAttempts.workspaceId,\n sessionTurnAttempts.sessionId,\n sessionTurnAttempts.turnId,\n sessionTurnAttempts.id,\n ],\n }).onDelete(\"cascade\"),\n sessionTurn: index(\"session_attempt_tool_catalogs_session_turn_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.turnId,\n ),\n exactAuthorityDigest: uniqueIndex(\n \"session_attempt_tool_catalogs_exact_authority_digest_uidx\",\n ).on(\n table.accountId,\n table.workspaceId,\n table.sessionId,\n table.turnId,\n table.attemptId,\n table.executionGeneration,\n table.digest,\n ),\n versionValid: check(\n \"session_attempt_tool_catalogs_version_check\",\n sql`${table.catalogVersion} = 1 and ${table.generation} > 0 and ${table.executionGeneration} > 0`,\n ),\n digestValid: check(\n \"session_attempt_tool_catalogs_digest_check\",\n sql`${table.digest} ~ '^[0-9a-f]{64}$'`,\n ),\n catalogSize: check(\n \"session_attempt_tool_catalogs_size_check\",\n sql`octet_length(${table.catalog}::text) between 2 and 16777216`,\n ),\n catalogIdentity: check(\n \"session_attempt_tool_catalogs_catalog_identity_check\",\n sql`jsonb_typeof(${table.catalog}) = 'object'\n and ${table.catalog} ?& array[\n 'version', 'accountId', 'workspaceId', 'sessionId', 'turnId',\n 'attemptId', 'executionGeneration', 'generation', 'createdAt',\n 'digest', 'entries'\n ]::text[]\n and ${table.catalog}->>'accountId' = ${table.accountId}::text\n and ${table.catalog}->>'workspaceId' = ${table.workspaceId}::text\n and ${table.catalog}->>'sessionId' = ${table.sessionId}::text\n and ${table.catalog}->>'turnId' = ${table.turnId}::text\n and ${table.catalog}->>'attemptId' = ${table.attemptId}::text\n and (${table.catalog}->>'executionGeneration')::integer = ${table.executionGeneration}\n and (${table.catalog}->>'version')::integer = ${table.catalogVersion}\n and (${table.catalog}->>'generation')::integer = ${table.generation}\n and ${table.catalog}->>'digest' = ${table.digest}\n and jsonb_typeof(${table.catalog}->'entries') = 'array'\n and jsonb_array_length(${table.catalog}->'entries') <= 4096`,\n ),\n }),\n);\n\n// Durable idempotency and outcome journal for calls made programmatically from\n// an attempt's sandbox. The active worker executes these through the exact same\n// in-memory AttemptToolEnvironment as model MCP calls.\nexport const sessionAttemptCodemodeCalls = pgTable(\n \"session_attempt_codemode_calls\",\n {\n operationId: uuid(\"operation_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 attemptId: uuid(\"attempt_id\").notNull(),\n executionGeneration: integer(\"execution_generation\").notNull(),\n catalogDigest: text(\"catalog_digest\").notNull(),\n requestDigest: text(\"request_digest\").notNull(),\n serverId: text(\"server_id\").notNull(),\n toolName: text(\"tool_name\").notNull(),\n arguments: jsonb(\"arguments\").$type<Record<string, unknown>>().notNull(),\n callerSubjectId: text(\"caller_subject_id\").notNull(),\n state: text(\"state\", {\n enum: [\"queued\", \"running\", \"completed\", \"failed\", \"outcome_unknown\", \"cancelled\"],\n })\n .notNull()\n .default(\"queued\"),\n claimId: uuid(\"claim_id\"),\n result: jsonb(\"result\").$type<AttemptToolResult>(),\n errorCode: text(\"error_code\"),\n errorMessage: text(\"error_message\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n claimedAt: timestamp(\"claimed_at\", { withTimezone: true }),\n executionStartedAt: timestamp(\"execution_started_at\", { withTimezone: true }),\n claimExpiresAt: timestamp(\"claim_expires_at\", { withTimezone: true }),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n catalog: foreignKey({\n name: \"session_attempt_codemode_calls_catalog_fk\",\n columns: [\n table.accountId,\n table.workspaceId,\n table.sessionId,\n table.turnId,\n table.attemptId,\n table.executionGeneration,\n table.catalogDigest,\n ],\n foreignColumns: [\n sessionAttemptToolCatalogs.accountId,\n sessionAttemptToolCatalogs.workspaceId,\n sessionAttemptToolCatalogs.sessionId,\n sessionAttemptToolCatalogs.turnId,\n sessionAttemptToolCatalogs.attemptId,\n sessionAttemptToolCatalogs.executionGeneration,\n sessionAttemptToolCatalogs.digest,\n ],\n }).onDelete(\"cascade\"),\n sessionTurn: index(\"session_attempt_codemode_calls_session_turn_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.turnId,\n table.createdAt,\n ),\n activeAttempt: index(\"session_attempt_codemode_calls_active_attempt_idx\")\n .on(table.workspaceId, table.attemptId, table.state)\n .where(sql`${table.state} in ('queued', 'running')`),\n generationsValid: check(\n \"session_attempt_codemode_calls_generation_check\",\n sql`${table.executionGeneration} > 0`,\n ),\n digestsValid: check(\n \"session_attempt_codemode_calls_digests_check\",\n sql`${table.catalogDigest} ~ '^[0-9a-f]{64}$' and ${table.requestDigest} ~ '^[0-9a-f]{64}$'`,\n ),\n identityValid: check(\n \"session_attempt_codemode_calls_identity_check\",\n sql`octet_length(${table.serverId}) between 1 and 256\n and octet_length(${table.toolName}) between 1 and 512\n and octet_length(${table.callerSubjectId}) between 1 and 1024`,\n ),\n argumentsSize: check(\n \"session_attempt_codemode_calls_arguments_size_check\",\n sql`jsonb_typeof(${table.arguments}) = 'object'\n and octet_length(${table.arguments}::text) between 2 and 4194304`,\n ),\n resultSize: check(\n \"session_attempt_codemode_calls_result_size_check\",\n sql`${table.result} is null or (\n jsonb_typeof(${table.result}) = 'object'\n and octet_length(${table.result}::text) between 2 and 16777216\n )`,\n ),\n lifecycleValid: check(\n \"session_attempt_codemode_calls_lifecycle_check\",\n sql`(\n ${table.state} = 'queued'\n and ${table.claimId} is null\n and ${table.claimedAt} is null\n and ${table.executionStartedAt} is null\n and ${table.claimExpiresAt} is null\n and ${table.completedAt} is null\n and ${table.result} is null\n and ${table.errorCode} is null\n and ${table.errorMessage} is null\n ) or (\n ${table.state} = 'running'\n and ${table.claimId} is not null\n and ${table.claimedAt} is not null\n and ${table.claimExpiresAt} is not null\n and ${table.completedAt} is null\n and ${table.result} is null\n and ${table.errorCode} is null\n and ${table.errorMessage} is null\n ) or (\n ${table.state} = 'completed'\n and ${table.claimId} is not null\n and ${table.claimedAt} is not null\n and ${table.executionStartedAt} is not null\n and ${table.claimExpiresAt} is not null\n and ${table.completedAt} is not null\n and ${table.result} is not null\n and ${table.errorCode} is null\n and ${table.errorMessage} is null\n ) or (\n ${table.state} = 'failed'\n and ${table.claimId} is not null\n and ${table.claimedAt} is not null\n and ${table.claimExpiresAt} is not null\n and ${table.completedAt} is not null\n and ${table.result} is null\n and ${table.errorCode} is not null\n and ${table.errorMessage} is not null\n ) or (\n ${table.state} = 'outcome_unknown'\n and ${table.claimId} is not null\n and ${table.claimedAt} is not null\n and ${table.executionStartedAt} is not null\n and ${table.claimExpiresAt} is not null\n and ${table.completedAt} is not null\n and ${table.result} is null\n and ${table.errorCode} is not null\n and ${table.errorMessage} is not null\n ) or (\n ${table.state} = 'cancelled'\n and ${table.claimId} is null\n and ${table.claimedAt} is null\n and ${table.executionStartedAt} is null\n and ${table.claimExpiresAt} is null\n and ${table.completedAt} is not null\n and ${table.result} is null\n and ${table.errorCode} is not null\n and ${table.errorMessage} is not null\n )`,\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 annotations: jsonb(\"annotations\").$type<DraftTimelineAnnotation[]>().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: losslessText(\"summary\").notNull(),\n summaryCodecVersion: losslessCodecVersion(\"summary_codec_version\"),\n payload: losslessJsonb(\"payload\").$type<Record<string, unknown>>().notNull().default({}),\n payloadCodecVersion: losslessCodecVersion(\"payload_codec_version\"),\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', 'media_generation_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: losslessText(\"summary\").notNull(),\n summaryCodecVersion: losslessCodecVersion(\"summary_codec_version\"),\n payload: losslessJsonb(\"payload\").$type<Record<string, unknown>>().notNull().default({}),\n payloadCodecVersion: losslessCodecVersion(\"payload_codec_version\"),\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: losslessJsonb(\"payload\").$type<unknown>().notNull().default({}),\n payloadCodecVersion: losslessCodecVersion(\"payload_codec_version\"),\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 workspaceTurnType: index(\"session_events_workspace_turn_type_idx\")\n .on(table.workspaceId, table.turnId, table.type)\n .where(sql`${table.turnId} is not null`),\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 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: losslessText(\"serialized_run_state\").notNull(),\n serializedRunStateCodecVersion: losslessCodecVersion(\"serialized_run_state_codec_version\"),\n pendingApprovals: losslessJsonb(\"pending_approvals\").$type<unknown[]>().notNull().default([]),\n pendingApprovalsCodecVersion: losslessCodecVersion(\"pending_approvals_codec_version\"),\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 — exact and replay-ready. session_events is also\n// exact canonical OpenGeni data; transport projections must not rewrite it.\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: losslessJsonb(\"item\").$type<Record<string, unknown>>().notNull(),\n itemCodecVersion: losslessCodecVersion(\"item_codec_version\"),\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 a transport 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: losslessJsonb(\"call_item\").$type<Record<string, unknown>>().notNull(),\n callItemCodecVersion: losslessCodecVersion(\"call_item_codec_version\"),\n modelToolOutputTruncationTokens: integer(\"model_tool_output_truncation_tokens\"),\n resultItem: losslessJsonb(\"result_item\").$type<Record<string, unknown>>(),\n resultItemCodecVersion: losslessCodecVersion(\"result_item_codec_version\"),\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: losslessJsonb(\"envelope\").$type<Record<string, unknown>>().notNull(),\n envelopeCodecVersion: losslessCodecVersion(\"envelope_codec_version\"),\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. operation_id is the\n // stable logical request across Temporal retries, while capture_id + attempt\n // identify the one callback currently allowed to publish/terminate. The SQL\n // constraint also requires the claimed generation to remain current, so an\n // unaware writer cannot advance generation through an active capture.\n archiveCaptureId: uuid(\"archive_capture_id\"),\n archiveCaptureOperationId: uuid(\"archive_capture_operation_id\"),\n archiveCaptureProviderRequestId: uuid(\"archive_capture_provider_request_id\"),\n // True only when the provider contract guarantees that reusing\n // archiveCaptureProviderRequestId resumes the same physical capture. This is\n // deliberately explicit rather than inferred from backend/id equality so a\n // rolling old worker can never be mistaken for an idempotent caller.\n archiveCaptureProviderReplaySafe: boolean(\"archive_capture_provider_replay_safe\")\n .notNull()\n .default(false),\n // Provider-neutral takeover proof. True means the registered adapter has\n // proven either same-request idempotency or an independently repeatable,\n // read-only capture. It is distinct from providerReplaySafe so portable tar\n // can recover immediately without pretending it resumes one provider RPC.\n archiveCaptureTakeoverSafe: boolean(\"archive_capture_takeover_safe\").notNull().default(false),\n archiveCaptureAttempt: integer(\"archive_capture_attempt\"),\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 // Set atomically with a verified draining archive publication. Once set,\n // the exact claim is an irreversible teardown receipt: a recovered worker\n // skips recapture and resumes provider termination. Warm capture clears its\n // claim in the publication write and therefore never retains this marker.\n archiveCapturePublishedAt: timestamp(\"archive_capture_published_at\", {\n withTimezone: true,\n }),\n // Bounded operator preservation gate. Unlike rotation/capture, this blocks\n // only reaper teardown: a user may still re-arm a resumable draining lease.\n // The exact id makes renewal/release ownership explicit and race-safe.\n reaperHoldId: uuid(\"reaper_hold_id\"),\n reaperHoldUntil: timestamp(\"reaper_hold_until\", { withTimezone: true }),\n reaperHoldReason: text(\"reaper_hold_reason\"),\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\", \"teardown_claim\"],\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.archiveCaptureOperationId} is null\n and ${table.archiveCaptureProviderRequestId} is null\n and ${table.archiveCaptureProviderReplaySafe} = false\n and ${table.archiveCaptureTakeoverSafe} = false\n and ${table.archiveCaptureAttempt} is null\n and ${table.archiveCaptureGeneration} is null\n and ${table.archiveCaptureStartedAt} is null\n and ${table.archiveCaptureDeadlineAt} is null\n and ${table.archiveCapturePublishedAt} is null\n ) or (\n ${table.archiveCaptureId} is not null\n and ${table.archiveCaptureOperationId} is not null\n and ${table.archiveCaptureProviderRequestId} is not null\n and (\n ${table.archiveCaptureProviderReplaySafe} = false\n or ${table.archiveCaptureTakeoverSafe} = true\n )\n and ${table.archiveCaptureAttempt} is not null\n and ${table.archiveCaptureAttempt} > 0\n and ${table.archiveCaptureGeneration} is not null\n and ${table.archiveCaptureGeneration} = ${table.workspaceGeneration}\n and ${table.archiveCaptureStartedAt} is not null\n and ${table.archiveCaptureDeadlineAt} is not null\n and ${table.archiveCaptureDeadlineAt} > ${table.archiveCaptureStartedAt}\n and (\n ${table.archiveCapturePublishedAt} is null\n or ${table.liveness} = 'draining'\n )\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 reaperHoldValid: check(\n \"sandbox_leases_reaper_hold_check\",\n sql`(\n ${table.reaperHoldId} is null\n and ${table.reaperHoldUntil} is null\n and ${table.reaperHoldReason} is null\n ) or (\n ${table.reaperHoldId} is not null\n and ${table.reaperHoldUntil} is not null\n and ${table.reaperHoldReason} is not null\n and length(${table.reaperHoldReason}) between 1 and 500\n )`,\n ),\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} is not null\n and ${table.rotationReason} in ('provider_deadline', 'operator', 'teardown_claim'))`,\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\", {\n enum: [\"turn\", \"viewer\", \"direct\", \"process\", \"interaction\"],\n }).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: losslessText(\"reason\"),\n reasonCodecVersion: losslessCodecVersion(\"reason_codec_version\"),\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 // Credential-family fence. Existing rows/migration-era bearers are generation\n // 1; every successful re-enrollment increments this atomically before a new\n // bearer is signed. Auth and self-revoke require an exact row/claim match.\n credentialGeneration: integer(\"credential_generation\").notNull().default(1),\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// One durable receipt per workspace-authorized connected-machine removal\n// request. The enrollment row remains the lifecycle truth; this table preserves\n// the exact idempotency key, request fingerprint, and terminal result so a lost\n// response can be replayed without re-running dependency checks or mutating a\n// different enrollment that happens to share the same display name.\nexport const machineRemovalOperationOutcomeValues = [\n \"removed\",\n \"already_removed\",\n \"blocked\",\n] as const;\n\nexport const machineRemovalOperations = pgTable(\n \"machine_removal_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 enrollmentId: uuid(\"enrollment_id\")\n .notNull()\n .references(() => enrollments.id, { onDelete: \"restrict\" }),\n operationKey: text(\"operation_key\").notNull(),\n requestFingerprint: text(\"request_fingerprint\").notNull(),\n outcome: text(\"outcome\", { enum: machineRemovalOperationOutcomeValues }).notNull(),\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: \"machine_removal_operations_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceOperation: uniqueIndex(\"machine_removal_operations_workspace_operation_uq\").on(\n table.workspaceId,\n table.operationKey,\n ),\n workspaceIdentity: uniqueIndex(\"machine_removal_operations_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n enrollmentTimeline: index(\"machine_removal_operations_enrollment_created_idx\").on(\n table.workspaceId,\n table.enrollmentId,\n table.createdAt,\n ),\n requestFingerprintValid: check(\n \"machine_removal_operations_request_fingerprint_chk\",\n sql`${table.requestFingerprint} ~ '^[0-9a-f]{64}$'`,\n ),\n operationKeyValid: check(\n \"machine_removal_operations_operation_key_chk\",\n sql`length(btrim(${table.operationKey})) between 1 and 200\n and ${table.operationKey} = btrim(${table.operationKey})`,\n ),\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 action: jsonb(\"action\").$type<unknown>().notNull().default({ kind: \"agent_turn\" }),\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\n/**\n * Durable ownership of Temporal schedules whose database owner was deleted.\n *\n * Deliberately no workspace/account foreign key: this row must survive the\n * workspace cascade that creates it. Ordinary runtime code may insert it while\n * the workspace is still RLS-visible; cross-workspace claim/settlement is only\n * available through migration-owned SECURITY DEFINER functions.\n */\nexport const temporalScheduleCleanupOutbox = pgTable(\n \"temporal_schedule_cleanup_outbox\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n temporalScheduleId: text(\"temporal_schedule_id\").notNull(),\n claimId: uuid(\"claim_id\"),\n claimUntil: timestamp(\"claim_until\", { withTimezone: true }),\n attemptCount: integer(\"attempt_count\").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 schedule: uniqueIndex(\"temporal_schedule_cleanup_outbox_schedule_uq\").on(\n table.temporalScheduleId,\n ),\n due: index(\"temporal_schedule_cleanup_outbox_due_idx\").on(\n table.nextAttemptAt,\n table.claimUntil,\n table.id,\n ),\n valid: check(\n \"temporal_schedule_cleanup_outbox_valid_chk\",\n sql`length(${table.temporalScheduleId}) between 1 and 512\n and ${table.attemptCount} >= 0\n and ((${table.claimId} is null and ${table.claimUntil} is null)\n or (${table.claimId} is not null and ${table.claimUntil} is not null))\n and (${table.lastError} is null or length(${table.lastError}) <= 2000)`,\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 actionKind: text(\"action_kind\").notNull().default(\"agent_turn\"),\n knowledgeSyncRunId: uuid(\"knowledge_sync_run_id\"),\n knowledgeSummary: jsonb(\"knowledge_summary\").$type<Record<string, unknown>>(),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\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 estimatedProviderCostMicros: bigint(\"estimated_provider_cost_micros\", { mode: \"number\" }),\n pricingSource: text(\"pricing_source\"),\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 estimatedProviderCostValid: check(\n \"model_call_facts_estimated_provider_cost_check\",\n sql`${table.estimatedProviderCostMicros} is null or ${table.estimatedProviderCostMicros} >= 0`,\n ),\n pricingSourceValid: check(\n \"model_call_facts_pricing_source_check\",\n sql`(${table.estimatedProviderCostMicros} is null and ${table.pricingSource} is null)\n or (${table.estimatedProviderCostMicros} is not null\n and ${table.pricingSource} in ('configured_list_price', 'gateway_reported'))`,\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. Session-event payloads retain their exact storage bytes plus\n * explicit codec truth; usage payloads remain ordinary JSON.\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 payloadCodecVersion: losslessCodecVersion(\"payload_codec_version\"),\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 lastErrorCodecVersion: losslessCodecVersion(\"last_error_codec_version\"),\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: losslessJsonb(\"envelope\").$type<Record<string, unknown>>().notNull(),\n envelopeCodecVersion: losslessCodecVersion(\"envelope_codec_version\"),\n eventPayloadCodecVersion: losslessCodecVersion(\"event_payload_codec_version\"),\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: losslessJsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n metadataCodecVersion: losslessCodecVersion(\"metadata_codec_version\"),\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 version: integer(\"version\").notNull().default(1),\n manifestSnapshot: jsonb(\"manifest_snapshot\").$type<Record<string, unknown>>(),\n manifestDigest: text(\"manifest_digest\"),\n selectedRigId: uuid(\"selected_rig_id\").references(() => rigs.id, {\n onDelete: \"set null\",\n }),\n installedBySubjectId: text(\"installed_by_subject_id\"),\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 selectedRig: index(\"pack_installations_workspace_rig_idx\")\n .on(table.workspaceId, table.selectedRigId)\n .where(sql`${table.selectedRigId} is not null`),\n }),\n);\n\nexport const packInstallationComponents = pgTable(\n \"pack_installation_components\",\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 packInstallationId: uuid(\"pack_installation_id\")\n .notNull()\n .references(() => packInstallations.id, { onDelete: \"cascade\" }),\n componentKey: text(\"component_key\").notNull(),\n kind: text(\"kind\").notNull(),\n capabilityId: text(\"capability_id\").notNull(),\n resolvedId: text(\"resolved_id\").notNull(),\n digest: text(\"digest\").notNull(),\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 installationKey: uniqueIndex(\"pack_installation_components_pack_key_uq\").on(\n table.packInstallationId,\n table.componentKey,\n ),\n workspaceCapability: index(\"pack_installation_components_workspace_capability_idx\").on(\n table.workspaceId,\n table.kind,\n table.capabilityId,\n ),\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\n// --- Capabilities platform v2 ------------------------------------------------\n// Expand-only normalized state. The v1 catalog/installations remain intact\n// while adapters shadow-read and migrate exact owners into this model.\n\nexport const capabilityPlugins = pgTable(\n \"capability_plugins\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n pluginKey: text(\"plugin_key\").notNull(),\n accountId: uuid(\"account_id\").references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\").references(() => workspaces.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n description: text(\"description\"),\n category: text(\"category\").notNull(),\n tags: jsonb(\"tags\").$type<string[]>().notNull().default([]),\n provenance: text(\"provenance\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n globalKey: uniqueIndex(\"capability_plugins_global_key_idx\")\n .on(table.pluginKey)\n .where(sql`${table.workspaceId} is null`),\n workspaceKey: uniqueIndex(\"capability_plugins_workspace_key_idx\").on(\n table.workspaceId,\n table.pluginKey,\n ),\n scope: index(\"capability_plugins_scope_idx\").on(table.workspaceId, table.category),\n }),\n);\n\nexport const capabilityPluginVersions = pgTable(\n \"capability_plugin_versions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n pluginId: uuid(\"plugin_id\")\n .notNull()\n .references(() => capabilityPlugins.id, { onDelete: \"cascade\" }),\n version: text(\"version\").notNull(),\n manifestDigest: text(\"manifest_digest\").notNull(),\n manifest: jsonb(\"manifest\").$type<Record<string, unknown>>().notNull().default({}),\n status: text(\"status\").notNull().default(\"published\"),\n importBatchId: uuid(\"import_batch_id\").references(() => importBatches.id, {\n onDelete: \"set null\",\n }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pluginVersion: uniqueIndex(\"capability_plugin_versions_plugin_version_idx\").on(\n table.pluginId,\n table.version,\n ),\n pluginDigest: uniqueIndex(\"capability_plugin_versions_plugin_digest_idx\").on(\n table.pluginId,\n table.manifestDigest,\n ),\n pluginIdentity: uniqueIndex(\"capability_plugin_versions_plugin_identity_idx\").on(\n table.pluginId,\n table.id,\n ),\n }),\n);\n\nexport const capabilityFacets = pgTable(\n \"capability_facets\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n pluginVersionId: uuid(\"plugin_version_id\")\n .notNull()\n .references(() => capabilityPluginVersions.id, { onDelete: \"cascade\" }),\n facetKey: text(\"facet_key\").notNull(),\n kind: text(\"kind\").notNull(),\n activationMode: text(\"activation_mode\").notNull(),\n required: boolean(\"required\").notNull().default(true),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n versionKey: uniqueIndex(\"capability_facets_version_key_idx\").on(\n table.pluginVersionId,\n table.facetKey,\n ),\n versionKind: index(\"capability_facets_version_kind_idx\").on(table.pluginVersionId, table.kind),\n }),\n);\n\nexport const capabilityIntegrationFacets = pgTable(\"capability_integration_facets\", {\n facetId: uuid(\"facet_id\")\n .primaryKey()\n .references(() => capabilityFacets.id, { onDelete: \"cascade\" }),\n providerDomain: text(\"provider_domain\").notNull(),\n connectionKinds: jsonb(\"connection_kinds\").$type<string[]>().notNull().default([]),\n ownership: text(\"ownership\").notNull(),\n requiredScopes: jsonb(\"required_scopes\").$type<string[]>().notNull().default([]),\n resourceSelection: text(\"resource_selection\").notNull().default(\"none\"),\n});\n\nexport const capabilityMcpFacets = pgTable(\n \"capability_mcp_facets\",\n {\n facetId: uuid(\"facet_id\")\n .primaryKey()\n .references(() => capabilityFacets.id, { onDelete: \"cascade\" }),\n serverId: text(\"server_id\").notNull(),\n endpointUrl: text(\"endpoint_url\").notNull(),\n transport: text(\"transport\").notNull(),\n authKind: text(\"auth_kind\").notNull(),\n integrationFacetId: uuid(\"integration_facet_id\").references(\n () => capabilityIntegrationFacets.facetId,\n { onDelete: \"restrict\" },\n ),\n allowedTools: jsonb(\"allowed_tools\").$type<string[]>().notNull().default([]),\n },\n (table) => ({\n server: index(\"capability_mcp_facets_server_idx\").on(table.serverId),\n }),\n);\n\nexport const capabilityApiFacets = pgTable(\"capability_api_facets\", {\n facetId: uuid(\"facet_id\")\n .primaryKey()\n .references(() => capabilityFacets.id, { onDelete: \"cascade\" }),\n protocol: text(\"protocol\").notNull(),\n baseUrl: text(\"base_url\").notNull(),\n specSourceUrl: text(\"spec_source_url\"),\n authScheme: jsonb(\"auth_scheme\").$type<Record<string, unknown>>().notNull().default({}),\n integrationFacetId: uuid(\"integration_facet_id\").references(\n () => capabilityIntegrationFacets.facetId,\n { onDelete: \"restrict\" },\n ),\n});\n\nexport const capabilitySkillFacets = pgTable(\n \"capability_skill_facets\",\n {\n facetId: uuid(\"facet_id\")\n .primaryKey()\n .references(() => capabilityFacets.id, { onDelete: \"cascade\" }),\n capabilityId: text(\"capability_id\").notNull(),\n name: text(\"name\").notNull(),\n description: text(\"description\").notNull(),\n sourceUrl: text(\"source_url\").notNull(),\n sourceCommit: text(\"source_commit\").notNull(),\n sourcePath: text(\"source_path\").notNull(),\n contentSha256: text(\"content_sha256\").notNull(),\n fileCount: integer(\"file_count\").notNull(),\n totalBytes: integer(\"total_bytes\").notNull(),\n license: text(\"license\"),\n },\n (table) => ({\n content: index(\"capability_skill_facets_content_idx\").on(table.contentSha256),\n }),\n);\n\nexport const capabilitySkillFiles = pgTable(\n \"capability_skill_files\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n skillFacetId: uuid(\"skill_facet_id\")\n .notNull()\n .references(() => capabilitySkillFacets.facetId, { onDelete: \"cascade\" }),\n path: text(\"path\").notNull(),\n content: text(\"content\").notNull(),\n byteSize: integer(\"byte_size\").notNull(),\n contentSha256: text(\"content_sha256\").notNull(),\n },\n (table) => ({\n skillPath: uniqueIndex(\"capability_skill_files_skill_path_idx\").on(\n table.skillFacetId,\n table.path,\n ),\n }),\n);\n\nexport const capabilityPluginInstallations = pgTable(\n \"capability_plugin_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 pluginId: uuid(\"plugin_id\")\n .notNull()\n .references(() => capabilityPlugins.id, { onDelete: \"restrict\" }),\n pluginVersionId: uuid(\"plugin_version_id\").notNull(),\n status: text(\"status\").notNull().default(\"active\"),\n version: integer(\"version\").notNull().default(1),\n installedBySubjectId: text(\"installed_by_subject_id\").notNull(),\n installedAt: timestamp(\"installed_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pluginVersion: foreignKey({\n columns: [table.pluginId, table.pluginVersionId],\n foreignColumns: [capabilityPluginVersions.pluginId, capabilityPluginVersions.id],\n name: \"capability_plugin_installations_plugin_version_fk\",\n }).onDelete(\"restrict\"),\n workspacePlugin: uniqueIndex(\"capability_plugin_installations_workspace_plugin_idx\").on(\n table.workspaceId,\n table.pluginId,\n ),\n workspaceStatus: index(\"capability_plugin_installations_workspace_status_idx\").on(\n table.workspaceId,\n table.status,\n ),\n }),\n);\n\nexport const capabilityFacetInstallations = pgTable(\n \"capability_facet_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 pluginInstallationId: uuid(\"plugin_installation_id\")\n .notNull()\n .references(() => capabilityPluginInstallations.id, { onDelete: \"cascade\" }),\n facetId: uuid(\"facet_id\")\n .notNull()\n .references(() => capabilityFacets.id, { onDelete: \"restrict\" }),\n connectionId: uuid(\"connection_id\").references(() => connections.id, {\n onDelete: \"restrict\",\n }),\n status: text(\"status\").notNull().default(\"active\"),\n config: jsonb(\"config\").$type<Record<string, unknown>>().notNull().default({}),\n version: integer(\"version\").notNull().default(1),\n attentionCode: text(\"attention_code\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n installationFacet: uniqueIndex(\"capability_facet_installations_installation_facet_idx\").on(\n table.pluginInstallationId,\n table.facetId,\n ),\n workspaceStatus: index(\"capability_facet_installations_workspace_status_idx\").on(\n table.workspaceId,\n table.status,\n ),\n }),\n);\n\nexport const capabilityComponentOwners = pgTable(\n \"capability_component_owners\",\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 facetInstallationId: uuid(\"facet_installation_id\")\n .notNull()\n .references(() => capabilityFacetInstallations.id, { onDelete: \"cascade\" }),\n ownerKind: text(\"owner_kind\").notNull(),\n ownerId: text(\"owner_id\").notNull(),\n removable: boolean(\"removable\").notNull().default(true),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n uniqueOwner: uniqueIndex(\"capability_component_owners_unique_idx\").on(\n table.facetInstallationId,\n table.ownerKind,\n table.ownerId,\n ),\n workspaceOwner: index(\"capability_component_owners_workspace_owner_idx\").on(\n table.workspaceId,\n table.ownerKind,\n table.ownerId,\n ),\n }),\n);\n\nexport const integrationSpecRevisions = pgTable(\n \"integration_spec_revisions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n apiFacetId: uuid(\"api_facet_id\")\n .notNull()\n .references(() => capabilityApiFacets.facetId, { onDelete: \"cascade\" }),\n revision: integer(\"revision\").notNull(),\n protocol: text(\"protocol\").notNull(),\n sourceUrl: text(\"source_url\"),\n specDigest: text(\"spec_digest\").notNull(),\n spec: jsonb(\"spec\").$type<Record<string, unknown>>().notNull(),\n status: text(\"status\").notNull().default(\"active\"),\n fetchedAt: timestamp(\"fetched_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n facetRevision: uniqueIndex(\"integration_spec_revisions_facet_revision_idx\").on(\n table.apiFacetId,\n table.revision,\n ),\n facetDigest: uniqueIndex(\"integration_spec_revisions_facet_digest_idx\").on(\n table.apiFacetId,\n table.specDigest,\n ),\n }),\n);\n\nexport const integrationTools = pgTable(\n \"integration_tools\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n facetId: uuid(\"facet_id\")\n .notNull()\n .references(() => capabilityFacets.id, { onDelete: \"cascade\" }),\n toolKey: text(\"tool_key\").notNull(),\n name: text(\"name\").notNull(),\n description: text(\"description\"),\n inputSchema: jsonb(\"input_schema\").$type<Record<string, unknown>>().notNull().default({}),\n outputSchema: jsonb(\"output_schema\").$type<Record<string, unknown>>(),\n effect: text(\"effect\").notNull().default(\"read\"),\n active: boolean(\"active\").notNull().default(true),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n facetTool: uniqueIndex(\"integration_tools_facet_tool_idx\").on(table.facetId, table.toolKey),\n }),\n);\n\nexport const integrationFeatureFacets = pgTable(\n \"integration_feature_facets\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n integrationFacetId: uuid(\"integration_facet_id\")\n .notNull()\n .references(() => capabilityIntegrationFacets.facetId, { onDelete: \"cascade\" }),\n featureKey: text(\"feature_key\").notNull(),\n kind: text(\"kind\").notNull(),\n configSchema: jsonb(\"config_schema\").$type<Record<string, unknown>>().notNull().default({}),\n capabilities: jsonb(\"capabilities\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n integrationFeature: uniqueIndex(\"integration_feature_facets_integration_feature_idx\").on(\n table.integrationFacetId,\n table.featureKey,\n ),\n integrationKind: index(\"integration_feature_facets_integration_kind_idx\").on(\n table.integrationFacetId,\n table.kind,\n ),\n }),\n);\n\nexport const integrationFeatureBindings = pgTable(\n \"integration_feature_bindings\",\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 featureFacetId: uuid(\"feature_facet_id\")\n .notNull()\n .references(() => integrationFeatureFacets.id, { onDelete: \"restrict\" }),\n integrationFacetInstallationId: uuid(\"integration_facet_installation_id\")\n .notNull()\n .references(() => capabilityFacetInstallations.id, { onDelete: \"cascade\" }),\n bindingKey: text(\"binding_key\").notNull(),\n displayName: text(\"display_name\").notNull(),\n runtimeKey: text(\"runtime_key\"),\n connectionId: uuid(\"connection_id\").references(() => connections.id, {\n onDelete: \"restrict\",\n }),\n status: text(\"status\").notNull().default(\"active\"),\n config: jsonb(\"config\").$type<Record<string, unknown>>().notNull().default({}),\n cursor: jsonb(\"cursor\").$type<Record<string, unknown>>().notNull().default({}),\n version: integer(\"version\").notNull().default(1),\n lastSuccessAt: timestamp(\"last_success_at\", { withTimezone: true }),\n lastErrorCode: text(\"last_error_code\"),\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 installationFeatureKey: uniqueIndex(\n \"integration_feature_bindings_installation_feature_key_idx\",\n ).on(\n table.workspaceId,\n table.integrationFacetInstallationId,\n table.featureFacetId,\n table.bindingKey,\n ),\n workspaceRuntime: uniqueIndex(\"integration_feature_bindings_workspace_runtime_idx\")\n .on(table.workspaceId, table.runtimeKey)\n .where(sql`${table.runtimeKey} is not null`),\n workspaceStatus: index(\"integration_feature_bindings_workspace_status_idx\").on(\n table.workspaceId,\n table.status,\n ),\n }),\n);\n\nexport const integrationFeatureBindingOwners = pgTable(\n \"integration_feature_binding_owners\",\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 bindingId: uuid(\"binding_id\")\n .notNull()\n .references(() => integrationFeatureBindings.id, { onDelete: \"cascade\" }),\n ownerKind: text(\"owner_kind\").notNull(),\n ownerId: text(\"owner_id\").notNull(),\n removable: boolean(\"removable\").notNull().default(true),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n uniqueOwner: uniqueIndex(\"integration_feature_binding_owners_unique_idx\").on(\n table.bindingId,\n table.ownerKind,\n table.ownerId,\n ),\n workspaceOwner: index(\"integration_feature_binding_owners_workspace_owner_idx\").on(\n table.workspaceId,\n table.ownerKind,\n table.ownerId,\n ),\n }),\n);\n\nexport const capabilityOperations = pgTable(\n \"capability_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 idempotencyKey: text(\"idempotency_key\").notNull(),\n requestDigest: text(\"request_digest\").notNull(),\n kind: text(\"kind\").notNull(),\n targetKind: text(\"target_kind\").notNull(),\n targetId: text(\"target_id\").notNull(),\n status: text(\"status\").notNull().default(\"pending\"),\n phase: text(\"phase\").notNull().default(\"admitted\"),\n version: integer(\"version\").notNull().default(1),\n result: jsonb(\"result\").$type<Record<string, unknown>>(),\n errorCode: text(\"error_code\"),\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 completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n },\n (table) => ({\n workspaceIdempotency: uniqueIndex(\"capability_operations_workspace_idempotency_idx\").on(\n table.workspaceId,\n table.idempotencyKey,\n ),\n workspaceStatus: index(\"capability_operations_workspace_status_idx\").on(\n table.workspaceId,\n table.status,\n table.updatedAt,\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, definition-content-immutable rig versions. Exactly one active\n// per rig (partial unique index). Definition columns never UPDATE; only the\n// `active` flag and provider-image build metadata are operationally mutable.\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 // Build-once provider-native image state, keyed by sandbox backend. This is\n // operational metadata bound to the exact immutable version definition;\n // it never contains credentials, variable values, repositories, archives,\n // session state, or process state.\n providerImages: jsonb(\"provider_images\").$type<RigProviderImages>().notNull().default({}),\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: losslessJsonb(\"payload\").$type<Record<string, unknown>>().notNull(),\n payloadCodecVersion: losslessCodecVersion(\"payload_codec_version\"),\n // 'proposed' | 'verifying' | 'merged' | 'rejected' | 'failed' (CHECK in 0047).\n status: text(\"status\").notNull().default(\"proposed\"),\n proposedBy: text(\"proposed_by\"),\n verification: losslessJsonb(\"verification\").$type<Record<string, unknown>>(),\n verificationCodecVersion: losslessCodecVersion(\"verification_codec_version\"),\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 \"./company-profile-schema\";\nexport * from \"./workspace-learning-policy-schema\";\nexport * from \"./preference-registry-schema\";\nexport * from \"./memory-governance-schema\";\nexport * from \"./scoped-knowledge-schema\";\nexport * from \"./knowledge-source-sync-schema\";\nexport * from \"./transcription-recordings-schema\";\nexport * from \"./interaction-schema\";\n","import { customType, integer } from \"drizzle-orm/pg-core\";\nimport { toPostgresLosslessJson, toPostgresLosslessText } from \"./lossless-json\";\n\n/**\n * Codec truth is explicit and out-of-band. This column intentionally has no\n * database or application default: a caller may set version 1 only in the same\n * statement that writes the corresponding value through the lossless codec.\n */\nexport function losslessCodecVersion<TName extends string>(name: TName) {\n return integer(name);\n}\n\nexport const losslessJsonb = customType<{ data: unknown; driverData: string }>({\n dataType() {\n return \"jsonb\";\n },\n toDriver(value) {\n return JSON.stringify(toPostgresLosslessJson(value));\n },\n fromDriver(value) {\n return typeof value === \"string\" ? JSON.parse(value) : value;\n },\n});\n\nexport const losslessText = customType<{ data: string; driverData: string }>({\n dataType() {\n return \"text\";\n },\n toDriver(value) {\n return toPostgresLosslessText(value);\n },\n fromDriver(value) {\n return value;\n },\n});\n","const JSON_STRING_PREFIX = \"opengeni_lossless_json_string_v2_81f06e15:\";\nconst JSON_KEY_PREFIX = \"opengeni_lossless_json_key_v2_7ca6071d:\";\nconst TEXT_PREFIX = \"opengeni_lossless_text_v2_c4100a62:\";\nconst MAX_JSON_DEPTH = 512;\n\n/**\n * Explicit out-of-band truth for values written by the lossless PostgreSQL\n * compatibility codec. Historical rows have NULL in their companion version\n * column and must never be decoded based on content shape alone.\n */\nexport const LOSSLESS_CONTENT_CODEC_VERSION = 1 as const;\nexport const LOSSLESS_CONTENT_WRITER_APPLICATION_NAME = \"opengeni-lossless-v1\";\n\nexport function withLosslessContentWriteVersion<\n const ContentKey extends string,\n const VersionKey extends string,\n const Value extends object,\n>(\n value: Value & Record<ContentKey, unknown>,\n contentKey: ContentKey,\n versionKey: VersionKey,\n): Value & Record<VersionKey, typeof LOSSLESS_CONTENT_CODEC_VERSION>;\nexport function withLosslessContentWriteVersion<\n const ContentKey extends string,\n const VersionKey extends string,\n const Value extends object,\n>(\n value: readonly (Value & Record<ContentKey, unknown>)[],\n contentKey: ContentKey,\n versionKey: VersionKey,\n): Array<Value & Record<VersionKey, typeof LOSSLESS_CONTENT_CODEC_VERSION>>;\nexport function withLosslessContentWriteVersion(\n value: Record<string, unknown> | readonly Record<string, unknown>[],\n contentKey: string,\n versionKey: string,\n): Record<string, unknown> | Record<string, unknown>[] {\n const stamp = (entry: Record<string, unknown>) => {\n if (!Object.hasOwn(entry, contentKey)) {\n throw new Error(`Lossless content write omitted ${contentKey}`);\n }\n return { ...entry, [versionKey]: LOSSLESS_CONTENT_CODEC_VERSION };\n };\n return Array.isArray(value) ? value.map(stamp) : stamp(value as Record<string, unknown>);\n}\n\nexport const LEGACY_LOSSLESS_JSON_ENVELOPE_KEY =\n \"$opengeniCanonicalV8_6d9b6f48_2a3e_4d8a_9e33_7611d9d08985\";\nexport const LEGACY_LOSSLESS_TEXT_PREFIX = \"opengeni-canonical-text-v1:\";\nexport const LOSSLESS_JSON_STRING_PREFIX = JSON_STRING_PREFIX;\nexport const LOSSLESS_TEXT_PREFIX = TEXT_PREFIX;\n\nexport class UnsupportedCanonicalValueError extends TypeError {\n override readonly name = \"UnsupportedCanonicalValueError\";\n}\n\ntype TransformResult = { value: unknown; changed: boolean };\n\n/**\n * Preserve JSON structure and SQL-queryable control keys. Only strings that\n * PostgreSQL cannot represent (or that collide with this unshipped v2 tag) are\n * encoded. Non-JSON graph values are rejected instead of silently rewritten.\n */\nexport function toPostgresLosslessJson(value: unknown): unknown {\n return encodeJsonValue(value, new Set<object>(), 0).value;\n}\n\n/**\n * Restore an explicitly versioned JSON value after a PostgreSQL read. A NULL\n * version denotes literal legacy/old-writer data, including strings that happen\n * to be valid active-marker encodings.\n */\nexport function fromPostgresLosslessJson<T>(value: T, codecVersion: number | null | undefined): T {\n return codecVersion === LOSSLESS_CONTENT_CODEC_VERSION\n ? (decodeJsonValue(value, 0).value as T)\n : value;\n}\n\n/**\n * Lossless text-column boundary for NUL, lone UTF-16, and v2-prefix text.\n * Only the unrepresentable code unit is tagged, with SQL-visible spaces around\n * the tag, so ordinary surrounding words retain their full-text-search shape.\n */\nexport function toPostgresLosslessText(value: string): string {\n if (isPostgresSafeString(value) && !value.includes(TEXT_PREFIX)) return value;\n let stored = \"\";\n for (let index = 0; index < value.length; index += 1) {\n const code = value.charCodeAt(index);\n if (value.startsWith(TEXT_PREFIX, index)) {\n stored += encodeTextCodeUnit(code);\n continue;\n }\n if (code === 0 || (code >= 0xdc00 && code <= 0xdfff)) {\n stored += encodeTextCodeUnit(code);\n continue;\n }\n if (code >= 0xd800 && code <= 0xdbff) {\n const next = index + 1 < value.length ? value.charCodeAt(index + 1) : 0;\n if (next < 0xdc00 || next > 0xdfff) {\n stored += encodeTextCodeUnit(code);\n continue;\n }\n stored += value.slice(index, index + 2);\n index += 1;\n continue;\n }\n stored += value[index];\n }\n return stored;\n}\n\n/**\n * Decode only an explicitly versioned value introduced by this migration. The\n * nullable companion column, not the producer string, is the codec truth.\n */\nexport function fromPostgresLosslessText(\n value: string,\n codecVersion: number | null | undefined,\n): string {\n return codecVersion === LOSSLESS_CONTENT_CODEC_VERSION\n ? value.replaceAll(\n new RegExp(` ${TEXT_PREFIX}([0-9a-f]{4}); `, \"g\"),\n (_match, encoded: string) => String.fromCharCode(Number.parseInt(encoded, 16)),\n )\n : value;\n}\n\nfunction encodeTextCodeUnit(code: number): string {\n return ` ${TEXT_PREFIX}${code.toString(16).padStart(4, \"0\")}; `;\n}\n\nfunction encodeJsonValue(value: unknown, ancestors: Set<object>, depth: number): TransformResult {\n if (depth > MAX_JSON_DEPTH) {\n throw new UnsupportedCanonicalValueError(\n `Canonical JSON exceeds the maximum supported depth of ${MAX_JSON_DEPTH}`,\n );\n }\n if (value === null || typeof value === \"boolean\") return { value, changed: false };\n if (typeof value === \"string\") {\n if (isPostgresSafeString(value) && !value.startsWith(JSON_STRING_PREFIX)) {\n return { value, changed: false };\n }\n return { value: `${JSON_STRING_PREFIX}${encodeUtf16(value)}`, changed: true };\n }\n if (typeof value === \"number\") {\n if (!Number.isFinite(value) || Object.is(value, -0)) {\n throw new UnsupportedCanonicalValueError(\n \"Canonical JSON requires finite non-negative-zero numbers\",\n );\n }\n return { value, changed: false };\n }\n if (\n typeof value === \"undefined\" ||\n typeof value === \"bigint\" ||\n typeof value === \"function\" ||\n typeof value === \"symbol\"\n ) {\n throw new UnsupportedCanonicalValueError(`Canonical JSON cannot contain ${typeof value}`);\n }\n if (!isPlainObject(value) && !Array.isArray(value)) {\n throw new UnsupportedCanonicalValueError(\"Canonical JSON requires arrays and plain objects\");\n }\n if (ancestors.has(value)) {\n throw new UnsupportedCanonicalValueError(\"Canonical JSON cannot contain cyclic references\");\n }\n if (Object.getOwnPropertySymbols(value).length > 0) {\n throw new UnsupportedCanonicalValueError(\"Canonical JSON cannot contain symbol keys\");\n }\n ancestors.add(value);\n try {\n if (Array.isArray(value)) {\n const descriptors = Object.getOwnPropertyDescriptors(value);\n const propertyNames = Object.getOwnPropertyNames(descriptors);\n const indexNames = propertyNames.filter((name) => name !== \"length\");\n if (\n indexNames.length !== value.length ||\n indexNames.some((name) => {\n const index = Number(name);\n return (\n !Number.isInteger(index) || index < 0 || index >= value.length || String(index) !== name\n );\n })\n ) {\n throw new UnsupportedCanonicalValueError(\n \"Canonical JSON arrays cannot contain non-index properties or holes\",\n );\n }\n const output: unknown[] = [];\n let changed = false;\n for (let index = 0; index < value.length; index += 1) {\n const descriptor = descriptors[String(index)];\n if (!descriptor || !descriptor.enumerable || !(\"value\" in descriptor)) {\n throw new UnsupportedCanonicalValueError(\n \"Canonical JSON arrays cannot contain holes, accessors, or hidden elements\",\n );\n }\n const encoded = encodeJsonValue(descriptor.value, ancestors, depth + 1);\n output.push(encoded.value);\n changed ||= encoded.changed;\n }\n return changed ? { value: output, changed: true } : { value, changed: false };\n }\n\n const descriptors = Object.getOwnPropertyDescriptors(value);\n const output: Record<string, unknown> = {};\n let changed = false;\n for (const [key, descriptor] of Object.entries(descriptors)) {\n if (!descriptor.enumerable || !(\"value\" in descriptor)) {\n throw new UnsupportedCanonicalValueError(\n \"Canonical JSON objects cannot contain accessors or hidden properties\",\n );\n }\n const encodedKey =\n isPostgresSafeString(key) && !key.startsWith(JSON_KEY_PREFIX)\n ? key\n : `${JSON_KEY_PREFIX}${encodeUtf16(key)}`;\n if (Object.prototype.hasOwnProperty.call(output, encodedKey)) {\n throw new UnsupportedCanonicalValueError(\"Canonical JSON key encoding collided\");\n }\n const encodedValue = encodeJsonValue(descriptor.value, ancestors, depth + 1);\n defineJsonDataProperty(output, encodedKey, encodedValue.value);\n changed ||= encodedKey !== key || encodedValue.changed;\n }\n return changed ? { value: output, changed: true } : { value, changed: false };\n } finally {\n ancestors.delete(value);\n }\n}\n\nfunction decodeJsonValue(value: unknown, depth: number): TransformResult {\n if (depth > MAX_JSON_DEPTH) return { value, changed: false };\n if (typeof value === \"string\") {\n const decoded = decodeTaggedString(value, JSON_STRING_PREFIX);\n return decoded === null ? { value, changed: false } : { value: decoded, changed: true };\n }\n if (!value || typeof value !== \"object\") return { value, changed: false };\n if (Array.isArray(value)) {\n const output: unknown[] = [];\n let changed = false;\n for (const entry of value) {\n const decoded = decodeJsonValue(entry, depth + 1);\n output.push(decoded.value);\n changed ||= decoded.changed;\n }\n return changed ? { value: output, changed: true } : { value, changed: false };\n }\n if (!isPlainObject(value)) return { value, changed: false };\n\n const output: Record<string, unknown> = {};\n let changed = false;\n for (const [key, entry] of Object.entries(value)) {\n const decodedKey = decodeTaggedString(key, JSON_KEY_PREFIX) ?? key;\n if (Object.prototype.hasOwnProperty.call(output, decodedKey)) {\n return { value, changed: false };\n }\n const decodedValue = decodeJsonValue(entry, depth + 1);\n defineJsonDataProperty(output, decodedKey, decodedValue.value);\n changed ||= decodedKey !== key || decodedValue.changed;\n }\n return changed ? { value: output, changed: true } : { value, changed: false };\n}\n\n/**\n * JSON permits own keys such as `__proto__`. Assignment into an ordinary `{}`\n * would invoke the inherited legacy setter and silently replace the object's\n * prototype instead of creating data. Define every transformed key explicitly\n * so encode/decode preserve hostile-but-valid JSON keys and property order.\n */\nfunction defineJsonDataProperty(\n target: Record<string, unknown>,\n key: string,\n value: unknown,\n): void {\n Object.defineProperty(target, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true,\n });\n}\n\nfunction encodeUtf16(value: string): string {\n const bytes = Buffer.allocUnsafe(value.length * 2);\n for (let index = 0; index < value.length; index += 1) {\n bytes.writeUInt16LE(value.charCodeAt(index), index * 2);\n }\n return bytes.toString(\"base64\");\n}\n\nfunction decodeTaggedString(value: string, prefix: string): string | null {\n if (!value.startsWith(prefix)) return null;\n const encoded = value.slice(prefix.length);\n if (encoded.length === 0 || !/^[A-Za-z0-9+/]+={0,2}$/.test(encoded)) return null;\n const bytes = Buffer.from(encoded, \"base64\");\n if (bytes.byteLength % 2 !== 0 || bytes.toString(\"base64\") !== encoded) return null;\n let decoded = \"\";\n for (let offset = 0; offset < bytes.byteLength; offset += 2) {\n decoded += String.fromCharCode(bytes.readUInt16LE(offset));\n }\n return decoded;\n}\n\nfunction isPostgresSafeString(value: string): boolean {\n for (let index = 0; index < value.length; index += 1) {\n const code = value.charCodeAt(index);\n if (code === 0) return false;\n if (code >= 0xd800 && code <= 0xdbff) {\n const next = index + 1 < value.length ? value.charCodeAt(index + 1) : 0;\n if (next < 0xdc00 || next > 0xdfff) return false;\n index += 1;\n continue;\n }\n if (code >= 0xdc00 && code <= 0xdfff) return false;\n }\n return true;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n","import { sql } from \"drizzle-orm\";\nimport {\n bigint,\n boolean,\n check,\n customType,\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\n// Tenant/workspace and cross-table foreign keys, FORCE-RLS policies, immutable\n// history guards, and deferred sequence/causal validation live in migration\n// 0184. This leaf intentionally does not import schema.ts, avoiding a cycle.\n\nconst bytea = customType<{ data: Uint8Array; driverData: Uint8Array }>({\n dataType: () => \"bytea\",\n});\n\nexport type EditableArtifactCausalFrontierRow = Array<{\n replicaId: string;\n counter: number;\n}>;\n\nexport type EditableArtifactOutboxEventRow = Record<string, unknown>;\nexport type EditableArtifactIdempotencyResultRow = Record<string, unknown>;\n\nfunction scopeColumns() {\n return {\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n };\n}\n\nconst stableIdSql = (column: unknown) => sql`${column} ~ '^[0-9a-f]{32}$' and ${column} !~ '^0+$'`;\nconst replicaIdSql = (column: unknown) => sql`${column} ~ '^[0-9a-f]{16}$' and ${column} !~ '^0+$'`;\nconst sha256Sql = (column: unknown) => sql`${column} ~ '^sha256:[0-9a-f]{64}$'`;\n\n/** Local monotonic fence for workspace-scoped artifact creation policy. */\nexport const editableArtifactScopeAuthorizationHeads = pgTable(\n \"editable_artifact_scope_authorization_heads\",\n {\n ...scopeColumns(),\n createRevision: bigint(\"create_revision\", { mode: \"number\" }).notNull().default(1),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({\n name: \"editable_artifact_scope_authorization_heads_pk\",\n columns: [table.accountId, table.workspaceId],\n }),\n revisionValid: check(\n \"editable_artifact_scope_authorization_heads_revision_chk\",\n sql`${table.createRevision} between 1 and 9007199254740991`,\n ),\n }),\n);\n\n/**\n * One-use live admission capabilities. The bearer token is never persisted;\n * only its digest is stored, and production access is through owner-defined\n * atomic routines rather than direct table grants.\n */\nexport const editableArtifactLiveTickets = pgTable(\n \"editable_artifact_live_tickets\",\n {\n tokenDigest: text(\"token_digest\").primaryKey(),\n ...scopeColumns(),\n artifactId: text(\"artifact_id\").notNull(),\n modality: text(\"modality\", {\n enum: [\"spreadsheet\", \"presentation\", \"document\"],\n }).notNull(),\n actorKind: text(\"actor_kind\", { enum: [\"human\", \"agent\", \"service\"] }).notNull(),\n actorSubjectId: text(\"actor_subject_id\").notNull(),\n replicaId: text(\"replica_id\").notNull(),\n agentSessionId: text(\"agent_session_id\"),\n agentTurnId: text(\"agent_turn_id\"),\n agentAttemptId: text(\"agent_attempt_id\"),\n agentGeneration: integer(\"agent_generation\"),\n serviceName: text(\"service_name\"),\n allowEdit: boolean(\"allow_edit\").notNull(),\n protocolVersion: integer(\"protocol_version\").notNull(),\n issuedAt: timestamp(\"issued_at\", { withTimezone: true }).notNull(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n },\n (table) => ({\n expiry: index(\"editable_artifact_live_tickets_expiry_idx\").on(\n table.expiresAt,\n table.tokenDigest,\n ),\n digestValid: check(\"editable_artifact_live_tickets_digest_chk\", sha256Sql(table.tokenDigest)),\n identityValid: check(\n \"editable_artifact_live_tickets_identity_chk\",\n sql`${stableIdSql(table.artifactId)} and ${replicaIdSql(table.replicaId)}`,\n ),\n }),\n);\n\nexport const editableArtifacts = pgTable(\n \"editable_artifacts\",\n {\n ...scopeColumns(),\n id: text(\"id\").notNull(),\n modality: text(\"modality\", {\n enum: [\"spreadsheet\", \"presentation\", \"document\"],\n }).notNull(),\n title: text(\"title\").notNull(),\n lifecycleState: text(\"lifecycle_state\", { enum: [\"active\", \"archived\"] })\n .notNull()\n .default(\"active\"),\n authorizationRevision: bigint(\"authorization_revision\", { mode: \"number\" }).notNull(),\n headSequence: bigint(\"head_sequence\", { mode: \"number\" }).notNull().default(0),\n causalFrontier: jsonb(\"causal_frontier\").$type<EditableArtifactCausalFrontierRow>(),\n stateHash: text(\"state_hash\").notNull(),\n currentSnapshotId: text(\"current_snapshot_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 pk: primaryKey({\n name: \"editable_artifacts_pk\",\n columns: [table.accountId, table.workspaceId, table.id],\n }),\n workspaceTimeline: index(\"editable_artifacts_workspace_timeline_idx\").on(\n table.workspaceId,\n table.lifecycleState,\n table.updatedAt.desc(),\n table.id,\n ),\n identityValid: check(\"editable_artifacts_identity_chk\", stableIdSql(table.id)),\n authorizationRevisionValid: check(\n \"editable_artifacts_authorization_revision_chk\",\n sql`${table.authorizationRevision} between 1 and 9007199254740991`,\n ),\n headValid: check(\n \"editable_artifacts_head_chk\",\n sql`${table.headSequence} between 0 and 9007199254740991`,\n ),\n stateHashValid: check(\"editable_artifacts_state_hash_chk\", sha256Sql(table.stateHash)),\n modalityStateValid: check(\n \"editable_artifacts_modality_state_chk\",\n sql`(${table.modality} = 'spreadsheet' and jsonb_typeof(${table.causalFrontier}) = 'array')\n or (${table.modality} in ('document', 'presentation') and ${table.causalFrontier} is null)`,\n ),\n }),\n);\n\nexport const editableArtifactTransactions = pgTable(\n \"editable_artifact_transactions\",\n {\n ...scopeColumns(),\n artifactId: text(\"artifact_id\").notNull(),\n modality: text(\"modality\", {\n enum: [\"spreadsheet\", \"presentation\", \"document\"],\n }).notNull(),\n id: text(\"id\").notNull(),\n clientTransactionId: text(\"client_transaction_id\").notNull(),\n previousLocalTransactionId: text(\"previous_local_transaction_id\"),\n requestHash: text(\"request_hash\").notNull(),\n intentHash: text(\"intent_hash\").notNull(),\n intentEnvelopeVersion: integer(\"intent_envelope_version\").notNull(),\n intentProtocolVersion: integer(\"intent_protocol_version\").notNull(),\n commandProtocolVersion: integer(\"command_protocol_version\").notNull(),\n intentByteSize: integer(\"intent_byte_size\").notNull(),\n intentBytes: bytea(\"intent_bytes\").notNull(),\n parentHeadSequence: bigint(\"parent_head_sequence\", { mode: \"number\" }).notNull(),\n sequenceStart: bigint(\"sequence_start\", { mode: \"number\" }).notNull(),\n sequenceEnd: bigint(\"sequence_end\", { mode: \"number\" }).notNull(),\n priorStateHash: text(\"prior_state_hash\").notNull(),\n causalBase: jsonb(\"causal_base\").$type<EditableArtifactCausalFrontierRow>(),\n resolvedCausalBase: jsonb(\"resolved_causal_base\").$type<EditableArtifactCausalFrontierRow>(),\n resultingCausalFrontier: jsonb(\n \"resulting_causal_frontier\",\n ).$type<EditableArtifactCausalFrontierRow>(),\n selectiveUndoTargets: jsonb(\"selective_undo_targets\").$type<string[]>(),\n stateHash: text(\"state_hash\").notNull(),\n operationCount: integer(\"operation_count\"),\n operationIds: jsonb(\"operation_ids\").$type<string[]>(),\n actorKind: text(\"actor_kind\", { enum: [\"human\", \"agent\", \"service\"] }).notNull(),\n actorSubjectId: text(\"actor_subject_id\").notNull(),\n actorKey: text(\"actor_key\").notNull(),\n actorKeyDigest: bytea(\"actor_key_digest\").generatedAlwaysAs(\n sql`opengeni_private.editable_artifact_text_sha256(actor_key)`,\n ),\n replicaId: text(\"replica_id\").notNull(),\n replicaCounter: bigint(\"replica_counter\", { mode: \"number\" }).notNull(),\n agentSessionId: text(\"agent_session_id\"),\n agentTurnId: text(\"agent_turn_id\"),\n agentAttemptId: text(\"agent_attempt_id\"),\n agentGeneration: integer(\"agent_generation\"),\n serviceName: text(\"service_name\"),\n kernelVersion: text(\"kernel_version\").notNull(),\n modelSchemaVersion: integer(\"model_schema_version\").notNull(),\n operationProtocolVersion: integer(\"operation_protocol_version\"),\n commitProtocolVersion: integer(\"commit_protocol_version\"),\n priorNativeRevision: bigint(\"prior_native_revision\", { mode: \"number\" }),\n nativeRevision: bigint(\"native_revision\", { mode: \"number\" }),\n commandCount: integer(\"command_count\"),\n nativeReceiptByteSize: integer(\"native_receipt_byte_size\"),\n nativeReceiptHash: text(\"native_receipt_hash\"),\n nativeReceiptBytes: bytea(\"native_receipt_bytes\"),\n committedTransactionByteSize: integer(\"committed_transaction_byte_size\").notNull(),\n committedTransactionHash: text(\"committed_transaction_hash\").notNull(),\n committedTransactionBytes: bytea(\"committed_transaction_bytes\").notNull(),\n committedAt: timestamp(\"committed_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({\n name: \"editable_artifact_transactions_pk\",\n columns: [table.accountId, table.workspaceId, table.artifactId, table.id],\n }),\n actorClientTransaction: uniqueIndex(\"editable_artifact_transactions_actor_client_uq\").on(\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.actorKeyDigest,\n table.clientTransactionId,\n ),\n predecessorIdentity: uniqueIndex(\"editable_artifact_transactions_predecessor_identity_uq\").on(\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.actorKeyDigest,\n table.replicaId,\n table.clientTransactionId,\n ),\n exactReceiptAuthority: uniqueIndex(\n \"editable_artifact_transactions_exact_receipt_authority_uq\",\n ).on(\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.id,\n table.actorKeyDigest,\n table.clientTransactionId,\n table.requestHash,\n ),\n replicaCounter: uniqueIndex(\"editable_artifact_transactions_replica_counter_uq\").on(\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.replicaId,\n table.replicaCounter,\n ),\n sequence: uniqueIndex(\"editable_artifact_transactions_sequence_uq\").on(\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.sequenceStart,\n table.sequenceEnd,\n ),\n replay: index(\"editable_artifact_transactions_replay_idx\").on(\n table.workspaceId,\n table.artifactId,\n table.sequenceStart,\n ),\n idValid: check(\"editable_artifact_transactions_id_chk\", stableIdSql(table.id)),\n replicaValid: check(\n \"editable_artifact_transactions_replica_chk\",\n replicaIdSql(table.replicaId),\n ),\n hashValid: check(\n \"editable_artifact_transactions_hash_chk\",\n sql`${sha256Sql(table.requestHash)} and ${sha256Sql(table.intentHash)}\n and ${table.intentHash} = ${table.requestHash}\n and ${table.intentEnvelopeVersion} = 1\n and ${table.intentProtocolVersion} = 1\n and ${table.commandProtocolVersion} > 0\n and ${table.intentByteSize} between 8 and 5242880\n and octet_length(${table.intentBytes}) = ${table.intentByteSize}\n and substring(${table.intentBytes} from 1 for 8) = convert_to('OGATX001', 'UTF8')\n and ${table.intentHash} = 'sha256:' || encode(sha256(${table.intentBytes}), 'hex')\n and ${sha256Sql(table.priorStateHash)}\n and ${sha256Sql(table.stateHash)}\n and ${sha256Sql(table.committedTransactionHash)}\n and ${table.parentHeadSequence} between 0 and 9007199254740991\n and ${table.sequenceStart} = ${table.parentHeadSequence} + 1\n and ${table.committedTransactionByteSize} between 1 and 8388608\n and octet_length(${table.committedTransactionBytes}) = ${table.committedTransactionByteSize}\n and ${table.committedTransactionHash} =\n 'sha256:' || encode(sha256(${table.committedTransactionBytes}), 'hex')\n and (\n (${table.modality} = 'spreadsheet'\n and ${table.operationCount} between 1 and 4096\n and ${table.sequenceEnd} = ${table.sequenceStart} + ${table.operationCount} - 1\n and jsonb_typeof(${table.causalBase}) = 'array'\n and jsonb_typeof(${table.resolvedCausalBase}) = 'array'\n and jsonb_typeof(${table.resultingCausalFrontier}) = 'array'\n and jsonb_typeof(${table.selectiveUndoTargets}) = 'array'\n and jsonb_typeof(${table.operationIds}) = 'array'\n and jsonb_array_length(${table.operationIds}) = ${table.operationCount}\n and ${table.operationProtocolVersion} = 1\n and ${table.commitProtocolVersion} is null\n and ${table.priorNativeRevision} is null\n and ${table.nativeRevision} is null\n and ${table.commandCount} is null\n and ${table.nativeReceiptByteSize} is null\n and ${table.nativeReceiptHash} is null\n and ${table.nativeReceiptBytes} is null\n and substring(${table.committedTransactionBytes} from 1 for 8) = convert_to('OGACO001', 'UTF8'))\n or\n (${table.modality} in ('document', 'presentation')\n and ${table.sequenceEnd} = ${table.sequenceStart}\n and ${table.causalBase} is null\n and ${table.resolvedCausalBase} is null\n and ${table.resultingCausalFrontier} is null\n and ${table.selectiveUndoTargets} is null\n and ${table.operationCount} is null\n and ${table.operationIds} is null\n and ${table.operationProtocolVersion} is null\n and ${table.commitProtocolVersion} = 1\n and ${table.priorNativeRevision} between 0 and 9007199254740991\n and ((${table.modality} = 'document' and (\n (${table.nativeRevision} = ${table.priorNativeRevision}\n and ${table.stateHash} = ${table.priorStateHash})\n or (${table.nativeRevision} = ${table.priorNativeRevision} + 1\n and ${table.stateHash} <> ${table.priorStateHash})\n )) or (${table.modality} = 'presentation'\n and ${table.nativeRevision} = ${table.priorNativeRevision} + 1\n and ${table.stateHash} <> ${table.priorStateHash}))\n and ${table.commandCount} between 1 and 4096\n and ${table.nativeReceiptByteSize} between 1 and 524288\n and octet_length(${table.nativeReceiptBytes}) = ${table.nativeReceiptByteSize}\n and ${sha256Sql(table.nativeReceiptHash)}\n and ${table.nativeReceiptHash} = 'sha256:' || encode(sha256(${table.nativeReceiptBytes}), 'hex')\n and substring(${table.committedTransactionBytes} from 1 for 8) = convert_to('OGAST001', 'UTF8')\n and get_byte(${table.committedTransactionBytes}, 12) =\n case ${table.modality} when 'document' then 1 else 2 end\n and get_byte(${table.committedTransactionBytes}, 13) = 0\n and get_byte(${table.committedTransactionBytes}, 14) = 0\n and get_byte(${table.committedTransactionBytes}, 15) = 0\n and substring(${table.nativeReceiptBytes} from 1 for 8) = convert_to(\n case ${table.modality} when 'document' then 'OGADR001' else 'OGAPR001' end,\n 'UTF8'\n ))\n )`,\n ),\n }),\n);\n\nexport const editableArtifactOperations = pgTable(\n \"editable_artifact_operations\",\n {\n ...scopeColumns(),\n artifactId: text(\"artifact_id\").notNull(),\n transactionId: text(\"transaction_id\").notNull(),\n operationId: text(\"operation_id\").notNull(),\n operationIndex: integer(\"operation_index\").notNull(),\n sequence: bigint(\"sequence\", { mode: \"number\" }).notNull(),\n dotReplicaId: text(\"dot_replica_id\").notNull(),\n dotCounter: bigint(\"dot_counter\", { mode: \"number\" }).notNull(),\n actorKey: text(\"actor_key\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({\n name: \"editable_artifact_operations_pk\",\n columns: [\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.transactionId,\n table.operationIndex,\n ],\n }),\n operationLookup: uniqueIndex(\"editable_artifact_operations_operation_uq\").on(\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.operationId,\n ),\n replay: uniqueIndex(\"editable_artifact_operations_sequence_uq\").on(\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.sequence,\n ),\n dotOperation: uniqueIndex(\"editable_artifact_operations_dot_operation_uq\").on(\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.dotReplicaId,\n table.dotCounter,\n table.operationIndex,\n ),\n idsValid: check(\n \"editable_artifact_operations_ids_chk\",\n sql`${stableIdSql(table.transactionId)} and ${stableIdSql(table.operationId)}`,\n ),\n dotValid: check(\n \"editable_artifact_operations_dot_chk\",\n sql`${replicaIdSql(table.dotReplicaId)} and ${table.dotCounter} > 0`,\n ),\n positionValid: check(\n \"editable_artifact_operations_position_chk\",\n sql`${table.operationIndex} between 0 and 4095\n and ${table.sequence} between 1 and 9007199254740991`,\n ),\n }),\n);\n\nexport const editableArtifactIdempotencyReceipts = pgTable(\n \"editable_artifact_idempotency_receipts\",\n {\n ...scopeColumns(),\n id: text(\"id\").notNull(),\n artifactId: text(\"artifact_id\").notNull(),\n operationKind: text(\"operation_kind\", {\n enum: [\"create\", \"import\", \"edit\", \"snapshot\", \"version\", \"materialize\"],\n }).notNull(),\n authorityKey: text(\"authority_key\").notNull(),\n authorityKeyDigest: bytea(\"authority_key_digest\").generatedAlwaysAs(\n sql`opengeni_private.editable_artifact_text_sha256(authority_key)`,\n ),\n idempotencyKey: text(\"idempotency_key\").notNull(),\n requestHash: text(\"request_hash\").notNull(),\n resourceType: text(\"resource_type\", {\n enum: [\"artifact\", \"transaction\", \"snapshot\", \"artifact_version\", \"materialization_job\"],\n }).notNull(),\n resourceId: text(\"resource_id\").notNull(),\n serverTransactionId: text(\"server_transaction_id\"),\n result: jsonb(\"result\").$type<EditableArtifactIdempotencyResultRow>().notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({\n name: \"editable_artifact_idempotency_receipts_pk\",\n columns: [table.accountId, table.workspaceId, table.id],\n }),\n creationRequest: uniqueIndex(\"editable_artifact_idempotency_receipts_creation_request_uq\")\n .on(\n table.accountId,\n table.workspaceId,\n table.operationKind,\n table.authorityKeyDigest,\n table.idempotencyKey,\n )\n .where(sql`${table.operationKind} in ('create', 'import')`),\n artifactRequest: uniqueIndex(\"editable_artifact_idempotency_receipts_artifact_request_uq\")\n .on(\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.operationKind,\n table.authorityKeyDigest,\n table.idempotencyKey,\n )\n .where(sql`${table.operationKind} in ('edit', 'snapshot', 'version', 'materialize')`),\n origin: uniqueIndex(\"editable_artifact_idempotency_receipts_origin_uq\")\n .on(table.accountId, table.workspaceId, table.artifactId)\n .where(\n sql`${table.operationKind} in ('create', 'import') and ${table.resourceType} = 'artifact'`,\n ),\n artifactTransaction: index(\"editable_artifact_idempotency_receipts_transaction_idx\").on(\n table.workspaceId,\n table.artifactId,\n table.serverTransactionId,\n ),\n valid: check(\n \"editable_artifact_idempotency_receipts_valid_chk\",\n sql`${stableIdSql(table.id)} and ${sha256Sql(table.requestHash)}`,\n ),\n }),\n);\n\nexport const editableArtifactUndoClaims = pgTable(\n \"editable_artifact_undo_claims\",\n {\n ...scopeColumns(),\n artifactId: text(\"artifact_id\").notNull(),\n targetOperationId: text(\"target_operation_id\").notNull(),\n claimingTransactionId: text(\"claiming_transaction_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({\n name: \"editable_artifact_undo_claims_pk\",\n columns: [table.accountId, table.workspaceId, table.artifactId, table.targetOperationId],\n }),\n transaction: index(\"editable_artifact_undo_claims_transaction_idx\").on(\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.claimingTransactionId,\n table.targetOperationId,\n ),\n valid: check(\n \"editable_artifact_undo_claims_ids_chk\",\n sql`${stableIdSql(table.targetOperationId)} and ${stableIdSql(table.claimingTransactionId)}`,\n ),\n }),\n);\n\nexport const editableArtifactSequenceCheckpoints = pgTable(\n \"editable_artifact_sequence_checkpoints\",\n {\n ...scopeColumns(),\n artifactId: text(\"artifact_id\").notNull(),\n modality: text(\"modality\", {\n enum: [\"spreadsheet\", \"presentation\", \"document\"],\n }).notNull(),\n headSequence: bigint(\"head_sequence\", { mode: \"number\" }).notNull(),\n transactionId: text(\"transaction_id\"),\n causalFrontier: jsonb(\"causal_frontier\").$type<EditableArtifactCausalFrontierRow>(),\n nativeRevision: bigint(\"native_revision\", { mode: \"number\" }),\n stateHash: text(\"state_hash\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({\n name: \"editable_artifact_sequence_checkpoints_pk\",\n columns: [table.accountId, table.workspaceId, table.artifactId, table.headSequence],\n }),\n transaction: uniqueIndex(\"editable_artifact_sequence_checkpoints_transaction_uq\")\n .on(table.accountId, table.workspaceId, table.artifactId, table.transactionId)\n .where(sql`${table.transactionId} is not null`),\n hashValid: check(\n \"editable_artifact_sequence_checkpoints_hash_chk\",\n sql`${sha256Sql(table.stateHash)} and (\n (${table.modality} = 'spreadsheet' and jsonb_typeof(${table.causalFrontier}) = 'array'\n and ${table.nativeRevision} is null)\n or (${table.modality} in ('document', 'presentation') and ${table.causalFrontier} is null\n and ${table.nativeRevision} between 0 and 9007199254740991)\n )`,\n ),\n }),\n);\n\nexport const editableArtifactBlobRefs = pgTable(\n \"editable_artifact_blob_refs\",\n {\n ...scopeColumns(),\n id: text(\"id\").notNull(),\n artifactId: text(\"artifact_id\").notNull(),\n kind: text(\"kind\", {\n enum: [\"snapshot\", \"original_import\", \"media\", \"loss_envelope\", \"materialization\"],\n }).notNull(),\n objectReference: text(\"object_reference\").notNull(),\n byteSize: bigint(\"byte_size\", { mode: \"number\" }).notNull(),\n contentHash: text(\"content_hash\").notNull(),\n mimeType: text(\"mime_type\").notNull(),\n sourceFileId: uuid(\"source_file_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({\n name: \"editable_artifact_blob_refs_pk\",\n columns: [table.accountId, table.workspaceId, table.artifactId, table.id],\n }),\n content: uniqueIndex(\"editable_artifact_blob_refs_content_uq\").on(\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.kind,\n table.contentHash,\n ),\n exactFacts: uniqueIndex(\"editable_artifact_blob_refs_exact_facts_uq\").on(\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.id,\n table.byteSize,\n table.contentHash,\n table.mimeType,\n ),\n hashValid: check(\"editable_artifact_blob_refs_hash_chk\", sha256Sql(table.contentHash)),\n sourceKindValid: check(\n \"editable_artifact_blob_refs_source_kind_chk\",\n sql`(${table.kind} = 'original_import') = (${table.sourceFileId} is not null)`,\n ),\n }),\n);\n\nexport const editableArtifactSnapshots = pgTable(\n \"editable_artifact_snapshots\",\n {\n ...scopeColumns(),\n artifactId: text(\"artifact_id\").notNull(),\n modality: text(\"modality\", {\n enum: [\"spreadsheet\", \"presentation\", \"document\"],\n }).notNull(),\n id: text(\"id\").notNull(),\n blobRefId: text(\"blob_ref_id\").notNull(),\n byteSize: bigint(\"byte_size\", { mode: \"number\" }).notNull(),\n contentHash: text(\"content_hash\").notNull(),\n mimeType: text(\"mime_type\")\n .notNull()\n .default(\"application/vnd.opengeni.editable-artifact-snapshot\"),\n coveredHeadSequence: bigint(\"covered_head_sequence\", { mode: \"number\" }).notNull(),\n coveredCausalFrontier:\n jsonb(\"covered_causal_frontier\").$type<EditableArtifactCausalFrontierRow>(),\n stateHash: text(\"state_hash\").notNull(),\n modelSchemaVersion: integer(\"model_schema_version\").notNull(),\n operationProtocolVersion: integer(\"operation_protocol_version\"),\n kernelVersion: text(\"kernel_version\").notNull(),\n crdtStateVersion: integer(\"crdt_state_version\"),\n nativeRevision: bigint(\"native_revision\", { mode: \"number\" }),\n verifiedAt: timestamp(\"verified_at\", { withTimezone: true }).notNull(),\n publishedAt: timestamp(\"published_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({\n name: \"editable_artifact_snapshots_pk\",\n columns: [table.accountId, table.workspaceId, table.artifactId, table.id],\n }),\n content: uniqueIndex(\"editable_artifact_snapshots_content_uq\").on(\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.contentHash,\n table.coveredHeadSequence,\n ),\n sourceManifest: uniqueIndex(\"editable_artifact_snapshots_source_manifest_uq\").on(\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.id,\n table.coveredHeadSequence,\n table.stateHash,\n ),\n coverage: index(\"editable_artifact_snapshots_coverage_idx\").on(\n table.workspaceId,\n table.artifactId,\n table.coveredHeadSequence.desc(),\n ),\n valid: check(\n \"editable_artifact_snapshots_valid_chk\",\n sql`${stableIdSql(table.id)} and ${sha256Sql(table.contentHash)} and ${sha256Sql(table.stateHash)}\n and (\n (${table.modality} = 'spreadsheet'\n and jsonb_typeof(${table.coveredCausalFrontier}) = 'array'\n and ${table.operationProtocolVersion} = 1\n and ${table.crdtStateVersion} > 0\n and ${table.nativeRevision} is null)\n or (${table.modality} in ('document', 'presentation')\n and ${table.coveredCausalFrontier} is null\n and ${table.operationProtocolVersion} is null\n and ${table.crdtStateVersion} is null\n and ${table.nativeRevision} between 0 and 9007199254740991)\n )`,\n ),\n }),\n);\n\nexport const editableArtifactVersions = pgTable(\n \"editable_artifact_versions\",\n {\n ...scopeColumns(),\n artifactId: text(\"artifact_id\").notNull(),\n id: text(\"id\").notNull(),\n snapshotId: text(\"snapshot_id\"),\n headSequence: bigint(\"head_sequence\", { mode: \"number\" }).notNull(),\n causalFrontier: jsonb(\"causal_frontier\").$type<EditableArtifactCausalFrontierRow>(),\n nativeRevision: bigint(\"native_revision\", { mode: \"number\" }),\n stateHash: text(\"state_hash\").notNull(),\n name: text(\"name\").notNull(),\n pinned: boolean(\"pinned\").notNull().default(true),\n createdBySubjectId: text(\"created_by_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({\n name: \"editable_artifact_versions_pk\",\n columns: [table.accountId, table.workspaceId, table.artifactId, table.id],\n }),\n timeline: index(\"editable_artifact_versions_timeline_idx\").on(\n table.workspaceId,\n table.artifactId,\n table.createdAt.desc(),\n table.id,\n ),\n valid: check(\n \"editable_artifact_versions_valid_chk\",\n sql`${stableIdSql(table.id)} and ${sha256Sql(table.stateHash)}\n and ((${table.causalFrontier} is not null and ${table.nativeRevision} is null)\n or (${table.causalFrontier} is null\n and ${table.nativeRevision} between 0 and 9007199254740991))`,\n ),\n }),\n);\n\nexport const editableArtifactMaterializationJobs = pgTable(\n \"editable_artifact_materialization_jobs\",\n {\n ...scopeColumns(),\n artifactId: text(\"artifact_id\").notNull(),\n id: text(\"id\").notNull(),\n versionId: text(\"version_id\"),\n inputSnapshotId: text(\"input_snapshot_id\").notNull(),\n targetHeadSequence: bigint(\"target_head_sequence\", { mode: \"number\" }).notNull(),\n stateHash: text(\"state_hash\").notNull(),\n format: text(\"format\", { enum: [\"xlsx\", \"pptx\", \"docx\", \"pdf\", \"png\", \"webp\"] }).notNull(),\n normalizedOptions: text(\"normalized_options\").notNull(),\n optionsHash: text(\"options_hash\").generatedAlwaysAs(\n sql`'sha256:' || encode(\n opengeni_private.editable_artifact_text_sha256(normalized_options), 'hex'\n )`,\n ),\n codecId: text(\"codec_id\").notNull(),\n codecVersion: text(\"codec_version\").notNull(),\n kernelVersion: text(\"kernel_version\").notNull(),\n fontRegistryHash: text(\"font_registry_hash\").notNull(),\n policyHash: text(\"policy_hash\").notNull(),\n state: text(\"state\", { enum: [\"pending\", \"running\", \"succeeded\", \"failed\"] })\n .notNull()\n .default(\"pending\"),\n attemptCount: integer(\"attempt_count\").notNull().default(0),\n leaseOwner: text(\"lease_owner\"),\n leaseExpiresAt: timestamp(\"lease_expires_at\", { withTimezone: true }),\n settledByOwner: text(\"settled_by_owner\"),\n errorCode: text(\"error_code\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n startedAt: timestamp(\"started_at\", { withTimezone: true }),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n },\n (table) => ({\n pk: primaryKey({\n name: \"editable_artifact_materialization_jobs_pk\",\n columns: [table.accountId, table.workspaceId, table.artifactId, table.id],\n }),\n cache: uniqueIndex(\"editable_artifact_materialization_jobs_cache_uq\").on(\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.inputSnapshotId,\n table.stateHash,\n table.format,\n table.optionsHash,\n table.codecId,\n table.codecVersion,\n table.kernelVersion,\n table.fontRegistryHash,\n table.policyHash,\n ),\n claim: index(\"editable_artifact_materialization_jobs_claim_idx\")\n .on(\n sql`coalesce(${table.leaseExpiresAt}, ${table.createdAt})`,\n table.createdAt,\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.id,\n )\n .where(sql`${table.state} in ('pending', 'running')`),\n valid: check(\n \"editable_artifact_materialization_jobs_valid_chk\",\n sql`${stableIdSql(table.id)} and ${sha256Sql(table.stateHash)}\n and ${sha256Sql(table.optionsHash)} and ${sha256Sql(table.fontRegistryHash)}\n and ${sha256Sql(table.policyHash)} and ${stableIdSql(table.inputSnapshotId)}`,\n ),\n }),\n);\n\nexport const editableArtifactMaterializationResults = pgTable(\n \"editable_artifact_materialization_results\",\n {\n ...scopeColumns(),\n artifactId: text(\"artifact_id\").notNull(),\n id: text(\"id\").notNull(),\n jobId: text(\"job_id\").notNull(),\n blobRefId: text(\"blob_ref_id\").notNull(),\n byteSize: bigint(\"byte_size\", { mode: \"number\" }).notNull(),\n contentHash: text(\"content_hash\").notNull(),\n mimeType: text(\"mime_type\").notNull(),\n verifiedAt: timestamp(\"verified_at\", { withTimezone: true }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({\n name: \"editable_artifact_materialization_results_pk\",\n columns: [table.accountId, table.workspaceId, table.artifactId, table.id],\n }),\n job: uniqueIndex(\"editable_artifact_materialization_results_job_uq\").on(\n table.accountId,\n table.workspaceId,\n table.artifactId,\n table.jobId,\n ),\n valid: check(\n \"editable_artifact_materialization_results_valid_chk\",\n sql`${stableIdSql(table.id)} and ${sha256Sql(table.contentHash)}`,\n ),\n }),\n);\n\nexport const editableArtifactLiveOutbox = pgTable(\n \"editable_artifact_live_outbox\",\n {\n ...scopeColumns(),\n artifactId: text(\"artifact_id\").notNull(),\n id: text(\"id\").notNull(),\n transactionId: text(\"transaction_id\"),\n snapshotId: text(\"snapshot_id\"),\n eventKind: text(\"event_kind\", {\n enum: [\"transaction_committed\", \"snapshot_published\"],\n }).notNull(),\n event: jsonb(\"event\").$type<EditableArtifactOutboxEventRow>().notNull(),\n state: text(\"state\", {\n enum: [\"pending\", \"publishing\", \"published\", \"dead_lettered\"],\n })\n .notNull()\n .default(\"pending\"),\n attemptCount: integer(\"attempt_count\").notNull().default(0),\n leaseOwner: text(\"lease_owner\"),\n leaseExpiresAt: timestamp(\"lease_expires_at\", { withTimezone: true }),\n nextAttemptAt: timestamp(\"next_attempt_at\", { withTimezone: true }).notNull().defaultNow(),\n lastErrorCode: text(\"last_error_code\"),\n publishedAt: timestamp(\"published_at\", { withTimezone: true }),\n deadLetteredAt: timestamp(\"dead_lettered_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({\n name: \"editable_artifact_live_outbox_pk\",\n columns: [table.accountId, table.workspaceId, table.artifactId, table.id],\n }),\n globalId: uniqueIndex(\"editable_artifact_live_outbox_id_uq\").on(table.id),\n transaction: uniqueIndex(\"editable_artifact_live_outbox_transaction_uq\")\n .on(table.accountId, table.workspaceId, table.artifactId, table.transactionId)\n .where(sql`${table.eventKind} = 'transaction_committed'`),\n snapshot: uniqueIndex(\"editable_artifact_live_outbox_snapshot_uq\")\n .on(table.accountId, table.workspaceId, table.artifactId, table.snapshotId)\n .where(sql`${table.eventKind} = 'snapshot_published'`),\n pendingClaim: index(\"editable_artifact_live_outbox_pending_claim_idx\")\n .on(table.nextAttemptAt, table.createdAt, table.id)\n .where(sql`${table.state} = 'pending'`),\n publishingClaim: index(\"editable_artifact_live_outbox_publishing_claim_idx\")\n .on(table.leaseExpiresAt, table.createdAt, table.id)\n .where(sql`${table.state} = 'publishing'`),\n valid: check(\"editable_artifact_live_outbox_id_chk\", stableIdSql(table.id)),\n }),\n);\n\nexport const editableArtifactReplicaLeases = pgTable(\n \"editable_artifact_replica_leases\",\n {\n ...scopeColumns(),\n artifactId: text(\"artifact_id\").notNull(),\n modality: text(\"modality\", {\n enum: [\"spreadsheet\", \"presentation\", \"document\"],\n }).notNull(),\n replicaId: text(\"replica_id\").notNull(),\n actorKey: text(\"actor_key\").notNull(),\n appliedHeadSequence: bigint(\"applied_head_sequence\", { mode: \"number\" }).notNull(),\n causalFrontier: jsonb(\"causal_frontier\").$type<EditableArtifactCausalFrontierRow>(),\n nativeRevision: bigint(\"native_revision\", { mode: \"number\" }),\n leaseExpiresAt: timestamp(\"lease_expires_at\", { withTimezone: true }).notNull(),\n lastSeenAt: timestamp(\"last_seen_at\", { withTimezone: true }).notNull().defaultNow(),\n revokedAt: timestamp(\"revoked_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({\n name: \"editable_artifact_replica_leases_pk\",\n columns: [table.accountId, table.workspaceId, table.artifactId, table.replicaId],\n }),\n expiry: index(\"editable_artifact_replica_leases_expiry_idx\")\n .on(table.leaseExpiresAt, table.replicaId)\n .where(sql`${table.revokedAt} is null`),\n replicaValid: check(\n \"editable_artifact_replica_leases_replica_chk\",\n sql`${replicaIdSql(table.replicaId)} and (\n (${table.modality} = 'spreadsheet'\n and jsonb_typeof(${table.causalFrontier}) = 'array'\n and ${table.nativeRevision} is null)\n or (${table.modality} in ('document', 'presentation')\n and ${table.causalFrontier} is null\n and ${table.nativeRevision} between 0 and 9007199254740991)\n )`,\n ),\n }),\n);\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 type { CompanyProfileSnapshotEntry } 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\nexport const companyProfileRevisions = pgTable(\n \"company_profile_revisions\",\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 revision: bigint(\"revision\", { mode: \"number\" })\n .notNull()\n .default(sql`nextval('company_profile_revision_seq')`),\n intent: text(\"intent\").notNull(),\n contentJson: text(\"content_json\").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 accountOperation: uniqueIndex(\"company_profile_revisions_account_operation_uq\").on(\n table.accountId,\n table.operationId,\n ),\n accountRevision: uniqueIndex(\"company_profile_revisions_account_revision_uq\").on(\n table.accountId,\n table.revision,\n ),\n accountHistory: index(\"company_profile_revisions_account_history_idx\").on(\n table.accountId,\n table.revision,\n ),\n receipt: check(\n \"company_profile_revisions_receipt_chk\",\n sql`${table.requestFingerprint} ~ '^[0-9a-f]{64}$'`,\n ),\n intent: check(\n \"company_profile_revisions_intent_chk\",\n sql`${table.intent} in ('active', 'proposal')`,\n ),\n }),\n);\n\nexport const companyProfileHeads = pgTable(\"company_profile_heads\", {\n accountId: uuid(\"account_id\").primaryKey(),\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\nexport const companyProfileActivationEvents = pgTable(\n \"company_profile_activation_events\",\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 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\"),\n newRevision: bigint(\"new_revision\", { mode: \"number\" }),\n newContentHash: text(\"new_content_hash\"),\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 accountOperation: uniqueIndex(\"company_profile_events_account_operation_uq\").on(\n table.accountId,\n table.operationId,\n ),\n accountActivationVersion: uniqueIndex(\"company_profile_events_account_version_uq\").on(\n table.accountId,\n table.activationVersion,\n ),\n accountTimeline: index(\"company_profile_events_account_time_idx\").on(\n table.accountId,\n table.createdAt,\n table.id,\n ),\n receipt: check(\n \"company_profile_events_receipt_chk\",\n sql`${table.requestFingerprint} ~ '^[0-9a-f]{64}$'`,\n ),\n type: check(\"company_profile_events_type_chk\", sql`${table.type} in ('activate', 'rollback')`),\n }),\n);\n\nexport const companyProfileSnapshots = pgTable(\n \"company_profile_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 profile: jsonb(\"profile\").$type<CompanyProfileSnapshotEntry | null>(),\n snapshotHash: text(\"snapshot_hash\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n attempt: uniqueIndex(\"company_profile_snapshots_attempt_uq\").on(\n table.accountId,\n table.workspaceId,\n table.attemptId,\n ),\n workspaceTimeline: index(\"company_profile_snapshots_workspace_time_idx\").on(\n table.workspaceId,\n table.createdAt,\n table.id,\n ),\n generation: check(\n \"company_profile_snapshots_generation_chk\",\n sql`${table.executionGeneration} > 0`,\n ),\n hash: check(\n \"company_profile_snapshots_hash_chk\",\n sql`${table.snapshotHash} ~ '^[0-9a-f]{64}$'`,\n ),\n }),\n);\n","import type { WorkspaceLearningSourceOverride } from \"@opengeni/contracts\";\nimport { sql } from \"drizzle-orm\";\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\nexport const workspaceLearningPolicyRevisions = pgTable(\n \"workspace_learning_policy_revisions\",\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 revision: bigint(\"revision\", { mode: \"number\" })\n .notNull()\n .default(sql`nextval('workspace_learning_policy_revision_seq')`),\n workspaceMode: text(\"workspace_mode\").notNull(),\n sourceOverrides: jsonb(\"source_overrides\").$type<WorkspaceLearningSourceOverride[]>().notNull(),\n policyHash: text(\"policy_hash\").notNull(),\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(\n \"workspace_learning_policy_revisions_workspace_operation_uq\",\n ).on(table.workspaceId, table.operationId),\n workspaceRevision: uniqueIndex(\"workspace_learning_policy_revisions_workspace_revision_uq\").on(\n table.workspaceId,\n table.revision,\n ),\n workspaceHistory: index(\"workspace_learning_policy_revisions_workspace_history_idx\").on(\n table.workspaceId,\n table.revision,\n ),\n mode: check(\n \"workspace_learning_policy_revisions_mode_chk\",\n sql`${table.workspaceMode} in ('off', 'suggest', 'automatic')`,\n ),\n }),\n);\n\nexport const workspaceLearningPolicyHeads = pgTable(\n \"workspace_learning_policy_heads\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n revisionId: uuid(\"revision_id\").notNull(),\n revision: bigint(\"revision\", { mode: \"number\" }).notNull(),\n policyHash: text(\"policy_hash\").notNull(),\n activationVersion: bigint(\"activation_version\", { mode: \"number\" }).notNull(),\n activatedAt: timestamp(\"activated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspace: uniqueIndex(\"workspace_learning_policy_heads_workspace_uq\").on(table.workspaceId),\n }),\n);\n\nexport const workspaceLearningPolicyActivationEvents = pgTable(\n \"workspace_learning_policy_activation_events\",\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 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 oldPolicyHash: text(\"old_policy_hash\"),\n newRevisionId: uuid(\"new_revision_id\").notNull(),\n newRevision: bigint(\"new_revision\", { mode: \"number\" }).notNull(),\n newPolicyHash: text(\"new_policy_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_learning_policy_events_workspace_operation_uq\").on(\n table.workspaceId,\n table.operationId,\n ),\n workspaceVersion: uniqueIndex(\"workspace_learning_policy_events_workspace_version_uq\").on(\n table.workspaceId,\n table.activationVersion,\n ),\n workspaceTimeline: index(\"workspace_learning_policy_events_workspace_time_idx\").on(\n table.workspaceId,\n table.createdAt,\n table.id,\n ),\n }),\n);\n\nexport const workspaceLearningPolicySnapshots = pgTable(\n \"workspace_learning_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 revisionId: uuid(\"revision_id\"),\n revision: bigint(\"revision\", { mode: \"number\" }),\n policyHash: text(\"policy_hash\"),\n activationVersion: bigint(\"activation_version\", { mode: \"number\" }).notNull(),\n activatedAt: timestamp(\"activated_at\", { withTimezone: true }),\n workspaceMode: text(\"workspace_mode\").notNull(),\n sourceOverrides: jsonb(\"source_overrides\").$type<WorkspaceLearningSourceOverride[]>().notNull(),\n snapshotHash: text(\"snapshot_hash\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n attempt: uniqueIndex(\"workspace_learning_policy_snapshots_attempt_uq\").on(\n table.accountId,\n table.workspaceId,\n table.attemptId,\n ),\n workspaceTimeline: index(\"workspace_learning_policy_snapshots_workspace_time_idx\").on(\n table.workspaceId,\n table.createdAt,\n table.id,\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: index(\"knowledge_document_versions_object_external_version_idx\").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 {\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\nexport const knowledgeSourceSyncStates = pgTable(\n \"knowledge_source_sync_states\",\n {\n sourceId: uuid(\"source_id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n scheduledTaskId: uuid(\"scheduled_task_id\").notNull(),\n sourceSyncGeneration: bigint(\"source_sync_generation\", { mode: \"number\" }).notNull(),\n sourceLifecycleGeneration: bigint(\"source_lifecycle_generation\", { mode: \"number\" }).notNull(),\n sourceConfigGeneration: bigint(\"source_config_generation\", { mode: \"number\" }).notNull(),\n controlWorkspaceId: uuid(\"control_workspace_id\").notNull(),\n providerCoordinationKey: text(\"provider_coordination_key\").notNull(),\n connectionId: uuid(\"connection_id\").notNull(),\n connectionVersion: bigint(\"connection_version\", { mode: \"number\" }).notNull(),\n connectionProviderDomain: text(\"connection_provider_domain\").notNull(),\n connectionKind: text(\"connection_kind\").notNull(),\n connectionOwnerSubjectId: text(\"connection_owner_subject_id\").notNull(),\n initiatingSubjectId: text(\"initiating_subject_id\").notNull(),\n destination: jsonb(\"destination\").$type<Record<string, unknown>>().notNull(),\n executionCheckpoint: jsonb(\"execution_checkpoint\").$type<Record<string, unknown>>(),\n executionCheckpointGeneration: bigint(\"execution_checkpoint_generation\", {\n mode: \"number\",\n })\n .notNull()\n .default(0),\n activeScanGeneration: bigint(\"active_scan_generation\", { mode: \"number\" }).notNull().default(0),\n providerCursor: jsonb(\"provider_cursor\").$type<Record<string, unknown>>(),\n wakeRevision: bigint(\"wake_revision\", { mode: \"number\" }).notNull().default(0),\n pendingWakeCount: integer(\"pending_wake_count\").notNull().default(0),\n leaseId: uuid(\"lease_id\"),\n leaseUntil: timestamp(\"lease_until\", { withTimezone: true }),\n bufferedWake: boolean(\"buffered_wake\").notNull().default(false),\n bufferedScheduledTaskRunId: uuid(\"buffered_scheduled_task_run_id\"),\n reconnectRequired: boolean(\"reconnect_required\").notNull().default(false),\n lastSuccessAt: timestamp(\"last_success_at\", { withTimezone: true }),\n lastCompletedAt: timestamp(\"last_completed_at\", { withTimezone: true }),\n lastSummary: jsonb(\"last_summary\").$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 task: uniqueIndex(\"knowledge_source_sync_states_task_uq\").on(table.scheduledTaskId),\n due: index(\"knowledge_source_sync_states_due_idx\").on(\n table.workspaceId,\n table.bufferedWake,\n table.leaseUntil,\n table.updatedAt,\n ),\n }),\n);\n\nexport const knowledgeSourceSyncObjectObservations = pgTable(\n \"knowledge_source_sync_object_observations\",\n {\n sourceId: uuid(\"source_id\").notNull(),\n externalObjectId: text(\"external_object_id\").notNull(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n scheduledTaskRunId: uuid(\"scheduled_task_run_id\"),\n scanGeneration: bigint(\"scan_generation\", { mode: \"number\" }).notNull(),\n providerRevision: text(\"provider_revision\"),\n metadataHash: text(\"metadata_hash\"),\n observedAt: timestamp(\"observed_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n identity: uniqueIndex(\"knowledge_source_sync_object_observations_identity_uq\").on(\n table.sourceId,\n table.externalObjectId,\n ),\n scan: index(\"knowledge_source_sync_object_observations_scan_idx\").on(\n table.workspaceId,\n table.sourceId,\n table.scanGeneration,\n ),\n }),\n);\n\nexport const knowledgeSourceSyncItemOutcomes = pgTable(\n \"knowledge_source_sync_item_outcomes\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n scheduledTaskRunId: uuid(\"scheduled_task_run_id\").notNull(),\n knowledgeSyncRunId: uuid(\"knowledge_sync_run_id\"),\n sourceId: uuid(\"source_id\").notNull(),\n sourceConfigGeneration: bigint(\"source_config_generation\", { mode: \"number\" }).notNull(),\n sourceLifecycleGeneration: bigint(\"source_lifecycle_generation\", { mode: \"number\" }).notNull(),\n externalObjectId: text(\"external_object_id\").notNull(),\n providerRevision: text(\"provider_revision\"),\n metadataHash: text(\"metadata_hash\"),\n aclEligibility: text(\"acl_eligibility\").notNull().default(\"pending\"),\n aclEvidence: jsonb(\"acl_evidence\").$type<Record<string, unknown>>(),\n indexObligationId: uuid(\"index_obligation_id\"),\n outcome: text(\"outcome\").notNull(),\n reasonCode: text(\"reason_code\"),\n detail: text(\"detail\"),\n contentSha256: text(\"content_sha256\"),\n sizeBytes: bigint(\"size_bytes\", { mode: \"number\" }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n identity: uniqueIndex(\"knowledge_source_sync_item_outcomes_identity_uq\").on(\n table.scheduledTaskRunId,\n table.externalObjectId,\n ),\n run: index(\"knowledge_source_sync_item_outcomes_run_idx\").on(\n table.workspaceId,\n table.scheduledTaskRunId,\n table.createdAt,\n ),\n }),\n);\n\nexport const knowledgeSourceSyncWakes = pgTable(\n \"knowledge_source_sync_wakes\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sourceId: uuid(\"source_id\").notNull(),\n scheduledTaskId: uuid(\"scheduled_task_id\").notNull(),\n scheduledTaskRunId: uuid(\"scheduled_task_run_id\").notNull(),\n cause: text(\"cause\").notNull(),\n producerKey: text(\"producer_key\").notNull(),\n sourceConfigGeneration: bigint(\"source_config_generation\", { mode: \"number\" }).notNull(),\n sourceLifecycleGeneration: bigint(\"source_lifecycle_generation\", { mode: \"number\" }).notNull(),\n coalesced: boolean(\"coalesced\").notNull().default(false),\n claimedAt: timestamp(\"claimed_at\", { withTimezone: true }),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n run: uniqueIndex(\"knowledge_source_sync_wakes_run_uq\").on(table.scheduledTaskRunId),\n pending: index(\"knowledge_source_sync_wakes_pending_idx\").on(\n table.workspaceId,\n table.sourceId,\n table.completedAt,\n table.createdAt,\n ),\n }),\n);\n\nexport const knowledgeSourceSyncIndexObligations = pgTable(\n \"knowledge_source_sync_index_obligations\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n scheduledTaskRunId: uuid(\"scheduled_task_run_id\"),\n sourceId: uuid(\"source_id\").notNull(),\n sourceSyncGeneration: bigint(\"source_sync_generation\", { mode: \"number\" }).notNull(),\n initiatingSubjectId: text(\"initiating_subject_id\").notNull(),\n externalObjectId: text(\"external_object_id\").notNull(),\n knowledgeSourceObjectId: uuid(\"knowledge_source_object_id\").notNull(),\n knowledgeDocumentVersionId: uuid(\"knowledge_document_version_id\").notNull(),\n documentId: uuid(\"document_id\").notNull(),\n sourceConfigGeneration: bigint(\"source_config_generation\", { mode: \"number\" }).notNull(),\n sourceLifecycleGeneration: bigint(\"source_lifecycle_generation\", { mode: \"number\" }).notNull(),\n objectLifecycleGeneration: bigint(\"object_lifecycle_generation\", { mode: \"number\" }).notNull(),\n objectVersionGeneration: bigint(\"object_version_generation\", { mode: \"number\" }).notNull(),\n citationLocator: jsonb(\"citation_locator\").$type<Record<string, unknown>>().notNull(),\n aclEligibility: text(\"acl_eligibility\").notNull().default(\"pending\"),\n status: text(\"status\").notNull().default(\"pending\"),\n failureCode: text(\"failure_code\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n version: uniqueIndex(\"knowledge_source_sync_index_obligations_version_uq\").on(\n table.knowledgeDocumentVersionId,\n ),\n pending: index(\"knowledge_source_sync_index_obligations_pending_idx\").on(\n table.workspaceId,\n table.status,\n table.createdAt,\n ),\n }),\n);\n","import { sql } from \"drizzle-orm\";\nimport { losslessCodecVersion, losslessText } from \"./lossless-columns\";\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: losslessText(\"transcript_text\"),\n transcriptTextCodecVersion: losslessCodecVersion(\"transcript_text_codec_version\"),\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: losslessText(\"transcript_text\"),\n transcriptTextCodecVersion: losslessCodecVersion(\"transcript_text_codec_version\"),\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","import type {\n AttachedBrowserDeviceCapabilities,\n AuthRunChoice,\n AuthRunExternalAction,\n AuthRunPendingField,\n BrowserRevisionMaterialization,\n BrowserSessionCapabilities,\n ComputerSessionCapabilities,\n InteractionPlacement,\n NetworkRouteConfiguration,\n NetworkRouteConsistency,\n SiteAuthAuthority,\n SiteAuthHealthPolicy,\n SiteAuthMethod,\n} from \"@opengeni/contracts\";\nimport { sql } from \"drizzle-orm\";\nimport {\n bigint,\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\n// Foreign keys into the older workspace/session/sandbox tables live in the SQL\n// migration. Keeping this schema leaf independent avoids a cycle into schema.ts.\n\nexport const interactionLifecycleValues = [\n \"starting\",\n \"active\",\n \"suspending\",\n \"suspended\",\n \"restoring\",\n \"repair_required\",\n \"lost\",\n \"ending\",\n \"ended\",\n \"failed\",\n] as const;\n\nexport const interactionOperationStateValues = [\n \"prepared\",\n \"dispatched\",\n \"completed\",\n \"failed\",\n \"outcome_unknown\",\n] as const;\n\nexport const interactionOperationKindValues = [\n \"create\",\n \"resume\",\n \"suspend\",\n \"end\",\n \"publish\",\n] as const;\n\nexport const workspaceInteractionRevisions = pgTable(\n \"workspace_interaction_revisions\",\n {\n workspaceId: uuid(\"workspace_id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n revision: bigint(\"revision\", { mode: \"number\" }).notNull().default(0),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n revisionValid: check(\n \"workspace_interaction_revisions_revision_check\",\n sql`${table.revision} >= 0`,\n ),\n }),\n);\n\nexport const browserIdentities = pgTable(\n \"browser_identities\",\n {\n id: uuid(\"id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n name: text(\"name\").notNull(),\n status: text(\"status\", { enum: [\"active\", \"archived\"] })\n .notNull()\n .default(\"active\"),\n defaultRevisionId: uuid(\"default_revision_id\"),\n headGeneration: bigint(\"head_generation\", { mode: \"number\" }).notNull().default(0),\n revisionCount: bigint(\"revision_count\", { mode: \"number\" }).notNull().default(0),\n createOperationId: uuid(\"create_operation_id\").notNull(),\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 workspaceIdentity: uniqueIndex(\"browser_identities_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n createOperation: uniqueIndex(\"browser_identities_workspace_create_operation_uq\").on(\n table.workspaceId,\n table.createOperationId,\n ),\n activeName: uniqueIndex(\"browser_identities_workspace_active_name_uq\")\n .on(table.workspaceId, sql`lower(${table.name})`)\n .where(sql`${table.status} = 'active'`),\n discovery: index(\"browser_identities_workspace_status_updated_idx\").on(\n table.workspaceId,\n table.status,\n table.updatedAt,\n table.id,\n ),\n valuesValid: check(\n \"browser_identities_values_check\",\n sql`octet_length(${table.name}) between 1 and 200\n and ${table.name} = btrim(${table.name})\n and octet_length(${table.createdBySubjectId}) between 1 and 1024\n and ${table.headGeneration} >= 0\n and ${table.revisionCount} >= 0\n and ${table.headGeneration} <= ${table.revisionCount}\n and (\n (${table.headGeneration} = 0 and ${table.defaultRevisionId} is null)\n or (${table.headGeneration} > 0 and ${table.defaultRevisionId} is not null)\n )`,\n ),\n }),\n);\n\nexport const browserRevisions = pgTable(\n \"browser_revisions\",\n {\n id: uuid(\"id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n identityId: uuid(\"identity_id\").notNull(),\n parentRevisionId: uuid(\"parent_revision_id\"),\n ordinal: bigint(\"ordinal\", { mode: \"number\" }).notNull(),\n sourceBrowserSessionId: uuid(\"source_browser_session_id\").notNull(),\n publicationOperationId: uuid(\"publication_operation_id\").notNull(),\n expectedHeadGeneration: bigint(\"expected_head_generation\", {\n mode: \"number\",\n }).notNull(),\n advanceDefaultRequested: boolean(\"advance_default_requested\").notNull(),\n defaultAdvanced: boolean(\"default_advanced\").notNull(),\n resultHeadGeneration: bigint(\"result_head_generation\", {\n mode: \"number\",\n }).notNull(),\n manifestDigest: text(\"manifest_digest\").notNull(),\n createdBySubjectId: text(\"created_by_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceRevision: uniqueIndex(\"browser_revisions_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n identityRevision: uniqueIndex(\"browser_revisions_identity_id_uq\").on(\n table.identityId,\n table.id,\n ),\n workspaceIdentityRevision: uniqueIndex(\"browser_revisions_workspace_identity_id_uq\").on(\n table.workspaceId,\n table.identityId,\n table.id,\n ),\n identityOrdinal: uniqueIndex(\"browser_revisions_identity_ordinal_uq\").on(\n table.identityId,\n table.ordinal,\n ),\n publicationOperation: uniqueIndex(\"browser_revisions_workspace_publication_operation_uq\").on(\n table.workspaceId,\n table.publicationOperationId,\n ),\n identityHistory: index(\"browser_revisions_identity_history_idx\").on(\n table.workspaceId,\n table.identityId,\n table.ordinal,\n ),\n valuesValid: check(\n \"browser_revisions_values_check\",\n sql`${table.ordinal} > 0\n and ${table.expectedHeadGeneration} >= 0\n and ${table.resultHeadGeneration} >= 0\n and (not ${table.defaultAdvanced} or ${table.advanceDefaultRequested})\n and (\n not ${table.defaultAdvanced}\n or ${table.resultHeadGeneration} = ${table.expectedHeadGeneration} + 1\n )\n and ${table.manifestDigest} ~ '^[0-9a-f]{64}$'\n and octet_length(${table.createdBySubjectId}) between 1 and 1024\n and ${table.parentRevisionId} is distinct from ${table.id}`,\n ),\n }),\n);\n\n/** Internal encrypted object metadata. Public mappers expose only bounded\n * integrity/compatibility fields through BrowserRevisionComponent. */\nexport const browserStateArtifacts = pgTable(\n \"browser_state_artifacts\",\n {\n id: uuid(\"id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sourceBrowserSessionId: uuid(\"source_browser_session_id\").notNull(),\n purpose: text(\"purpose\", {\n enum: [\"revision_component\", \"private_checkpoint\"],\n }).notNull(),\n kind: text(\"kind\", {\n enum: [\"chromium_profile\", \"normalized_web_state\", \"provider_snapshot\"],\n }).notNull(),\n format: text(\"format\").notNull(),\n artifactDigest: text(\"artifact_digest\").notNull(),\n contentDigest: text(\"content_digest\").notNull(),\n manifestDigest: text(\"manifest_digest\").notNull(),\n objectKey: text(\"object_key\").notNull(),\n encryptedDataKey: text(\"encrypted_data_key\").notNull(),\n sizeBytes: bigint(\"size_bytes\", { mode: \"number\" }).notNull(),\n materialization: jsonb(\"materialization\").$type<BrowserRevisionMaterialization>().notNull(),\n state: text(\"state\", { enum: [\"available\", \"delete_pending\", \"deleted\"] })\n .notNull()\n .default(\"available\"),\n retainedUntil: timestamp(\"retained_until\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n deletedAt: timestamp(\"deleted_at\", { withTimezone: true }),\n },\n (table) => ({\n workspaceArtifact: uniqueIndex(\"browser_state_artifacts_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n objectKey: uniqueIndex(\"browser_state_artifacts_object_key_uq\").on(table.objectKey),\n source: index(\"browser_state_artifacts_source_idx\").on(\n table.workspaceId,\n table.sourceBrowserSessionId,\n table.createdAt,\n ),\n gc: index(\"browser_state_artifacts_gc_idx\").on(\n table.state,\n table.retainedUntil,\n table.createdAt,\n ),\n valuesValid: check(\n \"browser_state_artifacts_values_check\",\n sql`octet_length(${table.format}) between 1 and 512\n and ${table.format} = btrim(${table.format})\n and ${table.artifactDigest} ~ '^[0-9a-f]{64}$'\n and ${table.contentDigest} ~ '^[0-9a-f]{64}$'\n and ${table.manifestDigest} ~ '^[0-9a-f]{64}$'\n and octet_length(${table.objectKey}) between 1 and 2048\n and ${table.objectKey} ~ ('^workspaces/' || ${table.workspaceId}::text || '/browser-state/[A-Za-z0-9._=-]+(/[A-Za-z0-9._=-]+)*$')\n and octet_length(${table.encryptedDataKey}) between 16 and 8192\n and ${table.sizeBytes} > 0\n and jsonb_typeof(${table.materialization}) = 'object'\n and octet_length(${table.materialization}::text) between 2 and 65536\n and (\n ${table.purpose} <> 'revision_component'\n or (\n ${table.state} = 'available'\n and ${table.retainedUntil} is null\n and ${table.deletedAt} is null\n )\n )`,\n ),\n lifecycleValid: check(\n \"browser_state_artifacts_lifecycle_check\",\n sql`(${table.state} = 'deleted' and ${table.deletedAt} is not null)\n or (${table.state} <> 'deleted' and ${table.deletedAt} is null)`,\n ),\n }),\n);\n\nexport const browserRevisionComponents = pgTable(\n \"browser_revision_components\",\n {\n id: uuid(\"id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n identityId: uuid(\"identity_id\").notNull(),\n revisionId: uuid(\"revision_id\").notNull(),\n artifactId: uuid(\"artifact_id\").notNull(),\n sourceBrowserSessionId: uuid(\"source_browser_session_id\").notNull(),\n artifactPurpose: text(\"artifact_purpose\", { enum: [\"revision_component\"] })\n .notNull()\n .default(\"revision_component\"),\n kind: text(\"kind\", {\n enum: [\"chromium_profile\", \"normalized_web_state\", \"provider_snapshot\"],\n }).notNull(),\n position: integer(\"position\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceComponent: uniqueIndex(\"browser_revision_components_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n revisionPosition: uniqueIndex(\"browser_revision_components_revision_position_uq\").on(\n table.revisionId,\n table.position,\n ),\n artifact: uniqueIndex(\"browser_revision_components_artifact_uq\").on(table.artifactId),\n revisionKind: uniqueIndex(\"browser_revision_components_revision_kind_uq\").on(\n table.revisionId,\n table.kind,\n ),\n revision: index(\"browser_revision_components_revision_idx\").on(\n table.workspaceId,\n table.revisionId,\n table.position,\n ),\n valuesValid: check(\n \"browser_revision_components_values_check\",\n sql`${table.position} between 0 and 15\n and ${table.artifactPurpose} = 'revision_component'`,\n ),\n }),\n);\n\nexport const attachedBrowserDevices = pgTable(\n \"attached_browser_devices\",\n {\n id: uuid(\"id\").notNull(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n enrollmentId: uuid(\"enrollment_id\").notNull(),\n name: text(\"name\").notNull(),\n profileLabel: text(\"profile_label\"),\n browserName: text(\"browser_name\").notNull(),\n browserVersion: text(\"browser_version\").notNull(),\n extensionVersion: text(\"extension_version\").notNull(),\n platform: text(\"platform\", {\n enum: [\"linux\", \"macos\", \"windows\"],\n }).notNull(),\n architecture: text(\"architecture\", { enum: [\"x64\", \"arm64\"] }).notNull(),\n connectionGeneration: text(\"connection_generation\").notNull(),\n inventoryRevision: bigint(\"inventory_revision\", {\n mode: \"number\",\n }).notNull(),\n tabCount: integer(\"tab_count\").notNull(),\n capabilities: jsonb(\"capabilities\").$type<AttachedBrowserDeviceCapabilities>().notNull(),\n lastSeenAt: timestamp(\"last_seen_at\", { withTimezone: true }).notNull(),\n disconnectedAt: timestamp(\"disconnected_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 identity: primaryKey({\n name: \"attached_browser_devices_workspace_id_pk\",\n columns: [table.workspaceId, table.id],\n }),\n enrollment: index(\"attached_browser_devices_enrollment_idx\").on(\n table.workspaceId,\n table.enrollmentId,\n table.disconnectedAt,\n table.updatedAt,\n ),\n discovery: index(\"attached_browser_devices_discovery_idx\").on(\n table.workspaceId,\n table.disconnectedAt,\n table.updatedAt,\n table.id,\n ),\n valuesValid: check(\n \"attached_browser_devices_values_check\",\n sql`octet_length(${table.name}) between 1 and 200\n and ${table.name} = btrim(${table.name})\n and (${table.profileLabel} is null or (\n octet_length(${table.profileLabel}) between 1 and 200\n and ${table.profileLabel} = btrim(${table.profileLabel})\n ))\n and octet_length(${table.browserName}) between 1 and 100\n and ${table.browserName} = btrim(${table.browserName})\n and octet_length(${table.browserVersion}) between 1 and 256\n and ${table.browserVersion} = btrim(${table.browserVersion})\n and octet_length(${table.extensionVersion}) between 1 and 256\n and ${table.extensionVersion} = btrim(${table.extensionVersion})\n and octet_length(${table.connectionGeneration}) between 1 and 256\n and ${table.connectionGeneration} ~ '^[A-Za-z0-9][A-Za-z0-9._:-]*$'\n and ${table.inventoryRevision} >= 0\n and ${table.tabCount} between 0 and 100000\n and jsonb_typeof(${table.capabilities}) = 'object'\n and octet_length(${table.capabilities}::text) between 2 and 65536`,\n ),\n }),\n);\n\n/** Accepted full-snapshot cursor for one connected agent's local browser bridge.\n * This lets heartbeat replay refresh liveness without allowing an older\n * inventory to disconnect a newly announced profile. */\nexport const attachedBrowserInventories = pgTable(\n \"attached_browser_inventories\",\n {\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n enrollmentId: uuid(\"enrollment_id\").notNull(),\n bridgeGeneration: text(\"bridge_generation\").notNull(),\n revision: bigint(\"revision\", { mode: \"number\" }).notNull(),\n observedAt: timestamp(\"observed_at\", { withTimezone: true }).notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n identity: primaryKey({\n name: \"attached_browser_inventories_workspace_enrollment_pk\",\n columns: [table.workspaceId, table.enrollmentId],\n }),\n valuesValid: check(\n \"attached_browser_inventories_values_check\",\n sql`octet_length(${table.bridgeGeneration}) between 1 and 256\n and ${table.bridgeGeneration} ~ '^[A-Za-z0-9][A-Za-z0-9._:-]*$'\n and ${table.revision} >= 0`,\n ),\n }),\n);\n\nexport const browserSessions = pgTable(\n \"browser_sessions\",\n {\n id: uuid(\"id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n name: text(\"name\").notNull(),\n lifecycle: text(\"lifecycle\", { enum: interactionLifecycleValues })\n .notNull()\n .default(\"starting\"),\n placementKind: text(\"placement_kind\", {\n enum: [\"sandbox_group\", \"connected_machine\", \"attached_device\", \"external_provider\"],\n }).notNull(),\n sandboxGroupId: uuid(\"sandbox_group_id\"),\n connectedSandboxId: uuid(\"connected_sandbox_id\"),\n deviceId: uuid(\"device_id\"),\n externalProviderId: text(\"external_provider_id\"),\n externalPlacementId: text(\"external_placement_id\"),\n controllerId: text(\"controller_id\"),\n controllerGeneration: text(\"controller_generation\"),\n placementInstanceId: text(\"placement_instance_id\"),\n tokenGeneration: integer(\"token_generation\").notNull().default(1),\n driverId: text(\"driver_id\").notNull(),\n engine: text(\"engine\", {\n enum: [\"chromium\", \"chrome\", \"firefox\", \"webkit\", \"lightpanda\", \"external\"],\n }).notNull(),\n engineVersion: text(\"engine_version\"),\n headless: boolean(\"headless\").notNull(),\n identityId: uuid(\"identity_id\"),\n baseRevisionId: uuid(\"base_revision_id\"),\n linkedComputerSessionId: uuid(\"linked_computer_session_id\"),\n networkRouteId: uuid(\"network_route_id\"),\n privateCheckpointArtifactId: uuid(\"private_checkpoint_artifact_id\"),\n capabilities: jsonb(\"capabilities\").$type<BrowserSessionCapabilities>().notNull(),\n createOperationId: uuid(\"create_operation_id\").notNull(),\n createdBySubjectId: text(\"created_by_subject_id\").notNull(),\n failureCode: text(\"failure_code\"),\n controllerHeartbeatAt: timestamp(\"controller_heartbeat_at\", {\n withTimezone: true,\n }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n lastUsedAt: timestamp(\"last_used_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceIdentity: uniqueIndex(\"browser_sessions_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n createOperation: uniqueIndex(\"browser_sessions_workspace_create_operation_uq\").on(\n table.workspaceId,\n table.createOperationId,\n ),\n workspaceLifecycle: index(\"browser_sessions_workspace_lifecycle_idx\").on(\n table.workspaceId,\n table.lifecycle,\n table.lastUsedAt,\n table.id,\n ),\n sandboxGroup: index(\"browser_sessions_sandbox_group_idx\").on(\n table.workspaceId,\n table.sandboxGroupId,\n table.lifecycle,\n ),\n valuesValid: check(\n \"browser_sessions_values_check\",\n sql`octet_length(${table.name}) between 1 and 200\n and octet_length(${table.driverId}) between 1 and 512\n and octet_length(${table.createdBySubjectId}) between 1 and 1024\n and ${table.tokenGeneration} > 0\n and octet_length(${table.capabilities}::text) between 2 and 65536\n and (${table.engineVersion} is null or octet_length(${table.engineVersion}) between 1 and 256)\n and (${table.failureCode} is null or octet_length(${table.failureCode}) between 1 and 512)`,\n ),\n placementValid: check(\n \"browser_sessions_placement_check\",\n sql`(\n ${table.placementKind} = 'sandbox_group'\n and ${table.sandboxGroupId} is not null\n and ${table.connectedSandboxId} is null\n and ${table.deviceId} is null\n and ${table.externalProviderId} is null\n and ${table.externalPlacementId} is null\n ) or (\n ${table.placementKind} = 'connected_machine'\n and ${table.sandboxGroupId} is null\n and ${table.connectedSandboxId} is not null\n and ${table.deviceId} is null\n and ${table.externalProviderId} is null\n and ${table.externalPlacementId} is null\n ) or (\n ${table.placementKind} = 'attached_device'\n and ${table.sandboxGroupId} is null\n and ${table.connectedSandboxId} is null\n and ${table.deviceId} is not null\n and ${table.externalProviderId} is null\n and ${table.externalPlacementId} is null\n ) or (\n ${table.placementKind} = 'external_provider'\n and ${table.sandboxGroupId} is null\n and ${table.connectedSandboxId} is null\n and ${table.deviceId} is null\n and ${table.externalProviderId} is not null\n and ${table.externalPlacementId} is not null\n and octet_length(${table.externalProviderId}) between 1 and 512\n and octet_length(${table.externalPlacementId}) between 1 and 512\n )`,\n ),\n controllerValid: check(\n \"browser_sessions_controller_check\",\n sql`(\n ${table.controllerId} is null\n and ${table.controllerGeneration} is null\n and ${table.placementInstanceId} is null\n and ${table.controllerHeartbeatAt} is null\n ) or (\n ${table.controllerId} is not null\n and octet_length(${table.controllerId}) between 1 and 512\n and ${table.controllerGeneration} is not null\n and octet_length(${table.controllerGeneration}) between 1 and 256\n and ${table.placementInstanceId} is not null\n and octet_length(${table.placementInstanceId}) between 1 and 512\n and ${table.controllerHeartbeatAt} is not null\n )`,\n ),\n identityRevisionValid: check(\n \"browser_sessions_identity_revision_check\",\n sql`${table.baseRevisionId} is null or ${table.identityId} is not null`,\n ),\n failureValid: check(\n \"browser_sessions_failure_check\",\n sql`(\n ${table.lifecycle} in ('repair_required', 'lost', 'failed')\n and ${table.failureCode} is not null\n ) or (\n ${table.lifecycle} not in ('repair_required', 'lost', 'failed')\n and ${table.failureCode} is null\n )`,\n ),\n }),\n);\n\nexport const browserSessionAssociations = pgTable(\n \"browser_session_associations\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n browserSessionId: uuid(\"browser_session_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n turnId: uuid(\"turn_id\"),\n attemptId: uuid(\"attempt_id\"),\n relationship: text(\"relationship\", {\n enum: [\"created\", \"using\", \"observing\", \"related\"],\n }).notNull(),\n actorSubjectId: text(\"actor_subject_id\").notNull(),\n lastUsedAt: timestamp(\"last_used_at\", { withTimezone: true }).notNull().defaultNow(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n resourceSessionRelationship: uniqueIndex(\n \"browser_session_associations_resource_session_relationship_uq\",\n ).on(table.browserSessionId, table.sessionId, table.relationship),\n workspaceSession: index(\"browser_session_associations_workspace_session_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.lastUsedAt,\n ),\n resource: index(\"browser_session_associations_resource_idx\").on(\n table.workspaceId,\n table.browserSessionId,\n table.lastUsedAt,\n ),\n valuesValid: check(\n \"browser_session_associations_values_check\",\n sql`octet_length(${table.actorSubjectId}) between 1 and 1024\n and (${table.attemptId} is null or ${table.turnId} is not null)`,\n ),\n }),\n);\n\nexport const computerSessions = pgTable(\n \"computer_sessions\",\n {\n id: uuid(\"id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n name: text(\"name\").notNull(),\n lifecycle: text(\"lifecycle\", { enum: interactionLifecycleValues })\n .notNull()\n .default(\"starting\"),\n placementKind: text(\"placement_kind\", {\n enum: [\"sandbox_group\", \"connected_machine\", \"attached_device\", \"external_provider\"],\n }).notNull(),\n sandboxGroupId: uuid(\"sandbox_group_id\"),\n connectedSandboxId: uuid(\"connected_sandbox_id\"),\n deviceId: uuid(\"device_id\"),\n externalProviderId: text(\"external_provider_id\"),\n externalPlacementId: text(\"external_placement_id\"),\n controllerId: text(\"controller_id\"),\n controllerGeneration: text(\"controller_generation\"),\n placementInstanceId: text(\"placement_instance_id\"),\n tokenGeneration: integer(\"token_generation\").notNull().default(1),\n platform: text(\"platform\", { enum: [\"linux\", \"macos\", \"windows\"] }),\n adapter: text(\"adapter\"),\n seatId: text(\"seat_id\"),\n displayId: text(\"display_id\"),\n capabilities: jsonb(\"capabilities\").$type<ComputerSessionCapabilities>(),\n createOperationId: uuid(\"create_operation_id\").notNull(),\n createdBySubjectId: text(\"created_by_subject_id\").notNull(),\n failureCode: text(\"failure_code\"),\n controllerHeartbeatAt: timestamp(\"controller_heartbeat_at\", {\n withTimezone: true,\n }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n lastUsedAt: timestamp(\"last_used_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceIdentity: uniqueIndex(\"computer_sessions_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n createOperation: uniqueIndex(\"computer_sessions_workspace_create_operation_uq\").on(\n table.workspaceId,\n table.createOperationId,\n ),\n workspaceLifecycle: index(\"computer_sessions_workspace_lifecycle_idx\").on(\n table.workspaceId,\n table.lifecycle,\n table.lastUsedAt,\n table.id,\n ),\n sandboxGroup: index(\"computer_sessions_sandbox_group_idx\").on(\n table.workspaceId,\n table.sandboxGroupId,\n table.lifecycle,\n ),\n valuesValid: check(\n \"computer_sessions_values_check\",\n sql`octet_length(${table.name}) between 1 and 200\n and ${table.name} = btrim(${table.name})\n and octet_length(${table.createdBySubjectId}) between 1 and 1024\n and ${table.tokenGeneration} > 0\n and (${table.adapter} is null or octet_length(${table.adapter}) between 1 and 512)\n and (${table.seatId} is null or octet_length(${table.seatId}) between 1 and 512)\n and (${table.displayId} is null or octet_length(${table.displayId}) between 1 and 512)\n and (${table.capabilities} is null or (\n jsonb_typeof(${table.capabilities}) = 'object'\n and octet_length(${table.capabilities}::text) between 2 and 65536\n ))\n and (${table.failureCode} is null or octet_length(${table.failureCode}) between 1 and 512)`,\n ),\n placementValid: check(\n \"computer_sessions_placement_check\",\n sql`(\n ${table.placementKind} = 'sandbox_group'\n and ${table.sandboxGroupId} is not null\n and ${table.connectedSandboxId} is null\n and ${table.deviceId} is null\n and ${table.externalProviderId} is null\n and ${table.externalPlacementId} is null\n ) or (\n ${table.placementKind} = 'connected_machine'\n and ${table.sandboxGroupId} is null\n and ${table.connectedSandboxId} is not null\n and ${table.deviceId} is null\n and ${table.externalProviderId} is null\n and ${table.externalPlacementId} is null\n ) or (\n ${table.placementKind} = 'attached_device'\n and ${table.sandboxGroupId} is null\n and ${table.connectedSandboxId} is null\n and ${table.deviceId} is not null\n and ${table.externalProviderId} is null\n and ${table.externalPlacementId} is null\n ) or (\n ${table.placementKind} = 'external_provider'\n and ${table.sandboxGroupId} is null\n and ${table.connectedSandboxId} is null\n and ${table.deviceId} is null\n and ${table.externalProviderId} is not null\n and ${table.externalPlacementId} is not null\n and octet_length(${table.externalProviderId}) between 1 and 512\n and octet_length(${table.externalPlacementId}) between 1 and 512\n )`,\n ),\n controllerValid: check(\n \"computer_sessions_controller_check\",\n sql`(\n ${table.controllerId} is null\n and ${table.controllerGeneration} is null\n and ${table.placementInstanceId} is null\n and ${table.controllerHeartbeatAt} is null\n ) or (\n ${table.controllerId} is not null\n and octet_length(${table.controllerId}) between 1 and 512\n and ${table.controllerGeneration} is not null\n and octet_length(${table.controllerGeneration}) between 1 and 256\n and ${table.placementInstanceId} is not null\n and octet_length(${table.placementInstanceId}) between 1 and 512\n and ${table.controllerHeartbeatAt} is not null\n )`,\n ),\n nativeBindingValid: check(\n \"computer_sessions_native_binding_check\",\n sql`(\n ${table.platform} is null\n and ${table.adapter} is null\n and ${table.seatId} is null\n and ${table.displayId} is null\n and ${table.capabilities} is null\n ) or (\n ${table.platform} is not null\n and ${table.adapter} is not null\n and ${table.seatId} is not null\n and ${table.displayId} is not null\n and ${table.capabilities} is not null\n )`,\n ),\n activeValid: check(\n \"computer_sessions_active_binding_check\",\n sql`${table.lifecycle} <> 'active' or (\n ${table.controllerId} is not null\n and ${table.platform} is not null\n and ${table.capabilities} is not null\n )`,\n ),\n failureValid: check(\n \"computer_sessions_failure_check\",\n sql`(\n ${table.lifecycle} in ('repair_required', 'lost', 'failed')\n and ${table.failureCode} is not null\n ) or (\n ${table.lifecycle} not in ('repair_required', 'lost', 'failed')\n and ${table.failureCode} is null\n )`,\n ),\n }),\n);\n\nexport const computerSessionAssociations = pgTable(\n \"computer_session_associations\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n computerSessionId: uuid(\"computer_session_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n turnId: uuid(\"turn_id\"),\n attemptId: uuid(\"attempt_id\"),\n relationship: text(\"relationship\", {\n enum: [\"created\", \"using\", \"observing\", \"related\"],\n }).notNull(),\n actorSubjectId: text(\"actor_subject_id\").notNull(),\n lastUsedAt: timestamp(\"last_used_at\", { withTimezone: true }).notNull().defaultNow(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n resourceSessionRelationship: uniqueIndex(\n \"computer_session_associations_resource_session_relationship_uq\",\n ).on(table.computerSessionId, table.sessionId, table.relationship),\n workspaceSession: index(\"computer_session_associations_workspace_session_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.lastUsedAt,\n ),\n resource: index(\"computer_session_associations_resource_idx\").on(\n table.workspaceId,\n table.computerSessionId,\n table.lastUsedAt,\n ),\n valuesValid: check(\n \"computer_session_associations_values_check\",\n sql`octet_length(${table.actorSubjectId}) between 1 and 1024\n and (${table.attemptId} is null or ${table.turnId} is not null)`,\n ),\n }),\n);\n\nexport const networkRoutes = pgTable(\n \"network_routes\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n name: text(\"name\").notNull(),\n status: text(\"status\", { enum: [\"active\", \"archived\"] })\n .notNull()\n .default(\"active\"),\n configuration: jsonb(\"configuration\").$type<NetworkRouteConfiguration>().notNull(),\n consistency: jsonb(\"consistency\").$type<NetworkRouteConsistency>().notNull(),\n version: bigint(\"version\", { mode: \"number\" }).notNull().default(1),\n createOperationId: uuid(\"create_operation_id\").notNull(),\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 workspaceIdentity: uniqueIndex(\"network_routes_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n createOperation: uniqueIndex(\"network_routes_workspace_create_operation_uq\").on(\n table.workspaceId,\n table.createOperationId,\n ),\n activeName: uniqueIndex(\"network_routes_workspace_active_name_uq\")\n .on(table.workspaceId, sql`lower(${table.name})`)\n .where(sql`${table.status} = 'active'`),\n discovery: index(\"network_routes_workspace_status_updated_idx\").on(\n table.workspaceId,\n table.status,\n table.updatedAt,\n table.id,\n ),\n valuesValid: check(\n \"network_routes_values_check\",\n sql`octet_length(${table.name}) between 1 and 200\n and ${table.name} = btrim(${table.name})\n and jsonb_typeof(${table.configuration}) = 'object'\n and octet_length(${table.configuration}::text) between 2 and 65536\n and jsonb_typeof(${table.consistency}) = 'object'\n and octet_length(${table.consistency}::text) between 2 and 65536\n and ${table.version} > 0\n and octet_length(${table.createdBySubjectId}) between 1 and 1024\n and octet_length(${table.updatedBySubjectId}) between 1 and 1024`,\n ),\n }),\n);\n\nexport const siteAuthConnections = pgTable(\n \"site_auth_connections\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n name: text(\"name\").notNull(),\n accountLabel: text(\"account_label\").notNull(),\n status: text(\"status\", { enum: [\"active\", \"archived\"] })\n .notNull()\n .default(\"active\"),\n origins: jsonb(\"origins\").$type<string[]>().notNull(),\n loginUrl: text(\"login_url\"),\n verificationUrlPrefixes: jsonb(\"verification_url_prefixes\").$type<string[]>().notNull(),\n authorities: jsonb(\"authorities\").$type<SiteAuthAuthority[]>().notNull(),\n methods: jsonb(\"methods\").$type<SiteAuthMethod[]>().notNull(),\n preferredIdentityId: uuid(\"preferred_identity_id\"),\n preferredPlacement: jsonb(\"preferred_placement\").$type<InteractionPlacement>(),\n preferredNetworkRouteId: uuid(\"preferred_network_route_id\"),\n healthPolicy: jsonb(\"health_policy\").$type<SiteAuthHealthPolicy>().notNull(),\n verificationState: text(\"verification_state\", {\n enum: [\"unknown\", \"verified\", \"needs_repair\", \"failed\"],\n })\n .notNull()\n .default(\"unknown\"),\n lastVerifiedAt: timestamp(\"last_verified_at\", { withTimezone: true }),\n lastVerifiedUrl: text(\"last_verified_url\"),\n repairCode: text(\"repair_code\"),\n version: bigint(\"version\", { mode: \"number\" }).notNull().default(1),\n createOperationId: uuid(\"create_operation_id\").notNull(),\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 workspaceIdentity: uniqueIndex(\"site_auth_connections_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n createOperation: uniqueIndex(\"site_auth_connections_workspace_create_operation_uq\").on(\n table.workspaceId,\n table.createOperationId,\n ),\n activeName: uniqueIndex(\"site_auth_connections_workspace_active_name_uq\")\n .on(table.workspaceId, sql`lower(${table.name})`)\n .where(sql`${table.status} = 'active'`),\n discovery: index(\"site_auth_connections_workspace_status_updated_idx\").on(\n table.workspaceId,\n table.status,\n table.updatedAt,\n table.id,\n ),\n valuesValid: check(\n \"site_auth_connections_values_check\",\n sql`octet_length(${table.name}) between 1 and 200\n and ${table.name} = btrim(${table.name})\n and octet_length(${table.accountLabel}) between 1 and 200\n and ${table.accountLabel} = btrim(${table.accountLabel})\n and jsonb_typeof(${table.origins}) = 'array'\n and octet_length(${table.origins}::text) between 3 and 65536\n and (${table.loginUrl} is null or octet_length(${table.loginUrl}) between 1 and 16384)\n and jsonb_typeof(${table.verificationUrlPrefixes}) = 'array'\n and octet_length(${table.verificationUrlPrefixes}::text) between 2 and 65536\n and jsonb_typeof(${table.authorities}) = 'array'\n and octet_length(${table.authorities}::text) between 3 and 65536\n and jsonb_typeof(${table.methods}) = 'array'\n and octet_length(${table.methods}::text) between 3 and 65536\n and (${table.preferredPlacement} is null or (\n jsonb_typeof(${table.preferredPlacement}) = 'object'\n and octet_length(${table.preferredPlacement}::text) between 2 and 65536\n ))\n and jsonb_typeof(${table.healthPolicy}) = 'object'\n and octet_length(${table.healthPolicy}::text) between 2 and 65536\n and (${table.lastVerifiedUrl} is null or octet_length(${table.lastVerifiedUrl}) between 1 and 16384)\n and (${table.repairCode} is null or octet_length(${table.repairCode}) between 1 and 512)\n and ${table.version} > 0\n and octet_length(${table.createdBySubjectId}) between 1 and 1024\n and octet_length(${table.updatedBySubjectId}) between 1 and 1024`,\n ),\n verificationValid: check(\n \"site_auth_connections_verification_check\",\n sql`(\n ${table.verificationState} = 'verified'\n and ${table.lastVerifiedAt} is not null\n and ${table.lastVerifiedUrl} is not null\n and ${table.repairCode} is null\n ) or (\n ${table.verificationState} = 'unknown'\n and ${table.lastVerifiedAt} is null\n and ${table.lastVerifiedUrl} is null\n and ${table.repairCode} is null\n ) or (\n ${table.verificationState} in ('needs_repair', 'failed')\n and ${table.repairCode} is not null\n )`,\n ),\n }),\n);\n\nexport const authRuns = pgTable(\n \"auth_runs\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n siteAuthConnectionId: uuid(\"site_auth_connection_id\").notNull(),\n browserSessionId: uuid(\"browser_session_id\").notNull(),\n targetId: text(\"target_id\").notNull(),\n controllerGeneration: text(\"controller_generation\").notNull(),\n targetGeneration: text(\"target_generation\").notNull(),\n documentGeneration: text(\"document_generation\"),\n methodId: text(\"method_id\"),\n authorityId: text(\"authority_id\"),\n state: text(\"state\", {\n enum: [\n \"discovering\",\n \"awaiting_choice\",\n \"awaiting_secret\",\n \"awaiting_external_action\",\n \"working\",\n \"verified\",\n \"failed\",\n \"cancelled\",\n ],\n })\n .notNull()\n .default(\"discovering\"),\n choices: jsonb(\"choices\").$type<AuthRunChoice[]>().notNull().default([]),\n pendingFields: jsonb(\"pending_fields\").$type<AuthRunPendingField[]>().notNull().default([]),\n externalAction: jsonb(\"external_action\").$type<AuthRunExternalAction>(),\n interventionId: uuid(\"intervention_id\"),\n verifiedUrl: text(\"verified_url\"),\n failureCode: text(\"failure_code\"),\n version: bigint(\"version\", { mode: \"number\" }).notNull().default(1),\n operationId: uuid(\"operation_id\").notNull(),\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 settledAt: timestamp(\"settled_at\", { withTimezone: true }),\n },\n (table) => ({\n workspaceIdentity: uniqueIndex(\"auth_runs_workspace_id_uq\").on(table.workspaceId, table.id),\n operation: uniqueIndex(\"auth_runs_workspace_operation_uq\").on(\n table.workspaceId,\n table.operationId,\n ),\n activeTarget: uniqueIndex(\"auth_runs_active_browser_target_uq\")\n .on(table.workspaceId, table.browserSessionId, table.targetId)\n .where(sql`${table.settledAt} is null`),\n browserHistory: index(\"auth_runs_browser_history_idx\").on(\n table.workspaceId,\n table.browserSessionId,\n table.createdAt,\n ),\n siteHistory: index(\"auth_runs_site_history_idx\").on(\n table.workspaceId,\n table.siteAuthConnectionId,\n table.createdAt,\n ),\n valuesValid: check(\n \"auth_runs_values_check\",\n sql`octet_length(${table.targetId}) between 1 and 512\n and octet_length(${table.controllerGeneration}) between 1 and 256\n and octet_length(${table.targetGeneration}) between 1 and 256\n and (${table.documentGeneration} is null or octet_length(${table.documentGeneration}) between 1 and 256)\n and (${table.methodId} is null or octet_length(${table.methodId}) between 1 and 512)\n and (${table.authorityId} is null or octet_length(${table.authorityId}) between 1 and 512)\n and jsonb_typeof(${table.choices}) = 'array'\n and octet_length(${table.choices}::text) between 2 and 65536\n and jsonb_typeof(${table.pendingFields}) = 'array'\n and octet_length(${table.pendingFields}::text) between 2 and 65536\n and (${table.externalAction} is null or (\n jsonb_typeof(${table.externalAction}) = 'object'\n and octet_length(${table.externalAction}::text) between 2 and 65536\n ))\n and (${table.verifiedUrl} is null or octet_length(${table.verifiedUrl}) between 1 and 16384)\n and (${table.failureCode} is null or octet_length(${table.failureCode}) between 1 and 512)\n and ${table.version} > 0\n and octet_length(${table.createdBySubjectId}) between 1 and 1024`,\n ),\n lifecycleValid: check(\n \"auth_runs_lifecycle_check\",\n sql`(\n ${table.state} = 'verified'\n and ${table.verifiedUrl} is not null\n and ${table.failureCode} is null\n and ${table.settledAt} is not null\n ) or (\n ${table.state} = 'failed'\n and ${table.verifiedUrl} is null\n and ${table.failureCode} is not null\n and ${table.settledAt} is not null\n ) or (\n ${table.state} = 'cancelled'\n and ${table.verifiedUrl} is null\n and ${table.settledAt} is not null\n ) or (\n ${table.state} not in ('verified', 'failed', 'cancelled')\n and ${table.verifiedUrl} is null\n and ${table.failureCode} is null\n and ${table.settledAt} is null\n )`,\n ),\n projectionValid: check(\n \"auth_runs_projection_check\",\n sql`(${table.state} = 'awaiting_choice') = (jsonb_array_length(${table.choices}) > 0)\n and (${table.state} = 'awaiting_secret') = (jsonb_array_length(${table.pendingFields}) > 0)\n and (${table.state} = 'awaiting_external_action') = (${table.externalAction} is not null)\n and (${table.state} = 'failed') = (${table.failureCode} is not null)`,\n ),\n }),\n);\n\nexport const interactionInterventions = pgTable(\n \"interaction_interventions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n resourceKind: text(\"resource_kind\", {\n enum: [\"browser_session\", \"computer_session\"],\n }).notNull(),\n resourceId: uuid(\"resource_id\").notNull(),\n targetId: text(\"target_id\").notNull(),\n controllerGeneration: text(\"controller_generation\").notNull(),\n targetGeneration: text(\"target_generation\").notNull(),\n documentGeneration: text(\"document_generation\"),\n kind: text(\"kind\", {\n enum: [\"manual_login\", \"mfa\", \"external_action\", \"confirmation\", \"other\"],\n }).notNull(),\n reason: text(\"reason\").notNull(),\n status: text(\"status\", {\n enum: [\"open\", \"completed\", \"dismissed\", \"expired\", \"cancelled\"],\n })\n .notNull()\n .default(\"open\"),\n authRunId: uuid(\"auth_run_id\"),\n originatingSessionId: uuid(\"originating_session_id\").notNull(),\n originatingTurnId: uuid(\"originating_turn_id\"),\n originatingAttemptId: uuid(\"originating_attempt_id\"),\n originatingToolOperationId: uuid(\"originating_tool_operation_id\"),\n responseActorSubjectId: text(\"response_actor_subject_id\"),\n version: bigint(\"version\", { mode: \"number\" }).notNull().default(1),\n operationId: uuid(\"operation_id\").notNull(),\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 settledAt: timestamp(\"settled_at\", { withTimezone: true }),\n },\n (table) => ({\n workspaceIdentity: uniqueIndex(\"interaction_interventions_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n operation: uniqueIndex(\"interaction_interventions_workspace_operation_uq\").on(\n table.workspaceId,\n table.operationId,\n ),\n openResource: index(\"interaction_interventions_open_resource_idx\").on(\n table.workspaceId,\n table.resourceKind,\n table.resourceId,\n table.status,\n table.createdAt,\n ),\n openTargetKind: uniqueIndex(\"interaction_interventions_open_target_kind_uq\")\n .on(table.workspaceId, table.resourceKind, table.resourceId, table.targetId, table.kind)\n .where(sql`${table.status} = 'open'`),\n openAuthRun: uniqueIndex(\"interaction_interventions_open_auth_run_uq\")\n .on(table.workspaceId, table.authRunId)\n .where(sql`${table.status} = 'open' and ${table.authRunId} is not null`),\n valuesValid: check(\n \"interaction_interventions_values_check\",\n sql`octet_length(${table.targetId}) between 1 and 512\n and octet_length(${table.controllerGeneration}) between 1 and 256\n and octet_length(${table.targetGeneration}) between 1 and 256\n and (${table.documentGeneration} is null or octet_length(${table.documentGeneration}) between 1 and 256)\n and octet_length(${table.reason}) between 1 and 2048\n and ${table.reason} = btrim(${table.reason})\n and (${table.originatingAttemptId} is null or ${table.originatingTurnId} is not null)\n and (${table.originatingToolOperationId} is null or ${table.originatingAttemptId} is not null)\n and (${table.responseActorSubjectId} is null or octet_length(${table.responseActorSubjectId}) between 1 and 1024)\n and ${table.version} > 0`,\n ),\n lifecycleValid: check(\n \"interaction_interventions_lifecycle_check\",\n sql`(\n ${table.status} = 'open'\n and ${table.responseActorSubjectId} is null\n and ${table.settledAt} is null\n ) or (\n ${table.status} <> 'open'\n and ${table.settledAt} is not null\n )`,\n ),\n }),\n);\n\nexport const interactionResourceOperations = pgTable(\n \"interaction_resource_operations\",\n {\n operationId: uuid(\"operation_id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n resourceKind: text(\"resource_kind\", {\n enum: [\"network_route\", \"site_auth_connection\", \"auth_run\", \"intervention\"],\n }).notNull(),\n resourceId: uuid(\"resource_id\").notNull(),\n kind: text(\"kind\", {\n enum: [\"create\", \"update\", \"start\", \"report\", \"protected_fill\", \"verify\", \"resolve\"],\n }).notNull(),\n requestDigest: text(\"request_digest\").notNull(),\n state: text(\"state\", {\n enum: [\"prepared\", \"dispatched\", \"completed\", \"failed\", \"outcome_unknown\"],\n })\n .notNull()\n .default(\"completed\"),\n resultVersion: bigint(\"result_version\", { mode: \"number\" }),\n result: jsonb(\"result\").$type<Record<string, unknown>>(),\n errorCode: text(\"error_code\"),\n actorSubjectId: text(\"actor_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n settledAt: timestamp(\"settled_at\", { withTimezone: true }),\n },\n (table) => ({\n workspaceOperation: uniqueIndex(\"interaction_resource_operations_workspace_operation_uq\").on(\n table.workspaceId,\n table.operationId,\n ),\n resourceHistory: index(\"interaction_resource_operations_resource_history_idx\").on(\n table.workspaceId,\n table.resourceKind,\n table.resourceId,\n table.createdAt,\n ),\n valuesValid: check(\n \"interaction_resource_operations_values_check\",\n sql`${table.requestDigest} ~ '^[0-9a-f]{64}$'\n and (${table.resultVersion} is null or ${table.resultVersion} > 0)\n and (${table.result} is null or (\n jsonb_typeof(${table.result}) = 'object'\n and octet_length(${table.result}::text) between 2 and 262144\n ))\n and (${table.errorCode} is null or octet_length(${table.errorCode}) between 1 and 512)\n and octet_length(${table.actorSubjectId}) between 1 and 1024`,\n ),\n lifecycleValid: check(\n \"interaction_resource_operations_lifecycle_check\",\n sql`(\n ${table.state} = 'completed'\n and ${table.resultVersion} is not null\n and ${table.result} is not null\n and ${table.errorCode} is null\n and ${table.settledAt} is not null\n ) or (\n ${table.state} in ('failed', 'outcome_unknown')\n and ${table.resultVersion} is null\n and ${table.result} is null\n and ${table.errorCode} is not null\n and ${table.settledAt} is not null\n ) or (\n ${table.state} in ('prepared', 'dispatched')\n and ${table.resultVersion} is null\n and ${table.result} is null\n and ${table.errorCode} is null\n and ${table.settledAt} is null\n )`,\n ),\n }),\n);\n\nexport const interactionOperations = pgTable(\n \"interaction_operations\",\n {\n operationId: uuid(\"operation_id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n resourceKind: text(\"resource_kind\", {\n enum: [\"browser_session\", \"computer_session\"],\n }).notNull(),\n resourceId: uuid(\"resource_id\").notNull(),\n kind: text(\"kind\", { enum: interactionOperationKindValues }).notNull(),\n requestDigest: text(\"request_digest\").notNull(),\n state: text(\"state\", { enum: interactionOperationStateValues }).notNull().default(\"prepared\"),\n controllerGeneration: text(\"controller_generation\"),\n errorCode: text(\"error_code\"),\n errorMessage: text(\"error_message\"),\n errorRetryable: boolean(\"error_retryable\"),\n errorDetails: jsonb(\"error_details\").$type<Record<string, unknown>>(),\n actorSubjectId: text(\"actor_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n dispatchedAt: timestamp(\"dispatched_at\", { withTimezone: true }),\n settledAt: timestamp(\"settled_at\", { withTimezone: true }),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceOperation: uniqueIndex(\"interaction_operations_workspace_operation_uq\").on(\n table.workspaceId,\n table.operationId,\n ),\n resourceHistory: index(\"interaction_operations_resource_history_idx\").on(\n table.workspaceId,\n table.resourceKind,\n table.resourceId,\n table.createdAt,\n ),\n activeResource: uniqueIndex(\"interaction_operations_active_resource_uq\")\n .on(table.workspaceId, table.resourceKind, table.resourceId)\n .where(sql`${table.state} in ('prepared', 'dispatched')`),\n valuesValid: check(\n \"interaction_operations_values_check\",\n sql`${table.requestDigest} ~ '^[0-9a-f]{64}$'\n and octet_length(${table.actorSubjectId}) between 1 and 1024\n and (${table.controllerGeneration} is null or octet_length(${table.controllerGeneration}) between 1 and 256)\n and (${table.errorCode} is null or octet_length(${table.errorCode}) between 1 and 512)\n and (${table.errorMessage} is null or octet_length(${table.errorMessage}) between 1 and 8192)\n and (${table.errorDetails} is null or octet_length(${table.errorDetails}::text) between 2 and 65536)`,\n ),\n lifecycleValid: check(\n \"interaction_operations_lifecycle_check\",\n sql`(\n ${table.state} = 'prepared'\n and ${table.dispatchedAt} is null\n and ${table.settledAt} is null\n and ${table.errorCode} is null\n and ${table.errorMessage} is null\n and ${table.errorRetryable} is null\n and ${table.errorDetails} is null\n ) or (\n ${table.state} = 'dispatched'\n and ${table.dispatchedAt} is not null\n and ${table.settledAt} is null\n and ${table.errorCode} is null\n and ${table.errorMessage} is null\n and ${table.errorRetryable} is null\n and ${table.errorDetails} is null\n ) or (\n ${table.state} = 'completed'\n and ${table.dispatchedAt} is not null\n and ${table.settledAt} is not null\n and ${table.errorCode} is null\n and ${table.errorMessage} is null\n and ${table.errorRetryable} is null\n and ${table.errorDetails} is null\n ) or (\n ${table.state} in ('failed', 'outcome_unknown')\n and ${table.settledAt} is not null\n and ${table.errorCode} is not null\n and ${table.errorMessage} is not null\n and ${table.errorRetryable} is not null\n )`,\n ),\n }),\n);\n"],"mappings":";;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA,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","names":["sql","bigint","boolean","check","customType","index","integer","jsonb","pgTable","primaryKey","text","timestamp","uniqueIndex","uuid","index","descriptors","output","changed","customType","integer","sql","bigint","check","index","integer","jsonb","pgTable","text","timestamp","uniqueIndex","uuid","sql","bigint","check","index","integer","jsonb","pgTable","text","timestamp","uniqueIndex","uuid","sql","bigint","check","index","integer","jsonb","pgTable","text","timestamp","uniqueIndex","uuid","sql","bigint","boolean","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","bigint","boolean","index","integer","jsonb","pgTable","text","timestamp","uniqueIndex","uuid","sql","boolean","check","index","integer","jsonb","pgTable","primaryKey","text","timestamp","uniqueIndex","uuid","sql","sql","bigint","boolean","check","index","integer","jsonb","pgTable","primaryKey","text","timestamp","uniqueIndex","uuid","customType","pgTable","uuid","text","timestamp","uniqueIndex","jsonb","index","sql","check","integer","boolean","bigint","primaryKey"]}
|