@opengeni/db 0.19.0 → 0.22.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/schema.ts","../src/workspace-instruction-policies-schema.ts","../src/preference-registry-schema.ts","../src/memory-governance-schema.ts","../src/scoped-knowledge-schema.ts"],"sourcesContent":["import type {\n FirstPartyMcpToolName,\n McpPersonalConnectionDelegation,\n McpServerConnectionRef,\n SessionMcpApprovalPolicy,\n} from \"@opengeni/contracts\";\nimport { sql } from \"drizzle-orm\";\nimport type { SessionToolPolicy } from \"@opengeni/contracts\";\nimport type { HumanInputQuestion, HumanInputResponse } from \"@opengeni/contracts\";\nimport {\n bigint,\n boolean,\n check,\n foreignKey,\n index,\n integer,\n jsonb,\n numeric,\n pgTable,\n text,\n timestamp,\n uniqueIndex,\n uuid,\n customType,\n} from \"drizzle-orm/pg-core\";\n\nconst vector = customType<{ data: number[]; driverData: string }>({\n dataType() {\n return \"vector(3072)\";\n },\n toDriver(value) {\n return `[${value.join(\",\")}]`;\n },\n});\n\nexport type ConnectorActionPolicyDecision = \"allow\" | \"ask\" | \"block\";\n\nexport type ConnectorActionPolicySnapshotEntry = {\n id: string;\n connectionId: string;\n serverId: string;\n toolName: string;\n actionName: string;\n policy: ConnectorActionPolicyDecision;\n version: number;\n};\n\nexport const managedAccounts = pgTable(\n \"managed_accounts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n name: text(\"name\").notNull(),\n externalSource: text(\"external_source\"),\n externalId: text(\"external_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n external: uniqueIndex(\"managed_accounts_external_idx\").on(\n table.externalSource,\n table.externalId,\n ),\n }),\n);\n\nexport const workspaces = pgTable(\n \"workspaces\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n slug: text(\"slug\"),\n externalSource: text(\"external_source\"),\n externalId: text(\"external_id\"),\n // White-label agent persona template override. NULL means the deployment\n // default (OPENGENI_AGENT_INSTRUCTIONS_TEMPLATE / DEFAULT_AGENT_INSTRUCTIONS).\n agentInstructions: text(\"agent_instructions\"),\n // Growth-ready per-workspace settings bag (migration 0045). Holds memoryEnabled\n // and future workspace-level toggles; validated/merged via WorkspaceSettingsSchema.\n settings: jsonb(\"settings\").$type<Record<string, unknown>>().notNull().default({}),\n // The workspace's default rig (migration 0047). NULL ⇒ no default; sessions\n // created without an explicit rig ride no rig (today's behavior exactly). FK\n // (-> rigs(id) ON DELETE SET NULL) lives in migration 0047, not a Drizzle\n // .references(), because `rigs` is declared later in this file (same\n // forward-reference pattern as sessions.activeSandboxId). Consumed in M3.\n defaultRigId: uuid(\"default_rig_id\"),\n // Workspace-wide viewer admission intent set by the warm-meter reaper when\n // managed credits or the monthly warm allowance are exhausted. It is\n // deliberately independent of a lease so a dashboard cannot re-arm a\n // draining box or spawn a cold successor before a fresh limit evaluation\n // clears the gate.\n sandboxViewerForceDrainReason: text(\"sandbox_viewer_force_drain_reason\", {\n enum: [\"balance\", \"warm_cap\"],\n }),\n sandboxViewerForceDrainRequestedAt: timestamp(\"sandbox_viewer_force_drain_requested_at\", {\n withTimezone: true,\n }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n account: index(\"workspaces_account_idx\").on(table.accountId),\n accountSlug: uniqueIndex(\"workspaces_account_slug_idx\")\n .on(table.accountId, table.slug)\n .where(sql`${table.slug} is not null`),\n external: uniqueIndex(\"workspaces_external_idx\").on(table.externalSource, table.externalId),\n sandboxViewerForceDrain: index(\"workspaces_sandbox_viewer_force_drain_idx\")\n .on(table.id)\n .where(sql`${table.sandboxViewerForceDrainReason} is not null`),\n sandboxViewerForceDrainValid: check(\n \"workspaces_sandbox_viewer_force_drain_check\",\n sql`(\n ${table.sandboxViewerForceDrainReason} is null\n and ${table.sandboxViewerForceDrainRequestedAt} is null\n ) or (\n ${table.sandboxViewerForceDrainReason} in ('balance', 'warm_cap')\n and ${table.sandboxViewerForceDrainRequestedAt} is not null\n )`,\n ),\n }),\n);\n\n// A single generic workspace-published surface. Presentation labels such as\n// app, page, gallery, or document are intentionally not persisted as types.\nexport const workspaceArtifacts = pgTable(\n \"workspace_artifacts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n slug: text(\"slug\").notNull(),\n title: text(\"title\").notNull(),\n description: text(\"description\"),\n status: text(\"status\").$type<\"active\" | \"archived\">().notNull().default(\"active\"),\n // The FK to workspace_artifact_versions is installed by migration after\n // that table exists. Keeping this pointer here makes reads inexpensive.\n currentVersionId: uuid(\"current_version_id\"),\n createdBySubjectId: text(\"created_by_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"workspace_artifacts_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSlug: uniqueIndex(\"workspace_artifacts_workspace_slug_uq\").on(\n table.workspaceId,\n table.slug,\n ),\n workspaceId: uniqueIndex(\"workspace_artifacts_workspace_id_uq\").on(table.workspaceId, table.id),\n list: index(\"workspace_artifacts_list_idx\").on(table.workspaceId, table.updatedAt),\n }),\n);\n\nexport const workspaceArtifactVersions = pgTable(\n \"workspace_artifact_versions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n artifactId: uuid(\"artifact_id\").notNull(),\n revision: integer(\"revision\").notNull(),\n contentKey: text(\"content_key\").notNull(),\n contentType: text(\"content_type\").$type<\"text/html\">().notNull().default(\"text/html\"),\n contentSha256: text(\"content_sha256\").notNull(),\n sizeBytes: integer(\"size_bytes\").notNull(),\n operationKey: text(\"operation_key\").notNull(),\n sourceSessionId: uuid(\"source_session_id\"),\n sourceTurnId: uuid(\"source_turn_id\"),\n sourceAttemptId: uuid(\"source_attempt_id\"),\n sourceExecutionGeneration: integer(\"source_execution_generation\"),\n createdBySubjectId: text(\"created_by_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"workspace_artifact_versions_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n artifact: foreignKey({\n name: \"workspace_artifact_versions_artifact_fk\",\n columns: [table.workspaceId, table.artifactId],\n foreignColumns: [workspaceArtifacts.workspaceId, workspaceArtifacts.id],\n }).onDelete(\"cascade\"),\n workspaceId: uniqueIndex(\"workspace_artifact_versions_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n revision: uniqueIndex(\"workspace_artifact_versions_revision_uq\").on(\n table.workspaceId,\n table.artifactId,\n table.revision,\n ),\n operation: uniqueIndex(\"workspace_artifact_versions_operation_uq\").on(\n table.workspaceId,\n table.operationKey,\n ),\n provenance: check(\n \"workspace_artifact_versions_provenance_chk\",\n sql`(\n ${table.sourceSessionId} is null\n and ${table.sourceTurnId} is null\n and ${table.sourceAttemptId} is null\n and ${table.sourceExecutionGeneration} is null\n ) or (\n ${table.sourceSessionId} is not null\n and ${table.sourceTurnId} is not null\n and ${table.sourceAttemptId} is not null\n and ${table.sourceExecutionGeneration} > 0\n )`,\n ),\n }),\n);\n\nexport const workspaceArtifactEvents = pgTable(\n \"workspace_artifact_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n artifactId: uuid(\"artifact_id\").notNull(),\n type: text(\"type\").$type<\"published\" | \"rolled_back\">().notNull(),\n fromVersionId: uuid(\"from_version_id\"),\n toVersionId: uuid(\"to_version_id\").notNull(),\n operationKey: text(\"operation_key\").notNull(),\n sourceSessionId: uuid(\"source_session_id\"),\n sourceTurnId: uuid(\"source_turn_id\"),\n sourceAttemptId: uuid(\"source_attempt_id\"),\n sourceExecutionGeneration: integer(\"source_execution_generation\"),\n actorSubjectId: text(\"actor_subject_id\").notNull(),\n reason: text(\"reason\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"workspace_artifact_events_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n artifact: foreignKey({\n name: \"workspace_artifact_events_artifact_fk\",\n columns: [table.workspaceId, table.artifactId],\n foreignColumns: [workspaceArtifacts.workspaceId, workspaceArtifacts.id],\n }).onDelete(\"cascade\"),\n operation: uniqueIndex(\"workspace_artifact_events_operation_uq\").on(\n table.workspaceId,\n table.operationKey,\n ),\n list: index(\"workspace_artifact_events_list_idx\").on(\n table.workspaceId,\n table.artifactId,\n table.createdAt,\n ),\n provenance: check(\n \"workspace_artifact_events_provenance_chk\",\n sql`(\n ${table.sourceSessionId} is null\n and ${table.sourceTurnId} is null\n and ${table.sourceAttemptId} is null\n and ${table.sourceExecutionGeneration} is null\n ) or (\n ${table.sourceSessionId} is not null\n and ${table.sourceTurnId} is not null\n and ${table.sourceAttemptId} is not null\n and ${table.sourceExecutionGeneration} > 0\n )`,\n ),\n }),\n);\n\n// One target-schema-local deployment fallback. The migration runner reconciles\n// this singleton from OPENGENI_MAX_NESTED_AGENT_DEPTH; session admission locks\n// and reads it through the SECURITY DEFINER capability installed by the\n// boundary migration so the application role cannot mutate policy authority.\nexport const nestedAgentDepthConfiguration = pgTable(\n \"nested_agent_depth_configuration\",\n {\n singleton: boolean(\"singleton\").primaryKey().notNull().default(true),\n maxNestedAgentDepth: integer(\"max_nested_agent_depth\").notNull(),\n policySource: text(\"policy_source\").$type<\"deployment\" | \"default\">().notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n singletonOnly: check(\n \"nested_agent_depth_configuration_singleton_check\",\n sql`${table.singleton}`,\n ),\n maxValid: check(\n \"nested_agent_depth_configuration_max_check\",\n sql`${table.maxNestedAgentDepth} >= 0`,\n ),\n sourceValid: check(\n \"nested_agent_depth_configuration_source_check\",\n sql`${table.policySource} in ('deployment', 'default')`,\n ),\n }),\n);\n\n// One mandatory workspace-wide admission barrier. Every inference-admitting\n// transaction locks this row before it touches a session; Pause/Resume and\n// foreground Send/Steer advance its monotonic revision under FOR UPDATE.\nexport const workspaceInferenceControls = pgTable(\n \"workspace_inference_controls\",\n {\n workspaceId: uuid(\"workspace_id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n revision: bigint(\"revision\", { mode: \"number\" }).notNull().default(0),\n workspaceState: text(\"workspace_state\").notNull().default(\"active\"),\n workspacePauseRevision: bigint(\"workspace_pause_revision\", {\n mode: \"number\",\n }),\n reason: text(\"reason\"),\n changedBy: text(\"changed_by\"),\n changedAt: timestamp(\"changed_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"workspace_inference_controls_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceAccountIdentity: uniqueIndex(\"workspace_inference_controls_workspace_account_uq\").on(\n table.workspaceId,\n table.accountId,\n ),\n stateValid: check(\n \"workspace_inference_controls_state_check\",\n sql`${table.workspaceState} in ('active', 'paused')`,\n ),\n pauseRevisionConsistent: check(\n \"workspace_inference_controls_pause_revision_check\",\n sql`(${table.workspaceState} = 'active' and ${table.workspacePauseRevision} is null)\n or (${table.workspaceState} = 'paused' and ${table.workspacePauseRevision} is not null)`,\n ),\n revisionValid: check(\n \"workspace_inference_controls_revision_check\",\n sql`${table.revision} >= 0 and (${table.workspacePauseRevision} is null or ${table.workspacePauseRevision} <= ${table.revision})`,\n ),\n }),\n);\n\n// One transactionally allocated activity clock per workspace. An updated-order\n// first page takes a SHARE lock on this row after the workspace-control lock;\n// semantic writers allocate after UUID-ordered session locks. Plain MVCC page\n// reads never lock session rows, so that ordering cannot form a cycle.\nexport const workspaceSessionActivityRevisions = pgTable(\n \"workspace_session_activity_revisions\",\n {\n workspaceId: uuid(\"workspace_id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n revision: bigint(\"revision\", { mode: \"number\" }).notNull().default(0),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"workspace_session_activity_revisions_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n revisionValid: check(\n \"workspace_session_activity_revisions_revision_check\",\n sql`${table.revision} >= 0`,\n ),\n }),\n);\n\nexport const workspaceMemberships = pgTable(\n \"workspace_memberships\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n subjectId: text(\"subject_id\").notNull(),\n subjectLabel: text(\"subject_label\"),\n role: text(\"role\").notNull().default(\"member\"),\n permissions: jsonb(\"permissions\").$type<string[]>().notNull().default([]),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n subjectWorkspace: uniqueIndex(\"workspace_memberships_subject_workspace_idx\").on(\n table.subjectId,\n table.workspaceId,\n ),\n subject: index(\"workspace_memberships_subject_idx\").on(table.subjectId),\n account: index(\"workspace_memberships_account_idx\").on(table.accountId),\n }),\n);\n\nexport const apiKeys = pgTable(\n \"api_keys\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\").references(() => workspaces.id, {\n onDelete: \"cascade\",\n }),\n name: text(\"name\").notNull(),\n prefix: text(\"prefix\").notNull(),\n keyHash: text(\"key_hash\").notNull(),\n permissions: jsonb(\"permissions\").$type<string[]>().notNull().default([]),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }),\n revokedAt: timestamp(\"revoked_at\", { withTimezone: true }),\n lastUsedAt: timestamp(\"last_used_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n prefix: index(\"api_keys_prefix_idx\").on(table.prefix),\n hash: uniqueIndex(\"api_keys_key_hash_idx\").on(table.keyHash),\n account: index(\"api_keys_account_idx\").on(table.accountId),\n workspace: index(\"api_keys_workspace_idx\").on(table.workspaceId),\n }),\n);\n\nexport const workspaceVariableSets = pgTable(\n \"workspace_variable_sets\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n description: text(\"description\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceName: uniqueIndex(\"workspace_variable_sets_workspace_name_idx\").on(\n table.workspaceId,\n table.name,\n ),\n workspaceCreated: index(\"workspace_variable_sets_workspace_created_idx\").on(\n table.workspaceId,\n table.createdAt,\n ),\n }),\n);\n\nexport const workspaceVariableSetVariables = pgTable(\n \"workspace_variable_set_variables\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n variableSetId: uuid(\"variable_set_id\")\n .notNull()\n .references(() => workspaceVariableSets.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n // Format: v1:<base64 iv>:<base64 ciphertext||gcm-tag>. Never returned by any API.\n valueEncrypted: text(\"value_encrypted\").notNull(),\n version: integer(\"version\").notNull().default(1),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n variableSetName: uniqueIndex(\"workspace_variable_set_variables_env_name_idx\").on(\n table.workspaceId,\n table.variableSetId,\n table.name,\n ),\n variableSet: index(\"workspace_variable_set_variables_workspace_env_idx\").on(\n table.workspaceId,\n table.variableSetId,\n ),\n }),\n);\n\n// Per-workspace ChatGPT/Codex subscription credential. One row per 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 // P4 connector-aware rotation cache (plaintext metadata; NEVER a token). The set\n // of ORIGINAL-dotted connector namespaces (github/gmail/linear/…) this account\n // exposes via codex_apps, captured from the per-turn tools/list. null ⇒ never\n // probed (the ranker treats it as unknown: never credited as covering, never\n // excluded). The writer only ever sets a NON-empty set, so a flaky empty turn\n // can't false-drop coverage. connectorsCheckedAt is the freshness clock.\n connectorNamespaces: text(\"connector_namespaces\").array(),\n connectorsCheckedAt: timestamp(\"connectors_checked_at\", {\n withTimezone: true,\n }),\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 already-frozen/in-flight turns 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\", {\n withTimezone: true,\n }),\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\", {\n withTimezone: true,\n }),\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 }),\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\", {\n withTimezone: true,\n }).notNull(),\n providerStartedAt: timestamp(\"provider_started_at\", { withTimezone: true }),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n lastFailureKind: text(\"last_failure_kind\"),\n retryCount: integer(\"retry_count\").notNull().default(0),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"codex_reset_redemption_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n upstreamKey: uniqueIndex(\"codex_reset_redemption_upstream_key_idx\").on(\n table.upstreamIdempotencyKey,\n ),\n credentialCredit: uniqueIndex(\"codex_reset_redemption_credential_credit_idx\")\n .on(table.workspaceId, table.credentialId, table.creditId)\n .where(\n sql`${table.status} <> 'completed' or ${table.outcome} in ('reset', 'alreadyRedeemed')`,\n ),\n workspaceCredential: index(\"codex_reset_redemption_workspace_credential_idx\").on(\n table.workspaceId,\n table.credentialId,\n table.createdAt,\n ),\n claimExpiry: index(\"codex_reset_redemption_claim_expiry_idx\")\n .on(table.claimExpiresAt)\n .where(sql`${table.status} <> 'completed'`),\n statusValid: check(\n \"codex_reset_redemption_status_check\",\n sql`${table.status} in ('processing', 'provider_started', 'completed')`,\n ),\n outcomeValid: check(\n \"codex_reset_redemption_outcome_check\",\n sql`${table.outcome} is null or ${table.outcome} in ('reset', 'nothingToReset', 'noCredit', 'alreadyRedeemed')`,\n ),\n completionConsistent: check(\n \"codex_reset_redemption_completed_check\",\n sql`(${table.status} = 'completed') = (${table.outcome} is not null and ${table.completedAt} is not null)`,\n ),\n retryCountValid: check(\n \"codex_reset_redemption_retry_count_check\",\n sql`${table.retryCount} >= 0`,\n ),\n humanSubjectValid: check(\n \"codex_reset_redemption_human_subject_check\",\n sql`${table.subjectId} like 'user:_%'`,\n ),\n }),\n);\n\n// Generic external-service credential spine. credential_encrypted is the ONLY\n// secret-bearing column; normal API reads use metadata-only helpers below the DB\n// layer. Runtime token material is decrypted only by the broker accessor.\nexport const connections = pgTable(\n \"connections\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n subjectId: text(\"subject_id\"),\n providerDomain: text(\"provider_domain\").notNull(),\n kind: text(\"kind\").notNull(),\n status: text(\"status\").notNull().default(\"active\"),\n credentialEncrypted: text(\"credential_encrypted\").notNull(),\n grantedScopes: jsonb(\"granted_scopes\").$type<string[]>().notNull().default([]),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }),\n lastRefreshAt: timestamp(\"last_refresh_at\", { withTimezone: true }),\n lastUsedAt: timestamp(\"last_used_at\", { withTimezone: true }),\n lastError: text(\"last_error\"),\n version: integer(\"version\").notNull().default(1),\n // Server-owned proof that the dedicated install route verified the exact\n // credential at this connection version. Generic/legacy writers cannot set\n // these columns, and migration 0131 clears them when protected fields change\n // without a fresh verification in the same statement.\n verifiedInstallAt: timestamp(\"verified_install_at\", { withTimezone: true }),\n verifiedInstallVersion: integer(\"verified_install_version\"),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n createdBySubjectId: text(\"created_by_subject_id\"),\n updatedBySubjectId: text(\"updated_by_subject_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceProviderStatus: index(\"connections_workspace_provider_status_idx\").on(\n table.workspaceId,\n table.providerDomain,\n table.status,\n ),\n workspaceSubjectProvider: index(\"connections_workspace_subject_provider_idx\").on(\n table.workspaceId,\n table.subjectId,\n table.providerDomain,\n ),\n workspaceKind: index(\"connections_workspace_kind_idx\").on(table.workspaceId, table.kind),\n workspaceExpires: index(\"connections_workspace_expires_idx\").on(\n table.workspaceId,\n table.expiresAt,\n ),\n }),\n);\n\nexport const connectorActionPolicies = pgTable(\n \"connector_action_policies\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n connectionId: text(\"connection_id\").notNull(),\n serverId: text(\"server_id\").notNull(),\n toolName: text(\"tool_name\").notNull(),\n actionName: text(\"action_name\").notNull(),\n policy: text(\"policy\").$type<ConnectorActionPolicyDecision>().notNull(),\n version: integer(\"version\").notNull().default(1),\n createdBySubjectId: text(\"created_by_subject_id\").notNull(),\n updatedBySubjectId: text(\"updated_by_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"connector_action_policies_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n scope: uniqueIndex(\"connector_action_policies_scope_uq\").on(\n table.workspaceId,\n table.connectionId,\n table.serverId,\n table.toolName,\n table.actionName,\n ),\n workspaceConnection: index(\"connector_action_policies_workspace_connection_idx\").on(\n table.workspaceId,\n table.connectionId,\n table.serverId,\n ),\n policyValid: check(\n \"connector_action_policies_policy_chk\",\n sql`${table.policy} in ('allow', 'ask', 'block')`,\n ),\n versionValid: check(\"connector_action_policies_version_chk\", sql`${table.version} > 0`),\n }),\n);\n\nexport const slackBotUserLinks = pgTable(\n \"slack_bot_user_links\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n connectionId: uuid(\"connection_id\")\n .notNull()\n .references(() => connections.id, { onDelete: \"cascade\" }),\n slackTeamId: text(\"slack_team_id\").notNull(),\n slackUserId: text(\"slack_user_id\").notNull(),\n subjectId: text(\"subject_id\").notNull(),\n linkedBySubjectId: text(\"linked_by_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n connectionUser: uniqueIndex(\"slack_bot_user_links_connection_user_uq\").on(\n table.connectionId,\n table.slackUserId,\n ),\n workspaceSubject: index(\"slack_bot_user_links_workspace_subject_idx\").on(\n table.workspaceId,\n table.subjectId,\n ),\n }),\n);\n\nexport const slackInteractionInbox = pgTable(\n \"slack_interaction_inbox\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n connectionId: uuid(\"connection_id\")\n .notNull()\n .references(() => connections.id, { onDelete: \"cascade\" }),\n providerEventId: text(\"provider_event_id\").notNull(),\n providerMessageId: text(\"provider_message_id\").notNull(),\n slackTeamId: text(\"slack_team_id\").notNull(),\n slackUserId: text(\"slack_user_id\").notNull(),\n slackChannelId: text(\"slack_channel_id\").notNull(),\n slackMessageTs: text(\"slack_message_ts\").notNull(),\n slackThreadTs: text(\"slack_thread_ts\"),\n triggerKind: text(\"trigger_kind\")\n .$type<\"app_mention\" | \"dm\" | \"slash_command\" | \"message_shortcut\" | \"thread_reply\">()\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 processedAt: timestamp(\"processed_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n providerEvent: uniqueIndex(\"slack_interaction_inbox_provider_event_uq\").on(\n table.connectionId,\n table.providerEventId,\n ),\n providerMessage: uniqueIndex(\"slack_interaction_inbox_provider_message_uq\").on(\n table.connectionId,\n table.providerMessageId,\n ),\n pending: index(\"slack_interaction_inbox_pending_idx\").on(\n table.status,\n table.retryAt,\n table.createdAt,\n table.id,\n ),\n }),\n);\n\nexport const slackInteractions = pgTable(\n \"slack_interactions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n connectionId: uuid(\"connection_id\")\n .notNull()\n .references(() => connections.id, { onDelete: \"cascade\" }),\n slackTeamId: text(\"slack_team_id\").notNull(),\n slackChannelId: text(\"slack_channel_id\").notNull(),\n slackThreadTs: text(\"slack_thread_ts\").notNull(),\n routeKey: text(\"route_key\").notNull(),\n triggeringProviderEventId: text(\"triggering_provider_event_id\").notNull(),\n owningSubjectId: text(\"owning_subject_id\").notNull(),\n visibility: text(\"visibility\").$type<\"private\" | \"workspace\">().notNull(),\n sessionReservationId: uuid(\"session_reservation_id\").notNull().defaultRandom(),\n sessionId: uuid(\"session_id\").references(() => sessions.id, {\n onDelete: \"cascade\",\n }),\n lastDeliveredSessionEventSequence: integer(\"last_delivered_session_event_sequence\")\n .notNull()\n .default(0),\n deliveryClaimHolderId: uuid(\"delivery_claim_holder_id\"),\n deliveryClaimExpiresAt: timestamp(\"delivery_claim_expires_at\", {\n withTimezone: true,\n }),\n deliveryAttemptCount: integer(\"delivery_attempt_count\").notNull().default(0),\n deliveryRetryAt: timestamp(\"delivery_retry_at\", { withTimezone: true }),\n deliveryLastErrorCode: text(\"delivery_last_error_code\"),\n ackSlackMessageTs: text(\"ack_slack_message_ts\"),\n progressCount: integer(\"progress_count\").notNull().default(0),\n terminalDeliveryState: text(\"terminal_delivery_state\")\n .$type<\"open\" | \"completed\" | \"failed\" | \"cancelled\" | \"blocked\">()\n .notNull()\n .default(\"open\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n route: uniqueIndex(\"slack_interactions_route_uq\").on(table.connectionId, table.routeKey),\n identity: uniqueIndex(\"slack_interactions_identity_uq\").on(\n table.accountId,\n table.workspaceId,\n table.id,\n ),\n workspaceReservation: uniqueIndex(\"slack_interactions_workspace_reservation_uq\").on(\n table.workspaceId,\n table.sessionReservationId,\n ),\n workspaceSession: uniqueIndex(\"slack_interactions_workspace_session_uq\")\n .on(table.workspaceId, table.sessionId)\n .where(sql`${table.sessionId} is not null`),\n delivery: index(\"slack_interactions_delivery_idx\").on(\n table.terminalDeliveryState,\n table.deliveryRetryAt,\n table.updatedAt,\n table.id,\n ),\n }),\n);\n\nexport const slackInteractionProgressDeliveries = pgTable(\n \"slack_interaction_progress_deliveries\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n interactionId: uuid(\"interaction_id\").notNull(),\n sessionEventSequence: integer(\"session_event_sequence\").notNull(),\n slot: integer(\"slot\").notNull(),\n operationId: uuid(\"operation_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n interactionIdentity: foreignKey({\n columns: [table.accountId, table.workspaceId, table.interactionId],\n foreignColumns: [\n slackInteractions.accountId,\n slackInteractions.workspaceId,\n slackInteractions.id,\n ],\n name: \"slack_interaction_progress_deliveries_interaction_fk\",\n }).onDelete(\"cascade\"),\n event: uniqueIndex(\"slack_interaction_progress_deliveries_event_uq\").on(\n table.interactionId,\n table.sessionEventSequence,\n ),\n slot: uniqueIndex(\"slack_interaction_progress_deliveries_slot_uq\").on(\n table.interactionId,\n table.slot,\n ),\n operation: uniqueIndex(\"slack_interaction_progress_deliveries_operation_uq\").on(\n table.workspaceId,\n table.operationId,\n ),\n }),\n);\n\n// Durable provider-operation identity for OpenGeni Slack bot posts. The\n// caller-supplied operation UUID is also Slack's client_msg_id; a bounded claim\n// serializes live attempts while an expired/released claim can safely retry the\n// same provider identity after response loss or process death.\nexport const slackBotPostOperations = pgTable(\n \"slack_bot_post_operations\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n connectionId: uuid(\"connection_id\")\n .notNull()\n .references(() => connections.id, { onDelete: \"cascade\" }),\n operationId: uuid(\"operation_id\").notNull(),\n clientMessageId: uuid(\"client_message_id\").notNull(),\n targetKind: text(\"target_kind\").$type<\"channel\" | \"user\">().notNull(),\n targetId: text(\"target_id\").notNull(),\n requestDigest: text(\"request_digest\").notNull(),\n status: text(\"status\").$type<\"provider_started\" | \"completed\">().notNull(),\n claimHolderId: uuid(\"claim_holder_id\"),\n claimExpiresAt: timestamp(\"claim_expires_at\", { withTimezone: true }),\n attemptCount: integer(\"attempt_count\").notNull().default(0),\n lastFailureCode: text(\"last_failure_code\"),\n slackChannelId: text(\"slack_channel_id\"),\n slackMessageTimestamp: text(\"slack_message_timestamp\"),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceOperation: uniqueIndex(\"slack_bot_post_operations_workspace_operation_uq\").on(\n table.workspaceId,\n table.connectionId,\n table.operationId,\n ),\n workspaceStatus: index(\"slack_bot_post_operations_workspace_status_idx\").on(\n table.workspaceId,\n table.status,\n table.updatedAt,\n ),\n targetKindValid: check(\n \"slack_bot_post_operations_target_kind_check\",\n sql`${table.targetKind} in ('channel', 'user')`,\n ),\n statusValid: check(\n \"slack_bot_post_operations_status_check\",\n sql`${table.status} in ('provider_started', 'completed')`,\n ),\n identityValid: check(\n \"slack_bot_post_operations_identity_check\",\n sql`${table.clientMessageId} = ${table.operationId}\n and length(${table.targetId}) between 1 and 64\n and ${table.requestDigest} ~ '^[0-9a-f]{64}$'\n and ${table.attemptCount} > 0\n and ((${table.claimHolderId} is null) = (${table.claimExpiresAt} is null))`,\n ),\n completionValid: check(\n \"slack_bot_post_operations_completion_check\",\n sql`(\n ${table.status} = 'provider_started'\n and ${table.slackChannelId} is null\n and ${table.slackMessageTimestamp} is null\n and ${table.completedAt} is null\n ) or (\n ${table.status} = 'completed'\n and ${table.claimHolderId} is null\n and ${table.claimExpiresAt} is null\n and ${table.slackChannelId} is not null\n and ${table.slackMessageTimestamp} is not null\n and ${table.completedAt} is not null\n )`,\n ),\n }),\n);\n\n// Durable provider-operation identity for OpenGeni Slack bot deletions. Slack\n// has no client-supplied idempotency key for chat.delete, so an expired\n// provider_started claim becomes outcome_unknown and must be reconciled before\n// another mutation is admitted.\nexport const slackBotDeleteOperations = pgTable(\n \"slack_bot_delete_operations\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n connectionId: uuid(\"connection_id\")\n .notNull()\n .references(() => connections.id, { onDelete: \"cascade\" }),\n operationId: uuid(\"operation_id\").notNull(),\n principalType: text(\"principal_type\").$type<\"subject\" | \"service\">().notNull(),\n principalId: text(\"principal_id\").notNull(),\n toolName: text(\"tool_name\").notNull(),\n channelId: text(\"channel_id\").notNull(),\n messageTimestamp: text(\"message_timestamp\").notNull(),\n requestDigest: text(\"request_digest\").notNull(),\n status: text(\"status\")\n .$type<\"pending\" | \"provider_started\" | \"outcome_unknown\" | \"completed\">()\n .notNull(),\n claimHolderId: uuid(\"claim_holder_id\"),\n claimExpiresAt: timestamp(\"claim_expires_at\", { withTimezone: true }),\n attemptCount: integer(\"attempt_count\").notNull().default(0),\n lastFailureCode: text(\"last_failure_code\"),\n slackChannelId: text(\"slack_channel_id\"),\n slackMessageTimestamp: text(\"slack_message_timestamp\"),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceOperation: uniqueIndex(\"slack_bot_delete_operations_workspace_operation_uq\").on(\n table.workspaceId,\n table.operationId,\n ),\n workspaceStatus: index(\"slack_bot_delete_operations_workspace_status_idx\").on(\n table.workspaceId,\n table.status,\n table.updatedAt,\n ),\n principalValid: check(\n \"slack_bot_delete_operations_principal_check\",\n sql`${table.principalType} in ('subject', 'service')\n and length(${table.principalId}) between 1 and 512`,\n ),\n identityValid: check(\n \"slack_bot_delete_operations_identity_check\",\n sql`${table.toolName} = 'slack_bot_delete_message'\n and length(${table.channelId}) between 1 and 64\n and length(${table.messageTimestamp}) between 1 and 64\n and ${table.requestDigest} ~ '^[0-9a-f]{64}$'\n and ${table.attemptCount} > 0\n and ((${table.claimHolderId} is null) = (${table.claimExpiresAt} is null))`,\n ),\n statusValid: check(\n \"slack_bot_delete_operations_status_check\",\n sql`${table.status} in ('pending', 'provider_started', 'outcome_unknown', 'completed')`,\n ),\n completionValid: check(\n \"slack_bot_delete_operations_completion_check\",\n sql`(\n ${table.status} <> 'completed'\n and ${table.slackChannelId} is null\n and ${table.slackMessageTimestamp} is null\n and ${table.completedAt} is null\n ) or (\n ${table.status} = 'completed'\n and ${table.claimHolderId} is null\n and ${table.claimExpiresAt} is null\n and ${table.slackChannelId} is not null\n and ${table.slackMessageTimestamp} is not null\n and ${table.completedAt} is not null\n )`,\n ),\n }),\n);\n\n// OAuth client registrations minted through MCP DCR, keyed by authorization\n// server issuer. This is deployment-wide client identity, not a workspace\n// credential; per-user/provider tokens still live only in connections.\nexport const integrationOauthClients = pgTable(\n \"integration_oauth_clients\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n issuer: text(\"issuer\").notNull(),\n authorizationServer: text(\"authorization_server\").notNull(),\n clientId: text(\"client_id\").notNull(),\n clientSecretEncrypted: text(\"client_secret_encrypted\"),\n tokenEndpointAuthMethod: text(\"token_endpoint_auth_method\").notNull().default(\"none\"),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n issuer: uniqueIndex(\"integration_oauth_clients_issuer_idx\").on(table.issuer),\n authorizationServer: index(\"integration_oauth_clients_as_idx\").on(table.authorizationServer),\n }),\n);\n\n// Consumed OAuth state nonces. Rows are inserted only on callback; the primary\n// key makes a verified state single-use across API instances.\nexport const integrationOauthStateNonces = pgTable(\n \"integration_oauth_state_nonces\",\n {\n nonce: text(\"nonce\").primaryKey(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n subjectId: text(\"subject_id\").notNull(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n usedAt: timestamp(\"used_at\", { withTimezone: true }).notNull().defaultNow(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspace: index(\"integration_oauth_state_nonces_workspace_idx\").on(table.workspaceId),\n expires: index(\"integration_oauth_state_nonces_expires_idx\").on(table.expiresAt),\n }),\n);\n\n// Per-workspace Codex account selection (the ACTIVE pointer) + P3 rotation\n// forward-compat. One row per workspace. The only P1-load-bearing column is\n// activeCredentialId — the account a session runs on when it has no pin. NULL ⇒\n// none selected (e.g. the active one was just disconnected). The\n// (account_id, workspace_id) pair inherits the verbatim workspace_rls_visible\n// policy. active_credential_id's FK is declared in the MIGRATION (not\n// .references()) to avoid a forward-reference on the const ordering, exactly like\n// sessions.activeSandboxId; ON DELETE SET NULL.\nexport const codexRotationSettings = pgTable(\n \"codex_rotation_settings\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n activeCredentialId: uuid(\"active_credential_id\"),\n // Legacy selector bit. Keep false as the DB default forever: an old worker\n // only understands this column, so a schema-first rollout or binary\n // rollback must never make it enter the non-atomic rotation path.\n rotationEnabled: boolean(\"rotation_enabled\").notNull().default(false),\n // Revision-aware allocator cutover. Only migration-compatible API/worker\n // code reads this bit; old binaries safely ignore it and keep the legacy\n // pin/rotation policy.\n leaseRotationEnabled: boolean(\"lease_rotation_enabled\").notNull().default(false),\n rotationStrategy: text(\"rotation_strategy\").notNull().default(\"sharded\"), // sharded-rotation policy: legacy residue; behavior is always sharded\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspace: uniqueIndex(\"codex_rotation_settings_workspace_idx\").on(table.workspaceId),\n }),\n);\n\n// Per-workspace model/provider availability policy — the HARD blocker deciding\n// which providers/models may serve a turn in this workspace AT ALL. NULL columns\n// mean unrestricted (today's behavior for every workspace without a row). A\n// non-null allowed_providers is a strict allowlist over provider identities\n// (the same identities the model router resolves to, with the built-in\n// OpenAI/Azure client — including the legacy resolveTurnModel-null fallback —\n// mapped to one well-known id); a non-null allowed_models is an additional\n// exact-model-id allowlist. Enforced at the API model-choke points (422) and,\n// authoritatively, in the worker immediately after turn model resolution: a\n// blocked resolution NEVER reaches a model call and NEVER silently remaps.\n// This exists so a codex-subscription workspace can be fail-closed to codex —\n// a turn can wait/fail loud, but can never fall through to the paid built-in.\nexport const workspaceModelPolicies = pgTable(\n \"workspace_model_policies\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n allowedProviders: text(\"allowed_providers\").array(),\n allowedModels: text(\"allowed_models\").array(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspace: uniqueIndex(\"workspace_model_policies_workspace_idx\").on(table.workspaceId),\n }),\n);\n\n// One workspace-local short-lived holder per running Codex turn. Selection and\n// insertion happen atomically while codex_rotation_settings is locked FOR\n// UPDATE, so concurrent replicas in the SAME workspace see one another's\n// assignments before choosing. Workspaces never share or correlate lease state.\n// The composite (workspace, account), (workspace, credential), and\n// (workspace, turn) FKs are declared in migration 0053 (sessionTurns is defined\n// later in this module).\nexport const codexCredentialLeases = pgTable(\n \"codex_credential_leases\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n credentialId: uuid(\"credential_id\").notNull(),\n turnId: uuid(\"turn_id\").notNull(),\n // Temporal activity execution fence. A successor dispatch for the same\n // durable turn replaces holderId and increments generation atomically;\n // stale/zombie heartbeats and releases must match both values.\n holderId: text(\"holder_id\").notNull(),\n generation: integer(\"generation\").notNull().default(1),\n leasedUntil: timestamp(\"leased_until\", { withTimezone: true }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n turn: uniqueIndex(\"codex_credential_leases_workspace_turn_idx\").on(\n table.workspaceId,\n table.turnId,\n ),\n activeCredential: index(\"codex_credential_leases_active_credential_idx\").on(\n table.workspaceId,\n table.credentialId,\n table.leasedUntil,\n ),\n expiry: index(\"codex_credential_leases_expiry_idx\").on(table.leasedUntil),\n }),\n);\n\nexport const sessions = pgTable(\n \"sessions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n status: text(\"status\").notNull().default(\"queued\"),\n initialMessage: text(\"initial_message\").notNull(),\n // Invisible host context frozen with the winning session create. The\n // initial turn copies this value so an idempotent repair can never adopt a\n // retrying caller's different instructions.\n initialTurnInstructions: text(\"initial_turn_instructions\"),\n title: text(\"title\"),\n titleSource: text(\"title_source\"),\n // Per-session agent persona/system instructions supplied at create (the\n // per-agent-type prompt lever for embedding hosts). NULL ⇒ the session\n // carried none, so the composed agent instructions are byte-identical to a\n // workspace-only persona (no backfill, no behavior change for existing rows).\n // Composed system-level AFTER the workspace agentInstructions; never emitted\n // as a timeline event.\n instructions: text(\"instructions\"),\n 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 last model call of the most recent\n // turn. The pre-turn portable compaction trigger reads this as its budget\n // signal (char/4 estimate is the same-turn fallback). Null until a turn with\n // usage has completed.\n lastInputTokens: integer(\"last_input_tokens\"),\n // Operator /compact request flag. The API sets\n // it true; the worker honors it BEFORE the next turn's model call by forcing\n // a compaction, then clears it. A durable flag (not a transient signal) so\n // the trigger survives a worker restart and converges before the next turn.\n compactRequested: boolean(\"compact_requested\").notNull().default(false),\n queueVersion: integer(\"queue_version\").notNull().default(0),\n queueHeadPosition: bigint(\"queue_head_position\", { mode: \"number\" }).notNull().default(0),\n queueTailPosition: bigint(\"queue_tail_position\", { mode: \"number\" }).notNull().default(0),\n directControlState: text(\"direct_control_state\").notNull().default(\"active\"),\n directPauseRevision: bigint(\"direct_pause_revision\", { mode: \"number\" }),\n subtreeRunOverrideRevision: bigint(\"subtree_run_override_revision\", {\n mode: \"number\",\n }),\n controlVersion: bigint(\"control_version\", { mode: \"number\" }).notNull().default(0),\n directControlReason: text(\"direct_control_reason\"),\n directControlChangedBy: text(\"direct_control_changed_by\"),\n directControlChangedAt: timestamp(\"direct_control_changed_at\", {\n withTimezone: true,\n }),\n lastSequence: integer(\"last_sequence\").notNull().default(0),\n // The session's PINNED Codex account (manual override from the in-session\n // switcher). NULL ⇒ follow the workspace active pointer. FK declared in the\n // migration with ON DELETE SET NULL (a disconnected pin degrades to \"follow\n // active\", never dangles), same pattern as activeSandboxId.\n codexPinnedCredentialId: uuid(\"codex_pinned_credential_id\"),\n // The Codex account the session's most recent turn ACTUALLY ran on — drives\n // the \"Running on:\" indicator. Written by the worker at the turn boundary. FK\n // ON DELETE SET NULL (migration).\n codexLastCredentialId: uuid(\"codex_last_credential_id\"),\n // The SOURCE of codex_pinned_credential_id (AM-2): 'manual' — the user's\n // in-session account switcher, which is SACRED and never moved by any policy —\n // or 'policy' — the sharded rotation strategy's deterministic per-session home\n // assignment, which MAY be re-sharded to another account when its own account\n // caps. NULL when there is no pin (and for every pre-existing row). CHECK\n // (manual|policy) lives in the migration; no FK (it describes the pin, not an\n // account).\n codexPinSource: text(\"codex_pin_source\"),\n // Frozen at create: remote_v2 (Codex remote compaction + Codex-only models)\n // or portable (plaintext compaction + free provider switching). Existing\n // rows backfill to portable. CHECK lives in the migration.\n codexCompactionMode: text(\"codex_compaction_mode\").notNull().default(\"portable\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n // Assigned by the database trigger whenever canonical updated_at activity\n // advances. Legacy rows remain zero until touched; raw delta-only writers\n // intentionally omit updated_at and therefore do not allocate revisions.\n activityRevision: bigint(\"activity_revision\", { mode: \"number\" }).notNull().default(0),\n },\n (table) => ({\n workspaceIdentity: uniqueIndex(\"sessions_workspace_id_idx\").on(table.workspaceId, table.id),\n workspaceCreated: index(\"sessions_workspace_created_idx\").on(\n table.workspaceId,\n table.createdAt,\n ),\n // Model-facing monitoring pages use exact (timestamp,id) keysets. Keep the\n // older prefix index during rolling deploys; these composites serve both\n // deterministic traversal and updatedAfter change scans.\n workspaceCreatedId: index(\"sessions_workspace_created_id_idx\").on(\n table.workspaceId,\n table.createdAt.desc(),\n table.id.desc(),\n ),\n workspaceUpdatedId: index(\"sessions_workspace_updated_id_idx\").on(\n table.workspaceId,\n table.updatedAt.desc(),\n table.id.desc(),\n ),\n workspaceActivityRevision: index(\"sessions_workspace_activity_revision_idx\").on(\n table.workspaceId,\n table.activityRevision.desc(),\n table.updatedAt.desc(),\n table.id.desc(),\n ),\n variableSet: index(\"sessions_variable_set_idx\").on(table.workspaceId, table.variableSetId),\n parent: index(\"sessions_parent_idx\").on(table.workspaceId, table.parentSessionId),\n // Routing index: resolve session_id -> sandbox_group_id at every lease entry\n // point and enumerate all sessions in a group for attribution/disclosure.\n sandboxGroup: index(\"sessions_sandbox_group_idx\").on(table.workspaceId, table.sandboxGroupId),\n // Partial unique index: one session per (workspace, create_idempotency_key)\n // when a key is present. The boundary trigger reserves the cross-outcome\n // winner before this source row commits; a losing source insert is\n // suppressed and the domain layer replays the durable winner.\n createIdempotency: uniqueIndex(\"sessions_workspace_create_idempotency_idx\")\n .on(table.workspaceId, table.createIdempotencyKey)\n .where(sql`${table.createIdempotencyKey} is not null`),\n rootDepth: index(\"sessions_workspace_root_depth_idx\").on(\n table.workspaceId,\n table.rootSessionId,\n table.nestedAgentDepth,\n ),\n }),\n);\n\n// A denied session create is durable evidence, not a mutable session/resource\n// artifact. It has its own workspace-scoped idempotency key so retries replay\n// the same denial without creating a session or billing/run rows.\nexport const sessionSpawnDenials = pgTable(\n \"session_spawn_denials\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n parentSessionId: uuid(\"parent_session_id\"),\n rootSessionId: uuid(\"root_session_id\"),\n currentDepth: integer(\"current_depth\").notNull(),\n attemptedDepth: bigint(\"attempted_depth\", { mode: \"number\" }).notNull(),\n effectiveMaxNestedAgentDepth: integer(\"effective_max_nested_agent_depth\").notNull(),\n requestedMaxNestedAgentDepthOverride: integer(\"requested_max_nested_agent_depth_override\"),\n policySource: text(\"policy_source\").notNull(),\n policySessionId: uuid(\"policy_session_id\"),\n subjectId: text(\"subject_id\"),\n code: text(\"code\").notNull(),\n idempotencyKey: text(\"idempotency_key\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceIdentity: uniqueIndex(\"session_spawn_denials_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n workspaceCreated: index(\"session_spawn_denials_workspace_created_idx\").on(\n table.workspaceId,\n table.createdAt,\n ),\n parent: index(\"session_spawn_denials_parent_idx\").on(\n table.workspaceId,\n table.parentSessionId,\n table.createdAt,\n ),\n idempotency: uniqueIndex(\"session_spawn_denials_workspace_idempotency_idx\")\n .on(table.workspaceId, table.idempotencyKey)\n .where(sql`${table.idempotencyKey} is not null`),\n workspaceAccount: foreignKey({\n name: \"session_spawn_denials_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n }),\n);\n\n// Per-authenticated-subject session organization. This is deliberately a\n// relation instead of a session column: one member's pin must never reorder a\n// shared workspace for another member, and a session's own activity timestamps\n// must remain agent/runtime truth. `subjectId` is the trusted AccessGrant\n// subject, which is text because configured/delegated principals are not always\n// UUIDs. The account/workspace pair carries the standard forced-RLS boundary.\nexport const sessionPins = pgTable(\n \"session_pins\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n subjectId: text(\"subject_id\").notNull(),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n // Keep an unpinned tombstone (pinned=false, pinned_at=null) rather than\n // deleting it. That preserves a monotonic version and prevents an ABA race:\n // a stale client that saw pin version 1 cannot silently overwrite a later\n // unpin+re-pin that would otherwise recreate version 1.\n pinned: boolean(\"pinned\").notNull().default(true),\n pinnedAt: timestamp(\"pinned_at\", { withTimezone: true }).defaultNow(),\n version: integer(\"version\").notNull().default(1),\n },\n (table) => ({\n subjectNonempty: check(\n \"session_pins_subject_nonempty\",\n sql`length(btrim(${table.subjectId})) > 0`,\n ),\n versionPositive: check(\"session_pins_version_positive\", sql`${table.version} >= 1`),\n stateConsistent: check(\n \"session_pins_state_consistent\",\n sql`((${table.pinned}) and (${table.pinnedAt}) is not null) or ((not ${table.pinned}) and (${table.pinnedAt}) is null)`,\n ),\n workspaceAccount: foreignKey({\n name: \"session_pins_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSession: foreignKey({\n name: \"session_pins_workspace_session_fk\",\n columns: [table.workspaceId, table.sessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"cascade\"),\n subjectSession: uniqueIndex(\"session_pins_subject_workspace_session_idx\").on(\n table.subjectId,\n table.workspaceId,\n table.sessionId,\n ),\n subjectPinned: index(\"session_pins_workspace_subject_pinned_idx\").on(\n table.workspaceId,\n table.subjectId,\n table.pinned,\n table.pinnedAt.desc(),\n table.sessionId.desc(),\n ),\n }),\n);\n\n// A short-lived server-owned continuation snapshot for the pin-aware session\n// list. The ordinary list is ordered by mutable activity, so a cursor cannot\n// safely replay that order from updated_at alone across HTTP requests. The\n// snapshot stores the already-ordered ordinary ids; the list query still joins\n// live session rows for current lifecycle/title data and expires snapshots\n// opportunistically.\nexport const sessionListSnapshots = pgTable(\n \"session_list_snapshots\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n subjectId: text(\"subject_id\").notNull(),\n parentSessionFilter: text(\"parent_session_filter\").notNull().default(\"all\"),\n search: text(\"search\"),\n ordinarySessionIds: uuid(\"ordinary_session_ids\")\n .array()\n .notNull()\n .default(sql`'{}'::uuid[]`),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"session_list_snapshots_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n subjectNonempty: check(\n \"session_list_snapshots_subject_nonempty\",\n sql`length(btrim(${table.subjectId})) > 0`,\n ),\n parentFilterValid: check(\n \"session_list_snapshots_parent_filter_valid\",\n sql`${table.parentSessionFilter} = 'all' or ${table.parentSessionFilter} = 'null' or ${table.parentSessionFilter} ~ '^[0-9a-fA-F-]{36}$'`,\n ),\n searchLength: check(\n \"session_list_snapshots_search_length\",\n sql`${table.search} is null or length(${table.search}) <= 200`,\n ),\n workspaceExpiry: index(\"session_list_snapshots_workspace_expiry_idx\").on(\n table.workspaceId,\n table.subjectId,\n table.expiresAt,\n ),\n expiryReaper: index(\"session_list_snapshots_expiry_reaper_idx\").on(table.expiresAt, table.id),\n }),\n);\n\nexport const sessionMcpServers = pgTable(\n \"session_mcp_servers\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n serverId: text(\"server_id\").notNull(),\n name: text(\"name\"),\n url: text(\"url\").notNull(),\n allowedTools: jsonb(\"allowed_tools\").$type<string[]>(),\n timeoutMs: integer(\"timeout_ms\"),\n cacheToolsList: boolean(\"cache_tools_list\").notNull().default(false),\n // Human-approval policy: `true` = every tool requires approval, a string[] of\n // UNPREFIXED tool names = only those require it, null/absent = auto-run.\n requireApproval: jsonb(\"require_approval\").$type<boolean | string[]>(),\n // Non-secret pointer resolved at request time by the standalone broker or\n // an embedding host. Unlike headersEncrypted, this is safe to project.\n connectionRef: jsonb(\"connection_ref\").$type<McpServerConnectionRef>(),\n // Map of header name -> AES-GCM ciphertext. Values are decrypted only by the\n // worker's run-preparation path and never returned by API helpers.\n headersEncrypted: jsonb(\"headers_encrypted\")\n .$type<Record<string, string>>()\n .notNull()\n .default({}),\n credentialVersion: integer(\"credential_version\").notNull().default(1),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n sessionServer: uniqueIndex(\"session_mcp_servers_session_server_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.serverId,\n ),\n session: index(\"session_mcp_servers_session_idx\").on(table.workspaceId, table.sessionId),\n }),\n);\n\nexport const files = pgTable(\n \"files\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n status: text(\"status\").notNull().default(\"pending_upload\"),\n filename: text(\"filename\").notNull(),\n safeFilename: text(\"safe_filename\").notNull(),\n contentType: text(\"content_type\").notNull(),\n sizeBytes: bigint(\"size_bytes\", { mode: \"number\" }).notNull(),\n sha256: text(\"sha256\"),\n bucket: text(\"bucket\").notNull(),\n objectKey: text(\"object_key\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceCreated: index(\"files_workspace_created_idx\").on(table.workspaceId, table.createdAt),\n objectKey: uniqueIndex(\"files_object_key_idx\").on(table.objectKey),\n status: index(\"files_status_idx\").on(table.status),\n }),\n);\n\nexport const fileUploads = pgTable(\n \"file_uploads\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n fileId: uuid(\"file_id\")\n .notNull()\n .references(() => files.id, { onDelete: \"cascade\" }),\n status: text(\"status\").notNull().default(\"pending\"),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspace: index(\"file_uploads_workspace_idx\").on(table.workspaceId),\n fileId: index(\"file_uploads_file_id_idx\").on(table.fileId),\n status: index(\"file_uploads_status_idx\").on(table.status),\n }),\n);\n\nexport const documentBases = pgTable(\n \"document_bases\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n description: text(\"description\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceCreated: index(\"document_bases_workspace_created_idx\").on(\n table.workspaceId,\n table.createdAt,\n ),\n defaultName: uniqueIndex(\"document_bases_workspace_default_name_uq\")\n .on(table.workspaceId)\n .where(sql`lower(btrim(${table.name})) = 'default'`),\n }),\n);\n\nexport const documents = pgTable(\n \"documents\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n baseId: uuid(\"base_id\")\n .notNull()\n .references(() => documentBases.id, { onDelete: \"cascade\" }),\n fileId: uuid(\"file_id\")\n .notNull()\n .references(() => files.id, { onDelete: \"restrict\" }),\n status: text(\"status\").notNull().default(\"queued\"),\n title: text(\"title\").notNull(),\n parser: text(\"parser\").notNull().default(\"liteparse\"),\n chunkCount: integer(\"chunk_count\").notNull().default(0),\n error: text(\"error\"),\n sourceKind: text(\"source_kind\").notNull().default(\"manual_upload\"),\n sourceUri: text(\"source_uri\"),\n sourceExternalId: text(\"source_external_id\"),\n sourceTitle: text(\"source_title\"),\n sourceAuthor: text(\"source_author\"),\n sourceCreatedAt: timestamp(\"source_created_at\", { withTimezone: true }),\n sourceUpdatedAt: timestamp(\"source_updated_at\", { withTimezone: true }),\n sourceVersion: text(\"source_version\"),\n aclTags: jsonb(\"acl_tags\").$type<string[]>().notNull().default([]),\n // Per-document access controls. visibility 'private' restricts human reads to\n // created_by (a grant subject id, not a uuid); agent_access=false hides the\n // document from agent retrieval surfaces (docs MCP) while humans keep REST.\n visibility: text(\"visibility\").notNull().default(\"workspace\"),\n createdBy: text(\"created_by\"),\n agentAccess: boolean(\"agent_access\").notNull().default(true),\n // Auto-curation output (knowledge drops).\n summary: text(\"summary\"),\n topics: jsonb(\"topics\").$type<string[]>().notNull().default([]),\n curationStatus: text(\"curation_status\").notNull().default(\"none\"),\n curation: jsonb(\"curation\").$type<Record<string, unknown>>(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n baseFile: uniqueIndex(\"documents_workspace_base_file_idx\").on(\n table.workspaceId,\n table.baseId,\n table.fileId,\n ),\n baseStatus: index(\"documents_workspace_base_status_idx\").on(\n table.workspaceId,\n table.baseId,\n table.status,\n ),\n sourceKind: index(\"documents_workspace_source_kind_idx\").on(\n table.workspaceId,\n table.sourceKind,\n ),\n sourceExternalId: index(\"documents_workspace_source_external_id_idx\").on(\n table.workspaceId,\n table.sourceExternalId,\n ),\n curationStatus: index(\"documents_workspace_curation_status_idx\").on(\n table.workspaceId,\n table.curationStatus,\n ),\n visibilityState: check(\n \"documents_visibility_chk\",\n sql`${table.visibility} in ('workspace', 'private')`,\n ),\n curationState: check(\n \"documents_curation_status_chk\",\n sql`${table.curationStatus} in ('none', 'pending', 'suggested', 'auto_filed', 'failed')`,\n ),\n privateCreator: check(\n \"documents_private_creator_chk\",\n sql`${table.visibility} <> 'private' or nullif(btrim(${table.createdBy}), '') is not null`,\n ),\n topicsArray: check(\"documents_topics_array_chk\", sql`jsonb_typeof(${table.topics}) = 'array'`),\n curationObject: check(\n \"documents_curation_object_chk\",\n sql`${table.curation} is null or jsonb_typeof(${table.curation}) = 'object'`,\n ),\n }),\n);\n\nexport const documentChunks = pgTable(\n \"document_chunks\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n documentId: uuid(\"document_id\")\n .notNull()\n .references(() => documents.id, { onDelete: \"cascade\" }),\n baseId: uuid(\"base_id\")\n .notNull()\n .references(() => documentBases.id, { onDelete: \"cascade\" }),\n fileId: uuid(\"file_id\")\n .notNull()\n .references(() => files.id, { onDelete: \"restrict\" }),\n chunkIndex: integer(\"chunk_index\").notNull(),\n text: text(\"text\").notNull(),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n 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 }),\n);\n\nexport const knowledgeMemories = pgTable(\n \"knowledge_memories\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n status: text(\"status\").notNull().default(\"proposed\"),\n kind: text(\"kind\").notNull().default(\"semantic\"),\n scope: text(\"scope\").notNull().default(\"workspace\"),\n text: text(\"text\").notNull(),\n sourceRefs: jsonb(\"source_refs\").$type<unknown[]>().notNull().default([]),\n confidence: integer(\"confidence\").notNull().default(50),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n createdBySessionId: uuid(\"created_by_session_id\").references(() => sessions.id, {\n onDelete: \"set null\",\n }),\n reviewedBy: text(\"reviewed_by\"),\n reviewedAt: timestamp(\"reviewed_at\", { withTimezone: true }),\n // Workspace Memory V1 (migration 0045). Embedding is nullable: fail-soft writes\n // (embedder unavailable) persist keyword-searchable rows without a vector.\n embedding: vector(\"embedding\"),\n embeddingModel: text(\"embedding_model\"),\n pinned: boolean(\"pinned\").notNull().default(false),\n usageCount: integer(\"usage_count\").notNull().default(0),\n lastUsedAt: timestamp(\"last_used_at\", { withTimezone: true }),\n // Self-referential supersession chain. FKs live in migration 0045 (ON DELETE SET\n // NULL); declared here as plain columns like the migration-only composite FK.\n supersedesId: uuid(\"supersedes_id\"),\n supersededById: uuid(\"superseded_by_id\"),\n validFrom: timestamp(\"valid_from\", { withTimezone: true }).notNull().defaultNow(),\n validUntil: timestamp(\"valid_until\", { withTimezone: true }),\n // Hierarchical memory foundation (migration 0152). `scope` remains the V1\n // compatibility projection; typed selectors are the fail-closed authority.\n scopeType: text(\"scope_type\").notNull().default(\"workspace\"),\n scopeSubjectId: text(\"scope_subject_id\"),\n scopeRoleKey: text(\"scope_role_key\"),\n scopeSessionId: uuid(\"scope_session_id\"),\n namespace: text(\"namespace_key\").notNull().default(\"general\"),\n labels: text(\"labels\").array().notNull().default([]),\n memoryVersion: integer(\"memory_version\").notNull().default(1),\n createdByKind: text(\"created_by_kind\").notNull().default(\"service\"),\n createdBySubjectId: text(\"created_by_subject_id\").notNull().default(\"unattributed-legacy\"),\n createdByContext: jsonb(\"created_by_context\")\n .$type<Record<string, unknown>>()\n .notNull()\n .default({ backfill: true }),\n // sha256(normalizeMemoryText(text)) — exact-dedup key; see memory-domain.\n textHash: text(\"text_hash\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceStatus: index(\"knowledge_memories_workspace_status_idx\").on(\n table.workspaceId,\n table.status,\n table.updatedAt,\n ),\n workspaceKind: index(\"knowledge_memories_workspace_kind_idx\").on(table.workspaceId, table.kind),\n workspaceScope: index(\"knowledge_memories_workspace_scope_idx\").on(\n table.workspaceId,\n table.scope,\n ),\n workspaceTypedScope: index(\"knowledge_memories_workspace_typed_scope_idx\").on(\n table.workspaceId,\n table.scopeType,\n table.scopeSubjectId,\n table.scopeRoleKey,\n table.scopeSessionId,\n ),\n workspaceNamespace: index(\"knowledge_memories_workspace_namespace_idx\").on(\n table.workspaceId,\n table.namespace,\n ),\n labelsGin: index(\"knowledge_memories_labels_idx\").using(\"gin\", table.labels),\n createdBySession: index(\"knowledge_memories_workspace_created_by_session_idx\").on(\n table.workspaceId,\n table.createdBySessionId,\n ),\n // Working-set selection (partial index mirrors migration 0045).\n workspaceVisible: index(\"knowledge_memories_workspace_visible_idx\")\n .on(table.workspaceId, table.pinned, table.updatedAt)\n .where(sql`${table.status} in ('active', 'approved')`),\n workspaceTextHash: index(\"knowledge_memories_workspace_text_hash_idx\").on(\n table.workspaceId,\n table.textHash,\n ),\n // Drizzle 0.45 cannot encode PostgreSQL `NULLS NOT DISTINCT`; migration\n // 0152 owns that option so nullable scope selectors remain one identity.\n scopeVisibleTextHashUnique: uniqueIndex(\"knowledge_memories_scope_visible_text_hash_uq\")\n .on(\n table.workspaceId,\n table.scopeType,\n table.scopeSubjectId,\n table.scopeRoleKey,\n table.scopeSessionId,\n table.namespace,\n table.textHash,\n )\n .where(sql`${table.status} in ('active', 'approved') and ${table.textHash} is not null`),\n }),\n);\n\nexport const sessionTurns = pgTable(\n \"session_turns\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n triggerEventId: uuid(\"trigger_event_id\").notNull(),\n temporalWorkflowId: text(\"temporal_workflow_id\").notNull(),\n status: text(\"status\").notNull(),\n source: text(\"source\").notNull().default(\"user\"),\n position: bigint(\"position\", { mode: \"number\" }).notNull(),\n prompt: text(\"prompt\").notNull(),\n // Host context for this exact turn. System-level at runtime and deliberately\n // separate from the visible prompt/event payload.\n turnInstructions: text(\"turn_instructions\"),\n resources: jsonb(\"resources\").$type<unknown[]>().notNull().default([]),\n tools: jsonb(\"tools\").$type<unknown[]>().notNull().default([]),\n // false = inherit the durable session policy; true = this turn explicitly\n // replaces it with `tools` after the core subset fence.\n toolsProvided: boolean(\"tools_provided\").notNull().default(false),\n model: text(\"model\").notNull(),\n reasoningEffort: text(\"reasoning_effort\").notNull(),\n // Peer of model + reasoning_effort for Fast/priority inheritance.\n latencyMode: text(\"latency_mode\").notNull().default(\"standard\"),\n sandboxBackend: text(\"sandbox_backend\").notNull(),\n // Per-turn OS override. NULL = inherit the session's sandbox_os. CHECK-\n // constrained to the SandboxOs enum (or NULL) in migration 0018.\n sandboxOs: text(\"sandbox_os\"),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n version: integer(\"version\").notNull().default(1),\n executionGeneration: integer(\"execution_generation\").notNull().default(0),\n // Composite FK to session_turn_attempts is installed by migration 0063.\n // It lives in SQL because attempts carry the reciprocal turn FK and because\n // the claim transaction preallocates this ID before inserting the attempt;\n // the SQL constraint is therefore DEFERRABLE INITIALLY DEFERRED.\n activeAttemptId: uuid(\"active_attempt_id\"),\n lineage: jsonb(\"lineage\").$type<Record<string, unknown>>().notNull().default({}),\n // Required immutable authority captured when the turn is accepted. These\n // columns are deliberately outside mutable metadata/lineage.\n initiatorKind: text(\"initiator_kind\").notNull().default(\"service\"),\n initiatorSubjectId: text(\"initiator_subject_id\").notNull().default(\"unattributed-legacy\"),\n initiatorContext: jsonb(\"initiator_context\")\n .$type<Record<string, unknown>>()\n .notNull()\n .default({ backfill: true }),\n // Immutable exact personal MCP authority for this logical turn. Recovery,\n // approval, retries, and Toolspace reuse this row; no runtime may infer\n // broader authority from the session creator or mutable session state.\n personalConnectionDelegations: jsonb(\"personal_connection_delegations\")\n .$type<McpPersonalConnectionDelegation[]>()\n .notNull()\n .default([]),\n cancelledBy: text(\"cancelled_by\"),\n cancelReason: text(\"cancel_reason\"),\n // Atomic per-turn toolspace call budget counter (migration 0043). Incremented\n // by a single conditional UPDATE at tools/call time; the row lock serializes\n // concurrent reservations so exactly `toolspaceMaxCallsPerTurn` succeed.\n toolspaceCallCount: integer(\"toolspace_call_count\").notNull().default(0),\n startedAt: timestamp(\"started_at\", { withTimezone: true }),\n finishedAt: timestamp(\"finished_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceIdentity: uniqueIndex(\"session_turns_workspace_id_idx\").on(\n table.workspaceId,\n table.id,\n ),\n queue: index(\"session_turns_workspace_queue_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.status,\n table.position,\n ),\n oneCurrentInference: uniqueIndex(\"session_turns_one_current_inference_uq\")\n .on(table.workspaceId, table.sessionId)\n .where(sql`${table.status} in ('running','requires_action','recovering','waiting_capacity')`),\n latencyModeValid: check(\n \"session_turns_latency_mode_check\",\n sql`${table.latencyMode} in ('standard', 'priority', 'fast')`,\n ),\n }),\n);\n\n// First-class ownership for one accepted execution attempt. A workflow may\n// preallocate id, but this row is inserted only by the activity transaction\n// that actually claims the logical turn and registers its exact dispatch.\nexport const sessionTurnAttempts = pgTable(\n \"session_turn_attempts\",\n {\n id: uuid(\"id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n turnId: uuid(\"turn_id\").notNull(),\n executionGeneration: integer(\"execution_generation\").notNull(),\n state: text(\"state\").notNull().default(\"claimed\"),\n outcome: text(\"outcome\"),\n temporalWorkflowId: text(\"temporal_workflow_id\").notNull(),\n temporalWorkflowRunId: text(\"temporal_workflow_run_id\").notNull(),\n temporalActivityId: text(\"temporal_activity_id\").notNull(),\n workerId: text(\"worker_id\"),\n leaseId: text(\"lease_id\"),\n leaseExpiresAt: timestamp(\"lease_expires_at\", { withTimezone: true }),\n verifiedControlRevision: bigint(\"verified_control_revision\", {\n mode: \"number\",\n }).notNull(),\n // Immutable policy snapshot captured under the session lock at claim.\n mcpApprovalPolicies: jsonb(\"mcp_approval_policies\")\n .$type<Record<string, SessionMcpApprovalPolicy>>()\n .notNull(),\n connectorActionPolicies: jsonb(\"connector_action_policies\")\n .$type<ConnectorActionPolicySnapshotEntry[]>()\n .notNull()\n .default([]),\n startedAt: timestamp(\"started_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n closedAt: timestamp(\"closed_at\", { withTimezone: true }),\n // The cancelled activity writes this after losing inference, user-visible\n // output, and workspace-persistence authority. Fenced/idempotent cleanup\n // and telemetry may still finish. Temporal activity cancellation or\n // terminalization is transport state only; queue admission and clients use\n // this durable receipt as the physical-quiescence authority.\n quiescedAt: timestamp(\"quiesced_at\", { withTimezone: true }),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"session_turn_attempts_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSession: foreignKey({\n name: \"session_turn_attempts_workspace_session_fk\",\n columns: [table.workspaceId, table.sessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"restrict\"),\n workspaceTurn: foreignKey({\n name: \"session_turn_attempts_workspace_turn_fk\",\n columns: [table.workspaceId, table.turnId],\n foreignColumns: [sessionTurns.workspaceId, sessionTurns.id],\n }).onDelete(\"restrict\"),\n workspaceIdentity: uniqueIndex(\"session_turn_attempts_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n ownershipIdentity: uniqueIndex(\"session_turn_attempts_human_input_owner_uq\").on(\n table.accountId,\n table.workspaceId,\n table.sessionId,\n table.turnId,\n table.id,\n ),\n liveTurn: uniqueIndex(\"session_turn_attempts_live_turn_uq\")\n .on(table.workspaceId, table.turnId)\n .where(sql`${table.state} in ('claimed', 'running')`),\n liveSession: uniqueIndex(\"session_turn_attempts_live_session_uq\")\n .on(table.workspaceId, table.sessionId)\n .where(sql`${table.state} in ('claimed', 'running')`),\n latestSessionAttempt: index(\"session_turn_attempts_latest_session_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.startedAt.desc(),\n table.id.desc(),\n ),\n dispatch: uniqueIndex(\"session_turn_attempts_dispatch_uq\").on(\n table.workspaceId,\n table.temporalWorkflowRunId,\n table.temporalActivityId,\n ),\n leaseExpiry: index(\"session_turn_attempts_lease_expiry_idx\")\n .on(table.leaseExpiresAt, table.workspaceId, table.sessionId)\n .where(sql`${table.state} in ('claimed', 'running')`),\n stateValid: check(\n \"session_turn_attempts_state_check\",\n sql`${table.state} in ('claimed', 'running', 'closed')`,\n ),\n outcomeValid: check(\n \"session_turn_attempts_outcome_check\",\n sql`${table.outcome} is null or ${table.outcome} in (\n 'completed', 'failed', 'cancelled', 'superseded', 'requires_action',\n 'waiting_capacity', 'interrupted_recoverable', 'lease_lost_recoverable',\n 'pre_cutover_closed'\n )`,\n ),\n closedConsistent: check(\n \"session_turn_attempts_closed_check\",\n sql`(${table.state} = 'closed' and ${table.outcome} is not null and ${table.closedAt} is not null)\n or (${table.state} <> 'closed' and ${table.outcome} is null and ${table.closedAt} is null)`,\n ),\n }),\n);\n\nexport const connectorActionRequests = pgTable(\n \"connector_action_requests\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\").notNull(),\n turnId: uuid(\"turn_id\").notNull(),\n creationAttemptId: uuid(\"creation_attempt_id\").notNull(),\n creationExecutionGeneration: integer(\"creation_execution_generation\").notNull(),\n executionAttemptId: uuid(\"execution_attempt_id\"),\n executionAttemptGeneration: integer(\"execution_attempt_generation\"),\n approvalId: text(\"approval_id\").notNull(),\n initiatorKind: text(\"initiator_kind\").$type<\"subject\" | \"service\">().notNull(),\n initiatorSubjectId: text(\"initiator_subject_id\").notNull(),\n connectionId: text(\"connection_id\").notNull(),\n connectionVersion: integer(\"connection_version\"),\n serverId: text(\"server_id\").notNull(),\n toolName: text(\"tool_name\").notNull(),\n actionName: text(\"action_name\").notNull(),\n // Attempt-frozen provenance intentionally survives policy deletion.\n policyId: uuid(\"policy_id\"),\n policyVersion: integer(\"policy_version\"),\n policySource: text(\"policy_source\").$type<\"explicit\" | \"ambiguous\">().notNull(),\n policyDecision: text(\"policy_decision\").$type<ConnectorActionPolicyDecision>().notNull(),\n actionFingerprint: text(\"action_fingerprint\").notNull(),\n status: text(\"status\")\n .$type<\n | \"pending\"\n | \"approved\"\n | \"rejected\"\n | \"blocked\"\n | \"executing\"\n | \"completed\"\n | \"failed\"\n | \"uncertain\"\n >()\n .notNull(),\n decision: text(\"decision\").$type<\"approve\" | \"reject\">(),\n decisionBySubjectId: text(\"decision_by_subject_id\"),\n decisionEventId: uuid(\"decision_event_id\"),\n decidedAt: timestamp(\"decided_at\", { withTimezone: true }),\n executionStartedAt: timestamp(\"execution_started_at\", { withTimezone: true }),\n executionFinishedAt: timestamp(\"execution_finished_at\", { withTimezone: true }),\n outcome: text(\"outcome\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n creationAttempt: foreignKey({\n name: \"connector_action_requests_creation_attempt_fk\",\n columns: [\n table.accountId,\n table.workspaceId,\n table.sessionId,\n table.turnId,\n table.creationAttemptId,\n ],\n foreignColumns: [\n sessionTurnAttempts.accountId,\n sessionTurnAttempts.workspaceId,\n sessionTurnAttempts.sessionId,\n sessionTurnAttempts.turnId,\n sessionTurnAttempts.id,\n ],\n }).onDelete(\"cascade\"),\n executionAttempt: foreignKey({\n name: \"connector_action_requests_execution_attempt_fk\",\n columns: [\n table.accountId,\n table.workspaceId,\n table.sessionId,\n table.turnId,\n table.executionAttemptId,\n ],\n foreignColumns: [\n sessionTurnAttempts.accountId,\n sessionTurnAttempts.workspaceId,\n sessionTurnAttempts.sessionId,\n sessionTurnAttempts.turnId,\n sessionTurnAttempts.id,\n ],\n }).onDelete(\"cascade\"),\n identity: uniqueIndex(\"connector_action_requests_identity_uq\").on(\n table.workspaceId,\n table.sessionId,\n table.turnId,\n table.approvalId,\n ),\n attemptStatus: index(\"connector_action_requests_attempt_status_idx\").on(\n table.workspaceId,\n table.creationAttemptId,\n table.status,\n ),\n sessionCreated: index(\"connector_action_requests_session_created_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.createdAt.desc(),\n table.id.desc(),\n ),\n policyDecisionValid: check(\n \"connector_action_requests_policy_decision_chk\",\n sql`${table.policyDecision} in ('allow', 'ask', 'block')`,\n ),\n statusValid: check(\n \"connector_action_requests_status_chk\",\n sql`${table.status} in (\n 'pending', 'approved', 'rejected', 'blocked', 'executing',\n 'completed', 'failed', 'uncertain'\n )`,\n ),\n }),\n);\n\n// One durable idempotency/operation record for every queue, control,\n// foreground Send/Steer, and Agent MCP mutation. The database migration owns\n// the NULLS NOT DISTINCT uniqueness form because Drizzle does not model it.\nexport const sessionCommandReceipts = pgTable(\n \"session_command_receipts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n actorType: text(\"actor_type\").notNull(),\n actorSubjectId: text(\"actor_subject_id\"),\n actorAttemptId: uuid(\"actor_attempt_id\"),\n action: text(\"action\").notNull(),\n targetSessionId: uuid(\"target_session_id\"),\n targetTurnId: uuid(\"target_turn_id\"),\n operationKey: text(\"operation_key\").notNull(),\n canonicalRequestHash: text(\"canonical_request_hash\").notNull(),\n appliedControlRevision: bigint(\"applied_control_revision\", {\n mode: \"number\",\n }),\n appliedQueueVersion: integer(\"applied_queue_version\"),\n appliedTurnVersion: integer(\"applied_turn_version\"),\n appliedDraftRevision: bigint(\"applied_draft_revision\", { mode: \"number\" }),\n result: jsonb(\"result\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"session_command_receipts_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n actorAttempt: foreignKey({\n name: \"session_command_receipts_actor_attempt_fk\",\n columns: [table.workspaceId, table.actorAttemptId],\n foreignColumns: [sessionTurnAttempts.workspaceId, sessionTurnAttempts.id],\n }).onDelete(\"restrict\"),\n targetSession: foreignKey({\n name: \"session_command_receipts_target_session_fk\",\n columns: [table.workspaceId, table.targetSessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"restrict\"),\n targetTurn: foreignKey({\n name: \"session_command_receipts_target_turn_fk\",\n columns: [table.workspaceId, table.targetTurnId],\n foreignColumns: [sessionTurns.workspaceId, sessionTurns.id],\n }).onDelete(\"restrict\"),\n workspaceIdentity: uniqueIndex(\"session_command_receipts_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n targetCreated: index(\"session_command_receipts_target_created_idx\").on(\n table.workspaceId,\n table.targetSessionId,\n table.createdAt,\n ),\n goalUpdateOperation: uniqueIndex(\"session_command_receipts_goal_update_operation_uq\")\n .on(table.workspaceId, table.action, table.targetSessionId, table.operationKey)\n .where(sql`${table.action} = 'goal.update'`),\n actorValid: check(\n \"session_command_receipts_actor_check\",\n sql`(\n ${table.actorType} = 'agent_attempt'\n and ${table.actorAttemptId} is not null\n and ${table.actorSubjectId} is null\n ) or (\n ${table.actorType} in ('human', 'operator', 'service')\n and ${table.actorSubjectId} is not null\n and ${table.actorAttemptId} is null\n )`,\n ),\n }),\n);\n\n// One workspace-scoped durable invalidation per committed control revision.\n// This is deliberately separate from conversation/session events: a parent or\n// workspace Pause can change thousands of effective projections without\n// manufacturing one event (or queue row) per descendant.\nexport const workspaceControlEvents = pgTable(\n \"workspace_control_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n revision: bigint(\"revision\", { mode: \"number\" }).notNull(),\n scope: text(\"scope\").notNull(),\n rootSessionId: uuid(\"root_session_id\"),\n action: text(\"action\").notNull(),\n automatic: boolean(\"automatic\").notNull().default(false),\n reason: text(\"reason\"),\n reasonOriginalBytes: integer(\"reason_original_bytes\"),\n actor: text(\"actor\").notNull(),\n // Null is the rolling-upgrade shape for untouched, already-bounded legacy\n // rows. New writes and rewritten poison rows carry exact source byte facts.\n actorOriginalBytes: integer(\"actor_original_bytes\"),\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"workspace_control_events_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n rootSession: foreignKey({\n name: \"workspace_control_events_root_session_fk\",\n columns: [table.workspaceId, table.rootSessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"restrict\"),\n workspaceRevision: uniqueIndex(\"workspace_control_events_workspace_revision_uq\").on(\n table.workspaceId,\n table.revision,\n ),\n revisionValid: check(\"workspace_control_events_revision_check\", sql`${table.revision} > 0`),\n shapeValid: check(\n \"workspace_control_events_shape_check\",\n sql`(${table.scope} = 'workspace' and ${table.rootSessionId} is null)\n or (${table.scope} = 'session' and ${table.rootSessionId} is not null)`,\n ),\n actionValid: check(\n \"workspace_control_events_action_check\",\n sql`${table.action} in ('pause', 'resume')`,\n ),\n }),\n);\n\n// An interruption is an independently durable request against an exact live\n// attempt. Multiple Pause/Steer causes coexist; no scalar session field owns\n// delivery or settlement.\nexport const sessionAttemptInterruptions = pgTable(\n \"session_attempt_interruptions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n operationId: uuid(\"operation_id\").notNull(),\n attemptId: uuid(\"attempt_id\").notNull(),\n kind: text(\"kind\").notNull(),\n controlRevision: bigint(\"control_revision\", { mode: \"number\" }).notNull(),\n state: text(\"state\").notNull().default(\"pending\"),\n requestedAt: timestamp(\"requested_at\", { withTimezone: true }).notNull().defaultNow(),\n deliveredAt: timestamp(\"delivered_at\", { withTimezone: true }),\n acknowledgedAt: timestamp(\"acknowledged_at\", { withTimezone: true }),\n settledAt: timestamp(\"settled_at\", { withTimezone: true }),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"session_attempt_interruptions_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSession: foreignKey({\n name: \"session_attempt_interruptions_workspace_session_fk\",\n columns: [table.workspaceId, table.sessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"restrict\"),\n operation: foreignKey({\n name: \"session_attempt_interruptions_operation_fk\",\n columns: [table.workspaceId, table.operationId],\n foreignColumns: [sessionCommandReceipts.workspaceId, sessionCommandReceipts.id],\n }).onDelete(\"restrict\"),\n attempt: foreignKey({\n name: \"session_attempt_interruptions_attempt_fk\",\n columns: [table.workspaceId, table.attemptId],\n foreignColumns: [sessionTurnAttempts.workspaceId, sessionTurnAttempts.id],\n }).onDelete(\"restrict\"),\n operationAttempt: uniqueIndex(\"session_attempt_interruptions_operation_attempt_uq\").on(\n table.operationId,\n table.attemptId,\n ),\n unsettled: index(\"session_attempt_interruptions_unsettled_idx\")\n .on(table.workspaceId, table.sessionId, table.requestedAt)\n .where(sql`${table.state} in ('pending', 'delivered', 'acknowledged')`),\n kindValid: check(\n \"session_attempt_interruptions_kind_check\",\n sql`${table.kind} in ('session_pause', 'workspace_pause', 'steer', 'maintenance')`,\n ),\n stateValid: check(\n \"session_attempt_interruptions_state_check\",\n sql`${table.state} in ('pending', 'delivered', 'acknowledged', 'settled', 'rejected_stale')`,\n ),\n }),\n);\n\n// Private, authenticated-subject composer truth. Editing a queued prompt and\n// restoring it here is one transaction; human drafts are never agent-visible.\nexport const composerDrafts = pgTable(\n \"composer_drafts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n subjectId: text(\"subject_id\").notNull(),\n revision: bigint(\"revision\", { mode: \"number\" }).notNull().default(1),\n text: text(\"text\").notNull().default(\"\"),\n resources: jsonb(\"resources\").$type<unknown[]>().notNull().default([]),\n tools: jsonb(\"tools\").$type<unknown[]>().notNull().default([]),\n toolsProvided: boolean(\"tools_provided\").notNull().default(false),\n model: text(\"model\").notNull(),\n reasoningEffort: text(\"reasoning_effort\").notNull(),\n latencyMode: text(\"latency_mode\").notNull().default(\"standard\"),\n sourceTurnId: uuid(\"source_turn_id\"),\n sourceTurnVersion: integer(\"source_turn_version\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"composer_drafts_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSession: foreignKey({\n name: \"composer_drafts_workspace_session_fk\",\n columns: [table.workspaceId, table.sessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"cascade\"),\n sourceTurn: foreignKey({\n name: \"composer_drafts_source_turn_fk\",\n columns: [table.workspaceId, table.sourceTurnId],\n foreignColumns: [sessionTurns.workspaceId, sessionTurns.id],\n }).onDelete(\"restrict\"),\n subjectSession: uniqueIndex(\"composer_drafts_subject_session_uq\").on(\n table.workspaceId,\n table.sessionId,\n table.subjectId,\n ),\n subjectValid: check(\n \"composer_drafts_subject_check\",\n sql`length(btrim(${table.subjectId})) > 0`,\n ),\n revisionValid: check(\"composer_drafts_revision_check\", sql`${table.revision} >= 1`),\n latencyModeValid: check(\n \"composer_drafts_latency_mode_check\",\n sql`${table.latencyMode} in ('standard', 'priority', 'fast')`,\n ),\n }),\n);\n\n// Private pre-session composer truth. It is separate from composerDrafts so\n// the established-session table keeps its mandatory session foreign key.\nexport const newSessionDrafts = pgTable(\n \"new_session_drafts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n subjectId: text(\"subject_id\").notNull(),\n revision: bigint(\"revision\", { mode: \"number\" }).notNull().default(1),\n text: text(\"text\").notNull().default(\"\"),\n resources: jsonb(\"resources\").$type<unknown[]>().notNull().default([]),\n tools: jsonb(\"tools\").$type<unknown[]>().notNull().default([]),\n model: text(\"model\").notNull(),\n reasoningEffort: text(\"reasoning_effort\").notNull(),\n latencyMode: text(\"latency_mode\").notNull().default(\"standard\"),\n sessionOptions: jsonb(\"session_options\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"new_session_drafts_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n subjectWorkspace: uniqueIndex(\"new_session_drafts_subject_workspace_uq\").on(\n table.workspaceId,\n table.subjectId,\n ),\n subjectValid: check(\n \"new_session_drafts_subject_check\",\n sql`length(btrim(${table.subjectId})) > 0`,\n ),\n revisionValid: check(\"new_session_drafts_revision_check\", sql`${table.revision} >= 1`),\n latencyModeValid: check(\n \"new_session_drafts_latency_mode_check\",\n sql`${table.latencyMode} in ('standard', 'priority', 'fast')`,\n ),\n }),\n);\n\nexport const sessionSystemUpdates = pgTable(\n \"session_system_updates\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n kind: text(\"kind\").notNull(),\n classification: text(\"classification\").notNull().default(\"info\"),\n sourceId: text(\"source_id\").notNull(),\n dedupeKey: text(\"dedupe_key\").notNull(),\n summary: text(\"summary\").notNull(),\n payload: jsonb(\"payload\").$type<Record<string, unknown>>().notNull().default({}),\n lineage: jsonb(\"lineage\").$type<Record<string, unknown>>().notNull().default({}),\n // Private immutable authority frozen when this machine input is accepted.\n // Public projections intentionally omit connection ids and owner subjects.\n personalConnectionDelegations: jsonb(\"personal_connection_delegations\")\n .$type<McpPersonalConnectionDelegation[]>()\n .notNull()\n .default([]),\n // pending is visible queue truth; delivered means its exact model-memory\n // batch was durably claimed. Terminal cancellation/supersession is explicit.\n state: text(\"state\").notNull().default(\"pending\"),\n deliveredTurnId: uuid(\"delivered_turn_id\").references(() => sessionTurns.id, {\n onDelete: \"set null\",\n }),\n // Migration owns the forward FK to session_history_items, declared later.\n // Every member of one claimed batch points at the exact model-memory row.\n deliveredHistoryItemId: uuid(\"delivered_history_item_id\"),\n deliveredAt: timestamp(\"delivered_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n kindValid: check(\n \"system_updates_kind_check\",\n sql`${table.kind} in ('scheduled_occurrence', 'goal_continuation', 'agent_message', 'agent_steer_instruction', 'child_terminal_result')`,\n ),\n payloadKindValid: check(\n \"system_updates_payload_kind_check\",\n sql`${table.payload} ->> 'type' = ${table.kind}`,\n ),\n stateValid: check(\n \"system_updates_state_check\",\n sql`${table.state} in ('pending', 'delivered', 'cancelled', 'superseded', 'failed')`,\n ),\n dedupe: uniqueIndex(\"session_system_updates_dedupe_uq\").on(\n table.workspaceId,\n table.sessionId,\n table.dedupeKey,\n ),\n pending: index(\"session_system_updates_pending_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.state,\n table.createdAt,\n ),\n onePendingSteer: uniqueIndex(\"session_system_updates_one_pending_steer_idx\")\n .on(table.workspaceId, table.sessionId)\n .where(sql`${table.kind} = 'agent_steer_instruction' and ${table.state} = 'pending'`),\n deliveryHistoryValid: check(\n \"session_system_updates_delivery_history_check\",\n sql`(\n (${table.state} = 'delivered' and ${table.deliveredHistoryItemId} is not null)\n or\n (${table.state} <> 'delivered' and ${table.deliveredHistoryItemId} is null)\n )`,\n ),\n }),\n);\n\n/**\n * Durable child-terminal producer outbox. The source terminal transaction\n * inserts this row; fan-in delivery marks it delivered inside\n * addSessionSystemUpdateWithSourceMutation. A bounded reconciler may retry a\n * committed row after any worker/process death without duplicating a member.\n */\nexport const sessionSystemUpdateOutbox = pgTable(\n \"session_system_update_outbox\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sourceSessionId: uuid(\"source_session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n targetSessionId: uuid(\"target_session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n dedupeKey: text(\"dedupe_key\").notNull(),\n kind: text(\"kind\").notNull(),\n classification: text(\"classification\").notNull(),\n sourceId: text(\"source_id\").notNull(),\n summary: text(\"summary\").notNull(),\n payload: jsonb(\"payload\").$type<Record<string, unknown>>().notNull().default({}),\n lineage: jsonb(\"lineage\").$type<Record<string, unknown>>().notNull().default({}),\n // Exact private authority copied from the causal parent turn in the source\n // terminal transaction. Delivery retries cannot replace this snapshot.\n personalConnectionDelegations: jsonb(\"personal_connection_delegations\")\n .$type<McpPersonalConnectionDelegation[]>()\n .notNull()\n .default([]),\n status: text(\"status\").notNull().default(\"pending\"),\n attempts: integer(\"attempts\").notNull().default(0),\n updateId: uuid(\"update_id\"),\n lastError: text(\"last_error\"),\n deliveredAt: timestamp(\"delivered_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n kindValid: check(\n \"system_update_outbox_kind_check\",\n sql`${table.kind} = 'child_terminal_result'`,\n ),\n payloadKindValid: check(\n \"system_update_outbox_payload_kind_check\",\n sql`${table.payload} ->> 'type' = 'child_terminal_result'`,\n ),\n dedupe: uniqueIndex(\"session_system_update_outbox_dedupe_uq\").on(\n table.workspaceId,\n table.dedupeKey,\n ),\n pending: index(\"session_system_update_outbox_pending_idx\").on(table.status, table.createdAt),\n }),\n);\n\n/**\n * Transactional delivery ledger for session-workflow wakeups. Postgres owns\n * work eligibility; Temporal signals are only nudges. One coalescing row per\n * session makes a committed mutation repairable without periodically scanning\n * every session that happens to look runnable.\n */\nexport const sessionWorkflowWakeOutbox = pgTable(\n \"session_workflow_wake_outbox\",\n {\n sessionId: uuid(\"session_id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n temporalWorkflowId: text(\"temporal_workflow_id\").notNull(),\n wakeRevision: bigint(\"wake_revision\", { mode: \"number\" }).notNull().default(1),\n deliveredRevision: bigint(\"delivered_revision\", { mode: \"number\" }).notNull().default(0),\n 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 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\", {\n mode: \"number\",\n })\n .notNull()\n .default(0),\n continuationObservedRevision: bigint(\"continuation_observed_revision\", {\n mode: \"number\",\n })\n .notNull()\n .default(0),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceIdentity: uniqueIndex(\"session_goals_workspace_id_idx\").on(\n table.workspaceId,\n table.id,\n ),\n workspaceSession: uniqueIndex(\"session_goals_workspace_session_idx\").on(\n table.workspaceId,\n table.sessionId,\n ),\n status: index(\"session_goals_workspace_status_idx\").on(table.workspaceId, table.status),\n continuationRevisionValid: check(\n \"session_goals_continuation_revision_check\",\n sql`${table.continuationWakeRevision} >= 0 and ${table.continuationObservedRevision} >= 0 and ${table.continuationObservedRevision} <= ${table.continuationWakeRevision} and ${table.continuationWakeRevision} <= 9007199254740991 and ${table.continuationObservedRevision} <= 9007199254740991`,\n ),\n }),\n);\n\n// credential allocator: one durable, coalescing capacity waiter per session. The row is both\n// the wait state and the commit->signal outbox: capacity mutations increment\n// wakeRevision in the SAME transaction as the mutation, while the session\n// workflow advances observedWakeRevision only after it has re-evaluated the\n// allocator. Temporal signals are therefore repairable nudges rather than the\n// source of truth. No credential material or provider response is stored here.\n//\n// The session/goal/turn foreign keys are declared in migration 0053 so the\n// table keeps the same composite workspace-integrity posture as credential\n// leases. Control is evaluated independently at admission and never changes a\n// capacity waiter's identity. policy filter supplies policyHash when accepted-turn\n// pool routing lands.\nexport const codexCapacityWaiters = pgTable(\n \"codex_capacity_waiters\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\").notNull(),\n goalId: uuid(\"goal_id\"),\n blockedTurnId: uuid(\"blocked_turn_id\").notNull(),\n blockedTurnGeneration: integer(\"blocked_turn_generation\").notNull(),\n workflowId: text(\"workflow_id\").notNull(),\n generation: integer(\"generation\").notNull().default(1),\n status: text(\"status\").notNull().default(\"waiting\"), // waiting | resumed | superseded\n goalVersion: integer(\"goal_version\"),\n policyHash: text(\"policy_hash\"),\n earliestResetAt: timestamp(\"earliest_reset_at\", { withTimezone: true }),\n nextCheckAt: timestamp(\"next_check_at\", { withTimezone: true }).notNull(),\n resetKind: text(\"reset_kind\").notNull(), // authoritative | bounded_refresh\n refreshAttempt: integer(\"refresh_attempt\").notNull().default(0),\n // Coalescing outbox generation. Every eligibility-affecting mutation bumps\n // wakeRevision. Duplicate/lost Temporal signals are harmless because only\n // the row-locked evaluator moves observedWakeRevision and may enqueue work.\n wakeRevision: integer(\"wake_revision\").notNull().default(1),\n observedWakeRevision: integer(\"observed_wake_revision\").notNull().default(0),\n lastWakeReason: text(\"last_wake_reason\").notNull().default(\"capacity_wait_armed\"),\n resumedUpdateId: uuid(\"resumed_update_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceSession: uniqueIndex(\"codex_capacity_waiters_workspace_session_idx\").on(\n table.workspaceId,\n table.sessionId,\n ),\n workspaceId: uniqueIndex(\"codex_capacity_waiters_workspace_id_idx\").on(\n table.workspaceId,\n table.id,\n ),\n pending: index(\"codex_capacity_waiters_pending_idx\").on(\n table.workspaceId,\n table.status,\n table.nextCheckAt,\n ),\n wakeRepair: index(\"codex_capacity_waiters_wake_repair_idx\").on(\n table.status,\n table.wakeRevision,\n table.observedWakeRevision,\n ),\n }),\n);\n\nexport const sessionEvents = pgTable(\n \"session_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n turnId: uuid(\"turn_id\"),\n turnGeneration: integer(\"turn_generation\"),\n turnAttemptId: uuid(\"turn_attempt_id\"),\n turnAssociation: text(\"turn_association\"),\n duplicateOfEventId: uuid(\"duplicate_of_event_id\"),\n duplicateReason: text(\"duplicate_reason\"),\n sequence: integer(\"sequence\").notNull(),\n type: text(\"type\").notNull(),\n payload: jsonb(\"payload\").$type<unknown>().notNull().default({}),\n clientEventId: text(\"client_event_id\"),\n producerId: text(\"producer_id\"),\n producerSeq: integer(\"producer_seq\"),\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull().defaultNow(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAttempt: foreignKey({\n name: \"session_events_workspace_attempt_fk\",\n columns: [table.workspaceId, table.turnAttemptId],\n foreignColumns: [sessionTurnAttempts.workspaceId, sessionTurnAttempts.id],\n }).onDelete(\"restrict\"),\n sessionSequence: uniqueIndex(\"session_events_workspace_session_sequence_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.sequence,\n ),\n clientEvent: uniqueIndex(\"session_events_workspace_client_event_idx\")\n .on(table.workspaceId, table.sessionId, table.clientEventId)\n .where(sql`${table.clientEventId} is not null`),\n producer: uniqueIndex(\"session_events_workspace_producer_idx\")\n .on(table.workspaceId, table.sessionId, table.producerId, table.producerSeq)\n .where(sql`${table.producerId} is not null and ${table.producerSeq} is not null`),\n sessionCreated: index(\"session_events_workspace_session_created_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.createdAt,\n ),\n sessionTypeSequence: index(\"session_events_workspace_session_type_sequence_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.type,\n table.sequence,\n ),\n monitoringTail: index(\"session_events_workspace_session_monitoring_tail_idx\")\n .on(table.workspaceId, table.sessionId, table.sequence)\n .where(\n sql`${table.type} not in ('agent.message.delta', 'agent.reasoning.delta', 'sandbox.command.output.delta', 'terminal.pty.output.delta')`,\n ),\n duplicateOfEvent: index(\"session_events_duplicate_of_event_idx\").on(table.duplicateOfEventId),\n payloadBytes: check(\n \"session_events_payload_bytes_check\",\n sql`octet_length(${table.payload}::text) <= 65536`,\n ),\n typeBytes: check(\n \"session_events_type_bytes_check\",\n sql`octet_length(${table.type}) <= 256 and position(E'\\n' in ${table.type}) = 0 and position(E'\\r' in ${table.type}) = 0`,\n ),\n clientEventIdBytes: check(\n \"session_events_client_event_id_bytes_check\",\n sql`${table.clientEventId} is null or octet_length(${table.clientEventId}) <= 1024`,\n ),\n producerIdBytes: check(\n \"session_events_producer_id_bytes_check\",\n sql`${table.producerId} is null or octet_length(${table.producerId}) <= 1024`,\n ),\n turnAssociationBytes: check(\n \"session_events_turn_association_bytes_check\",\n sql`${table.turnAssociation} is null or octet_length(${table.turnAssociation}) <= 64`,\n ),\n duplicateReasonBytes: check(\n \"session_events_duplicate_reason_bytes_check\",\n sql`${table.duplicateReason} is null or octet_length(${table.duplicateReason}) <= 4096`,\n ),\n }),\n);\n\nexport const agentRunStates = pgTable(\"agent_run_states\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n turnId: uuid(\"turn_id\").references(() => sessionTurns.id, {\n onDelete: \"set null\",\n }),\n stateVersion: integer(\"state_version\").notNull(),\n serializedRunState: text(\"serialized_run_state\").notNull(),\n pendingApprovals: jsonb(\"pending_approvals\").$type<unknown[]>().notNull().default([]),\n // The Codex account that FROZE this run state: the turn's resolved codex\n // credential id (pin > workspace-active), or NULL when frozen on the\n // non-codex / Azure path (or before this column existed). The serialized\n // RunState blob round-trips `reasoning.encrypted_content` minted by the\n // ChatGPT/Codex backend — account/org-bound, so a foreign blob 400s — and the\n // foreign reasoning ids the Responses backend validates; but the blob carries\n // NO per-item producer tag (those live only on session_history_items). So we\n // stamp the freezing account here: on an approval resume whose codex account\n // DIFFERS from this value,\n // the replay path neutralizes every reasoning item's account-bound identity\n // (encrypted_content + provider id) in the blob before it reaches the model.\n // Deliberately NO FK: provenance must OUTLIVE the account's hard-disconnect (a\n // stale-but-null tag still mismatches a live codex id, so the strip stays\n // correct either way). NULL on both sides (non-codex freeze + non-codex\n // resume) is a no-op, so single-account and non-codex sessions are unchanged.\n frozenCodexCredentialId: uuid(\"frozen_codex_credential_id\"),\n // Exact provider rejection invalidates only the opaque reasoning identity\n // inside this frozen state. The serialized receipt remains durable and\n // auditable; the resume path neutralizes its provider-bound identity.\n providerArtifactInvalidatedAt: timestamp(\"provider_artifact_invalidated_at\", {\n withTimezone: true,\n }),\n providerArtifactInvalidationReason: text(\"provider_artifact_invalidation_reason\"),\n providerArtifactInvalidatedByAttemptId: uuid(\"provider_artifact_invalidated_by_attempt_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n});\n\n// Durable structured human-input requests. The creation attempt is immutable\n// provenance; legitimate resume attempts are newer owners of the SAME logical\n// turn. Settlement therefore fences on the active session/turn plus the\n// request's turn generation, never on creationAttemptId.\nexport const sessionHumanInputRequests = pgTable(\n \"session_human_input_requests\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n turnId: uuid(\"turn_id\").notNull(),\n turnGeneration: integer(\"turn_generation\").notNull(),\n creationAttemptId: uuid(\"creation_attempt_id\").notNull(),\n toolCallId: text(\"tool_call_id\").notNull(),\n status: text(\"status\").notNull().default(\"pending\"),\n questions: jsonb(\"questions\").$type<HumanInputQuestion[]>().notNull(),\n allowSkip: boolean(\"allow_skip\").notNull().default(false),\n response: jsonb(\"response\").$type<HumanInputResponse>(),\n respondedBy: text(\"responded_by\"),\n respondedAt: timestamp(\"responded_at\", { withTimezone: true }),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n creationAttemptOwner: foreignKey({\n name: \"session_human_input_requests_creation_attempt_fk\",\n columns: [\n table.accountId,\n table.workspaceId,\n table.sessionId,\n table.turnId,\n table.creationAttemptId,\n ],\n foreignColumns: [\n sessionTurnAttempts.accountId,\n sessionTurnAttempts.workspaceId,\n sessionTurnAttempts.sessionId,\n sessionTurnAttempts.turnId,\n sessionTurnAttempts.id,\n ],\n }).onDelete(\"cascade\"),\n toolCall: uniqueIndex(\"session_human_input_requests_tool_call_uq\").on(\n table.workspaceId,\n table.sessionId,\n table.turnId,\n table.toolCallId,\n ),\n pendingSession: index(\"session_human_input_requests_pending_session_idx\")\n .on(table.workspaceId, table.sessionId, table.createdAt, table.id)\n .where(sql`${table.status} = 'pending'`),\n pendingExpiry: index(\"session_human_input_requests_pending_expiry_idx\")\n .on(table.expiresAt, table.id)\n .where(sql`${table.status} = 'pending' and ${table.expiresAt} is not null`),\n status: check(\n \"session_human_input_requests_status_check\",\n sql`${table.status} in ('pending','answered','skipped','expired','cancelled')`,\n ),\n generation: check(\n \"session_human_input_requests_generation_check\",\n sql`${table.turnGeneration} > 0`,\n ),\n toolCallBytes: check(\n \"session_human_input_requests_tool_call_bytes_check\",\n sql`octet_length(${table.toolCallId}) between 1 and 1024`,\n ),\n questionsBytes: check(\n \"session_human_input_requests_questions_bytes_check\",\n sql`octet_length(${table.questions}::text) <= 49152`,\n ),\n responseBytes: check(\n \"session_human_input_requests_response_bytes_check\",\n sql`${table.response} is null or octet_length(${table.response}::text) <= 49152`,\n ),\n actorBytes: check(\n \"session_human_input_requests_actor_bytes_check\",\n sql`${table.respondedBy} is null or octet_length(${table.respondedBy}) <= 1024`,\n ),\n }),\n);\n\n// Conversation truth: ordered, verbatim SDK input items (issue #35). The\n// model-facing memory store — unredacted and replay-ready. session_events\n// remains the redacted human/audit timeline.\nexport const sessionHistoryItems = pgTable(\n \"session_history_items\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n turnId: uuid(\"turn_id\").references(() => sessionTurns.id, {\n onDelete: \"set null\",\n }),\n // Numeric (not integer) so the synthetic compaction-summary row can be\n // inserted at a FRACTIONAL position (boundaryPosition - 0.5) that sorts ahead\n // of the kept tail without colliding with — and thus overwriting — the real\n // prefix row at boundaryPosition - 1. Normally-appended rows keep whole-number\n // positions; only the summary uses the half-step. `mode: \"number\"` maps the\n // postgres.js string back to a JS number so every reader stays numeric.\n position: numeric(\"position\", { mode: \"number\" }).notNull(),\n item: jsonb(\"item\").$type<Record<string, unknown>>().notNull(),\n // Live-row flag for client-side context compaction. The read path selects\n // only active rows; a compaction supersedes the summarized prefix (sets this\n // false — never deletes, so the full transcript stays as an audit trail) and\n // inserts ONE synthetic active summary row at the boundary. Defaults true so\n // every existing and normally-appended row is live.\n active: boolean(\"active\").notNull().default(true),\n // The Codex account that PRODUCED these items: the per-turn resolved codex\n // credential id (pin > workspace-active), or NULL when produced on the\n // non-codex / Azure path (or before this column existed). Used to strip\n // cross-account `reasoning.encrypted_content` blobs — those are account/org-\n // bound, minted by the ChatGPT/Codex backend, so replaying account A's blob\n // into a turn running on account B 400s. The read path drops the encrypted\n // reasoning of any item whose producer != the turn's current codex account.\n // Deliberately NO FK: provenance must OUTLIVE the account's hard-disconnect\n // (an ON DELETE SET NULL would erase the tag, and a stale-but-null tag still\n // mismatches a live codex id so the strip stays correct either way).\n producerCodexCredentialId: uuid(\"producer_codex_credential_id\"),\n // An exact provider 400 can prove that an otherwise same-credential opaque\n // reasoning artifact is no longer decryptable. Keep the original item and\n // producer provenance immutable, but record the attempt-fenced rejection so\n // later model reads omit only the provider-bound identity. No FK: the receipt\n // must outlive operational attempt retention just like producer provenance.\n providerArtifactInvalidatedAt: timestamp(\"provider_artifact_invalidated_at\", {\n withTimezone: true,\n }),\n providerArtifactInvalidationReason: text(\"provider_artifact_invalidation_reason\"),\n providerArtifactInvalidatedByAttemptId: uuid(\"provider_artifact_invalidated_by_attempt_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n positionIdx: uniqueIndex(\"session_history_items_position_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.position,\n ),\n }),\n);\n\n// Turn-lineage ledger for a tool call that the SDK emitted but has not yet\n// produced a durably reconciled result. The raw call item is model-facing truth\n// (not the redacted session-event projection). The attempt/generation identify\n// where the call originated, but the receipt survives an approval resume into a\n// newer attempt of the same logical turn. Turn-ending transactions\n// consume these rows atomically and append a valid interrupted result so a\n// recovered model sees an explicit unknown outcome instead of a silently\n// dropped call.\nexport const sessionPendingToolCalls = pgTable(\n \"session_pending_tool_calls\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n turnId: uuid(\"turn_id\")\n .notNull()\n .references(() => sessionTurns.id, { onDelete: \"cascade\" }),\n executionGeneration: integer(\"execution_generation\").notNull(),\n attemptId: uuid(\"attempt_id\").notNull(),\n callId: text(\"call_id\").notNull(),\n callType: text(\"call_type\").notNull(),\n callItem: jsonb(\"call_item\").$type<Record<string, unknown>>().notNull(),\n modelToolOutputTruncationTokens: integer(\"model_tool_output_truncation_tokens\"),\n resultItem: jsonb(\"result_item\").$type<Record<string, unknown>>(),\n resultRecordedAt: timestamp(\"result_recorded_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAttempt: foreignKey({\n name: \"pending_tool_calls_workspace_attempt_fk\",\n columns: [table.workspaceId, table.attemptId],\n foreignColumns: [sessionTurnAttempts.workspaceId, sessionTurnAttempts.id],\n }).onDelete(\"restrict\"),\n turnCall: uniqueIndex(\"session_pending_tool_calls_turn_call_idx\").on(\n table.workspaceId,\n table.turnId,\n table.callId,\n ),\n sessionTurn: index(\"session_pending_tool_calls_session_turn_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.turnId,\n ),\n }),\n);\n\n// Sandbox recovery descriptor, decoupled from the RunState blob: the small\n// versioned envelope (provider handle / snapshot ref / manifest) needed to\n// reattach, restore, or rebuild the session's sandbox on its next turn.\nexport const sandboxSessionEnvelopes = pgTable(\n \"sandbox_session_envelopes\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n envelope: jsonb(\"envelope\").$type<Record<string, unknown>>().notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n sessionIdx: uniqueIndex(\"sandbox_session_envelopes_session_idx\").on(\n table.workspaceId,\n table.sessionId,\n ),\n }),\n);\n\nexport const sandboxCheckpointArtifactStateValues = [\n \"candidate\",\n \"current\",\n \"previous\",\n \"delete_pending\",\n \"deleting\",\n \"delete_failed\",\n \"deleted\",\n] as const;\n\n/**\n * Durable ownership ledger for provider-native workspace checkpoints. These\n * rows intentionally have no cascading parent FK: a workspace/lease can vanish\n * before the provider object is deleted, and global GC still needs the exact\n * non-secret provider binding and object id after that deletion.\n */\nexport const sandboxCheckpointArtifacts = pgTable(\n \"sandbox_checkpoint_artifacts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sandboxGroupId: uuid(\"sandbox_group_id\").notNull(),\n sourceLeaseId: uuid(\"source_lease_id\").notNull(),\n sourceLeaseEpoch: integer(\"source_lease_epoch\").notNull(),\n sourceInstanceId: text(\"source_instance_id\"),\n sourceWorkspaceGeneration: integer(\"source_workspace_generation\"),\n provenance: text(\"provenance\", {\n enum: [\"native_capture\", \"legacy_provider_adopted\"],\n }).notNull(),\n providerBackend: text(\"provider_backend\").notNull(),\n providerBindingKey: text(\"provider_binding_key\").notNull(),\n providerBinding: jsonb(\"provider_binding\").$type<Record<string, unknown>>().notNull(),\n objectKind: text(\"object_kind\", {\n enum: [\"modal_filesystem_snapshot\", \"modal_directory_snapshot\"],\n }).notNull(),\n objectId: text(\"object_id\").notNull(),\n archiveBase64: text(\"archive_base64\").notNull(),\n archiveSha256: text(\"archive_sha256\").notNull(),\n archiveBytes: integer(\"archive_bytes\").notNull(),\n descriptor: jsonb(\"descriptor\").$type<Record<string, unknown>>().notNull(),\n descriptorRevision: text(\"descriptor_revision\").notNull(),\n state: text(\"state\", { enum: sandboxCheckpointArtifactStateValues })\n .notNull()\n .default(\"candidate\"),\n deleteAfter: timestamp(\"delete_after\", { withTimezone: true }),\n deleteAttempts: integer(\"delete_attempts\").notNull().default(0),\n deleteClaimId: uuid(\"delete_claim_id\"),\n deleteClaimedAt: timestamp(\"delete_claimed_at\", { withTimezone: true }),\n lastDeleteError: text(\"last_delete_error\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n publishedAt: timestamp(\"published_at\", { withTimezone: true }),\n deletedAt: timestamp(\"deleted_at\", { withTimezone: true }),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n providerObject: uniqueIndex(\"sandbox_checkpoint_artifacts_provider_object_uq\").on(\n table.providerBackend,\n table.providerBindingKey,\n table.objectId,\n ),\n gc: index(\"sandbox_checkpoint_artifacts_gc_idx\")\n .on(table.deleteAfter, table.createdAt, table.id)\n .where(\n sql`${table.state} in (\n 'candidate', 'current', 'previous',\n 'delete_pending', 'delete_failed', 'deleting'\n )`,\n ),\n source: index(\"sandbox_checkpoint_artifacts_source_idx\").on(\n table.workspaceId,\n table.sandboxGroupId,\n table.sourceLeaseId,\n ),\n sourceValid: check(\n \"sandbox_checkpoint_artifacts_source_check\",\n sql`${table.sourceLeaseEpoch} >= 0\n and (\n (\n ${table.provenance} = 'native_capture'\n and ${table.sourceWorkspaceGeneration} is not null\n and ${table.sourceWorkspaceGeneration} >= 0\n and ${table.sourceInstanceId} is not null\n and octet_length(${table.sourceInstanceId}) between 1 and 512\n )\n or (\n ${table.provenance} = 'legacy_provider_adopted'\n and ${table.sourceWorkspaceGeneration} is null\n and ${table.sourceInstanceId} is null\n )\n )`,\n ),\n providerValid: check(\n \"sandbox_checkpoint_artifacts_provider_check\",\n sql`${table.providerBackend} = 'modal'\n and octet_length(${table.providerBindingKey}) between 1 and 1024\n and jsonb_typeof(${table.providerBinding}) = 'object'\n and ${table.providerBindingKey}::jsonb = ${table.providerBinding}\n and ${table.objectKind} in ('modal_filesystem_snapshot', 'modal_directory_snapshot')\n and octet_length(${table.objectId}) between 1 and 1024`,\n ),\n archiveValid: check(\n \"sandbox_checkpoint_artifacts_archive_check\",\n sql`${table.archiveBytes} > 0\n and octet_length(${table.archiveBase64}) > 0\n and ${table.archiveSha256} ~ '^[0-9a-f]{64}$'\n and jsonb_typeof(${table.descriptor}) = 'object'\n and octet_length(${table.descriptorRevision}) between 1 and 256`,\n ),\n stateValid: check(\n \"sandbox_checkpoint_artifacts_state_check\",\n sql`${table.state} in (\n 'candidate', 'current', 'previous', 'delete_pending',\n 'deleting', 'delete_failed', 'deleted'\n )`,\n ),\n deleteClaimValid: check(\n \"sandbox_checkpoint_artifacts_delete_claim_check\",\n sql`(${table.state} = 'deleting'\n and ${table.deleteClaimId} is not null\n and ${table.deleteClaimedAt} is not null)\n or (${table.state} <> 'deleting'\n and ${table.deleteClaimId} is null\n and ${table.deleteClaimedAt} is null)`,\n ),\n }),\n);\n\n// The 4 liveness states of the singleton lease. Exported so the query layer and\n// the stateless resume-by-id path share one source of truth for the domain.\nexport const sandboxLeaseLivenessValues = [\"cold\", \"warming\", \"warm\", \"draining\"] as const;\n\n// One row per GROUP: the SOLE enforcer of the strict-singleton-box invariant.\n// uniqueIndex(workspaceId, sandboxGroupId) + SELECT…FOR UPDATE + cold->warming\n// CAS + integer lease_epoch fence. Re-keyed to sandboxGroupId from the start\n// (addendum B.2) so today's 1:1 world (sandboxGroupId == session id, set in\n// 0018) is a behavior-preserving no-op. Mirrors the account/workspace FK chain\n// of sandboxSessionEnvelopes; sandboxGroupId is a BARE uuid (NOT an FK — the\n// value is a session id or an ancestor's, and an FK would let a founder's\n// deletion cascade-kill a box still in use by a spawned session).\nexport const sandboxLeases = pgTable(\n \"sandbox_leases\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sandboxGroupId: uuid(\"sandbox_group_id\").notNull(),\n\n liveness: text(\"liveness\", { enum: sandboxLeaseLivenessValues }).notNull().default(\"cold\"),\n refcount: integer(\"refcount\").notNull().default(0),\n turnHolders: integer(\"turn_holders\").notNull().default(0),\n viewerHolders: integer(\"viewer_holders\").notNull().default(0),\n\n instanceId: text(\"instance_id\"),\n backend: text(\"backend\").notNull(),\n os: text(\"os\").notNull().default(\"linux\"),\n // The container IMAGE the group box runs (Modal image ref / docker image). A shared\n // box is SHARED STATE: all its sessions run the SAME filesystem, so they must run the\n // same image. This column stamps the image the live box was created with; a resume\n // whose resolved image DIFFERS is a conflict (B3): a solo holder requests a\n // capture-and-drain rotation; N-holders are rejected (SandboxImageConflictError). Nullable — a\n // legacy/cold row reads NULL = \"image unknown\", which never conflicts.\n image: text(\"image\"),\n // The frozen rig version the live box was created under (M3). Like `image`,\n // this is SHARED STATE: all the box's sessions run the same rig-baked setup,\n // so a resume resolving a DIFFERENT rig_version_id conflicts (a solo holder\n // requests capture-and-drain rotation; N-holders throw SandboxRigConflictError).\n // Nullable — a legacy/cold row or a rig-less session reads NULL = \"rig\n // unknown\", which never conflicts. No FK (symmetric with sandbox_group_id's\n // bare-uuid rationale: this lease outlives no single rig_versions row's RLS).\n rigVersionId: uuid(\"rig_version_id\"),\n dataPlaneUrl: text(\"data_plane_url\"),\n // The REAL PTY terminal (ttyd pty-ws) rides a SEPARATE provider tunnel (7681)\n // from the desktop noVNC (6080), so its resolved URL is cached independently.\n // Recorded under the epoch fence by recordLeaseTerminalDataPlaneUrl; reset to\n // null on every box re-key (warm-commit / fail / drain), symmetric with\n // data_plane_url.\n terminalDataPlaneUrl: text(\"terminal_data_plane_url\"),\n\n // integer (NOT bigint): the lease-epoch spike proved a raw int8 read returns a\n // JS STRING from postgres-js, breaking the strict epoch-fence comparison (it\n // was always-true → every turn fenced); int4 returns a JS number, the fix.\n // Epochs never approach 2^31, so the narrower type loses nothing.\n leaseEpoch: integer(\"lease_epoch\").notNull().default(0),\n\n // Monotonic mutation intent for the live workspace. Every acknowledged\n // filesystem-writing operation advances this under the exact lease epoch +\n // provider-instance fence BEFORE it reaches the provider. A verified\n // archive fold copies the exact captured value into archive_generation in\n // the same row update; equality is the only durable completeness proof.\n workspaceGeneration: integer(\"workspace_generation\").notNull().default(0),\n archiveGeneration: integer(\"archive_generation\"),\n // Provider-native capture may pause the live box. The exact claim is\n // acquired before provider I/O and cleared only after that capture settles;\n // new holders and workspace mutations fence on it. The SQL constraint also\n // requires the claimed generation to remain current, so an unaware writer\n // cannot advance generation through an active capture.\n archiveCaptureId: uuid(\"archive_capture_id\"),\n archiveCaptureGeneration: integer(\"archive_capture_generation\"),\n archiveCaptureStartedAt: timestamp(\"archive_capture_started_at\", {\n withTimezone: true,\n }),\n archiveCaptureDeadlineAt: timestamp(\"archive_capture_deadline_at\", {\n withTimezone: true,\n }),\n\n // The group box-envelope (the \"envelope split\" Critical): the small recovery\n // descriptor to resume()-by-id the group's box without a per-session join.\n resumeBackendId: text(\"resume_backend_id\"),\n resumeState: jsonb(\"resume_state\").$type<Record<string, unknown>>(),\n\n // Warm-time billing cursor: last_meter_at = accrual cursor; last_meter_tick =\n // idempotency tick (warm_seconds accrued idempotent on\n // (sandbox_group_id, lease_epoch, last_meter_tick) in P2.1).\n lastMeterAt: timestamp(\"last_meter_at\", { withTimezone: true }),\n lastMeterTick: integer(\"last_meter_tick\").notNull().default(0),\n\n providerCreatedAt: timestamp(\"provider_created_at\", { withTimezone: true }),\n providerDeadlineAt: timestamp(\"provider_deadline_at\", {\n withTimezone: true,\n }),\n rotationRequestedAt: timestamp(\"rotation_requested_at\", {\n withTimezone: true,\n }),\n rotationReason: text(\"rotation_reason\", {\n enum: [\"provider_deadline\", \"operator\"],\n }),\n // The SQL migration owns the two DEFERRABLE foreign keys and deferred\n // scope/state constraint triggers. Drizzle does not model deferrability, so\n // these remain bare UUIDs here rather than generating a stricter wrong FK.\n currentCheckpointArtifactId: uuid(\"current_checkpoint_artifact_id\"),\n previousCheckpointArtifactId: uuid(\"previous_checkpoint_artifact_id\"),\n\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n groupIdx: uniqueIndex(\"sandbox_leases_group_idx\").on(table.workspaceId, table.sandboxGroupId),\n scopedId: uniqueIndex(\"sandbox_leases_scoped_id_uq\").on(\n table.accountId,\n table.workspaceId,\n table.sandboxGroupId,\n table.id,\n ),\n accountWorkspaceId: uniqueIndex(\"sandbox_leases_account_workspace_id_uq\").on(\n table.accountId,\n table.workspaceId,\n table.id,\n ),\n reaperIdx: index(\"sandbox_leases_reaper_idx\")\n .on(table.expiresAt)\n .where(sql`${table.liveness} in ('warming','warm','draining')`),\n expiredDrainingInventory: index(\"sandbox_leases_expired_draining_inventory_idx\")\n .on(table.expiresAt, table.backend)\n .where(sql`${table.liveness} = 'draining'`),\n providerDeadline: index(\"sandbox_leases_provider_deadline_idx\")\n .on(table.providerDeadlineAt, table.id)\n .where(\n sql`${table.backend} = 'modal'\n and ${table.liveness} in ('warming', 'warm')\n and ${table.rotationRequestedAt} is null`,\n ),\n workspaceGenerationValid: check(\n \"sandbox_leases_workspace_generation_check\",\n sql`${table.workspaceGeneration} >= 0`,\n ),\n archiveGenerationValid: check(\n \"sandbox_leases_archive_generation_check\",\n sql`${table.archiveGeneration} is null\n or (${table.archiveGeneration} >= 0\n and ${table.archiveGeneration} <= ${table.workspaceGeneration})`,\n ),\n archiveCaptureValid: check(\n \"sandbox_leases_archive_capture_check\",\n sql`(\n ${table.archiveCaptureId} is null\n and ${table.archiveCaptureGeneration} is null\n and ${table.archiveCaptureStartedAt} is null\n and ${table.archiveCaptureDeadlineAt} is null\n ) or (\n ${table.archiveCaptureId} is not null\n and ${table.archiveCaptureGeneration} is not null\n and ${table.archiveCaptureGeneration} = ${table.workspaceGeneration}\n and ${table.archiveCaptureStartedAt} is not null\n and ${table.archiveCaptureDeadlineAt} > ${table.archiveCaptureStartedAt}\n )`,\n ),\n archiveCaptureDeadline: index(\"sandbox_leases_archive_capture_deadline_idx\")\n .on(table.archiveCaptureDeadlineAt, table.id)\n .where(sql`${table.archiveCaptureId} is not null`),\n providerDeadlineValid: check(\n \"sandbox_leases_provider_deadline_check\",\n sql`(${table.providerCreatedAt} is null and ${table.providerDeadlineAt} is null)\n or (${table.providerCreatedAt} is not null\n and ${table.providerDeadlineAt} is not null\n and ${table.providerDeadlineAt} > ${table.providerCreatedAt})`,\n ),\n rotationValid: check(\n \"sandbox_leases_rotation_check\",\n sql`(${table.rotationRequestedAt} is null and ${table.rotationReason} is null)\n or (${table.rotationRequestedAt} is not null\n and ${table.rotationReason} in ('provider_deadline', 'operator'))`,\n ),\n checkpointDistinct: check(\n \"sandbox_leases_checkpoint_distinct_check\",\n sql`${table.currentCheckpointArtifactId} is null\n or ${table.previousCheckpointArtifactId} is null\n or ${table.currentCheckpointArtifactId} <> ${table.previousCheckpointArtifactId}`,\n ),\n }),\n);\n\n// N rows per group: one per live holder. Makes release idempotent\n// (delete-my-row, never blind decrement) and lets the reaper recompute refcount.\nexport const sandboxLeaseHolders = pgTable(\n \"sandbox_lease_holders\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n leaseId: uuid(\"lease_id\")\n .notNull()\n .references(() => sandboxLeases.id, { onDelete: \"cascade\" }),\n kind: text(\"kind\", {\n enum: [\"turn\", \"viewer\", \"direct\", \"process\"],\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\", {\n enum: sandboxWorkspaceMutationActorKindValues,\n }).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\", {\n enum: [\"turn\", \"direct\"],\n }).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\", {\n withTimezone: true,\n }),\n reconcileAttempts: integer(\"reconcile_attempts\").notNull().default(0),\n lastReconcileOutcome: text(\"last_reconcile_outcome\"),\n reconcileProofOutcome: text(\"reconcile_proof_outcome\", {\n enum: [\"exited\", \"lost\"],\n }),\n reconcileProofExitCode: integer(\"reconcile_proof_exit_code\"),\n reconcileProofReason: text(\"reconcile_proof_reason\"),\n reconcileProofObservedAt: timestamp(\"reconcile_proof_observed_at\", {\n withTimezone: true,\n }),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"sandbox_retained_processes_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSession: foreignKey({\n name: \"sandbox_retained_processes_workspace_session_fk\",\n columns: [table.workspaceId, table.sessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"restrict\"),\n parentAdmissionScope: foreignKey({\n name: \"sandbox_retained_processes_parent_admission_scope_fk\",\n columns: [\n table.accountId,\n table.workspaceId,\n table.sessionId,\n table.leaseId,\n table.parentAdmissionId,\n ],\n foreignColumns: [\n sandboxWorkspaceMutationAdmissions.accountId,\n sandboxWorkspaceMutationAdmissions.workspaceId,\n sandboxWorkspaceMutationAdmissions.sessionId,\n sandboxWorkspaceMutationAdmissions.leaseId,\n sandboxWorkspaceMutationAdmissions.id,\n ],\n }).onDelete(\"restrict\"),\n scopedId: uniqueIndex(\"sandbox_retained_processes_scoped_id_uq\").on(\n table.accountId,\n table.workspaceId,\n table.sessionId,\n table.leaseId,\n table.id,\n ),\n parentAdmission: uniqueIndex(\"sandbox_retained_processes_parent_admission_uq\").on(\n table.parentAdmissionId,\n ),\n liveProviderSession: uniqueIndex(\"sandbox_retained_processes_live_provider_session_uq\")\n .on(\n table.leaseId,\n table.leaseEpoch,\n table.providerInstanceId,\n table.routeEpoch,\n table.providerSessionId,\n )\n .where(sql`${table.state} = 'active'`),\n holder: uniqueIndex(\"sandbox_retained_processes_holder_uq\").on(table.leaseId, table.holderId),\n active: index(\"sandbox_retained_processes_active_idx\")\n .on(table.workspaceId, table.sessionId, table.startedAt)\n .where(sql`${table.state} = 'active'`),\n reconcileDue: index(\"sandbox_retained_processes_reconcile_due_idx\")\n .on(table.reconcileAfter, table.startedAt, table.id)\n .where(sql`${table.state} = 'active'`),\n activeInventory: index(\"sandbox_retained_processes_active_inventory_idx\")\n .on(table.ownerActorKind, table.workspaceId, table.ownerTurnId, table.ownerAttemptId)\n .where(sql`${table.state} = 'active'`),\n identityValid: check(\n \"sandbox_retained_processes_identity_check\",\n sql`${table.leaseEpoch} >= 0\n and ${table.routeEpoch} >= 0\n and ${table.providerSessionId} > 0\n and octet_length(${table.holderId}) between 1 and 256\n and octet_length(${table.providerBackend}) between 1 and 64\n and octet_length(${table.providerInstanceId}) between 1 and 512\n and (${table.routeKind} = 'active' or ${table.routeTargetId} is null)`,\n ),\n ownerValid: check(\n \"sandbox_retained_processes_owner_check\",\n sql`(\n ${table.ownerActorKind} = 'turn'\n and ${table.ownerActorId} = ${table.ownerAttemptId}\n and ${table.ownerTurnId} is not null\n and ${table.ownerAttemptId} is not null\n and ${table.ownerExecutionGeneration} > 0\n ) or (\n ${table.ownerActorKind} = 'direct'\n and ${table.ownerTurnId} is null\n and ${table.ownerAttemptId} is null\n and ${table.ownerExecutionGeneration} is null\n )`,\n ),\n settlementValid: check(\n \"sandbox_retained_processes_settlement_check\",\n sql`(${table.state} = 'active' and ${table.settledAt} is null and ${table.exitCode} is null)\n or (${table.state} = 'exited' and ${table.settledAt} is not null)\n or (${table.state} = 'lost' and ${table.settledAt} is not null and ${table.exitCode} is null)`,\n ),\n reasonValid: check(\n \"sandbox_retained_processes_reason_check\",\n sql`${table.settlementReason} is null\n or octet_length(${table.settlementReason}) between 1 and 512`,\n ),\n providerBindingValid: check(\n \"sandbox_retained_processes_provider_binding_check\",\n sql`(\n ${table.providerBindingKey} is null\n and ${table.providerBinding} is null\n ) or (\n ${table.providerBackend} = 'modal'\n and octet_length(${table.providerBindingKey}) between 1 and 1024\n and jsonb_typeof(${table.providerBinding}) = 'object'\n and ${table.providerBindingKey}::jsonb = ${table.providerBinding}\n and ${table.providerBindingKey} = format(\n '{\"version\":1,\"serverUrl\":%s,\"workspaceName\":%s,\"environment\":%s}',\n to_jsonb(${table.providerBinding} ->> 'serverUrl')::text,\n to_jsonb(${table.providerBinding} ->> 'workspaceName')::text,\n to_jsonb(${table.providerBinding} ->> 'environment')::text\n )\n and ${table.providerBinding} = jsonb_build_object(\n 'version', 1,\n 'serverUrl', ${table.providerBinding} ->> 'serverUrl',\n 'workspaceName', ${table.providerBinding} ->> 'workspaceName',\n 'environment', ${table.providerBinding} ->> 'environment'\n )\n and coalesce(octet_length(${table.providerBinding} ->> 'serverUrl'), 0) > 0\n and coalesce(octet_length(${table.providerBinding} ->> 'workspaceName'), 0) > 0\n and ${table.providerBinding} ->> 'environment' is not null\n )`,\n ),\n reconcileClaimValid: check(\n \"sandbox_retained_processes_reconcile_claim_check\",\n sql`(${table.reconcileClaimId} is null and ${table.reconcileClaimedAt} is null)\n or (${table.reconcileClaimId} is not null and ${table.reconcileClaimedAt} is not null)`,\n ),\n reconcileAttemptsValid: check(\n \"sandbox_retained_processes_reconcile_attempts_check\",\n sql`${table.reconcileAttempts} >= 0`,\n ),\n reconcileOutcomeValid: check(\n \"sandbox_retained_processes_reconcile_outcome_check\",\n sql`${table.lastReconcileOutcome} is null\n or octet_length(${table.lastReconcileOutcome}) between 1 and 64`,\n ),\n reconcileProofValid: check(\n \"sandbox_retained_processes_reconcile_proof_check\",\n sql`(\n ${table.reconcileProofOutcome} is null\n and ${table.reconcileProofExitCode} is null\n and ${table.reconcileProofReason} is null\n and ${table.reconcileProofObservedAt} is null\n ) or (\n ${table.reconcileProofOutcome} = 'exited'\n and ${table.reconcileProofExitCode} is not null\n and ${table.reconcileProofReason} = 'provider_exit_banner'\n and ${table.reconcileProofObservedAt} is not null\n ) or (\n ${table.reconcileProofOutcome} = 'lost'\n and ${table.reconcileProofExitCode} is null\n and ${table.reconcileProofReason} in (\n 'provider_session_lost_banner', 'provider_instance_not_found',\n 'provider_instance_terminated'\n )\n and ${table.reconcileProofObservedAt} is not null\n )`,\n ),\n }),\n);\n\n// The recording lifecycle states (P4.3). Exported so the activity + the query\n// layer share one source of truth for the §3.1 state machine.\nexport const sessionRecordingStateValues = [\n \"recording\",\n \"finalizing\",\n \"available\",\n \"failed\",\n] as const;\nexport const sessionRecordingModeValues = [\"manual\", \"on-turn\", \"on-verify\"] as const;\nexport const sessionRecordingCodecValues = [\"h264-mp4\", \"vp9-webm\"] as const;\n\n// One row per recording — the durable index for the \"agent films itself proving\n// the fix\" loop. ffmpeg x11grab of the SAME :0 humans watch, finalized by\n// reading the bytes off the box and PUTting them to @opengeni/storage in the\n// process that holds the resumed-by-id handle (never a Temporal payload, F10).\n// Mirrors the account/workspace/session FK chain of sandboxSessionEnvelopes;\n// turnId is ON DELETE SET NULL (a deleted turn must not kill the artifact row).\nexport const sessionRecordings = pgTable(\n \"session_recordings\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n turnId: uuid(\"turn_id\").references(() => sessionTurns.id, {\n onDelete: \"set null\",\n }),\n\n state: text(\"state\", { enum: sessionRecordingStateValues }).notNull(),\n mode: text(\"mode\", { enum: sessionRecordingModeValues }).notNull(),\n codec: text(\"codec\", { enum: sessionRecordingCodecValues }).notNull(),\n\n storageKey: text(\"storage_key\"),\n sizeBytes: bigint(\"size_bytes\", { mode: \"number\" }),\n durationSeconds: numeric(\"duration_seconds\").$type<number>(),\n\n width: integer(\"width\").notNull(),\n height: integer(\"height\").notNull(),\n\n reason: text(\"reason\"),\n\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n finalizedAt: timestamp(\"finalized_at\", { withTimezone: true }),\n },\n (table) => ({\n sessionIdx: index(\"session_recordings_session_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.createdAt,\n ),\n }),\n);\n\n// Workbench v2 turn-end workspace capture (model: sessionRecordings).\n// One row per capture revision — a point-in-time snapshot of a session's changed\n// files, probed off the live box at turn end. The manifest (tree index + per-repo\n// status/diff + file index) and each after-image blob live in @opengeni/storage;\n// this row is the durable index the read routes serve from. `revision` is\n// monotonic per session (unique (session_id, revision)); `blob_keys` records the\n// content-addressed after-image keys this revision references so the keep-latest-10\n// GC can delete only blobs no surviving revision shares (set-difference GC without\n// a storage read). `lease_epoch` fences a write: an insert whose lease was\n// superseded writes zero rows (see insertWorkspaceCapture).\nexport const workspaceCaptures = pgTable(\n \"workspace_captures\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n turnId: uuid(\"turn_id\").references(() => sessionTurns.id, {\n onDelete: \"set null\",\n }),\n\n revision: bigint(\"revision\", { mode: \"number\" }).notNull(),\n leaseEpoch: integer(\"lease_epoch\").notNull(),\n // 'available' on a committed capture. 'failed' reserved for a future two-phase\n // write; the current synchronous capture only ever inserts 'available'.\n state: text(\"state\", { enum: [\"available\", \"failed\"] })\n .notNull()\n .default(\"available\"),\n\n // Single JSON manifest blob (tree index + repos + file refs) — the cold-paint payload.\n manifestKey: text(\"manifest_key\"),\n // The fs tree index blob, kept separate from the manifest so the API can inline\n // or sign it independently of the (usually small) manifest metadata.\n treeIndexKey: text(\"tree_index_key\"),\n // Content-addressed after-image blob keys this revision references (GC input).\n blobKeys: jsonb(\"blob_keys\").$type<string[]>().notNull().default([]),\n\n sizeBytes: bigint(\"size_bytes\", { mode: \"number\" }),\n stats: jsonb(\"stats\").$type<Record<string, unknown>>().notNull().default({}),\n\n capturedAt: timestamp(\"captured_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n sessionRevision: uniqueIndex(\"workspace_captures_session_revision_idx\").on(\n table.sessionId,\n table.revision,\n ),\n latest: index(\"workspace_captures_latest_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.revision,\n ),\n }),\n);\n\n// Interactive PTY sessions. An OPEN PTY adopts one exact retained process; the\n// provider's numeric exec-session id is only a copied locator and never authority\n// on its own. Provider/lease/route/admission identity is copied onto the row so a\n// stale pointer or box epoch cannot redirect control to a rival process. Legacy\n// numeric-only rows are closed by the maintenance cutover and may retain null\n// identity columns only in that terminal state.\nexport const sandboxPtySessions = pgTable(\n \"sandbox_pty_sessions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(), // == ptyId on the wire\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n leaseId: uuid(\"lease_id\"),\n sandboxGroupId: uuid(\"sandbox_group_id\"),\n retainedProcessId: uuid(\"retained_process_id\"),\n openAdmissionId: uuid(\"open_admission_id\"),\n // Copied provider locator for the adopted retained process.\n execSessionId: integer(\"exec_session_id\"),\n leaseEpoch: integer(\"lease_epoch\").notNull(),\n providerBackend: text(\"provider_backend\"),\n providerInstanceId: text(\"provider_instance_id\"),\n routeKind: text(\"route_kind\", { enum: [\"home\", \"active\"] }),\n routeTargetId: uuid(\"route_target_id\"),\n routeEpoch: integer(\"route_epoch\"),\n cols: integer(\"cols\").notNull(),\n rows: integer(\"rows\").notNull(),\n shell: text(\"shell\").notNull(),\n cwd: text(\"cwd\").notNull(),\n status: text(\"status\").notNull().default(\"open\"), // 'open' | 'closed'\n // The viewer grant/subject that opened it (free-text — access subjects are not\n // always UUIDs, M5; so a text column, never a uuid NOT NULL).\n openedBy: text(\"opened_by\").notNull(),\n lastInputAt: timestamp(\"last_input_at\", { withTimezone: true }).notNull().defaultNow(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n closedAt: timestamp(\"closed_at\", { withTimezone: true }),\n },\n (table) => ({\n retainedProcessScope: foreignKey({\n name: \"sandbox_pty_sessions_retained_process_scope_fk\",\n columns: [\n table.accountId,\n table.workspaceId,\n table.sessionId,\n table.leaseId,\n table.retainedProcessId,\n ],\n foreignColumns: [\n sandboxRetainedProcesses.accountId,\n sandboxRetainedProcesses.workspaceId,\n sandboxRetainedProcesses.sessionId,\n sandboxRetainedProcesses.leaseId,\n sandboxRetainedProcesses.id,\n ],\n }).onDelete(\"restrict\"),\n openIdx: index(\"sandbox_pty_sessions_session_idx\")\n .on(table.workspaceId, table.sessionId)\n .where(sql`${table.status} = 'open'`),\n processIdx: uniqueIndex(\"sandbox_pty_sessions_open_process_uq\")\n .on(table.retainedProcessId)\n .where(sql`${table.status} = 'open'`),\n openIdentityValid: check(\n \"sandbox_pty_sessions_open_identity_check\",\n sql`${table.status} <> 'open' or (\n ${table.leaseId} is not null\n and ${table.sandboxGroupId} is not null\n and ${table.retainedProcessId} is not null\n and ${table.openAdmissionId} is not null\n and ${table.execSessionId} > 0\n and octet_length(${table.providerBackend}) between 1 and 64\n and octet_length(${table.providerInstanceId}) between 1 and 512\n and ${table.routeKind} in ('home', 'active')\n and (${table.routeKind} = 'active' or ${table.routeTargetId} is null)\n and ${table.routeEpoch} is not null\n and ${table.leaseEpoch} >= 0\n and ${table.routeEpoch} >= 0\n )`,\n ),\n }),\n);\n\n// ============================================================================\n// Bring-your-own-compute (M2): first-class swappable sandboxes + enrollment +\n// metrics (migration 0024). The session→box\n// binding becomes a per-session mutable, epoch-fenced active_sandbox_id pointer\n// (declared on sessions above) that the routing proxy resolves PER TOOL CALL.\n\n// The lifecycle/enum domains, exported so the query layer + the migration share\n// ONE source of truth for each CHECK.\nexport const enrollmentExposureValues = [\"whole-machine\"] as const;\nexport const enrollmentStatusValues = [\"active\", \"revoked\"] as const;\nexport const enrollmentOsValues = [\"linux\", \"macos\", \"windows\"] as const;\nexport const sandboxKindValues = [\"modal\", \"selfhosted\"] as const;\n\n// One row per registered machine. The agent's ed25519 PUBLIC key IS the machine\n// identity (the NATS control-plane subject the agent subscribes to maps to it).\n// exposure is the loudly-consented access mode; has_display/allow_screen_control\n// are the desktop/computer-use consent bits (default false — opt-in). status is\n// the active|revoked lifecycle; last_seen_at the heartbeat liveness cursor the\n// Machines dashboard renders online/reconnecting/offline from.\nexport const enrollments = pgTable(\n \"enrollments\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n // The agent's ed25519 public key (the machine identity).\n pubkey: text(\"pubkey\").notNull(),\n exposure: text(\"exposure\", { enum: enrollmentExposureValues })\n .notNull()\n .default(\"whole-machine\"),\n hasDisplay: boolean(\"has_display\").notNull().default(false),\n // Refreshed from every connect Hello (Capabilities.op_stream); false for\n // agents predating the op-stream engine.\n opStream: boolean(\"op_stream\").notNull().default(false),\n // When the machine has a display it CANNOT capture (macOS Screen Recording / TCC\n // not granted), the agent reports has_display=false AND a human, actionable reason\n // here (e.g. \"grant Screen Recording in System Settings\"). NULL means capture is\n // permitted (has_display=true) or the machine is genuinely headless — the reason\n // distinguishes \"display present but capture not granted\" from plain \"no display\"\n // so the Machines dashboard / VM picker can surface the specific hint. Refreshed\n // from every connect Hello alongside has_display.\n desktopUnavailableReason: text(\"desktop_unavailable_reason\"),\n allowScreenControl: boolean(\"allow_screen_control\").notNull().default(false),\n status: text(\"status\", { enum: enrollmentStatusValues }).notNull().default(\"active\"),\n os: text(\"os\", { enum: enrollmentOsValues }).notNull().default(\"linux\"),\n arch: text(\"arch\").notNull().default(\"x86_64\"),\n // Heartbeat liveness cursor. Null until the first connect.\n lastSeenAt: timestamp(\"last_seen_at\", { withTimezone: true }),\n // Clean going-offline marker (migration 0049). Set when the machine announces a\n // typed GoingOffline (user-stop / self-update / host-shutdown); the liveness\n // derivation reads an un-cleared marker as OFFLINE immediately, regardless of a\n // still-fresh last_seen. Any newer liveness signal (a reconnect Hello or a\n // fresher heartbeat via touchEnrollmentLastSeen) clears BOTH back to NULL. NULL\n // (the default) ⇒ no goodbye pending — today's last_seen-aging behavior.\n wentOfflineAt: timestamp(\"went_offline_at\", { withTimezone: true }),\n wentOfflineReason: text(\"went_offline_reason\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n revokedAt: timestamp(\"revoked_at\", { withTimezone: true }),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n // One enrollment per (workspace, pubkey): a re-enroll is an idempotent upsert.\n workspacePubkey: uniqueIndex(\"enrollments_workspace_pubkey_idx\").on(\n table.workspaceId,\n table.pubkey,\n ),\n // List a workspace's ACTIVE machines without scanning revoked rows.\n workspaceStatus: index(\"enrollments_workspace_status_idx\").on(table.workspaceId, table.status),\n }),\n);\n\n// The OAuth 2.0 device-authorization (RFC 8628) PENDING request (M5, migration\n// 0025 / enrollment + §18 LOUD consent). An agent's `enroll` starts\n// a flow (POST /enrollments/device/start) → one short-TTL, single-use row keyed by\n// an opaque `device_code` (the agent polls with) + a short `user_code` (the user\n// types at the approve page). The user (workspace-membership / workspace:admin\n// gated) approves it (POST /enrollments/device/approve), which records WHO\n// (subject + label) consented WHEN (approved_at) to WHAT (whole-machine mandatory +\n// screen-control per allow_screen_control) and stamps the resulting enrollment_id /\n// sandbox_id. The agent then polls (POST /enrollments/device/poll) and the approved\n// row yields the EnrollmentCredentials. State machine: pending → approved | denied;\n// a pending row past expires_at is EXPIRED; once the agent has polled an approved\n// row its credentials, the row flips to consumed (single-use). NOT a long-lived\n// record — a retention sweep prunes terminal rows; the durable identity is the\n// `enrollments` row the approve produced.\nexport const deviceEnrollmentStatusValues = [\"pending\", \"approved\", \"denied\", \"consumed\"] as const;\n\nexport const deviceEnrollmentRequests = pgTable(\n \"device_enrollment_requests\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // The opaque code the agent polls with (unguessable, single-use). Unique.\n deviceCode: text(\"device_code\").notNull(),\n // The short human-typed code (e.g. \"WDJB-MJHT\"). Unique among LIVE (pending)\n // rows via a partial unique index so a recycled code never collides with a\n // terminal row.\n userCode: text(\"user_code\").notNull(),\n // The workspace this request was started for (resolved from the deployment-edge\n // request context — the agent presents the access key, the flow binds to the\n // single managed workspace OR a workspace hint). account_id rides along for RLS.\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n // The agent's ed25519 public key (the machine identity the enrollment binds to).\n pubkey: text(\"pubkey\").notNull(),\n os: text(\"os\", { enum: enrollmentOsValues }).notNull().default(\"linux\"),\n arch: text(\"arch\").notNull().default(\"x86_64\"),\n machineName: text(\"machine_name\"),\n // The exposure the agent REQUESTED (whole-machine in v1; loudly consented at\n // approve). Mirrors the enrollment column domain.\n requestedExposure: text(\"requested_exposure\", {\n enum: enrollmentExposureValues,\n })\n .notNull()\n .default(\"whole-machine\"),\n // The agent CAN offer a display (a real screen / Xvfb is available) — gates\n // whether screen-control consent is even meaningful. has_display on the\n // resulting enrollment is derived from this.\n canOfferDisplay: boolean(\"can_offer_display\").notNull().default(false),\n // The agent REQUESTS screen control (computer-use). The user's allow_screen_control\n // at approve is the AUTHORITATIVE consent; this is only the agent's request.\n requestsScreenControl: boolean(\"requests_screen_control\").notNull().default(false),\n status: text(\"status\", { enum: deviceEnrollmentStatusValues }).notNull().default(\"pending\"),\n // ── LOUD CONSENT capture (who/when/what), stamped at approve ──────────────\n approvedBySubjectId: text(\"approved_by_subject_id\"),\n approvedBySubjectLabel: text(\"approved_by_subject_label\"),\n // The user's screen-control consent decision (whole-machine is mandatory at\n // approve; screen-control is opt-in per this flag).\n allowScreenControl: boolean(\"allow_screen_control\").notNull().default(false),\n approvedAt: timestamp(\"approved_at\", { withTimezone: true }),\n // The enrollment + sandbox the approve produced (acceptance #2: an enrollment\n // row AND a sandbox row appear). Null until approved.\n enrollmentId: uuid(\"enrollment_id\").references(() => enrollments.id, {\n onDelete: \"set null\",\n }),\n sandboxId: uuid(\"sandbox_id\").references(() => sandboxes.id, {\n onDelete: \"set null\",\n }),\n // The short-TTL expiry; a pending row past this is EXPIRED on poll.\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n // The device_code is the agent's poll key — globally unique + indexed.\n deviceCode: uniqueIndex(\"device_enrollment_requests_device_code_idx\").on(table.deviceCode),\n // The user_code must be unique among LIVE (pending) rows so the approve lookup\n // is unambiguous; a terminal row's code may be recycled.\n userCodePending: uniqueIndex(\"device_enrollment_requests_user_code_pending_idx\")\n .on(table.userCode)\n .where(sql`${table.status} = 'pending'`),\n workspaceCreated: index(\"device_enrollment_requests_workspace_created_idx\").on(\n table.workspaceId,\n table.createdAt,\n ),\n expires: index(\"device_enrollment_requests_expires_idx\").on(table.expiresAt),\n }),\n);\n\n// The first-class NAMED sandbox a session's active_sandbox_id points AT. kind\n// discriminates the backend the routing proxy resolves to: 'modal' (cloud box,\n// NULL enrollment_id) or 'selfhosted' (a user's machine, enrollment_id -> the\n// enrollment it lives on). The selfhosted-needs-enrollment invariant is pinned by\n// the sandboxes_selfhosted_enrollment_chk CHECK in migration 0024. enrollment_id\n// is ON DELETE SET NULL so deleting an enrollment never cascade-kills a sandbox a\n// session might still point at (the routing layer surfaces agent_offline instead).\nexport const sandboxes = pgTable(\n \"sandboxes\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n kind: text(\"kind\", { enum: sandboxKindValues }).notNull(),\n name: text(\"name\").notNull(),\n enrollmentId: uuid(\"enrollment_id\").references(() => enrollments.id, {\n onDelete: \"set null\",\n }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceCreated: index(\"sandboxes_workspace_created_idx\").on(\n table.workspaceId,\n table.createdAt,\n ),\n enrollment: index(\"sandboxes_enrollment_idx\")\n .on(table.enrollmentId)\n .where(sql`${table.enrollmentId} is not null`),\n }),\n);\n\n// Last-sample upsert: ONE row per enrollment, overwritten on every sample (the\n// PK on enrollment_id is the ON CONFLICT target). The §10.7 signals; nullable\n// where a platform/sample may not provide it (no GPU, headless).\nexport const machineMetricsLatest = pgTable(\n \"machine_metrics_latest\",\n {\n enrollmentId: uuid(\"enrollment_id\")\n .primaryKey()\n .references(() => enrollments.id, { onDelete: \"cascade\" }),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n cpuPercent: numeric(\"cpu_percent\").$type<number>(),\n load1: numeric(\"load1\").$type<number>(),\n load5: numeric(\"load5\").$type<number>(),\n load15: numeric(\"load15\").$type<number>(),\n memUsedBytes: bigint(\"mem_used_bytes\", { mode: \"number\" }),\n memTotalBytes: bigint(\"mem_total_bytes\", { mode: \"number\" }),\n diskUsedBytes: bigint(\"disk_used_bytes\", { mode: \"number\" }),\n diskTotalBytes: bigint(\"disk_total_bytes\", { mode: \"number\" }),\n gpuUtilPercent: numeric(\"gpu_util_percent\").$type<number>(),\n gpuMemUsedBytes: bigint(\"gpu_mem_used_bytes\", { mode: \"number\" }),\n gpuMemTotalBytes: bigint(\"gpu_mem_total_bytes\", { mode: \"number\" }),\n contention: numeric(\"contention\").$type<number>(),\n sampledAt: timestamp(\"sampled_at\", { withTimezone: true }).notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspace: index(\"machine_metrics_latest_workspace_idx\").on(table.workspaceId),\n }),\n);\n\n// Append-only downsampled history (~1/min per enrollment, retained N days). Same\n// signal columns as _latest. The (enrollment_id, sampled_at) index serves the\n// dashboard time-range read AND the (later) retention sweep.\nexport const machineMetricsSeries = pgTable(\n \"machine_metrics_series\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n enrollmentId: uuid(\"enrollment_id\")\n .notNull()\n .references(() => enrollments.id, { onDelete: \"cascade\" }),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n cpuPercent: numeric(\"cpu_percent\").$type<number>(),\n load1: numeric(\"load1\").$type<number>(),\n load5: numeric(\"load5\").$type<number>(),\n load15: numeric(\"load15\").$type<number>(),\n memUsedBytes: bigint(\"mem_used_bytes\", { mode: \"number\" }),\n memTotalBytes: bigint(\"mem_total_bytes\", { mode: \"number\" }),\n diskUsedBytes: bigint(\"disk_used_bytes\", { mode: \"number\" }),\n diskTotalBytes: bigint(\"disk_total_bytes\", { mode: \"number\" }),\n gpuUtilPercent: numeric(\"gpu_util_percent\").$type<number>(),\n gpuMemUsedBytes: bigint(\"gpu_mem_used_bytes\", { mode: \"number\" }),\n gpuMemTotalBytes: bigint(\"gpu_mem_total_bytes\", { mode: \"number\" }),\n contention: numeric(\"contention\").$type<number>(),\n sampledAt: timestamp(\"sampled_at\", { withTimezone: true }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n enrollmentSampled: index(\"machine_metrics_series_enrollment_sampled_idx\").on(\n table.enrollmentId,\n table.sampledAt,\n ),\n sampled: index(\"machine_metrics_series_sampled_idx\").on(table.sampledAt),\n }),\n);\n\nexport const scheduledTasks = pgTable(\n \"scheduled_tasks\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n status: text(\"status\").notNull().default(\"active\"),\n schedule: jsonb(\"schedule\").$type<unknown>().notNull(),\n temporalScheduleId: text(\"temporal_schedule_id\").notNull(),\n runMode: text(\"run_mode\").notNull().default(\"new_session_per_run\"),\n overlapPolicy: text(\"overlap_policy\").notNull().default(\"allow_concurrent\"),\n agentConfig: jsonb(\"agent_config\").$type<unknown>().notNull(),\n createdByKind: text(\"created_by_kind\").notNull().default(\"service\"),\n createdBySubjectId: text(\"created_by_subject_id\").notNull().default(\"unattributed-legacy\"),\n createdByContext: jsonb(\"created_by_context\")\n .$type<Record<string, unknown>>()\n .notNull()\n .default({ backfill: true }),\n personalConnectionDelegations: jsonb(\"personal_connection_delegations\")\n .$type<McpPersonalConnectionDelegation[]>()\n .notNull()\n .default([]),\n reusableSessionId: uuid(\"reusable_session_id\").references(() => sessions.id, {\n onDelete: \"set null\",\n }),\n variableSetId: uuid(\"variable_set_id\").references(() => workspaceVariableSets.id, {\n onDelete: \"restrict\",\n }),\n // The rig this task's runs ride; the active version is resolved per fire\n // (migration 0047). NULL ⇒ no rig. FK (-> rigs(id) ON DELETE SET NULL) lives\n // in migration 0047 (forward-reference pattern). Consumed in M3.\n rigId: uuid(\"rig_id\"),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n temporalScheduleId: uniqueIndex(\"scheduled_tasks_workspace_temporal_schedule_id_idx\").on(\n table.workspaceId,\n table.temporalScheduleId,\n ),\n status: index(\"scheduled_tasks_workspace_status_idx\").on(table.workspaceId, table.status),\n variableSet: index(\"scheduled_tasks_variable_set_idx\").on(\n table.workspaceId,\n table.variableSetId,\n ),\n }),\n);\n\nexport const scheduledTaskRuns = pgTable(\n \"scheduled_task_runs\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n taskId: uuid(\"task_id\")\n .notNull()\n .references(() => scheduledTasks.id, { onDelete: \"cascade\" }),\n status: text(\"status\").notNull().default(\"queued\"),\n triggerType: text(\"trigger_type\").notNull(),\n scheduledAt: timestamp(\"scheduled_at\", { withTimezone: true }),\n firedAt: timestamp(\"fired_at\", { withTimezone: true }).notNull().defaultNow(),\n sessionId: uuid(\"session_id\").references(() => sessions.id, {\n onDelete: \"set null\",\n }),\n triggerEventId: uuid(\"trigger_event_id\"),\n // Stable Temporal producer identity. Activity replay/re-dispatch returns\n // the exact run instead of allocating a second schedule source row.\n producerKey: text(\"producer_key\"),\n error: text(\"error\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n taskCreated: index(\"scheduled_task_runs_workspace_task_created_idx\").on(\n table.workspaceId,\n table.taskId,\n table.createdAt,\n ),\n session: index(\"scheduled_task_runs_workspace_session_idx\").on(\n table.workspaceId,\n table.sessionId,\n ),\n producer: uniqueIndex(\"scheduled_task_runs_producer_key_uq\")\n .on(table.workspaceId, table.producerKey)\n .where(sql`${table.producerKey} is not null`),\n }),\n);\n\nexport const githubInstallations = pgTable(\n \"github_installations\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n installationId: integer(\"installation_id\").notNull(),\n githubAccountId: bigint(\"github_account_id\", { mode: \"number\" }),\n accountLogin: text(\"account_login\"),\n accountType: text(\"account_type\"),\n repositoryScope: text(\"repository_scope\").notNull().default(\"all\"),\n linkedBySubjectId: text(\"linked_by_subject_id\"),\n githubActorId: bigint(\"github_actor_id\", { mode: \"number\" }),\n githubActorLogin: text(\"github_actor_login\"),\n authorityKind: text(\"authority_kind\"),\n authorityCheckedAt: timestamp(\"authority_checked_at\", {\n withTimezone: true,\n }),\n authorityExpiresAt: timestamp(\"authority_expires_at\", {\n withTimezone: true,\n }),\n authorityNonce: text(\"authority_nonce\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceInstallation: uniqueIndex(\"github_installations_workspace_installation_idx\").on(\n table.workspaceId,\n table.installationId,\n ),\n installation: index(\"github_installations_installation_idx\").on(table.installationId),\n workspace: index(\"github_installations_workspace_idx\").on(table.workspaceId),\n repositoryScopeCheck: check(\n \"github_installations_repository_scope_check\",\n sql`${table.repositoryScope} in ('all', 'selected')`,\n ),\n authorityKindCheck: check(\n \"github_installations_authority_kind_check\",\n sql`\n (\n ${table.githubAccountId} is null\n and ${table.githubActorId} is null\n and ${table.githubActorLogin} is null\n and ${table.authorityKind} is null\n and ${table.authorityCheckedAt} is null\n and ${table.authorityExpiresAt} is null\n and ${table.authorityNonce} is null\n )\n or (\n ${table.githubAccountId} is not null\n and ${table.githubAccountId} > 0\n and ${table.githubActorId} is not null\n and ${table.githubActorId} > 0\n and ${table.githubActorLogin} is not null\n and length(${table.githubActorLogin}) > 0\n and ${table.accountLogin} is not null\n and length(${table.accountLogin}) > 0\n and ${table.accountType} is not null\n and ${table.linkedBySubjectId} is not null\n and length(${table.linkedBySubjectId}) > 0\n and ${table.authorityKind} is not null\n and ${table.authorityCheckedAt} is not null\n and ${table.authorityExpiresAt} is not null\n and ${table.authorityCheckedAt} < ${table.authorityExpiresAt}\n and ${table.authorityExpiresAt} <= ${table.authorityCheckedAt} + interval '10 minutes'\n and ${table.authorityNonce} is not null\n and length(${table.authorityNonce}) > 0\n and ${table.repositoryScope} = 'selected'\n and (\n (\n ${table.authorityKind} = 'personal_owner'\n and ${table.accountType} = 'User'\n and ${table.githubActorId} = ${table.githubAccountId}\n )\n or (\n ${table.authorityKind} = 'organization_owner'\n and ${table.accountType} = 'Organization'\n )\n )\n )\n `,\n ),\n authorityNonce: uniqueIndex(\"github_installations_authority_nonce_uq\")\n .on(table.authorityNonce)\n .where(sql`${table.authorityNonce} is not null`),\n }),\n);\n\nexport const githubInstallationRepositories = pgTable(\n \"github_installation_repositories\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n installationId: integer(\"installation_id\").notNull(),\n repositoryId: bigint(\"repository_id\", { mode: \"number\" }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n installationRepository: uniqueIndex(\"github_install_repo_workspace_installation_repo_idx\").on(\n table.workspaceId,\n table.installationId,\n table.repositoryId,\n ),\n workspaceInstallation: index(\"github_install_repo_workspace_installation_idx\").on(\n table.workspaceId,\n table.installationId,\n ),\n workspaceAccount: foreignKey({\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n name: \"github_installation_repositories_workspace_account_fk\",\n }).onDelete(\"cascade\"),\n installationBinding: foreignKey({\n columns: [table.workspaceId, table.installationId],\n foreignColumns: [githubInstallations.workspaceId, githubInstallations.installationId],\n name: \"github_installation_repositories_installation_fk\",\n }).onDelete(\"cascade\"),\n }),\n);\n\nexport const usageEvents = pgTable(\n \"usage_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n subjectId: text(\"subject_id\"),\n eventType: text(\"event_type\").notNull(),\n quantity: bigint(\"quantity\", { mode: \"number\" }).notNull(),\n unit: text(\"unit\").notNull(),\n sourceResourceType: text(\"source_resource_type\"),\n sourceResourceId: text(\"source_resource_id\"),\n // Exact execution source for host usage export. These are deliberately\n // validated soft references rather than cascading foreign keys: usage is\n // an immutable billing/audit fact and must retain its source identity after\n // a session or turn is deleted.\n sessionId: uuid(\"session_id\"),\n turnId: uuid(\"turn_id\"),\n turnAttemptId: uuid(\"turn_attempt_id\"),\n initiatorKind: text(\"initiator_kind\"),\n initiatorSubjectId: text(\"initiator_subject_id\"),\n initiatorContext: jsonb(\"initiator_context\")\n .$type<Record<string, unknown>>()\n .notNull()\n .default({}),\n origin: text(\"origin\"),\n idempotencyKey: text(\"idempotency_key\").notNull(),\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull(),\n recordedAt: timestamp(\"recorded_at\", { withTimezone: true }).notNull().defaultNow(),\n exportedToBillingAt: timestamp(\"exported_to_billing_at\", {\n withTimezone: true,\n }),\n billingProviderEventId: text(\"billing_provider_event_id\"),\n },\n (table) => ({\n idempotency: uniqueIndex(\"usage_events_idempotency_idx\").on(table.idempotencyKey),\n workspaceMetric: index(\"usage_events_workspace_metric_idx\").on(\n table.workspaceId,\n table.eventType,\n table.occurredAt,\n ),\n accountMetric: index(\"usage_events_account_metric_idx\").on(\n table.accountId,\n table.eventType,\n table.occurredAt,\n ),\n workspaceSession: index(\"usage_events_workspace_session_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.occurredAt,\n ),\n contextHierarchy: check(\n \"usage_events_context_hierarchy_check\",\n sql`(${table.turnId} is null or ${table.sessionId} is not null)\n and (${table.turnAttemptId} is null or ${table.turnId} is not null)`,\n ),\n initiatorConsistent: check(\n \"usage_events_initiator_check\",\n sql`(${table.initiatorKind} is null and ${table.initiatorSubjectId} is null)\n or (${table.initiatorKind} in ('subject', 'service')\n and ${table.initiatorSubjectId} is not null\n and octet_length(${table.initiatorSubjectId}) between 1 and 1024)`,\n ),\n attributionContextBytes: check(\n \"usage_events_initiator_context_bytes_check\",\n sql`octet_length(${table.initiatorContext}::text) <= 4096`,\n ),\n originValid: check(\n \"usage_events_origin_check\",\n sql`${table.origin} is null or ${table.origin} in (\n 'user', 'scheduled_task', 'api', 'goal', 'system', 'compaction'\n )`,\n ),\n }),\n);\n\n/**\n * Per model-call Insights facts. Additive observability only — never the billing\n * ledger. Written after an authoritative `agent.model.usage` emit.\n */\nexport const modelCallFacts = pgTable(\n \"model_call_facts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\").notNull(),\n turnId: uuid(\"turn_id\").notNull(),\n turnAttemptId: uuid(\"turn_attempt_id\"),\n sourceKey: text(\"source_key\").notNull(),\n provider: text(\"provider\").notNull(),\n providerApi: text(\"provider_api\").notNull(),\n model: text(\"model\").notNull(),\n billingPath: text(\"billing_path\").notNull(),\n turnSource: text(\"turn_source\"),\n initiatorKind: text(\"initiator_kind\"),\n initiatorSubjectId: text(\"initiator_subject_id\"),\n scheduledTaskId: uuid(\"scheduled_task_id\"),\n inputTokens: bigint(\"input_tokens\", { mode: \"number\" }),\n outputTokens: bigint(\"output_tokens\", { mode: \"number\" }),\n cachedTokens: bigint(\"cached_tokens\", { mode: \"number\" }),\n cacheWriteTokens: bigint(\"cache_write_tokens\", { mode: \"number\" }),\n reasoningTokens: bigint(\"reasoning_tokens\", { mode: \"number\" }),\n totalTokens: bigint(\"total_tokens\", { mode: \"number\" }),\n pricedCostMicros: bigint(\"priced_cost_micros\", { mode: \"number\" }).notNull().default(0),\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull(),\n recordedAt: timestamp(\"recorded_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceTurnSource: uniqueIndex(\"model_call_facts_workspace_turn_source_uq\").on(\n table.workspaceId,\n table.turnId,\n table.sourceKey,\n ),\n workspaceOccurred: index(\"model_call_facts_workspace_occurred_idx\").on(\n table.workspaceId,\n table.occurredAt,\n ),\n workspaceProviderModelOccurred: index(\n \"model_call_facts_workspace_provider_model_occurred_idx\",\n ).on(table.workspaceId, table.provider, table.model, table.occurredAt),\n workspaceSessionOccurred: index(\"model_call_facts_workspace_session_occurred_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.occurredAt,\n ),\n workspaceScheduledTaskOccurred: index(\"model_call_facts_workspace_scheduled_task_occurred_idx\")\n .on(table.workspaceId, table.scheduledTaskId, table.occurredAt)\n .where(sql`${table.scheduledTaskId} is not null`),\n workspaceAccount: foreignKey({\n name: \"model_call_facts_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n billingPathValid: check(\n \"model_call_facts_billing_path_check\",\n sql`${table.billingPath} in ('opengeni_credits', 'external')`,\n ),\n pricedCostNonNegative: check(\n \"model_call_facts_priced_cost_check\",\n sql`${table.pricedCostMicros} >= 0`,\n ),\n initiatorConsistent: check(\n \"model_call_facts_initiator_check\",\n sql`(${table.initiatorKind} is null and ${table.initiatorSubjectId} is null)\n or (${table.initiatorKind} in ('subject', 'service')\n and ${table.initiatorSubjectId} is not null\n and octet_length(${table.initiatorSubjectId}) between 1 and 1024)`,\n ),\n sourceKeyBytes: check(\n \"model_call_facts_source_key_bytes_check\",\n sql`octet_length(${table.sourceKey}) between 1 and 1024`,\n ),\n providerBytes: check(\n \"model_call_facts_provider_bytes_check\",\n sql`octet_length(${table.provider}) between 1 and 256`,\n ),\n providerApiBytes: check(\n \"model_call_facts_provider_api_bytes_check\",\n sql`octet_length(${table.providerApi}) between 1 and 256`,\n ),\n modelBytes: check(\n \"model_call_facts_model_bytes_check\",\n sql`octet_length(${table.model}) between 1 and 512`,\n ),\n }),\n);\n\n/** Singleton, migration-installed gate. Standalone defaults keep both off. */\nexport const hostExportConfig = pgTable(\n \"host_export_config\",\n {\n id: integer(\"id\").primaryKey().default(1),\n sessionEventsEnabled: boolean(\"session_events_enabled\").notNull().default(false),\n usageEventsEnabled: boolean(\"usage_events_enabled\").notNull().default(false),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n singleton: check(\"host_export_config_singleton_check\", sql`${table.id} = 1`),\n }),\n);\n\n/**\n * Transactional delivery buffer. It intentionally has no tenant/source FKs:\n * a workspace deletion must not erase an already-committed, unacknowledged\n * host fact. Payloads are sanitized/bounded before they reach this table.\n */\nexport const hostExportOutbox = pgTable(\n \"host_export_outbox\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n exportKind: text(\"export_kind\").notNull(),\n exportCursor: bigint(\"export_cursor\", { mode: \"bigint\" }),\n sourceId: uuid(\"source_id\").notNull(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\"),\n rootSessionId: uuid(\"root_session_id\"),\n turnId: uuid(\"turn_id\"),\n turnGeneration: integer(\"turn_generation\"),\n turnAttemptId: uuid(\"turn_attempt_id\"),\n sessionSequence: integer(\"session_sequence\"),\n clientEventId: text(\"client_event_id\"),\n turnAssociation: text(\"turn_association\"),\n duplicateOfEventId: uuid(\"duplicate_of_event_id\"),\n duplicateReason: text(\"duplicate_reason\"),\n eventType: text(\"event_type\").notNull(),\n idempotencyKey: text(\"idempotency_key\").notNull(),\n initiator: jsonb(\"initiator\").$type<Record<string, unknown> | null>(),\n initiatorContext: jsonb(\"initiator_context\")\n .$type<Record<string, unknown>>()\n .notNull()\n .default({}),\n origin: text(\"origin\"),\n payload: jsonb(\"payload\").$type<unknown>().notNull(),\n envelopeBytes: integer(\"envelope_bytes\").notNull(),\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull(),\n sourceRecordedAt: timestamp(\"source_recorded_at\", {\n withTimezone: true,\n }).notNull(),\n enqueuedAt: timestamp(\"enqueued_at\", { withTimezone: true }).notNull(),\n },\n (table) => ({\n kindValid: check(\n \"host_export_outbox_kind_check\",\n sql`${table.exportKind} in ('session_event', 'usage_event')`,\n ),\n rootSessionCaptured: check(\n \"host_export_outbox_root_session_check\",\n sql`${table.sessionId} is null or ${table.rootSessionId} is not null`,\n ),\n sourceUnique: uniqueIndex(\"host_export_outbox_source_uq\").on(table.exportKind, table.sourceId),\n cursorUnique: uniqueIndex(\"host_export_outbox_cursor_uq\")\n .on(table.exportKind, table.exportCursor)\n .where(sql`${table.exportCursor} is not null`),\n unassigned: index(\"host_export_outbox_unassigned_idx\")\n .on(table.exportKind, table.enqueuedAt, table.id)\n .where(sql`${table.exportCursor} is null`),\n unassignedSession: index(\"host_export_outbox_unassigned_session_idx\")\n .on(table.exportKind, table.sessionId, table.sessionSequence)\n .where(sql`${table.exportCursor} is null and ${table.sessionId} is not null`),\n contextBytes: check(\n \"host_export_outbox_context_bytes_check\",\n sql`octet_length(${table.initiatorContext}::text) <= 4096`,\n ),\n originValid: check(\n \"host_export_outbox_origin_check\",\n sql`${table.origin} is null or ${table.origin} in (\n 'user', 'scheduled_task', 'api', 'goal', 'system', 'compaction'\n )`,\n ),\n }),\n);\n\nexport const hostExportCursorState = pgTable(\n \"host_export_cursor_state\",\n {\n exportKind: text(\"export_kind\").primaryKey(),\n nextCursor: bigint(\"next_cursor\", { mode: \"bigint\" }).notNull().default(1n),\n prunedThrough: bigint(\"pruned_through\", { mode: \"bigint\" }).notNull().default(0n),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n kindValid: check(\n \"host_export_cursor_state_kind_check\",\n sql`${table.exportKind} in ('session_event', 'usage_event')`,\n ),\n cursorValid: check(\n \"host_export_cursor_state_next_check\",\n sql`${table.nextCursor} > 0 and ${table.prunedThrough} >= 0\n and ${table.prunedThrough} < ${table.nextCursor}`,\n ),\n }),\n);\n\n/** Named at-least-once consumer checkpoint and one-batch lease. */\nexport const hostExportConsumers = pgTable(\n \"host_export_consumers\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n consumerId: text(\"consumer_id\").notNull(),\n exportKind: text(\"export_kind\").notNull(),\n checkpoint: bigint(\"checkpoint\", { mode: \"bigint\" }).notNull().default(0n),\n enabled: boolean(\"enabled\").notNull().default(true),\n leaseToken: uuid(\"lease_token\"),\n leaseHolderId: text(\"lease_holder_id\"),\n leaseExpiresAt: timestamp(\"lease_expires_at\", { withTimezone: true }),\n leaseFrom: bigint(\"lease_from\", { mode: \"bigint\" }),\n leaseThrough: bigint(\"lease_through\", { mode: \"bigint\" }),\n consecutiveFailures: integer(\"consecutive_failures\").notNull().default(0),\n nextAttemptAt: timestamp(\"next_attempt_at\", { withTimezone: true }).notNull().defaultNow(),\n lastError: text(\"last_error\"),\n lastErrorAt: timestamp(\"last_error_at\", { withTimezone: true }),\n blockedAt: timestamp(\"blocked_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n consumerKind: uniqueIndex(\"host_export_consumers_kind_id_uq\").on(\n table.exportKind,\n table.consumerId,\n ),\n kindValid: check(\n \"host_export_consumers_kind_check\",\n sql`${table.exportKind} in ('session_event', 'usage_event')`,\n ),\n checkpointValid: check(\"host_export_consumers_checkpoint_check\", sql`${table.checkpoint} >= 0`),\n due: index(\"host_export_consumers_due_idx\").on(\n table.enabled,\n table.blockedAt,\n table.nextAttemptAt,\n ),\n }),\n);\n\n/** Explicit poison-row disposition; transient failures never write here. */\nexport const hostExportDeadLetters = pgTable(\n \"host_export_dead_letters\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n consumerId: text(\"consumer_id\").notNull(),\n exportKind: text(\"export_kind\").notNull(),\n exportCursor: bigint(\"export_cursor\", { mode: \"bigint\" }).notNull(),\n sourceId: uuid(\"source_id\").notNull(),\n reason: text(\"reason\").notNull(),\n envelope: jsonb(\"envelope\").$type<Record<string, unknown>>().notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n consumerCursor: uniqueIndex(\"host_export_dead_letters_consumer_cursor_uq\").on(\n table.exportKind,\n table.consumerId,\n table.exportCursor,\n ),\n kindValid: check(\n \"host_export_dead_letters_kind_check\",\n sql`${table.exportKind} in ('session_event', 'usage_event')`,\n ),\n reasonValid: check(\n \"host_export_dead_letters_reason_check\",\n sql`length(${table.reason}) between 1 and 500`,\n ),\n envelopeBytes: check(\n \"host_export_dead_letters_envelope_bytes_check\",\n sql`pg_column_size(${table.envelope}) <= 114688`,\n ),\n }),\n);\n\nexport const creditLedgerEntries = pgTable(\n \"credit_ledger_entries\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\").references(() => workspaces.id, {\n onDelete: \"set null\",\n }),\n type: text(\"type\").notNull(),\n amountMicros: bigint(\"amount_micros\", { mode: \"number\" }).notNull(),\n currency: text(\"currency\").notNull().default(\"usd\"),\n sourceType: text(\"source_type\"),\n sourceId: text(\"source_id\"),\n idempotencyKey: text(\"idempotency_key\").notNull(),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull().defaultNow(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n idempotency: uniqueIndex(\"credit_ledger_entries_idempotency_idx\").on(table.idempotencyKey),\n accountCreated: index(\"credit_ledger_entries_account_created_idx\").on(\n table.accountId,\n table.createdAt,\n ),\n }),\n);\n\nexport const billingCustomers = pgTable(\n \"billing_customers\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n provider: text(\"provider\").notNull().default(\"stripe\"),\n providerCustomerId: text(\"provider_customer_id\").notNull(),\n email: text(\"email\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n accountProvider: uniqueIndex(\"billing_customers_account_provider_idx\").on(\n table.accountId,\n table.provider,\n ),\n providerCustomer: uniqueIndex(\"billing_customers_provider_customer_idx\").on(\n table.provider,\n table.providerCustomerId,\n ),\n }),\n);\n\nexport const stripeWebhookEvents = pgTable(\"stripe_webhook_events\", {\n id: text(\"id\").primaryKey(),\n type: text(\"type\").notNull(),\n livemode: text(\"livemode\").notNull().default(\"false\"),\n payload: jsonb(\"payload\").$type<unknown>().notNull(),\n processedAt: timestamp(\"processed_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n});\n\nexport const auditEvents = pgTable(\n \"audit_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").references(() => managedAccounts.id, {\n onDelete: \"set null\",\n }),\n workspaceId: uuid(\"workspace_id\").references(() => workspaces.id, {\n onDelete: \"set null\",\n }),\n subjectId: text(\"subject_id\"),\n action: text(\"action\").notNull(),\n targetType: text(\"target_type\"),\n targetId: text(\"target_id\"),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n accountCreated: index(\"audit_events_account_created_idx\").on(table.accountId, table.occurredAt),\n workspaceCreated: index(\"audit_events_workspace_created_idx\").on(\n table.workspaceId,\n table.occurredAt,\n ),\n }),\n);\n\nexport const packInstallations = pgTable(\n \"pack_installations\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n packId: text(\"pack_id\").notNull(),\n status: text(\"status\").notNull().default(\"active\"),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n enabledAt: timestamp(\"enabled_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspacePack: uniqueIndex(\"pack_installations_workspace_pack_idx\").on(\n table.workspaceId,\n table.packId,\n ),\n status: index(\"pack_installations_workspace_status_idx\").on(table.workspaceId, table.status),\n }),\n);\n\nexport const workspacePacks = pgTable(\n \"workspace_packs\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n packId: text(\"pack_id\").notNull(),\n manifest: jsonb(\"manifest\").$type<Record<string, unknown>>().notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspacePack: uniqueIndex(\"workspace_packs_workspace_pack_idx\").on(\n table.workspaceId,\n table.packId,\n ),\n }),\n);\n\nexport const importBatches = pgTable(\n \"import_batches\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n source: text(\"source\").notNull(),\n snapshotDate: timestamp(\"snapshot_date\", { withTimezone: true }).notNull(),\n snapshotRef: text(\"snapshot_ref\"),\n attributionNote: text(\"attribution_note\").notNull(),\n importedCount: integer(\"imported_count\").notNull().default(0),\n skippedCount: integer(\"skipped_count\").notNull().default(0),\n quarantinedCount: integer(\"quarantined_count\").notNull().default(0),\n logoFailureCount: integer(\"logo_failure_count\").notNull().default(0),\n staleCount: integer(\"stale_count\").notNull().default(0),\n details: jsonb(\"details\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n sourceSnapshot: index(\"import_batches_source_snapshot_idx\").on(\n table.source,\n table.snapshotDate,\n ),\n createdAt: index(\"import_batches_created_at_idx\").on(table.createdAt),\n }),\n);\n\nexport const capabilityCatalogItems = pgTable(\n \"capability_catalog_items\",\n {\n id: text(\"id\").notNull(),\n accountId: uuid(\"account_id\").references(() => managedAccounts.id, {\n onDelete: \"cascade\",\n }),\n workspaceId: uuid(\"workspace_id\").references(() => workspaces.id, {\n onDelete: \"cascade\",\n }),\n kind: text(\"kind\").notNull(),\n source: text(\"source\").notNull().default(\"manual\"),\n name: text(\"name\").notNull(),\n description: text(\"description\"),\n category: text(\"category\").notNull().default(\"custom\"),\n tags: jsonb(\"tags\").$type<string[]>().notNull().default([]),\n homepageUrl: text(\"homepage_url\"),\n endpointUrl: text(\"endpoint_url\"),\n installUrl: text(\"install_url\"),\n authModel: text(\"auth_model\"),\n providerDomain: text(\"provider_domain\"),\n surfaceType: text(\"surface_type\"),\n transport: text(\"transport\"),\n mcpUrl: text(\"mcp_url\"),\n authKind: text(\"auth_kind\"),\n credentialFacts: jsonb(\"credential_facts\")\n .$type<Array<Record<string, unknown>>>()\n .notNull()\n .default([]),\n tier: text(\"tier\"),\n provenance: text(\"provenance\"),\n logoAssetPath: text(\"logo_asset_path\"),\n importBatchId: uuid(\"import_batch_id\").references(() => importBatches.id, {\n onDelete: \"set null\",\n }),\n stale: boolean(\"stale\").notNull().default(false),\n staleAt: timestamp(\"stale_at\", { withTimezone: true }),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceCapability: uniqueIndex(\"capability_catalog_items_workspace_capability_idx\").on(\n table.workspaceId,\n table.id,\n ),\n registrySurface: uniqueIndex(\"capability_catalog_items_registry_surface_idx\").on(\n table.source,\n table.providerDomain,\n table.mcpUrl,\n ),\n globalCapability: uniqueIndex(\"capability_catalog_items_global_capability_idx\")\n .on(table.id)\n .where(sql`${table.workspaceId} is null`),\n kind: index(\"capability_catalog_items_workspace_kind_idx\").on(table.workspaceId, table.kind),\n category: index(\"capability_catalog_items_workspace_category_idx\").on(\n table.workspaceId,\n table.category,\n ),\n source: index(\"capability_catalog_items_workspace_source_idx\").on(\n table.workspaceId,\n table.source,\n ),\n providerDomain: index(\"capability_catalog_items_provider_domain_idx\").on(table.providerDomain),\n importBatch: index(\"capability_catalog_items_import_batch_idx\").on(table.importBatchId),\n stale: index(\"capability_catalog_items_source_stale_idx\").on(table.source, table.stale),\n }),\n);\n\nexport const capabilityInstallations = pgTable(\n \"capability_installations\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n capabilityId: text(\"capability_id\").notNull(),\n kind: text(\"kind\").notNull(),\n status: text(\"status\").notNull().default(\"active\"),\n config: jsonb(\"config\").$type<Record<string, unknown>>().notNull().default({}),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n enabledAt: timestamp(\"enabled_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceCapability: uniqueIndex(\"capability_installations_workspace_capability_idx\").on(\n table.workspaceId,\n table.capabilityId,\n ),\n kind: index(\"capability_installations_workspace_kind_idx\").on(table.workspaceId, table.kind),\n status: index(\"capability_installations_workspace_status_idx\").on(\n table.workspaceId,\n table.status,\n ),\n }),\n);\n\nexport const socialConnections = pgTable(\n \"social_connections\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n 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\").on(\n table.workspaceId,\n table.provider,\n table.accountHandle,\n ),\n providerStatus: index(\"social_connections_workspace_provider_status_idx\").on(\n table.workspaceId,\n table.provider,\n table.status,\n ),\n }),\n);\n\nexport const socialPosts = pgTable(\n \"social_posts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n connectionId: uuid(\"connection_id\")\n .notNull()\n .references(() => socialConnections.id, { onDelete: \"cascade\" }),\n provider: text(\"provider\").notNull(),\n externalPostId: text(\"external_post_id\"),\n url: text(\"url\"),\n authorHandle: text(\"author_handle\"),\n text: text(\"text\").notNull(),\n publishedAt: timestamp(\"published_at\", { withTimezone: true }).notNull(),\n metrics: jsonb(\"metrics\").$type<Record<string, number>>().notNull().default({}),\n raw: jsonb(\"raw\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n connectionExternalPost: uniqueIndex(\"social_posts_workspace_connection_external_post_idx\").on(\n table.workspaceId,\n table.connectionId,\n table.externalPostId,\n ),\n connectionPublished: index(\"social_posts_workspace_connection_published_idx\").on(\n table.workspaceId,\n table.connectionId,\n table.publishedAt,\n ),\n providerPublished: index(\"social_posts_workspace_provider_published_idx\").on(\n table.workspaceId,\n table.provider,\n table.publishedAt,\n ),\n }),\n);\n\n// Rigs (migration 0047): workspace-scoped, versioned sandbox machine definitions.\n// A rig is the named truth; each sandbox is a disposable fork of a rig version.\nexport const rigs = pgTable(\n \"rigs\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n description: text(\"description\"),\n // Attribution string: 'user:<subject>' | 'session:<id>' | 'system'.\n createdBy: text(\"created_by\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceName: uniqueIndex(\"rigs_workspace_name_idx\").on(table.workspaceId, table.name),\n workspaceCreated: index(\"rigs_workspace_created_idx\").on(table.workspaceId, table.createdAt),\n }),\n);\n\n// Append-only, content-immutable rig versions. Exactly one active per rig\n// (partial unique index). The domain layer never UPDATEs a content column; only\n// the `active` flag flips (activateRigVersion).\nexport const rigVersions = pgTable(\n \"rig_versions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n rigId: uuid(\"rig_id\")\n .notNull()\n .references(() => rigs.id, { onDelete: \"cascade\" }),\n version: integer(\"version\").notNull(),\n image: text(\"image\"),\n setupScript: text(\"setup_script\"),\n // Self-declared health checks: [{ name, command }].\n checks: jsonb(\"checks\").$type<Array<{ name: string; command: string }>>().notNull().default([]),\n // Registered credential-hook names (resolved to hook implementations in M3).\n credentialHooks: jsonb(\"credential_hooks\").$type<string[]>().notNull().default([]),\n // Variable-set ids layered below the session's variable set at run time (M3).\n defaultVariableSetIds: jsonb(\"default_variable_set_ids\")\n .$type<string[]>()\n .notNull()\n .default([]),\n changelog: text(\"changelog\"),\n createdBy: text(\"created_by\"),\n active: boolean(\"active\").notNull().default(false),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n rigVersion: uniqueIndex(\"rig_versions_rig_version_idx\").on(table.rigId, table.version),\n // At most one active version per rig — the single-active invariant, in the DB.\n rigActive: uniqueIndex(\"rig_versions_rig_active_idx\")\n .on(table.rigId)\n .where(sql`${table.active}`),\n workspaceRig: index(\"rig_versions_workspace_rig_idx\").on(\n table.workspaceId,\n table.rigId,\n table.version,\n ),\n }),\n);\n\n// Proposed/verified rig changes (M4 substrate). M2 creates the table + CRUD only;\n// verification/auto-merge/promotion land in M4.\nexport const rigChanges = pgTable(\n \"rig_changes\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n rigId: uuid(\"rig_id\")\n .notNull()\n .references(() => rigs.id, { onDelete: \"cascade\" }),\n baseVersionId: uuid(\"base_version_id\").references(() => rigVersions.id, {\n onDelete: \"set null\",\n }),\n // 'setup_append' | 'definition_edit' (CHECK in migration 0047).\n kind: text(\"kind\").notNull(),\n payload: jsonb(\"payload\").$type<Record<string, unknown>>().notNull(),\n // 'proposed' | 'verifying' | 'merged' | 'rejected' | 'failed' (CHECK in 0047).\n status: text(\"status\").notNull().default(\"proposed\"),\n proposedBy: text(\"proposed_by\"),\n verification: jsonb(\"verification\").$type<Record<string, unknown>>(),\n resultVersionId: uuid(\"result_version_id\").references(() => rigVersions.id, {\n onDelete: \"set null\",\n }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceRig: index(\"rig_changes_workspace_rig_idx\").on(\n table.workspaceId,\n table.rigId,\n table.createdAt,\n ),\n workspaceStatus: index(\"rig_changes_workspace_status_idx\").on(table.workspaceId, table.status),\n }),\n);\n\nexport * from \"./workspace-instruction-policies-schema\";\nexport * from \"./preference-registry-schema\";\nexport * from \"./memory-governance-schema\";\nexport * from \"./scoped-knowledge-schema\";\n","import { sql } from \"drizzle-orm\";\nimport {\n bigint,\n check,\n index,\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 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 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 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 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","import { sql } from \"drizzle-orm\";\nimport {\n bigint,\n boolean,\n check,\n index,\n integer,\n jsonb,\n pgTable,\n text,\n timestamp,\n uniqueIndex,\n uuid,\n} from \"drizzle-orm/pg-core\";\nimport type { PreferenceRegistryDescriptor } from \"@opengeni/contracts\";\n\n// Foreign keys and cross-row integrity triggers are migration-owned. This leaf\n// stays cycle-free so schema.ts can expose the registry as one additive domain.\nexport const preferenceRegistryPreferences = pgTable(\n \"preference_registry_preferences\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n stableKey: text(\"stable_key\").notNull(),\n scope: text(\"scope\").notNull(),\n scopeWorkspaceId: uuid(\"scope_workspace_id\"),\n scopeSubjectId: text(\"scope_subject_id\"),\n status: text(\"status\").notNull().default(\"proposed\"),\n scopeVersion: integer(\"scope_version\").notNull().default(1),\n activationVersion: integer(\"activation_version\").notNull().default(0),\n activeRevisionId: uuid(\"active_revision_id\"),\n activeRevision: bigint(\"active_revision\", { mode: \"number\" }),\n activeContentHash: text(\"active_content_hash\"),\n supersededByPreferenceId: uuid(\"superseded_by_preference_id\"),\n createdBySubjectId: text(\"created_by_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n organizationStableKey: uniqueIndex(\"preference_registry_preferences_organization_key_uq\")\n .on(table.accountId, table.stableKey)\n .where(sql`${table.scope} = 'organization'`),\n workspaceStableKey: uniqueIndex(\"preference_registry_preferences_workspace_key_uq\")\n .on(table.accountId, table.scopeWorkspaceId, table.stableKey)\n .where(sql`${table.scope} = 'workspace'`),\n userStableKey: uniqueIndex(\"preference_registry_preferences_user_key_uq\")\n .on(table.accountId, table.scopeSubjectId, table.stableKey)\n .where(sql`${table.scope} = 'user'`),\n applicable: index(\"preference_registry_preferences_applicable_idx\").on(\n table.accountId,\n table.scope,\n table.scopeWorkspaceId,\n table.scopeSubjectId,\n table.status,\n table.stableKey,\n ),\n scopeShape: check(\n \"preference_registry_preferences_scope_shape_chk\",\n sql`(\n (${table.scope} = 'organization' and ${table.scopeWorkspaceId} is null and ${table.scopeSubjectId} is null)\n or (${table.scope} = 'workspace' and ${table.scopeWorkspaceId} is not null and ${table.scopeSubjectId} is null)\n or (${table.scope} = 'user' and ${table.scopeWorkspaceId} is null and ${table.scopeSubjectId} is not null)\n )`,\n ),\n }),\n);\n\nexport const preferenceRegistryRevisions = pgTable(\n \"preference_registry_revisions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n preferenceId: uuid(\"preference_id\").notNull(),\n revision: bigint(\"revision\", { mode: \"number\" })\n .notNull()\n .default(sql`nextval('preference_registry_revision_seq')`),\n title: text(\"title\").notNull(),\n description: text(\"description\").notNull(),\n content: text(\"content\").notNull(),\n contentHash: text(\"content_hash\").notNull(),\n precedenceRank: integer(\"precedence_rank\").notNull().default(0),\n conflictStrategy: text(\"conflict_strategy\").notNull(),\n conflictsWith: jsonb(\"conflicts_with\").$type<string[]>().notNull().default([]),\n provenanceSource: text(\"provenance_source\").notNull(),\n provenanceSourceId: text(\"provenance_source_id\"),\n trust: text(\"trust\").notNull(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }),\n correctsRevisionId: uuid(\"corrects_revision_id\"),\n createdBySubjectId: text(\"created_by_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n preferenceRevision: uniqueIndex(\"preference_registry_revisions_preference_revision_uq\").on(\n table.preferenceId,\n table.revision,\n ),\n history: index(\"preference_registry_revisions_history_idx\").on(\n table.preferenceId,\n table.revision,\n ),\n }),\n);\n\nexport const preferenceRegistryEvents = pgTable(\n \"preference_registry_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n preferenceId: uuid(\"preference_id\").notNull(),\n type: text(\"type\").notNull(),\n version: integer(\"version\").notNull(),\n oldRevisionId: uuid(\"old_revision_id\"),\n newRevisionId: uuid(\"new_revision_id\"),\n oldScope: text(\"old_scope\"),\n oldWorkspaceId: uuid(\"old_workspace_id\"),\n oldSubjectId: text(\"old_subject_id\"),\n newScope: text(\"new_scope\"),\n newWorkspaceId: uuid(\"new_workspace_id\"),\n newSubjectId: text(\"new_subject_id\"),\n relatedPreferenceId: uuid(\"related_preference_id\"),\n actorSubjectId: text(\"actor_subject_id\").notNull(),\n reason: text(\"reason\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n preferenceVersion: uniqueIndex(\"preference_registry_events_preference_version_uq\").on(\n table.preferenceId,\n table.version,\n ),\n timeline: index(\"preference_registry_events_timeline_idx\").on(\n table.preferenceId,\n table.createdAt,\n table.id,\n ),\n }),\n);\n\nexport const preferenceRegistrySnapshots = pgTable(\n \"preference_registry_snapshots\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n turnId: uuid(\"turn_id\").notNull(),\n attemptId: uuid(\"attempt_id\").notNull(),\n executionGeneration: integer(\"execution_generation\").notNull(),\n initiatingHumanSubjectId: text(\"initiating_human_subject_id\").notNull(),\n descriptors: jsonb(\"descriptors\").$type<PreferenceRegistryDescriptor[]>().notNull(),\n descriptorHash: text(\"descriptor_hash\").notNull(),\n truncated: boolean(\"truncated\").notNull().default(false),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n attempt: uniqueIndex(\"preference_registry_snapshots_attempt_uq\").on(\n table.accountId,\n table.workspaceId,\n table.attemptId,\n ),\n humanTimeline: index(\"preference_registry_snapshots_human_timeline_idx\").on(\n table.workspaceId,\n table.initiatingHumanSubjectId,\n table.createdAt,\n ),\n descriptorBytes: check(\n \"preference_registry_snapshots_descriptor_bytes_chk\",\n sql`octet_length(convert_to(${table.descriptors}::text, 'UTF8')) <= 16384`,\n ),\n }),\n);\n","import { sql } from \"drizzle-orm\";\nimport {\n check,\n index,\n integer,\n jsonb,\n pgTable,\n text,\n timestamp,\n uniqueIndex,\n uuid,\n} from \"drizzle-orm/pg-core\";\n\n// Foreign keys, immutable-history triggers, and lifecycle-only mutation guards\n// live in migration 0152. Keeping this leaf cycle-free lets schema.ts expose the\n// additive memory governance tables without importing knowledgeMemories here.\nexport const knowledgeMemoryRelationships = pgTable(\n \"knowledge_memory_relationships\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sourceMemoryId: uuid(\"source_memory_id\").notNull(),\n targetMemoryId: uuid(\"target_memory_id\").notNull(),\n relationshipType: text(\"relationship_type\").notNull(),\n version: integer(\"version\").notNull().default(1),\n createdByEventId: uuid(\"created_by_event_id\").notNull(),\n removedByEventId: uuid(\"removed_by_event_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n removedAt: timestamp(\"removed_at\", { withTimezone: true }),\n },\n (table) => ({\n activeDirectedEdge: uniqueIndex(\"knowledge_memory_relationships_active_edge_uq\")\n .on(table.workspaceId, table.sourceMemoryId, table.targetMemoryId, table.relationshipType)\n .where(sql`${table.removedByEventId} is null`),\n activeSymmetricEdge: uniqueIndex(\"knowledge_memory_relationships_active_symmetric_edge_uq\")\n .on(\n table.workspaceId,\n table.relationshipType,\n sql`least(${table.sourceMemoryId}, ${table.targetMemoryId})`,\n sql`greatest(${table.sourceMemoryId}, ${table.targetMemoryId})`,\n )\n .where(\n sql`${table.removedByEventId} is null and ${table.relationshipType} in ('conflicts_with', 'related_to')`,\n ),\n source: index(\"knowledge_memory_relationships_source_idx\").on(\n table.workspaceId,\n table.sourceMemoryId,\n table.createdAt.desc(),\n table.id,\n ),\n target: index(\"knowledge_memory_relationships_target_idx\").on(\n table.workspaceId,\n table.targetMemoryId,\n table.createdAt.desc(),\n table.id,\n ),\n typeValid: check(\n \"knowledge_memory_relationships_type_chk\",\n sql`${table.relationshipType} in ('derived_from', 'supersedes', 'corrects', 'conflicts_with', 'related_to', 'depends_on', 'applies_to')`,\n ),\n distinctEndpoints: check(\n \"knowledge_memory_relationships_distinct_chk\",\n sql`${table.sourceMemoryId} <> ${table.targetMemoryId}`,\n ),\n versionPositive: check(\"knowledge_memory_relationships_version_chk\", sql`${table.version} > 0`),\n removedShape: check(\n \"knowledge_memory_relationships_removed_shape_chk\",\n sql`(${table.removedByEventId} is null and ${table.removedAt} is null) or (${table.removedByEventId} is not null and ${table.removedAt} is not null)`,\n ),\n workspaceIdentity: uniqueIndex(\"knowledge_memory_relationships_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n }),\n);\n\nexport const knowledgeMemoryLifecycleEvents = pgTable(\n \"knowledge_memory_lifecycle_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n operationId: uuid(\"operation_id\").notNull(),\n action: text(\"action\").notNull(),\n operationType: text(\"operation_type\").notNull(),\n targetMemoryId: uuid(\"target_memory_id\").notNull(),\n relatedMemoryId: uuid(\"related_memory_id\"),\n relationshipId: uuid(\"relationship_id\"),\n relationshipType: text(\"relationship_type\"),\n actorKind: text(\"actor_kind\").notNull(),\n actorSubjectId: text(\"actor_subject_id\").notNull(),\n actorSessionId: uuid(\"actor_session_id\"),\n actorTurnId: uuid(\"actor_turn_id\"),\n actorAttemptId: uuid(\"actor_attempt_id\"),\n actorExecutionGeneration: integer(\"actor_execution_generation\"),\n planHash: text(\"plan_hash\").notNull(),\n beforeState: jsonb(\"before_state\").$type<Record<string, unknown>>().notNull(),\n afterState: jsonb(\"after_state\").$type<Record<string, unknown>>().notNull(),\n revertsEventId: uuid(\"reverts_event_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n operationAction: uniqueIndex(\"knowledge_memory_lifecycle_events_operation_action_uq\").on(\n table.workspaceId,\n table.operationId,\n table.action,\n ),\n oneRevert: uniqueIndex(\"knowledge_memory_lifecycle_events_one_revert_uq\")\n .on(table.revertsEventId)\n .where(sql`${table.revertsEventId} is not null`),\n targetTimeline: index(\"knowledge_memory_lifecycle_events_target_timeline_idx\").on(\n table.workspaceId,\n table.targetMemoryId,\n table.createdAt.desc(),\n table.id,\n ),\n actorTimeline: index(\"knowledge_memory_lifecycle_events_actor_timeline_idx\").on(\n table.workspaceId,\n table.actorKind,\n table.actorSubjectId,\n table.createdAt.desc(),\n table.id,\n ),\n actionValid: check(\n \"knowledge_memory_lifecycle_events_action_chk\",\n sql`${table.action} in ('apply', 'revert')`,\n ),\n operationValid: check(\n \"knowledge_memory_lifecycle_events_operation_chk\",\n sql`${table.operationType} in ('reclassify', 'archive', 'relationship_add', 'relationship_remove', 'supersede', 'correct')`,\n ),\n relationshipShape: check(\n \"knowledge_memory_lifecycle_events_relationship_chk\",\n sql`(${table.operationType} in ('relationship_add', 'relationship_remove', 'supersede', 'correct') and ${table.relatedMemoryId} is not null and ${table.relationshipId} is not null and ${table.relationshipType} is not null) or (${table.operationType} in ('reclassify', 'archive') and ${table.relatedMemoryId} is null and ${table.relationshipId} is null and ${table.relationshipType} is null)`,\n ),\n actorValid: check(\n \"knowledge_memory_lifecycle_events_actor_chk\",\n sql`${table.actorKind} in ('subject', 'service') and length(btrim(${table.actorSubjectId})) between 1 and 1024`,\n ),\n attemptShape: check(\n \"knowledge_memory_lifecycle_events_attempt_shape_chk\",\n sql`(${table.actorSessionId} is null and ${table.actorTurnId} is null and ${table.actorAttemptId} is null and ${table.actorExecutionGeneration} is null) or (${table.actorSessionId} is not null and ${table.actorTurnId} is not null and ${table.actorAttemptId} is not null and ${table.actorExecutionGeneration} > 0)`,\n ),\n planHashShape: check(\n \"knowledge_memory_lifecycle_events_plan_hash_chk\",\n sql`${table.planHash} ~ '^[a-f0-9]{64}$'`,\n ),\n stateShape: check(\n \"knowledge_memory_lifecycle_events_state_chk\",\n sql`jsonb_typeof(${table.beforeState}) = 'object' and jsonb_typeof(${table.afterState}) = 'object' and not (${table.beforeState} ?| array['text', 'sourceRefs', 'source_refs', 'metadata', 'embedding']) and not (${table.afterState} ?| array['text', 'sourceRefs', 'source_refs', 'metadata', 'embedding'])`,\n ),\n revertShape: check(\n \"knowledge_memory_lifecycle_events_revert_shape_chk\",\n sql`(${table.action} = 'apply' and ${table.revertsEventId} is null) or (${table.action} = 'revert' and ${table.revertsEventId} is not null)`,\n ),\n workspaceIdentity: uniqueIndex(\"knowledge_memory_lifecycle_events_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n }),\n);\n","import { sql } from \"drizzle-orm\";\nimport {\n bigint,\n boolean,\n index,\n integer,\n jsonb,\n pgTable,\n text,\n timestamp,\n uniqueIndex,\n uuid,\n} from \"drizzle-orm/pg-core\";\n\n// Cross-row/composite foreign keys, immutable-history triggers, lifecycle\n// functions, and FORCE-RLS policies live in migration 0154. This schema leaf is\n// deliberately cycle-free so the repository module can use typed table names\n// without making the main schema declaration harder to navigate.\n\nfunction tenantScopeColumns() {\n return {\n accountId: uuid(\"account_id\").notNull(),\n scopeKind: text(\"scope_kind\").notNull(),\n scopeWorkspaceId: uuid(\"scope_workspace_id\"),\n scopeSubjectId: text(\"scope_subject_id\"),\n scopeKey: text(\"scope_key\").notNull(),\n };\n}\n\nfunction actorColumns() {\n return {\n actorKind: text(\"actor_kind\").notNull(),\n actorSubjectId: text(\"actor_subject_id\").notNull(),\n initiatingHumanSubjectId: text(\"initiating_human_subject_id\"),\n };\n}\n\nexport const knowledgeOperationReceipts = pgTable(\n \"knowledge_operation_receipts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n operationKind: text(\"operation_kind\").notNull(),\n operationNamespace: text(\"operation_namespace\").notNull(),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n resultId: uuid(\"result_id\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n operation: uniqueIndex(\"knowledge_operation_receipts_operation_uq\").on(\n table.accountId,\n table.operationKind,\n table.operationNamespace,\n table.operationId,\n ),\n result: index(\"knowledge_operation_receipts_result_idx\").on(\n table.operationKind,\n table.resultId,\n ),\n }),\n);\n\nexport const knowledgeProviders = pgTable(\n \"knowledge_providers\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n providerKey: text(\"provider_key\").notNull(),\n externalTenantId: text(\"external_tenant_id\").notNull(),\n lifecycleState: text(\"lifecycle_state\").notNull().default(\"active\"),\n lifecycleGeneration: bigint(\"lifecycle_generation\", { mode: \"number\" }).notNull().default(1),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n externalIdentity: uniqueIndex(\"knowledge_providers_external_identity_uq\").on(\n table.accountId,\n table.providerKey,\n table.externalTenantId,\n ),\n operation: uniqueIndex(\"knowledge_providers_operation_uq\").on(\n table.accountId,\n table.operationId,\n ),\n scopeIdentity: uniqueIndex(\"knowledge_providers_scope_identity_uq\").on(\n table.accountId,\n table.id,\n table.scopeKey,\n ),\n scopeLifecycle: index(\"knowledge_providers_scope_lifecycle_idx\").on(\n table.accountId,\n table.scopeKey,\n table.lifecycleState,\n ),\n }),\n);\n\nexport const knowledgeSources = pgTable(\n \"knowledge_sources\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n providerId: uuid(\"provider_id\").notNull(),\n externalSourceId: text(\"external_source_id\").notNull(),\n sourceKind: text(\"source_kind\").notNull(),\n sourceUri: text(\"source_uri\"),\n currentAclGeneration: bigint(\"current_acl_generation\", { mode: \"number\" }),\n syncGeneration: bigint(\"sync_generation\", { mode: \"number\" }).notNull().default(0),\n syncCursor: text(\"sync_cursor\"),\n lifecycleState: text(\"lifecycle_state\").notNull().default(\"active\"),\n lifecycleGeneration: bigint(\"lifecycle_generation\", { mode: \"number\" }).notNull().default(1),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n externalIdentity: uniqueIndex(\"knowledge_sources_external_identity_uq\").on(\n table.providerId,\n table.externalSourceId,\n ),\n operation: uniqueIndex(\"knowledge_sources_operation_uq\").on(table.accountId, table.operationId),\n scopeIdentity: uniqueIndex(\"knowledge_sources_scope_identity_uq\").on(\n table.accountId,\n table.id,\n table.scopeKey,\n ),\n currentAcl: uniqueIndex(\"knowledge_sources_current_acl_identity_uq\").on(\n table.accountId,\n table.id,\n table.currentAclGeneration,\n ),\n provider: index(\"knowledge_sources_provider_idx\").on(table.providerId, table.externalSourceId),\n }),\n);\n\nexport const knowledgeSourceAclVersions = pgTable(\n \"knowledge_source_acl_versions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n sourceId: uuid(\"source_id\").notNull(),\n sourceScopeKey: text(\"source_scope_key\").notNull(),\n generation: bigint(\"generation\", { mode: \"number\" }).notNull(),\n aclVersion: text(\"acl_version\"),\n aclHash: text(\"acl_hash\").notNull(),\n agentAccess: boolean(\"agent_access\").notNull().default(true),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n sourceGeneration: uniqueIndex(\"knowledge_source_acl_versions_source_generation_uq\").on(\n table.accountId,\n table.sourceId,\n table.generation,\n ),\n sourceOperation: uniqueIndex(\"knowledge_source_acl_versions_source_operation_uq\").on(\n table.sourceId,\n table.operationId,\n ),\n sourceTimeline: index(\"knowledge_source_acl_versions_source_timeline_idx\").on(\n table.sourceId,\n table.generation,\n ),\n }),\n);\n\nexport const knowledgeSyncRuns = pgTable(\n \"knowledge_sync_runs\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n sourceId: uuid(\"source_id\").notNull(),\n inputSyncGeneration: bigint(\"input_sync_generation\", { mode: \"number\" }).notNull(),\n inputLifecycleGeneration: bigint(\"input_lifecycle_generation\", { mode: \"number\" }).notNull(),\n inputCursor: text(\"input_cursor\"),\n inputHash: text(\"input_hash\").notNull(),\n operationId: text(\"operation_id\").notNull(),\n state: text(\"state\").notNull().default(\"started\"),\n outputCursor: text(\"output_cursor\"),\n watermark: timestamp(\"watermark\", { withTimezone: true }),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n errorCode: text(\"error_code\"),\n completionHash: text(\"completion_hash\"),\n ...actorColumns(),\n startedAt: timestamp(\"started_at\", { withTimezone: true }).notNull().defaultNow(),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n },\n (table) => ({\n sourceOperation: uniqueIndex(\"knowledge_sync_runs_source_operation_uq\").on(\n table.sourceId,\n table.operationId,\n ),\n sourceState: index(\"knowledge_sync_runs_source_state_idx\").on(\n table.sourceId,\n table.state,\n table.startedAt,\n ),\n }),\n);\n\nexport const knowledgeSourceObjects = pgTable(\n \"knowledge_source_objects\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n sourceId: uuid(\"source_id\").notNull(),\n externalObjectId: text(\"external_object_id\").notNull(),\n documentId: uuid(\"document_id\"),\n lifecycleState: text(\"lifecycle_state\").notNull().default(\"active\"),\n lifecycleGeneration: bigint(\"lifecycle_generation\", { mode: \"number\" }).notNull().default(1),\n versionGeneration: bigint(\"version_generation\", { mode: \"number\" }).notNull().default(0),\n currentVersionId: uuid(\"current_version_id\"),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n externalIdentity: uniqueIndex(\"knowledge_source_objects_external_identity_uq\").on(\n table.sourceId,\n table.externalObjectId,\n ),\n sourceOperation: uniqueIndex(\"knowledge_source_objects_source_operation_uq\").on(\n table.sourceId,\n table.operationId,\n ),\n scopeIdentity: uniqueIndex(\"knowledge_source_objects_scope_identity_uq\").on(\n table.accountId,\n table.id,\n table.scopeKey,\n ),\n sourceIdentity: uniqueIndex(\"knowledge_source_objects_source_identity_uq\").on(\n table.accountId,\n table.id,\n table.sourceId,\n table.scopeKey,\n ),\n currentVersion: uniqueIndex(\"knowledge_source_objects_current_version_identity_uq\").on(\n table.accountId,\n table.id,\n table.currentVersionId,\n ),\n }),\n);\n\nexport const knowledgeDocumentVersions = pgTable(\n \"knowledge_document_versions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n sourceId: uuid(\"source_id\").notNull(),\n objectId: uuid(\"object_id\").notNull(),\n versionGeneration: bigint(\"version_generation\", { mode: \"number\" }).notNull(),\n externalVersionId: text(\"external_version_id\").notNull(),\n contentSha256: text(\"content_sha256\").notNull(),\n ingestionKey: text(\"ingestion_key\").notNull(),\n sourceCursor: text(\"source_cursor\"),\n sourceMetadata: jsonb(\"source_metadata\").$type<Record<string, unknown>>().notNull().default({}),\n sourceCreatedAt: timestamp(\"source_created_at\", { withTimezone: true }),\n sourceUpdatedAt: timestamp(\"source_updated_at\", { withTimezone: true }),\n observedAt: timestamp(\"observed_at\", { withTimezone: true }).notNull().defaultNow(),\n aclVersionId: uuid(\"acl_version_id\").notNull(),\n aclGeneration: bigint(\"acl_generation\", { mode: \"number\" }).notNull(),\n documentId: uuid(\"document_id\"),\n fileId: uuid(\"file_id\"),\n locationMetadata: jsonb(\"location_metadata\")\n .$type<Record<string, unknown>>()\n .notNull()\n .default({}),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n objectGeneration: uniqueIndex(\"knowledge_document_versions_object_generation_uq\").on(\n table.accountId,\n table.objectId,\n table.versionGeneration,\n ),\n objectExternalVersion: uniqueIndex(\"knowledge_document_versions_object_external_version_uq\").on(\n table.objectId,\n table.externalVersionId,\n ),\n objectIngestion: uniqueIndex(\"knowledge_document_versions_object_ingestion_uq\").on(\n table.objectId,\n table.ingestionKey,\n ),\n objectOperation: uniqueIndex(\"knowledge_document_versions_object_operation_uq\").on(\n table.objectId,\n table.operationId,\n ),\n objectIdentity: uniqueIndex(\"knowledge_document_versions_object_identity_uq\").on(\n table.accountId,\n table.objectId,\n table.id,\n ),\n scopeIdentity: uniqueIndex(\"knowledge_document_versions_scope_identity_uq\").on(\n table.accountId,\n table.id,\n table.scopeKey,\n ),\n }),\n);\n\nexport const knowledgeLifecycleEvents = pgTable(\n \"knowledge_lifecycle_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n targetKind: text(\"target_kind\").notNull(),\n providerId: uuid(\"provider_id\"),\n sourceId: uuid(\"source_id\"),\n objectId: uuid(\"object_id\"),\n eventType: text(\"event_type\").notNull(),\n oldState: text(\"old_state\").notNull(),\n newState: text(\"new_state\").notNull(),\n oldGeneration: bigint(\"old_generation\", { mode: \"number\" }).notNull(),\n newGeneration: bigint(\"new_generation\", { mode: \"number\" }).notNull(),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n reasonCode: text(\"reason_code\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n targetTimeline: index(\"knowledge_lifecycle_events_target_timeline_idx\").on(\n table.targetKind,\n table.providerId,\n table.sourceId,\n table.objectId,\n table.createdAt,\n ),\n }),\n);\n\nexport const knowledgeEntities = pgTable(\n \"knowledge_entities\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n entityType: text(\"entity_type\").notNull(),\n normalizedKey: text(\"normalized_key\").notNull(),\n displayName: text(\"display_name\").notNull(),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n naturalIdentity: uniqueIndex(\"knowledge_entities_natural_identity_uq\").on(\n table.accountId,\n table.scopeKey,\n table.entityType,\n table.normalizedKey,\n ),\n operation: uniqueIndex(\"knowledge_entities_operation_uq\").on(\n table.accountId,\n table.operationId,\n ),\n scopeIdentity: uniqueIndex(\"knowledge_entities_scope_identity_uq\").on(\n table.accountId,\n table.id,\n table.scopeKey,\n ),\n }),\n);\n\nexport const knowledgeEntityAliases = pgTable(\n \"knowledge_entity_aliases\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n entityId: uuid(\"entity_id\").notNull(),\n entityType: text(\"entity_type\").notNull(),\n alias: text(\"alias\").notNull(),\n normalizedAlias: text(\"normalized_alias\").notNull(),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n naturalIdentity: uniqueIndex(\"knowledge_entity_aliases_natural_identity_uq\").on(\n table.accountId,\n table.scopeKey,\n table.entityType,\n table.normalizedAlias,\n ),\n operation: uniqueIndex(\"knowledge_entity_aliases_operation_uq\").on(\n table.accountId,\n table.operationId,\n ),\n entity: index(\"knowledge_entity_aliases_entity_idx\").on(table.entityId, table.createdAt),\n }),\n);\n\nexport const knowledgeFacts = pgTable(\n \"knowledge_facts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n subjectEntityId: uuid(\"subject_entity_id\").notNull(),\n predicateKey: text(\"predicate_key\").notNull(),\n objectKind: text(\"object_kind\").notNull(),\n objectEntityId: uuid(\"object_entity_id\"),\n objectValue: jsonb(\"object_value\").$type<unknown>(),\n objectHash: text(\"object_hash\").notNull(),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n naturalIdentity: uniqueIndex(\"knowledge_facts_natural_identity_uq\").on(\n table.accountId,\n table.scopeKey,\n table.subjectEntityId,\n table.predicateKey,\n table.objectHash,\n ),\n operation: uniqueIndex(\"knowledge_facts_operation_uq\").on(table.accountId, table.operationId),\n scopeIdentity: uniqueIndex(\"knowledge_facts_scope_identity_uq\").on(\n table.accountId,\n table.id,\n table.scopeKey,\n ),\n }),\n);\n\nexport const knowledgeClaims = pgTable(\n \"knowledge_claims\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n factId: uuid(\"fact_id\").notNull(),\n origin: text(\"origin\").notNull(),\n confidenceBps: integer(\"confidence_bps\").notNull(),\n effectiveAt: timestamp(\"effective_at\", { withTimezone: true }).notNull(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }),\n extractionMethod: text(\"extraction_method\").notNull(),\n extractionMetadata: jsonb(\"extraction_metadata\")\n .$type<Record<string, unknown>>()\n .notNull()\n .default({}),\n modelProvider: text(\"model_provider\"),\n modelName: text(\"model_name\"),\n modelVersion: text(\"model_version\"),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n operation: uniqueIndex(\"knowledge_claims_operation_uq\").on(table.accountId, table.operationId),\n scopeIdentity: uniqueIndex(\"knowledge_claims_scope_identity_uq\").on(\n table.accountId,\n table.id,\n table.scopeKey,\n ),\n factTimeline: index(\"knowledge_claims_fact_timeline_idx\").on(\n table.factId,\n table.effectiveAt,\n table.createdAt,\n ),\n }),\n);\n\nexport const knowledgeClaimRelations = pgTable(\n \"knowledge_claim_relations\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n relationType: text(\"relation_type\").notNull(),\n fromClaimId: uuid(\"from_claim_id\").notNull(),\n toClaimId: uuid(\"to_claim_id\").notNull(),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n naturalIdentity: uniqueIndex(\"knowledge_claim_relations_natural_identity_uq\").on(\n table.relationType,\n table.fromClaimId,\n table.toClaimId,\n ),\n operation: uniqueIndex(\"knowledge_claim_relations_operation_uq\").on(\n table.accountId,\n table.operationId,\n ),\n }),\n);\n\nexport const knowledgeClaimEvidence = pgTable(\n \"knowledge_claim_evidence\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n claimId: uuid(\"claim_id\").notNull(),\n documentVersionId: uuid(\"document_version_id\").notNull(),\n polarity: text(\"polarity\").notNull(),\n documentChunkId: uuid(\"document_chunk_id\"),\n chunkIndex: integer(\"chunk_index\"),\n locator: text(\"locator\"),\n quoteHash: text(\"quote_hash\"),\n contentHash: text(\"content_hash\").notNull(),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n naturalIdentity: uniqueIndex(\"knowledge_claim_evidence_natural_identity_uq\").on(\n table.claimId,\n table.documentVersionId,\n table.polarity,\n sql`coalesce(${table.documentChunkId}::text, '')`,\n sql`coalesce(${table.locator}, '')`,\n ),\n operation: uniqueIndex(\"knowledge_claim_evidence_operation_uq\").on(\n table.accountId,\n table.operationId,\n ),\n claimPolarity: index(\"knowledge_claim_evidence_claim_polarity_idx\").on(\n table.claimId,\n table.polarity,\n table.createdAt,\n ),\n }),\n);\n\nexport const knowledgeClaimReviews = pgTable(\n \"knowledge_claim_reviews\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n claimId: uuid(\"claim_id\").notNull(),\n reviewRevision: bigint(\"review_revision\", { mode: \"number\" })\n .notNull()\n .default(sql`nextval('knowledge_claim_review_revision_seq')`),\n state: text(\"state\").notNull(),\n reason: text(\"reason\").notNull(),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n claimRevision: uniqueIndex(\"knowledge_claim_reviews_claim_revision_uq\").on(\n table.claimId,\n table.reviewRevision,\n ),\n operation: uniqueIndex(\"knowledge_claim_reviews_operation_uq\").on(\n table.accountId,\n table.operationId,\n ),\n claimTimeline: index(\"knowledge_claim_reviews_claim_timeline_idx\").on(\n table.claimId,\n table.reviewRevision,\n ),\n }),\n);\n\nexport const knowledgeChangeProposals = pgTable(\n \"knowledge_change_proposals\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n targetKind: text(\"target_kind\").notNull(),\n targetScope: text(\"target_scope\").notNull(),\n targetKey: text(\"target_key\"),\n content: text(\"content\").notNull(),\n contentHash: text(\"content_hash\").notNull(),\n claimId: uuid(\"claim_id\").notNull(),\n evidenceId: uuid(\"evidence_id\").notNull(),\n status: text(\"status\").notNull().default(\"proposed\"),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n operation: uniqueIndex(\"knowledge_change_proposals_operation_uq\").on(\n table.accountId,\n table.operationId,\n ),\n claimTimeline: index(\"knowledge_change_proposals_claim_timeline_idx\").on(\n table.claimId,\n table.createdAt,\n ),\n }),\n);\n"],"mappings":"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","names":["sql","bigint","boolean","check","index","integer","jsonb","pgTable","text","timestamp","uniqueIndex","uuid","sql","bigint","check","index","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","pgTable","uuid","text","timestamp","uniqueIndex","jsonb","index","sql","check","integer","boolean","bigint"]}