@sequenceholdings/orm 2.2.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.cjs +132 -61
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +132 -61
- package/dist/cli.js.map +1 -1
- package/dist/compiler.cjs +139 -33
- package/dist/compiler.cjs.map +1 -1
- package/dist/compiler.d.cts +6 -4
- package/dist/compiler.d.ts +6 -4
- package/dist/compiler.js +139 -33
- package/dist/compiler.js.map +1 -1
- package/dist/index.cjs +9 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/ir.cjs +9 -1
- package/dist/ir.cjs.map +1 -1
- package/dist/ir.d.cts +89 -3
- package/dist/ir.d.ts +89 -3
- package/dist/ir.js +8 -2
- package/dist/ir.js.map +1 -1
- package/dist/predicate-v2.cjs +127 -14
- package/dist/predicate-v2.cjs.map +1 -1
- package/dist/predicate-v2.d.cts +49 -4
- package/dist/predicate-v2.d.ts +49 -4
- package/dist/predicate-v2.js +127 -14
- package/dist/predicate-v2.js.map +1 -1
- package/dist/sdl.cjs +2 -1
- package/dist/sdl.cjs.map +1 -1
- package/dist/sdl.js +2 -1
- package/dist/sdl.js.map +1 -1
- package/package.json +1 -1
package/dist/ir.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/compiler/sql.ts","../src/checks/compile.ts","../src/constants.ts","../src/canonical/policy.ts","../src/canonical/resolved.ts","../src/canonical/v2.ts","../src/ir/index.ts"],"names":["identifier","column","z","index"],"mappings":"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","file":"ir.cjs","sourcesContent":["/** Claims are stamped per transaction by the Data API (`set_config('request.jwt.claims', …, true)`). */\nexport const CLAIMS_SETTING = 'request.jwt.claims'\n\n/** Claims JSON key holding the caller's granted capability pins (a string array). */\nexport const CAPABILITIES_CLAIM_KEY = 'capabilities'\n\n/** Claims JSON key holding the caller's granted custom roles (a string array). */\nexport const ROLES_CLAIM_KEY = 'roles'\n\nexport const quoteIdentifier = (name: string): string => `\"${name.replaceAll('\"', '\"\"')}\"`\n\nexport const quoteLiteral = (value: string): string => `'${value.replaceAll(\"'\", \"''\")}'`\n\n/** `nullif(…, '')` because a session that ever set the GUC reverts it to '' (not NULL) after the transaction — ''::jsonb is an error. */\nconst CLAIMS_SOURCE = `nullif(current_setting('${CLAIMS_SETTING}', true), '')::jsonb`\n\nexport const claimExpression = (key: string): string => `(${CLAIMS_SOURCE} ->> ${quoteLiteral(key)})`\n\n/** NULL claims (or a missing capabilities array) coalesce to false — capability checks fail closed. */\nconst scopedClaimsSource = (namespace?: string): string => namespace\n ? `(CASE WHEN ${CLAIMS_SOURCE} ? 'namespaces' THEN ${CLAIMS_SOURCE} -> 'namespaces' -> ${quoteLiteral(namespace)} ELSE ${CLAIMS_SOURCE} END)`\n : CLAIMS_SOURCE\n\nexport const capabilityExpression = (key: string, namespace?: string): string =>\n `coalesce(${scopedClaimsSource(namespace)} -> '${CAPABILITIES_CLAIM_KEY}' ? ${quoteLiteral(key)}, false)`\n\n/** NULL claims (or a missing roles array) coalesce to false — role checks fail closed. */\nexport const roleExpression = (key: string, namespace?: string): string =>\n `coalesce(${scopedClaimsSource(namespace)} -> '${ROLES_CLAIM_KEY}' ? ${quoteLiteral(key)}, false)`\n","import { quoteIdentifier, quoteLiteral } from '../compiler/sql.js'\n\n/** A deliberately small, data-only SQL predicate subset for PostgreSQL CHECK constraints. */\ntype Column = { name: string; columnName: string; type: string | { enum: string } }\ntype TokenKind = 'identifier' | 'string' | 'number' | 'operator' | 'lparen' | 'rparen' | 'comma' | 'end'\ntype Token = { kind: TokenKind; value: string; position: number }\ntype Value = { sql: string; column?: Column; literal?: boolean }\n\nfunction tokenize(source: string): Token[] {\n const tokens: Token[] = []\n for (let position = 0; position < source.length;) {\n const char = source[position]!\n if (/\\s/.test(char)) { position++; continue }\n if (char === '(' || char === ')' || char === ',') {\n tokens.push({ kind: char === '(' ? 'lparen' : char === ')' ? 'rparen' : 'comma', value: char, position })\n position++\n continue\n }\n if (char === \"'\") {\n const start = position++\n let value = ''\n let closed = false\n while (position < source.length) {\n if (source[position] !== \"'\") { value += source[position++]; continue }\n if (source[position + 1] === \"'\") { value += \"'\"; position += 2; continue }\n position++\n closed = true\n break\n }\n if (!closed) throw new Error(`unterminated string at position ${start}`)\n if (/[\\x00-\\x1f\\x7f]/.test(value)) throw new Error(`control character in string at position ${start}`)\n tokens.push({ kind: 'string', value, position: start })\n continue\n }\n const operator = /^(<=|>=|<>|!=|!~|=|<|>|~)/.exec(source.slice(position))\n if (operator) {\n tokens.push({ kind: 'operator', value: operator[0] === '<>' ? '!=' : operator[0], position })\n position += operator[0].length\n continue\n }\n const number = /^-?\\d+(?:\\.\\d+)?/.exec(source.slice(position))\n if (number) {\n tokens.push({ kind: 'number', value: number[0], position })\n position += number[0].length\n continue\n }\n const identifier = /^[a-zA-Z_][a-zA-Z_0-9]*/.exec(source.slice(position))\n if (identifier) {\n tokens.push({ kind: 'identifier', value: identifier[0], position })\n position += identifier[0].length\n continue\n }\n throw new Error(`unexpected character '${char}' at position ${position}`)\n }\n tokens.push({ kind: 'end', value: '', position: source.length })\n if (tokens.length > 256) throw new Error('check expression exceeds 256 tokens')\n return tokens\n}\n\nclass Parser {\n private index = 0\n private depth = 0\n private readonly columns: Map<string, Column>\n\n constructor(private readonly tokens: Token[], columns: readonly Column[]) {\n this.columns = new Map()\n for (const column of columns) {\n for (const alias of [column.name, column.columnName]) {\n const previous = this.columns.get(alias)\n if (previous && previous.columnName !== column.columnName) {\n throw new Error(`ambiguous check column '${alias}'`)\n }\n this.columns.set(alias, column)\n }\n }\n }\n\n parse(): string {\n const expression = this.parseOr()\n this.expect('end', 'end of expression')\n return expression\n }\n\n private parseOr(): string {\n let left = this.parseAnd()\n while (this.matchKeyword('or')) left = `(${left} OR ${this.parseAnd()})`\n return left\n }\n\n private parseAnd(): string {\n let left = this.parseNot()\n while (this.matchKeyword('and')) left = `(${left} AND ${this.parseNot()})`\n return left\n }\n\n private parseNot(): string {\n if (this.matchKeyword('not')) return `(NOT ${this.parseNot()})`\n return this.parsePrimary()\n }\n\n private parsePrimary(): string {\n if (this.peek().kind === 'lparen') {\n if (++this.depth > 32) throw new Error('check expression nesting exceeds 32 levels')\n this.advance()\n const expression = this.parseOr()\n this.expect('rparen', \"')'\")\n this.depth--\n return `(${expression})`\n }\n return this.parseComparison()\n }\n\n private parseComparison(): string {\n const left = this.parseValue()\n if (this.matchKeyword('is')) {\n const negate = this.matchKeyword('not')\n this.expectKeyword('null')\n return `${left.sql} IS ${negate ? 'NOT ' : ''}NULL`\n }\n if (this.matchKeyword('between')) {\n const lower = this.parseValue()\n this.expectKeyword('and')\n const upper = this.parseValue()\n return `${left.sql} BETWEEN ${lower.sql} AND ${upper.sql}`\n }\n if (this.matchKeyword('in')) {\n this.expect('lparen', \"'(' after IN\")\n const values = [this.parseValue()]\n while (this.peek().kind === 'comma') { this.advance(); values.push(this.parseValue()) }\n this.expect('rparen', \"')' after IN values\")\n if (values.some(value => !value.literal)) throw new Error('IN values must be literals')\n return `${left.sql} IN (${values.map(value => value.sql).join(', ')})`\n }\n const operator = this.expect('operator', 'a comparison operator')\n const right = this.parseValue()\n if (operator.value === '~' || operator.value === '!~') {\n if (left.column && left.column.type !== 'text') throw new Error('regex checks require a text column')\n if (!right.literal) throw new Error('regex pattern must be a literal')\n }\n return `${left.sql} ${operator.value} ${right.sql}`\n }\n\n private parseValue(): Value {\n const token = this.advance()\n if (token.kind === 'string') return { sql: quoteLiteral(token.value), literal: true }\n if (token.kind === 'number') {\n const number = Number(token.value)\n if (!Number.isFinite(number) || (Number.isInteger(number) && !Number.isSafeInteger(number))) {\n throw new Error(`unsafe numeric literal at position ${token.position}`)\n }\n return { sql: token.value, literal: true }\n }\n if (token.kind !== 'identifier') throw new Error(`expected a column or literal at position ${token.position}`)\n const keyword = token.value.toLowerCase()\n if (keyword === 'true' || keyword === 'false' || keyword === 'null') return { sql: keyword.toUpperCase(), literal: true }\n if (keyword === 'btrim') {\n this.expect('lparen', \"'(' after btrim\")\n const column = this.parseColumn()\n this.expect('rparen', \"')' after btrim column\")\n if (column.type !== 'text') throw new Error('btrim requires a text column')\n return { sql: `btrim(${quoteIdentifier(column.columnName)})`, column }\n }\n const column = this.columns.get(token.value)\n if (!column) throw new Error(`unknown check column '${token.value}'`)\n return { sql: quoteIdentifier(column.columnName), column }\n }\n\n private parseColumn(): Column {\n const token = this.expect('identifier', 'a column name')\n const column = this.columns.get(token.value)\n if (!column) throw new Error(`unknown check column '${token.value}'`)\n return column\n }\n\n private peek(): Token { return this.tokens[this.index]! }\n private advance(): Token { const token = this.peek(); if (token.kind !== 'end') this.index++; return token }\n private matchKeyword(keyword: string): boolean {\n if (this.peek().kind !== 'identifier' || this.peek().value.toLowerCase() !== keyword) return false\n this.advance()\n return true\n }\n private expectKeyword(keyword: string): void {\n if (!this.matchKeyword(keyword)) throw new Error(`expected '${keyword}' at position ${this.peek().position}`)\n }\n private expect(kind: TokenKind, description: string): Token {\n const token = this.peek()\n if (token.kind !== kind) throw new Error(`expected ${description} at position ${token.position}`)\n return this.advance()\n }\n}\n\nexport function compileCheckExpression(source: string, columns: readonly Column[]): string {\n return new Parser(tokenize(source), columns).parse()\n}\n","/** Shared grammar for namespace identifiers; never interpolate arbitrary paths. */\nexport const NAMESPACE_PATTERN = /^[a-z][a-z0-9_]{0,40}$/\n\n/** Caller-scoped delegated data credential, supplied by an authenticated host. */\nexport const ORM_DATA_TOKEN_HEADER = 'x-sequence-data-token'\n\n/** Separate service-identity credential; never used as an implicit fallback. */\nexport const ORM_SERVICE_DATA_TOKEN_HEADER = 'x-sequence-data-token-service'\n\nexport const IDENTIFIER_PATTERN = /^[a-z][a-z0-9_]*$/\n/** Native source columns may have one leading underscore; relation names may not. */\nexport const COLUMN_IDENTIFIER_PATTERN = /^_?[a-z][a-z0-9_]*$/\nexport const MAX_IDENTIFIER_LENGTH = 63\n\n/**\n * Custom Roles & Capabilities claim keys as policies reference them: a\n * host-scoped registry key, an org pin's `org/<key>`, or an Application\n * capability pin's `app/<application-id>/<key>`. Matches the registry\n * key grammar EXACTLY (`[a-z0-9-]`, 1–64 chars, no `_` — the FGA object-id\n * delimiter) so any capability that's declarable/attachable in namespace.yaml\n * can also be referenced here — a stricter pattern would let a valid key\n * register yet fail at apply (e.g. `org/2fa`, a one-char or digit-led key).\n */\nexport const CAPABILITY_KEY_PATTERN = /^(?:org\\/|app\\/[a-z][a-z0-9-]{0,63}\\/)?[a-z0-9-]{1,64}$/\n\nexport const CLAIM_KEY_PATTERN = /^[a-z][a-z0-9_]*$/\n\n/** Qualified reference to a table outside the defining file: `<schema>.<table>`. */\nexport const QUALIFIED_TABLE_PATTERN = /^[a-z][a-z0-9_]{0,62}\\.[a-z][a-z0-9_]{0,62}$/\n\n/** Qualified source syntax only; the serving installation controls authorized backing. */\nexport const SYNCED_SOURCE_PATTERN = QUALIFIED_TABLE_PATTERN\n\nexport const ORM_SCHEMA_PREFIX = 'orm_'\nexport const CONSUMER_ROLE_SUFFIX = '_consumer'\n\nexport const ormSchemaName = (namespace: string): string => `${ORM_SCHEMA_PREFIX}${namespace}`\nexport const consumerRoleName = (namespace: string): string =>\n `${ORM_SCHEMA_PREFIX}${namespace}${CONSUMER_ROLE_SUFFIX}`\n\nexport const DEFINITION_FILE_EXTENSIONS = ['.yml', '.yaml'] as const\n\n/** Reserved basenames for the namespace-level config file (description, org capability pins). */\nexport const NAMESPACE_CONFIG_FILENAMES = new Set(['namespace.yaml', 'namespace.yml'])\n\nexport const HASH_DOMAIN = 'sequence-orm-definitions\\0'\n\n/**\n * A per-file byte cap where the loader reads untrusted YAML into memory — a real failure mode, not a product\n * limit. Counts of tables/indexes/params and policy/SQL lengths are\n * deliberately uncapped; Postgres enforces its own limits loudly at apply.\n */\nexport const MAX_DEFINITION_FILE_BYTES = 1024 * 1024\n\n/** Generated SDL aggregates every table/view; it is not an individual source file. */\nexport const MAX_GENERATED_SDL_BYTES = 16 * 1024 * 1024\n\n/** Registration and reviewed exports carry SDL, canonical metadata, snapshots and migrations. */\nexport const ORM_REGISTRATION_MAX_BYTES = 64 * 1024 * 1024\n\n/** `/api/data/<ns>/actions/…` and `/api/data/<ns>/query` share the table path segment. */\nexport const RESERVED_TABLE_NAMES = new Set(['actions', 'query'])\n\n/**\n * The Data API's query-string grammar owns these parameter names — a column\n * with one of them could never be filtered over the wire, so definitions\n * refuse it up front (\"validate rejects only what can never work\").\n */\nexport const RESERVED_COLUMN_NAMES = new Set(['select', 'order', 'limit', 'offset'])\n\n/**\n * Per-cell metadata (`cellMetadata: true`, and every resolved-table source) is\n * stored as typed system columns beside each tracked column `c`:\n *\n * - `c__at` timestamptz — when the cell was last written (NULL: never / no opinion)\n * - `c__by` text — who wrote it\n * - `c__rev` uuid — a resolved table's manual source only: the edit's\n * identity, so an async writeback confirmation clears\n * only the exact edit it delivered\n *\n * A resolved view additionally exposes, per resolved column, the winner's\n * `c__src` (source name) and `c__lost` (newer candidates that lost, jsonb).\n * None of these are GraphQL columns: they surface through the typed `cells`\n * object and are never client-writable.\n */\nexport const CELL_PARTS = ['at', 'by', 'rev', 'source', 'conflicts'] as const\nexport type CellPart = (typeof CELL_PARTS)[number]\nexport const CELL_PART_SUFFIX: Readonly<Record<CellPart, string>> = {\n at: '__at', by: '__by', rev: '__rev', source: '__src', conflicts: '__lost',\n}\n/** Longest physical column name that can carry cell parts (63 minus the longest suffix). */\nexport const MAX_TRACKED_COLUMN_NAME = MAX_IDENTIFIER_LENGTH - 6\n/** GraphQL field carrying a row's per-cell metadata object. */\nexport const CELLS_FIELD = 'cells'\n\n/** Physical (and logical) name of one cell part of a column. */\nexport function cellColumnName(column: string, part: CellPart): string {\n return `${column}${CELL_PART_SUFFIX[part]}`\n}\n\n/**\n * Actor recorded when the data plane computes a materialized resolved table's\n * rows for every caller. Its claims are what the compute view's synced\n * sources see (materialized ETL sources must be readable by anyone).\n */\nexport const MATERIALIZE_ACTOR = 'orm:materialize'\nexport const MATERIALIZE_CLAIMS_JSON = JSON.stringify({ sub: MATERIALIZE_ACTOR, org: null, roles: [], capabilities: [] })\n\n/**\n * Apply-generated function that reconciles a materialized resolved table with\n * its compute view: `SELECT * FROM orm_<ns>.\"<table>__refresh\"(wait)` returns\n * `(upserted, deleted, locked)`; without `wait` it skips when another refresh\n * holds the table's lock. The one refresh implementation — the Atlas\n * reconcile, the post-ETL hook, and an operator in psql all call it.\n */\nexport function materializedRefreshFunctionName(table: string): string {\n return `${table}__refresh`\n}\n\n/**\n * Advisory-lock key serializing a materialized table's refreshes (hashed with\n * `hashtext`). A full refresh holds it exclusively and every ORM write's\n * per-row refresh holds it shared, both before reading the compute view — so\n * a full refresh never reads a snapshot older than a write it then overwrites.\n */\nexport function materializeLockKey(schema: string, table: string): string {\n return `orm:materialize:${schema}.${table}`\n}\n","/**\n * Policy expression grammar shared by tables, views and resolved tables. The\n * DSL strings are parsed and claim-checked by predicate-v2 in both the CLI\n * and the server; variants follow §4c permissive-union semantics.\n */\nimport { z } from 'zod'\n\nexport const policyVariantSchema = z.object({\n /** Claims-only guard (capability()/role()/claim() comparisons — no columns). */\n when: z.string().min(1).max(1000),\n /** Exactly one of: allow-all bypass, or a row predicate. */\n allow: z.literal(true).optional(),\n policy: z.string().min(1).max(2000).optional(),\n}).refine((v) => (v.allow === true) !== (typeof v.policy === 'string'), {\n message: 'A variant declares exactly one of allow: true or policy',\n})\n\nexport const policyExpressionSchema = z.union([\n z.string().min(1).max(2000),\n z.object({\n default: z.string().min(1).max(2000),\n variants: z.array(policyVariantSchema).max(10).default([]),\n }),\n])\nexport type PolicyExpression = z.infer<typeof policyExpressionSchema>\n","/**\n * Canonical contract for resolved tables: one logical table (a generated\n * managed view) backed by N source tables of three kinds —\n *\n * - `manual` an internal ORM table holding sparse user edits (the only\n * GraphQL mutation target),\n * - `etl` a synced (`source: schema.table`) table fed by a pipeline,\n * - `prefetch` an internal ORM \"live\" table filled by a function that reads\n * the source system on demand (and confirms writebacks).\n *\n * Each column picks its value across candidate sources with a SQL comparator\n * compiled into the view, so policies, filters, sorting and nested relations\n * all see resolved values. This module owns the metadata the compiler (write\n * roots, directives) and data plane (prefetch, writeback) need; the view SQL\n * itself is generated at authoring time and validated like any managed view.\n */\nimport { z } from 'zod'\nimport { cellColumnName, type CellPart } from '../constants.js'\nimport { policyExpressionSchema } from './policy.js'\n\n/** `'1500ms'` / `'30s'` / `'5m'` (or a millisecond number) → milliseconds; undefined when malformed. */\nexport function parseDurationMs(input: number | string): number | undefined {\n if (typeof input === 'number') return Number.isInteger(input) && input > 0 ? input : undefined\n const match = /^(\\d+(?:\\.\\d+)?)(ms|s|m)$/.exec(input)\n if (!match) return undefined\n const factor = match[2] === 'ms' ? 1 : match[2] === 's' ? 1000 : 60_000\n const value = Math.round(Number(match[1]) * factor)\n return value > 0 ? value : undefined\n}\n\nconst identifier = z.string().min(1).max(63).regex(/^[a-z][a-z0-9_]*$/)\nconst durationMs = z.number().int().positive().max(24 * 60 * 60 * 1000)\n\n/**\n * Row-level system columns the generated view adds after the authored columns\n * (GraphQL fields). Per-cell provenance lives in typed cell parts instead —\n * see RESOLVED_VIEW_CELL_PARTS.\n */\nexport const RESOLVED_VIEW_SYSTEM_COLUMNS = {\n writebackStatus: { name: 'writebackStatus', columnName: '_writeback_status', type: 'text' },\n writebackError: { name: 'writebackError', columnName: '_writeback_error', type: 'text' },\n} as const\n\n/** System columns on the internal manual / live tables (never exposed in GraphQL). */\nexport const RESOLVED_SOURCE_SYSTEM_COLUMNS = {\n tombstoned: { name: 'sysTombstoned', columnName: '_tombstoned' },\n fetchedAt: { name: 'sysFetchedAt', columnName: '_fetched_at' },\n writebackStatus: { name: 'sysWritebackStatus', columnName: '_writeback_status' },\n writebackError: { name: 'sysWritebackError', columnName: '_writeback_error' },\n writebackAt: { name: 'sysWritebackAt', columnName: '_writeback_at' },\n} as const\n\n/** Cell parts the resolved view exposes per resolved column: the winner's source, time, actor, and newer losers. */\nexport const RESOLVED_VIEW_CELL_PARTS = ['source', 'at', 'by', 'conflicts'] as const satisfies readonly CellPart[]\n/** Cell parts on a resolved table's internal sources; only the manual source carries `rev`. */\nexport const RESOLVED_SOURCE_CELL_PARTS = { manual: ['at', 'by', 'rev'], prefetch: ['at', 'by'] } as const satisfies Record<'manual' | 'prefetch', readonly CellPart[]>\n\nexport const RESERVED_RESOLVED_COLUMN_NAMES: ReadonlySet<string> = new Set([\n ...Object.values(RESOLVED_VIEW_SYSTEM_COLUMNS).flatMap((c) => [c.name, c.columnName]),\n ...Object.values(RESOLVED_SOURCE_SYSTEM_COLUMNS).flatMap((c) => [c.name, c.columnName]),\n])\n\nexport const COMPARATORS = ['latest', 'highest', 'lowest', 'priority', 'nonNullFirst', 'custom'] as const\nexport type ComparatorKind = (typeof COMPARATORS)[number]\n\nexport const canonicalFunctionRefSchema = z.object({\n /** `managed` = a Managed Function id/slug; `native` = an in-process Atlas function (reserved). */\n kind: z.enum(['managed', 'native']),\n id: z.string().min(1).max(200),\n}).strict()\nexport type CanonicalFunctionRef = z.infer<typeof canonicalFunctionRefSchema>\n\n/** What the source API can fetch: one key per call, or a batch of up to maxKeys. */\nexport const canonicalFetchShapeSchema = z.union([\n z.object({ shape: z.literal('single') }).strict(),\n z.object({ shape: z.literal('batch'), maxKeys: z.number().int().min(2).max(500) }).strict(),\n])\nexport type CanonicalFetchShape = z.infer<typeof canonicalFetchShapeSchema>\n\nexport const canonicalResolvedSourceSchema = z.object({\n name: identifier,\n kind: z.enum(['manual', 'etl', 'prefetch']),\n /** Backing relation in this namespace: an internal table (manual/prefetch) or a synced table (etl). */\n table: identifier,\n /** Resolved columns (logical names) this source supplies — the primary key is implicit. */\n columns: z.array(z.string().min(1).max(63)).min(1).max(500),\n /** etl: logical timestamptz/date column on the synced table used as every cell's updated_at. */\n updatedAt: z.string().min(1).max(63).optional(),\n /** prefetch: resolved column holding the source system's key (may be the primary key). */\n key: z.string().min(1).max(63).optional(),\n fetch: canonicalFetchShapeSchema.optional(),\n function: canonicalFunctionRefSchema.optional(),\n prefetchDefaults: z.object({\n maxStalenessMs: durationMs,\n timeoutMs: durationMs,\n onError: z.enum(['fallback', 'fail']),\n }).strict().optional(),\n writeback: z.object({\n columns: z.array(z.string().min(1).max(63)).min(1).max(500),\n defaultMode: z.enum(['sync', 'async']),\n timeoutMs: durationMs,\n /** Remove confirmed cells from the manual source so a stale edit cannot shadow the source. */\n clearManualOnConfirm: z.boolean(),\n }).strict().optional(),\n}).strict()\nexport type CanonicalResolvedSource = z.infer<typeof canonicalResolvedSourceSchema>\n\nexport const canonicalResolveRuleSchema = z.object({\n column: z.string().min(1).max(63),\n comparator: z.enum(COMPARATORS),\n /** Source names, in tie-break order. */\n candidates: z.array(identifier).min(1).max(16),\n /** custom only: SQL ORDER BY key over value / updated_at / source / actor / ord. */\n orderBy: z.string().min(1).max(2000).optional(),\n}).strict()\nexport type CanonicalResolveRule = z.infer<typeof canonicalResolveRuleSchema>\n\nexport const canonicalResolvedSchema = z.object({\n sources: z.array(canonicalResolvedSourceSchema).min(1).max(16),\n /** One rule per resolved (non-pk) column; documents the generated view for tooling. */\n resolve: z.array(canonicalResolveRuleSchema).max(500),\n /** Sources whose tombstone hides the resolved row (v1: the manual source only). */\n deletedBy: z.array(identifier).max(1).default([]),\n /**\n * Materialized: the view reads an indexed internal table (`table`) that the\n * data plane keeps in step with `compute`, the internal view holding the\n * resolution query. Omitted when the view computes on read.\n */\n materialized: z.object({ table: identifier, compute: identifier }).strict().optional(),\n /** Write policies evaluated against the RESOLVED row (reads use the view's read policy). */\n policies: z.object({\n write: policyExpressionSchema.optional(),\n insert: policyExpressionSchema.optional(),\n update: policyExpressionSchema.optional(),\n }).strict().default({}),\n}).strict()\nexport type CanonicalResolved = z.infer<typeof canonicalResolvedSchema>\n\ninterface RelationShape {\n table: string\n source?: string\n internal?: true\n cellMetadata?: true\n materializes?: string\n policies?: { read?: string | { default: string; variants: unknown[] } }\n primaryKey?: string[]\n columns: Array<{ name: string; columnName: string; type: unknown; cell?: { of: string; part: CellPart } }>\n}\ninterface ViewShape {\n view: string\n internal?: true\n primaryKey?: string[]\n columns: Array<{ name: string; columnName: string; type: unknown; nullable?: boolean; cell?: { of: string; part: CellPart } }>\n resolved?: CanonicalResolved\n}\n\ntype Column = ViewShape['columns'][number]\n\ninterface ValidationScope {\n view: ViewShape\n resolved: CanonicalResolved\n pkColumn: Column\n dataColumns: Map<string, Column>\n sourceByName: Map<string, CanonicalResolvedSource>\n fail: (message: string) => void\n}\n\n/**\n * Cross-relation validation for one resolved view. Returns messages rather\n * than throwing so the definition-level superRefine can attach paths.\n */\nexport function validateResolvedView({ view, tables, views = [] }: { view: ViewShape; tables: readonly RelationShape[]; views?: readonly ViewShape[] }): string[] {\n const resolved = view.resolved\n if (!resolved) return []\n const errors: string[] = []\n const fail = (message: string) => errors.push(`resolved table '${view.view}': ${message}`)\n\n const pkColumn = view.primaryKey?.length === 1 ? view.columns.find((c) => c.columnName === view.primaryKey?.[0]) : undefined\n if (!pkColumn) {\n fail('requires exactly one primary-key column')\n return errors\n }\n const systemNames = new Set<string>(Object.values(RESOLVED_VIEW_SYSTEM_COLUMNS).map((c) => c.name))\n const scope: ValidationScope = {\n view,\n resolved,\n pkColumn,\n dataColumns: new Map(view.columns.filter((c) => !systemNames.has(c.name) && c.cell === undefined).map((c) => [c.name, c])),\n sourceByName: new Map(),\n fail,\n }\n if (resolved.sources.filter((source) => source.kind === 'manual').length !== 1) fail('requires exactly one manual source')\n\n const tableByName = new Map(tables.map((table) => [table.table, table]))\n for (const source of resolved.sources) {\n if (scope.sourceByName.has(source.name)) fail(`duplicate source '${source.name}'`)\n scope.sourceByName.set(source.name, source)\n const table = tableByName.get(source.table)\n if (!table) fail(`source '${source.name}' references unknown table '${source.table}'`)\n else validateSource({ scope, source, table })\n }\n validateRules(scope)\n validateViewCells(scope)\n if (resolved.materialized) validateMaterialized({ scope, tableByName, views })\n for (const name of resolved.deletedBy) {\n if (scope.sourceByName.get(name)?.kind !== 'manual') fail(`deletedBy '${name}' must be the manual source`)\n }\n return errors\n}\n\nfunction validateSource({ scope, source, table }: { scope: ValidationScope; source: CanonicalResolvedSource; table: RelationShape }): void {\n const { fail } = scope\n if (source.kind === 'etl' && table.source === undefined) fail(`etl source '${source.name}' must reference a synced table`)\n if (source.kind !== 'etl' && (table.internal !== true || table.cellMetadata !== true)) {\n fail(`${source.kind} source '${source.name}' must reference an internal table with cell metadata`)\n }\n const hasRev = table.columns.some((column) => column.cell?.part === 'rev')\n if (source.kind === 'manual' && !hasRev) fail(`manual source '${source.name}' must carry '__rev' cell columns`)\n if (source.kind === 'prefetch' && hasRev) fail(`prefetch source '${source.name}' must not carry '__rev' cell columns`)\n const byName = new Map(table.columns.map((c) => [c.name, c]))\n validateSourceColumns({ scope, source, byName })\n if (source.kind === 'etl') {\n const updatedAt = source.updatedAt === undefined ? undefined : byName.get(source.updatedAt)\n if (source.updatedAt !== undefined && updatedAt?.type !== 'timestamptz' && updatedAt?.type !== 'date') {\n fail(`etl source '${source.name}' updatedAt must name a timestamptz/date column on '${source.table}'`)\n }\n }\n validatePrefetchFields({ scope, source })\n}\n\nfunction validatePrefetchFields({ scope, source }: { scope: ValidationScope; source: CanonicalResolvedSource }): void {\n const { fail, pkColumn } = scope\n if (source.kind !== 'prefetch') {\n if (source.key || source.fetch || source.function || source.prefetchDefaults || source.writeback) {\n fail(`only prefetch sources may declare key/fetch/function/prefetchDefaults/writeback ('${source.name}')`)\n }\n return\n }\n if (!source.key || !source.fetch || !source.function || !source.prefetchDefaults) {\n fail(`prefetch source '${source.name}' requires key, fetch, function and prefetchDefaults`)\n } else if (source.key !== pkColumn.name && !source.columns.includes(source.key)) {\n fail(`prefetch source '${source.name}' key '${source.key}' must be the primary key or one of its columns`)\n }\n for (const column of source.writeback?.columns ?? []) {\n if (!source.columns.includes(column)) fail(`prefetch source '${source.name}' writes back '${column}', which it does not supply`)\n }\n}\n\nfunction validateSourceColumns({ scope, source, byName }: {\n scope: ValidationScope\n source: CanonicalResolvedSource\n byName: Map<string, Column>\n}): void {\n const { fail, pkColumn, dataColumns } = scope\n for (const column of [pkColumn.name, ...source.columns]) {\n const own = column === pkColumn.name ? pkColumn : dataColumns.get(column)\n const theirs = byName.get(column)\n if (!own) fail(`source '${source.name}' supplies unknown column '${column}'`)\n else if (!theirs) fail(`source '${source.name}' table '${source.table}' has no column '${column}'`)\n else if (JSON.stringify(theirs.type) !== JSON.stringify(own.type)) fail(`column '${column}' has a different type on source '${source.name}'`)\n }\n}\n\nfunction validateRules({ resolved, pkColumn, dataColumns, sourceByName, fail }: ValidationScope): void {\n const ruled = new Set<string>()\n for (const rule of resolved.resolve) {\n if (!dataColumns.has(rule.column) || rule.column === pkColumn.name) {\n fail(`resolve rule targets unknown column '${rule.column}'`)\n continue\n }\n if (ruled.has(rule.column)) fail(`column '${rule.column}' has more than one resolve rule`)\n ruled.add(rule.column)\n if ((rule.comparator === 'custom') !== (rule.orderBy !== undefined)) {\n fail(`column '${rule.column}': orderBy is required for custom comparators and only allowed there`)\n }\n if (new Set(rule.candidates).size !== rule.candidates.length) fail(`column '${rule.column}' repeats a candidate`)\n for (const candidate of rule.candidates) {\n const source = sourceByName.get(candidate)\n if (!source) fail(`column '${rule.column}' names unknown candidate source '${candidate}'`)\n else if (!source.columns.includes(rule.column)) fail(`column '${rule.column}' candidate '${candidate}' does not supply it`)\n }\n }\n for (const column of dataColumns.keys()) {\n if (column !== pkColumn.name && !ruled.has(column)) fail(`column '${column}' has no resolve rule`)\n }\n}\n\nconst VIEW_CELL_TYPES: Readonly<Record<(typeof RESOLVED_VIEW_CELL_PARTS)[number], string>> = {\n source: 'text', at: 'timestamptz', by: 'text', conflicts: 'jsonb',\n}\n\n/** The view carries exactly source/at/by/conflicts per resolved (non-pk) column. */\nfunction validateViewCells({ view, dataColumns, pkColumn, fail }: ValidationScope): void {\n const expected = new Map<string, { part: string; columnName: string }>()\n for (const column of dataColumns.values()) {\n if (column.name === pkColumn.name) continue\n for (const part of RESOLVED_VIEW_CELL_PARTS) {\n expected.set(cellColumnName(column.name, part), { part, columnName: cellColumnName(column.columnName, part) })\n }\n }\n for (const column of view.columns) {\n if (!column.cell) continue\n const want = expected.get(column.name)\n if (!want || want.part !== column.cell.part || want.columnName !== column.columnName || cellColumnName(column.cell.of, column.cell.part) !== column.name) {\n fail(`unexpected cell column '${column.name}'`)\n continue\n }\n if (column.type !== VIEW_CELL_TYPES[column.cell.part as keyof typeof VIEW_CELL_TYPES]) fail(`cell column '${column.name}' must be ${VIEW_CELL_TYPES[column.cell.part as keyof typeof VIEW_CELL_TYPES]}`)\n expected.delete(column.name)\n }\n for (const name of expected.keys()) fail(`missing cell column '${name}'`)\n}\n\nconst columnSignature = (columns: ReadonlyArray<{ name: string; columnName: string; type: unknown }>) =>\n JSON.stringify(columns.map((column) => [column.name, column.columnName, column.type]))\n\n/**\n * A materialized resolved table: its internal table mirrors the view column\n * for column, its compute view produces those columns, and every ETL source\n * is readable by anyone — the copy is computed once for all callers, so no\n * source may filter rows per caller (the view's own read policy still does).\n */\nfunction validateMaterialized({ scope, tableByName, views }: {\n scope: ValidationScope\n tableByName: Map<string, RelationShape>\n views: readonly ViewShape[]\n}): void {\n const { view, resolved, fail } = scope\n const { table: tableName, compute: computeName } = resolved.materialized!\n const table = tableByName.get(tableName)\n if (!table || table.internal !== true || table.materializes !== view.view) {\n fail(`materialized table '${tableName}' must be an internal table that materializes '${view.view}'`)\n } else {\n if (columnSignature(table.columns) !== columnSignature(view.columns)) fail(`materialized table '${tableName}' must have exactly the view's columns`)\n if (JSON.stringify(table.primaryKey ?? []) !== JSON.stringify(view.primaryKey ?? [])) fail(`materialized table '${tableName}' must share the view's primary key`)\n }\n const compute = views.find((candidate) => candidate.view === computeName)\n if (!compute || compute.internal !== true) fail(`compute view '${computeName}' must be an internal view`)\n else if (columnSignature(compute.columns) !== columnSignature(view.columns)) fail(`compute view '${computeName}' must have exactly the view's columns`)\n for (const source of resolved.sources) {\n if (source.kind !== 'etl') continue\n const read = tableByName.get(source.table)?.policies?.read\n const unconditional = typeof read === 'string' ? read.trim() === 'true' : read !== undefined && read.default.trim() === 'true' && read.variants.length === 0\n if (!unconditional) {\n fail(`etl source '${source.name}' must have read policy 'true' to be materialized (the copy is shared by every caller)`)\n }\n }\n}\n","/**\n * Canonical namespace definition v2 — the data-only JSON a consumer's\n * TypeScript schema serializes to. This is v2's equivalent of the v1 YAML\n * `NamespaceDefinition`: the CLI's jiti loader produces it, the content hash\n * is computed over it, the server re-validates it (consumer TS never runs\n * server-side), and the SDL generator / GraphQL compiler / migration engine\n * all consume it.\n *\n * FROZEN CONTRACT (week 1): downstream tracks build against these shapes.\n * Additive evolution only; `definition_format` discriminates on the wire.\n */\nimport { z } from 'zod'\nexport { ontologyContractSchema, readOntologyContract, type OntologyContract } from '../ontology-contract.js'\nimport { compileCheckExpression } from '../checks/compile.js'\nimport {\n CELL_PART_SUFFIX, CELL_PARTS, COLUMN_IDENTIFIER_PATTERN, MAX_TRACKED_COLUMN_NAME, QUALIFIED_TABLE_PATTERN, cellColumnName, type CellPart,\n} from '../constants.js'\nimport { policyExpressionSchema } from './policy.js'\nimport { canonicalResolvedSchema, validateResolvedView, type CanonicalResolved } from './resolved.js'\n\nexport * from './resolved.js'\n\nexport const CANONICAL_FORMAT = 2 as const\n\n/** Identifier grammar shared with v1 (`^[a-z][a-z0-9_]*$`, ≤63 bytes). */\nexport const IDENTIFIER_RE = /^[a-z][a-z0-9_]*$/\nconst identifier = z.string().min(1).max(63).regex(IDENTIFIER_RE)\nconst columnIdentifier = z.string().min(1).max(63).regex(COLUMN_IDENTIFIER_PATTERN)\n\n/** The 10 v1 column types, unchanged in v2. */\nexport const COLUMN_TYPES = [\n 'uuid', 'text', 'integer', 'bigint', 'numeric', 'double',\n 'boolean', 'timestamptz', 'date', 'jsonb',\n] as const\nexport type ColumnType = (typeof COLUMN_TYPES)[number]\n\nconst columnTypeSchema = z.enum(COLUMN_TYPES)\n\n/** Enum columns reference a namespace-level `defineEnum` by name. */\nexport const canonicalEnumSchema = z.object({\n name: identifier,\n values: z.array(z.string().min(1).max(63)).min(1).max(100),\n})\nexport type CanonicalEnum = z.infer<typeof canonicalEnumSchema>\n\nexport const canonicalColumnSchema = z.object({\n /** Property name in TS (camelCase); columnName is the Postgres name. */\n name: z.string().min(1).max(63),\n columnName: columnIdentifier,\n type: z.union([columnTypeSchema, z.object({ enum: identifier })]),\n nullable: z.boolean().default(true),\n unique: z.boolean().default(false),\n /** Literal default, or one of the allowlisted SQL functions. */\n default: z.union([z.string(), z.number(), z.boolean(), z.null()]).optional(),\n defaultFn: z.enum(['gen_random_uuid()', 'now()']).optional(),\n /**\n * Stamp this column from the database clock on UPDATE (`now()`). The\n * column stays insertable (defaults fill gaps) but is omitted from\n * SetInput / settable so callers cannot backdate it.\n */\n onUpdateFn: z.enum(['now()']).optional(),\n description: z.string().max(500).optional(),\n /** Migration hints — same semantics as v1. */\n renamedFrom: columnIdentifier.optional(),\n cast: z.string().max(200).optional(),\n deprecated: z.boolean().default(false),\n /**\n * Marks a system cell-metadata column (see CELL_PARTS in constants): part\n * `part` of the cell of logical column `of`. Synthesized by authoring,\n * never client-writable, absent from GraphQL scalar fields. Omitted on\n * ordinary columns so their hashes are unchanged.\n */\n cell: z.object({ of: z.string().min(1).max(63), part: z.enum(CELL_PARTS) }).strict().optional(),\n}).superRefine((column, ctx) => {\n if (column.onUpdateFn === undefined) return\n if (typeof column.type !== 'string' || (column.type !== 'timestamptz' && column.type !== 'date')) {\n ctx.addIssue({\n code: 'custom',\n path: ['onUpdateFn'],\n message: `onUpdateFn '${column.onUpdateFn}' is only valid on timestamptz/date columns`,\n })\n }\n})\nexport type CanonicalColumn = z.infer<typeof canonicalColumnSchema>\n\nexport const canonicalLinkSchema = z.object({\n name: z.string().min(1).max(63),\n kind: z.enum(['toOne', 'toMany', 'toPlatformUser']),\n /** Target table name (namespace-local). Absent for toPlatformUser. */\n target: identifier.optional(),\n /** Owning namespace of an imported target; omitted for local links. */\n namespace: identifier.max(41).optional(),\n /** FK column on the owning side (toOne/toPlatformUser: on this table; toMany: on the target). */\n on: columnIdentifier,\n /** Referenced column on the target (default: target's PK / platform user `sub`). */\n references: columnIdentifier.optional(),\n /** enforce: true emits a real FK constraint (same-namespace toOne only). */\n enforce: z.boolean().default(false),\n onDelete: z.enum(['cascade', 'restrict', 'no action', 'set null', 'set default']).optional(),\n onUpdate: z.enum(['cascade', 'restrict', 'no action', 'set null', 'set default']).optional(),\n description: z.string().max(500).optional(),\n})\nexport type CanonicalLink = z.infer<typeof canonicalLinkSchema>\n\nexport const canonicalIndexSchema = z.object({\n columns: z.array(columnIdentifier).min(1),\n unique: z.boolean().default(false),\n name: identifier.optional(),\n})\n\nexport const canonicalCheckSchema = z.object({\n name: identifier,\n expression: z.string().min(1).max(2000),\n}).strict()\nexport type CanonicalCheck = z.infer<typeof canonicalCheckSchema>\n\n/**\n * Policy expressions stay DSL SOURCE STRINGS in the canonical form — parsing\n * and claim-key validation happen in both CLI and server via the shared\n * predicate parser. Variants follow §4c permissive-union semantics.\n */\nexport { policyExpressionSchema, policyVariantSchema, type PolicyExpression } from './policy.js'\n\nexport const canonicalPoliciesSchema = z.object({\n read: policyExpressionSchema.optional(),\n write: policyExpressionSchema.optional(),\n insert: policyExpressionSchema.optional(),\n update: policyExpressionSchema.optional(),\n})\n\n/**\n * View SQL is generated by Drizzle in the authoring process, then crosses the\n * CLI → Atlas JSON boundary. Keep the canonical form to one SELECT statement:\n * PostgreSQL validates the complete grammar when the view is created, while\n * this scanner prevents statement stacking before the text reaches DDL.\n */\nexport function isSingleViewQuerySql(value: string): boolean {\n const query = value.trim()\n if (!/^\\(*(?:select|with)\\b/i.test(query) || query.includes('\\0')) return false\n\n let state: 'normal' | 'single' | 'double' = 'normal'\n for (let index = 0; index < query.length; index += 1) {\n const char = query[index]\n const next = query[index + 1]\n if (state === 'single') {\n if (char === \"'\" && next === \"'\") index += 1\n else if (char === \"'\") state = 'normal'\n continue\n }\n if (state === 'double') {\n if (char === '\"' && next === '\"') index += 1\n else if (char === '\"') state = 'normal'\n continue\n }\n if (char === \"'\") state = 'single'\n else if (char === '\"') state = 'double'\n else if (char === ';' || (char === '-' && next === '-') || (char === '/' && next === '*')) return false\n }\n return state === 'normal' && !/\\$[a-z_0-9]*\\$/i.test(query)\n}\n\n/**\n * Managed views execute as the shared ORM relation owner. Treat function use\n * as a capability boundary: a new function is unavailable until it is\n * deliberately reviewed here as side-effect-free. The migration engine checks\n * the functions PostgreSQL actually resolved against this list and pg_catalog,\n * so qualification and same-named functions in a consumer schema cannot evade\n * the boundary.\n */\nexport const VIEW_QUERY_FUNCTION_ALLOWLIST = [\n 'abs',\n 'age',\n 'array_agg',\n 'array_append',\n 'array_cat',\n 'array_dims',\n 'array_length',\n 'array_lower',\n 'array_ndims',\n 'array_position',\n 'array_positions',\n 'array_prepend',\n 'array_remove',\n 'array_replace',\n 'array_to_string',\n 'array_trim',\n 'array_upper',\n 'ascii',\n 'avg',\n 'bit_and',\n 'bit_or',\n 'bit_xor',\n 'bool_and',\n 'bool_or',\n 'btrim',\n 'cardinality',\n 'cbrt',\n 'ceil',\n 'ceiling',\n 'char_length',\n 'character_length',\n 'chr',\n 'concat',\n 'concat_ws',\n 'count',\n 'cume_dist',\n 'date_bin',\n 'date_part',\n 'date_trunc',\n 'decode',\n 'degrees',\n 'dense_rank',\n 'encode',\n 'enum_first',\n 'enum_last',\n 'enum_range',\n 'every',\n 'exp',\n 'first_value',\n 'floor',\n 'format',\n 'grouping',\n 'initcap',\n 'json_agg',\n 'json_array_length',\n 'json_build_array',\n 'json_build_object',\n 'json_extract_path',\n 'json_extract_path_text',\n 'json_object_agg',\n 'json_object_keys',\n 'json_strip_nulls',\n 'json_typeof',\n 'jsonb_agg',\n 'jsonb_array_length',\n 'jsonb_build_array',\n 'jsonb_build_object',\n 'jsonb_extract_path',\n 'jsonb_extract_path_text',\n 'jsonb_insert',\n 'jsonb_object_agg',\n 'jsonb_object_keys',\n 'jsonb_path_exists',\n 'jsonb_path_match',\n 'jsonb_path_query',\n 'jsonb_path_query_array',\n 'jsonb_path_query_first',\n 'jsonb_pretty',\n 'jsonb_set',\n 'jsonb_set_lax',\n 'jsonb_strip_nulls',\n 'jsonb_typeof',\n 'justify_days',\n 'justify_hours',\n 'justify_interval',\n 'lag',\n 'last_value',\n 'lead',\n 'left',\n 'length',\n 'ln',\n 'log',\n 'lower',\n 'lpad',\n 'ltrim',\n 'make_date',\n 'make_interval',\n 'make_time',\n 'make_timestamp',\n 'make_timestamptz',\n 'max',\n 'md5',\n 'min',\n 'mod',\n 'nth_value',\n 'ntile',\n 'octet_length',\n 'percent_rank',\n 'pi',\n 'power',\n 'quote_ident',\n 'quote_literal',\n 'quote_nullable',\n 'radians',\n 'rank',\n 'regexp_count',\n 'regexp_instr',\n 'regexp_like',\n 'regexp_match',\n 'regexp_matches',\n 'regexp_replace',\n 'regexp_split_to_array',\n 'regexp_split_to_table',\n 'repeat',\n 'replace',\n 'reverse',\n 'right',\n 'round',\n 'row_number',\n 'rpad',\n 'rtrim',\n 'sign',\n 'split_part',\n 'sqrt',\n 'starts_with',\n 'string_agg',\n 'string_to_array',\n 'strpos',\n 'substr',\n 'substring',\n 'sum',\n 'timezone',\n 'to_ascii',\n 'to_char',\n 'to_date',\n 'to_hex',\n 'to_json',\n 'to_jsonb',\n 'to_number',\n 'to_timestamp',\n 'translate',\n 'trunc',\n 'unnest',\n 'upper',\n 'width_bucket',\n] as const\n\n/** Actions carry over from v1 as compiled named-SQL ops (plan: resolved OQ-1). */\nexport const canonicalActionSchema = z.object({\n name: identifier,\n requires: z.string().max(1000).optional(),\n params: z.record(z.string(), z.object({\n type: columnTypeSchema,\n nullable: z.boolean().default(false),\n })).default({}),\n executes: z.string().min(1).max(10_000),\n returns: z.enum(['rows', 'rowsAffected', 'scalar']).default('rowsAffected'),\n audit: z.object({ action: z.string(), resource: z.string() }).optional(),\n})\n\n/**\n * Copy-on-write mutations for overlay tables backed by a synced twin\n * (v2-only). Structured metadata, never authored SQL: the compiler and data\n * plane generate the INSERT…SELECT / UPDATE / DELETE statements from it, so\n * there is no SQL surface to validate and write policies inject like any\n * other mutation. `override` copies the synced row into the overlay\n * (ON CONFLICT DO NOTHING) then updates the `set` columns; `revert` deletes\n * the overlay row so the coalesce view falls back to synced.\n */\nexport const canonicalCowMutationSchema = z.object({\n kind: z.enum(['override', 'revert']),\n name: identifier,\n /** Synced table (same namespace) the overlay copies from / falls back to. */\n synced: identifier,\n /** Single-column primary key PROPERTY (TS camelCase, like column `name`) shared by overlay and synced. */\n pk: z.string().min(1).max(63),\n /** Override: contract properties copied INSERT…SELECT from synced (pk included). Empty for revert. */\n copy: z.array(z.string().min(1).max(63)).default([]),\n /** Override: overlay properties written by the UPDATE (never the pk). Empty for revert. */\n set: z.array(z.string().min(1).max(63)).default([]),\n}).superRefine((mutation, ctx) => {\n if (mutation.kind === 'override') {\n if (mutation.set.length === 0) {\n ctx.addIssue({ code: 'custom', path: ['set'], message: 'override mutations must set at least one column' })\n }\n if (!mutation.copy.includes(mutation.pk)) {\n ctx.addIssue({ code: 'custom', path: ['copy'], message: 'override copy list must include the pk' })\n }\n } else if (mutation.set.length > 0 || mutation.copy.length > 0) {\n ctx.addIssue({ code: 'custom', path: ['set'], message: 'revert mutations take no copy/set columns' })\n }\n if (mutation.set.includes(mutation.pk)) {\n ctx.addIssue({ code: 'custom', path: ['set'], message: 'set must not include the pk — identity columns are pinned' })\n }\n // Duplicates would reach the executor as a doubled INSERT column or SET\n // assignment — reject at the schema like the authoring helper does.\n for (const [field, values] of [['copy', mutation.copy], ['set', mutation.set]] as const) {\n if (new Set(values).size !== values.length) {\n ctx.addIssue({ code: 'custom', path: [field], message: `${field} must not contain duplicate columns` })\n }\n }\n})\nexport type CanonicalCowMutation = z.infer<typeof canonicalCowMutationSchema>\n\nexport const canonicalForeignKeySchema = z.object({\n name: identifier,\n columns: z.array(columnIdentifier).min(1).max(8),\n target: identifier,\n references: z.array(columnIdentifier).min(1).max(8),\n deferrable: z.enum(['initially-immediate', 'initially-deferred']).optional(),\n onDelete: z.enum(['cascade', 'restrict', 'no action', 'set null', 'set default']).optional(),\n onUpdate: z.enum(['cascade', 'restrict', 'no action', 'set null', 'set default']).optional(),\n}).strict()\nexport type CanonicalForeignKey = z.infer<typeof canonicalForeignKeySchema>\n\nexport const canonicalTableSchema = z.object({\n table: identifier,\n displayName: z.string().trim().min(1).max(120).optional(),\n description: z.string().max(2000).optional(),\n /** Table-level rename hint (new in v2). */\n renamedFrom: identifier.optional(),\n /** Synced/reflected read-only tables (`source: schema.table`) — v1 semantics. */\n source: z.string().regex(QUALIFIED_TABLE_PATTERN).optional(),\n columns: z.array(canonicalColumnSchema).default([]),\n primaryKey: z.array(columnIdentifier).min(1).max(8).optional(),\n links: z.array(canonicalLinkSchema).default([]),\n indexes: z.array(canonicalIndexSchema).default([]),\n /** Omitted by old definitions, preserving their existing content hashes. */\n checks: z.array(canonicalCheckSchema).max(100).optional(),\n policies: canonicalPoliciesSchema.default({}),\n /**\n * v1-conversion carry-over only. v2 has no action surface — the runtime\n * neither compiles nor executes these; writes are mutations. Kept parseable\n * so stored definitions and their content hashes stay stable.\n */\n actions: z.array(canonicalActionSchema).default([]),\n /** Optional (not defaulted) so pre-CoW canonical documents keep byte-identical hashes. */\n cowMutations: z.array(canonicalCowMutationSchema).optional(),\n /** Omitted by old definitions, preserving their existing content hashes. */\n foreignKeys: z.array(canonicalForeignKeySchema).max(100).optional(),\n /**\n * Per-cell edit metadata (`cellMetadata: true` in authoring): every tracked\n * column `c` carries typed `c__at` / `c__by` system columns (plus `c__rev`\n * on a resolved table's internal sources), listed explicitly in `columns`\n * with a `cell` marker so DDL and migrations treat them as ordinary columns.\n * Omitted when off so existing definitions hash unchanged.\n */\n cellMetadata: z.literal(true).optional(),\n /**\n * System-owned backing table of a resolved table (its manual or prefetch\n * source). Internal tables get DDL and IR metadata but no GraphQL surface;\n * only the data plane writes them. Omitted when false.\n */\n internal: z.literal(true).optional(),\n /**\n * The materialized copy of resolved table `materializes` (internal): the\n * same columns as that view, including its cell parts, maintained by the\n * data plane. Omitted otherwise.\n */\n materializes: identifier.optional(),\n})\nexport type CanonicalTable = z.infer<typeof canonicalTableSchema>\n\n/** Authored view SQL. */\nconst MAX_VIEW_QUERY = 100_000\n/**\n * A resolved table's SQL is generated from its (bounded) metadata — at most\n * 500 columns × 16 candidates — not authored, so it gets a larger ceiling.\n */\nconst MAX_RESOLVED_VIEW_QUERY = 5_000_000\n\nexport const canonicalViewSchema = z.object({\n view: identifier,\n description: z.string().max(2000).optional(),\n columns: z.array(canonicalColumnSchema).min(1),\n /** Logical identity for GraphQL only; PostgreSQL views have no PK constraint. */\n primaryKey: z.array(columnIdentifier).min(1).max(8).optional(),\n links: z.array(canonicalLinkSchema).default([]),\n policies: z.object({ read: policyExpressionSchema }).strict(),\n query: z.string().min(1).max(MAX_RESOLVED_VIEW_QUERY).refine(isSingleViewQuerySql, {\n message: 'view query must be one SELECT/WITH statement without comments or dollar-quoted bodies',\n }),\n /** Namespace-local logical relation names, sorted for deterministic hashing. */\n dependencies: z.array(identifier).max(500),\n /**\n * Present when this view is a resolved table (defineResolvedTable): the\n * multi-source metadata behind its generated query. Omitted otherwise so\n * existing views hash unchanged.\n */\n resolved: canonicalResolvedSchema.optional(),\n /** System-owned view (a materialized resolved table's compute view): no GraphQL surface. */\n internal: z.literal(true).optional(),\n}).superRefine((view, ctx) => {\n if (view.resolved === undefined && view.query.length > MAX_VIEW_QUERY) {\n ctx.addIssue({ code: 'custom', path: ['query'], message: `view query must be at most ${MAX_VIEW_QUERY} characters` })\n }\n for (const [index, column] of view.columns.entries()) {\n if (column.default !== undefined || column.defaultFn !== undefined) {\n ctx.addIssue({ code: 'custom', path: ['columns', index], message: `view column '${column.name}' cannot declare a default` })\n }\n if (column.onUpdateFn !== undefined) {\n ctx.addIssue({ code: 'custom', path: ['columns', index], message: `view column '${column.name}' cannot declare onUpdateFn` })\n }\n if (column.unique) {\n ctx.addIssue({ code: 'custom', path: ['columns', index], message: `view column '${column.name}' cannot declare unique` })\n }\n if (column.renamedFrom !== undefined || column.cast !== undefined) {\n ctx.addIssue({ code: 'custom', path: ['columns', index], message: `view column '${column.name}' cannot declare migration hints` })\n }\n }\n // A materialized resolved table's compute view (internal) produces the same\n // cell parts; validateResolvedView checks it against its public view.\n if (view.resolved === undefined && view.internal !== true) {\n for (const [index, column] of view.columns.entries()) {\n if (column.cell) ctx.addIssue({ code: 'custom', path: ['columns', index], message: `only resolved tables carry cell columns ('${column.name}')` })\n }\n }\n for (const [index, link] of view.links.entries()) {\n if (link.enforce) {\n ctx.addIssue({ code: 'custom', path: ['links', index, 'enforce'], message: `view link '${link.name}' cannot enforce a foreign key` })\n }\n if (link.onDelete !== undefined || link.onUpdate !== undefined) {\n ctx.addIssue({ code: 'custom', path: ['links', index], message: `view link '${link.name}' cannot declare referential actions` })\n }\n }\n})\nexport type CanonicalView = z.infer<typeof canonicalViewSchema>\n\n/** The type each cell part is stored as. */\nexport const CELL_PART_TYPES: Readonly<Record<CellPart, ColumnType>> = {\n at: 'timestamptz', by: 'text', rev: 'uuid', source: 'text', conflicts: 'jsonb',\n}\n\ninterface TrackedShape {\n columns: ReadonlyArray<{ name: string; columnName: string; onUpdateFn?: string; cell?: { of: string; part: CellPart } }>\n primaryKey?: readonly string[]\n}\n\n/** Columns a cell-tracking table stamps: everything except the primary key, clock columns and cell parts. */\nexport function trackedCellColumns<T extends TrackedShape>(table: T): Array<T['columns'][number]> {\n const pk = new Set(table.primaryKey ?? [])\n return table.columns.filter((column) => column.cell === undefined && !pk.has(column.columnName) && column.onUpdateFn === undefined)\n}\n\nconst SUFFIXES = Object.values(CELL_PART_SUFFIX)\n\nfunction validateCellMetadata(table: CanonicalTable, index: number, ctx: z.RefinementCtx): void {\n const fail = (message: string, path: Array<string | number> = ['tables', index]) =>\n ctx.addIssue({ code: 'custom', path, message })\n const cells = table.columns.flatMap((column, position) => (column.cell ? [{ column, position, cell: column.cell }] : []))\n // A materialized resolved table mirrors its view's cell parts verbatim;\n // validateResolvedView checks it column for column.\n if (table.materializes !== undefined) return\n if (table.cellMetadata !== true) {\n for (const { position } of cells) fail(`cell-metadata columns require cellMetadata on table '${table.table}'`, ['tables', index, 'columns', position])\n return\n }\n if (table.source !== undefined) {\n fail(`synced table '${table.table}' cannot track cell metadata`)\n return\n }\n const tracked = trackedCellColumns(table)\n const byName = new Map(tracked.map((column) => [column.name, column]))\n const withRev = cells.some(({ cell }) => cell.part === 'rev')\n if (withRev && table.internal !== true) fail(`only a resolved table's internal sources carry '__rev' cell columns ('${table.table}')`)\n const seen = new Set<string>()\n for (const { column, position, cell } of cells) {\n const path = ['tables', index, 'columns', position]\n const owner = byName.get(cell.of)\n if (!owner) {\n fail(`cell column '${column.name}' belongs to '${cell.of}', which is not a tracked column`, path)\n continue\n }\n if (cell.part !== 'at' && cell.part !== 'by' && cell.part !== 'rev') fail(`a table cell column must be part at/by/rev, not '${cell.part}'`, path)\n if (column.name !== cellColumnName(owner.name, cell.part) || column.columnName !== cellColumnName(owner.columnName, cell.part)) {\n fail(`cell column for '${owner.name}' ${cell.part} must be named '${cellColumnName(owner.name, cell.part)}' / '${cellColumnName(owner.columnName, cell.part)}'`, path)\n }\n if (column.type !== CELL_PART_TYPES[cell.part] || !column.nullable || column.unique || column.default !== undefined || column.defaultFn !== undefined) {\n fail(`cell column '${column.name}' must be a nullable, default-less ${CELL_PART_TYPES[cell.part]}`, path)\n }\n const key = `${cell.of}:${cell.part}`\n if (seen.has(key)) fail(`duplicate cell column '${column.name}'`, path)\n seen.add(key)\n }\n for (const column of tracked) {\n if (column.columnName.length > MAX_TRACKED_COLUMN_NAME) {\n fail(`column '${column.columnName}' is too long to track cell metadata (max ${MAX_TRACKED_COLUMN_NAME} characters)`)\n }\n if (SUFFIXES.some((suffix) => column.columnName.endsWith(suffix))) {\n fail(`column '${column.columnName}' ends in a reserved cell-metadata suffix (${SUFFIXES.join(', ')})`)\n }\n for (const part of withRev ? (['at', 'by', 'rev'] as const) : (['at', 'by'] as const)) {\n if (!seen.has(`${column.name}:${part}`)) fail(`tracked column '${column.name}' is missing its '${cellColumnName(column.columnName, part)}' cell column`)\n }\n }\n}\n\nexport const exportGateSchema = z.union([z.literal(true), z.object({ capability: z.string().min(1) }).strict(), z.object({ role: z.string().min(1) }).strict()])\nexport const relationExportSchema = z.object({ read: exportGateSchema, write: exportGateSchema.optional() }).strict()\n\nexport const localDefinitionSchema = z.object({\n definition_format: z.literal(CANONICAL_FORMAT),\n namespace: identifier.max(41),\n description: z.string().max(2000).optional(),\n enums: z.array(canonicalEnumSchema).default([]),\n tables: z.array(canonicalTableSchema).min(0).max(500),\n /** Optional to preserve byte-identical hashes for pre-view canonical v2 documents. */\n views: z.array(canonicalViewSchema).max(500).optional(),\n /** Target-owned cross-namespace access contract, using existing namespace grants. */\n exports: z.record(identifier, relationExportSchema).optional(),\n /** Verbatim custom-roles grammar (@sequenceholdings/custom-roles-manifest). */\n capabilities: z.object({\n roles: z.unknown().optional(),\n uses: z.array(z.string()).default([]),\n }).default({ uses: [] }),\n}).superRefine((definition, ctx) => {\n const seen = new Set<string>()\n for (const [index, table] of definition.tables.entries()) {\n if (seen.has(table.table)) {\n ctx.addIssue({ code: 'custom', path: ['tables', index, 'table'], message: `duplicate relation '${table.table}'` })\n }\n seen.add(table.table)\n validateCellMetadata(table, index, ctx)\n if (table.source !== undefined) {\n for (const [columnIndex, column] of table.columns.entries()) {\n if (column.onUpdateFn !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['tables', index, 'columns', columnIndex],\n message: `synced table '${table.table}' column '${column.name}' cannot declare onUpdateFn`,\n })\n }\n }\n }\n }\n\n const fkTables = new Map(definition.tables.map(table => [table.table, table]))\n const relations = new Set([...fkTables.keys(), ...(definition.views ?? []).map(view => view.view)])\n for (const name of Object.keys(definition.exports ?? {})) {\n if (!relations.has(name)) ctx.addIssue({ code: 'custom', path: ['exports', name], message: `export '${name}' is not a local object` })\n }\n for (const [tableIndex, table] of definition.tables.entries()) {\n for (const [linkIndex, link] of table.links.entries()) {\n if (link.enforce && link.namespace !== undefined && link.namespace !== definition.namespace) {\n ctx.addIssue({ code: 'custom', path: ['tables', tableIndex, 'links', linkIndex], message: 'physical foreign keys require a local target; use an ORM link without enforce' })\n }\n }\n const names = new Set([\n ...(table.primaryKey?.length ? [`${table.table}_pkey`] : []),\n ...table.columns.filter(column => column.unique && !(table.primaryKey?.length === 1 && table.primaryKey[0] === column.columnName)).map(column => `${table.table}_${column.columnName}_unique`),\n ...table.links.filter(link => link.enforce).map(link => `fk_${table.table}_${link.name}`),\n ])\n for (const [index, link] of table.links.entries()) {\n if ((link.onDelete !== undefined || link.onUpdate !== undefined) && (!link.enforce || link.kind !== 'toOne')) {\n ctx.addIssue({ code: 'custom', path: ['tables', tableIndex, 'links', index], message: 'referential actions require an enforced toOne link' })\n }\n if (link.onDelete === 'set null' || link.onUpdate === 'set null') {\n const source = table.columns.find(column => column.columnName === link.on)\n if (source?.nullable === false || table.primaryKey?.includes(link.on)) ctx.addIssue({ code: 'custom', path: ['tables', tableIndex, 'links', index], message: 'SET NULL requires a nullable source column' })\n }\n }\n for (const [index, check] of (table.checks ?? []).entries()) {\n const fail = (message: string) => ctx.addIssue({ code: 'custom', path: ['tables', tableIndex, 'checks', index], message })\n if (table.source) fail('synced tables cannot declare checks')\n if (names.has(check.name)) fail(`duplicate constraint '${check.name}'`)\n names.add(check.name)\n try { compileCheckExpression(check.expression, table.columns) }\n catch (error) { fail(error instanceof Error ? error.message : String(error)) }\n }\n for (const [index, fk] of (table.foreignKeys ?? []).entries()) {\n const fail = (message: string) => ctx.addIssue({ code: 'custom', path: ['tables', tableIndex, 'foreignKeys', index], message })\n if (names.has(fk.name)) fail(`duplicate foreign key '${fk.name}'`)\n names.add(fk.name)\n const target = fkTables.get(fk.target)\n if (table.source || !target || target.source) {\n fail('foreign keys must connect owned tables in the same namespace')\n continue\n }\n if (fk.columns.length !== fk.references.length) fail('foreign key columns and references must have the same number of columns')\n if (new Set(fk.columns).size !== fk.columns.length || new Set(fk.references).size !== fk.references.length) fail('foreign key columns must not repeat')\n for (const [position, name] of fk.columns.entries()) {\n const sourceColumn = table.columns.find(column => column.columnName === name)\n const targetColumn = target.columns.find(column => column.columnName === fk.references[position])\n if (!sourceColumn || !targetColumn) fail('foreign key references an unknown column')\n else if (JSON.stringify(sourceColumn.type) !== JSON.stringify(targetColumn.type)) fail('foreign key column types must match')\n }\n if (fk.onDelete === 'set null' || fk.onUpdate === 'set null') {\n if (fk.columns.some(name => table.columns.find(column => column.columnName === name)?.nullable === false || table.primaryKey?.includes(name))) fail('SET NULL requires nullable source columns')\n }\n const uniqueKeys = [target.primaryKey ?? [], ...target.indexes.filter(index => index.unique).map(index => index.columns), ...target.columns.filter(column => column.unique).map(column => [column.columnName])]\n if (!uniqueKeys.some(key => key.length === fk.references.length && key.every(column => fk.references.includes(column)))) fail('foreign key target columns must form a unique key')\n }\n }\n\n for (const [viewIndex, view] of (definition.views ?? []).entries()) {\n for (const message of validateResolvedView({ view, tables: definition.tables, views: definition.views ?? [] })) {\n ctx.addIssue({ code: 'custom', path: ['views', viewIndex, 'resolved'], message })\n }\n }\n\n // CoW mutations: overlay must be an owned table; synced twin must be a\n // synced table in this namespace; copy/set columns must exist on both sides.\n const tableByName = new Map(definition.tables.map((table) => [table.table, table]))\n for (const [tableIndex, table] of definition.tables.entries()) {\n const cowMutations = table.cowMutations ?? []\n if (cowMutations.length === 0) continue\n const path = (index: number, ...rest: Array<string | number>): Array<string | number> =>\n ['tables', tableIndex, 'cowMutations', index, ...rest]\n if (table.source !== undefined) {\n ctx.addIssue({ code: 'custom', path: path(0), message: `synced table '${table.table}' cannot declare cow mutations — it is read-only` })\n continue\n }\n for (const [index, mutation] of cowMutations.entries()) {\n const synced = tableByName.get(mutation.synced)\n if (!synced || synced.source === undefined) {\n ctx.addIssue({\n code: 'custom',\n path: path(index, 'synced'),\n message: `cow mutation '${mutation.name}' references '${mutation.synced}', which is not a synced table in this namespace`,\n })\n continue\n }\n // The full helper invariants, mirrored so hand-written canonical cannot\n // bypass them (the generated conflict/copy SQL depends on every one):\n // single-column PK identity on both sides, matching scalar types AND\n // Postgres column names for every copied column, and no nullable-synced\n // → NOT-NULL-overlay traps.\n const overlayColumnsByName = new Map(table.columns.map((column) => [column.name, column]))\n const syncedColumnsByName = new Map(synced.columns.map((column) => [column.name, column]))\n let columnsExist = true\n for (const property of [mutation.pk, ...mutation.copy, ...mutation.set]) {\n if (!overlayColumnsByName.has(property)) {\n columnsExist = false\n ctx.addIssue({ code: 'custom', path: path(index), message: `cow mutation '${mutation.name}': column '${property}' does not exist on overlay '${table.table}'` })\n }\n }\n for (const property of [mutation.pk, ...mutation.copy]) {\n if (!syncedColumnsByName.has(property)) {\n columnsExist = false\n ctx.addIssue({ code: 'custom', path: path(index), message: `cow mutation '${mutation.name}': column '${property}' does not exist on synced '${mutation.synced}'` })\n }\n }\n if (!columnsExist) continue\n\n const overlayPk = table.primaryKey ?? []\n const syncedPk = synced.primaryKey ?? []\n if (overlayPk.length !== 1 || overlayPk[0] !== mutation.pk || syncedPk.length !== 1 || syncedPk[0] !== mutation.pk) {\n ctx.addIssue({\n code: 'custom',\n path: path(index, 'pk'),\n message: `cow mutation '${mutation.name}': pk '${mutation.pk}' must be the single-column primary key on both '${table.table}' and '${mutation.synced}'`,\n })\n }\n for (const property of [mutation.pk, ...mutation.copy]) {\n const overlayColumn = overlayColumnsByName.get(property)\n const syncedColumn = syncedColumnsByName.get(property)\n if (!overlayColumn || !syncedColumn) continue\n if (JSON.stringify(overlayColumn.type) !== JSON.stringify(syncedColumn.type)) {\n ctx.addIssue({\n code: 'custom',\n path: path(index),\n message: `cow mutation '${mutation.name}': column '${property}' must have the same type on overlay and synced`,\n })\n }\n if (overlayColumn.columnName !== syncedColumn.columnName) {\n ctx.addIssue({\n code: 'custom',\n path: path(index),\n message: `cow mutation '${mutation.name}': column '${property}' maps to different Postgres names on overlay ('${overlayColumn.columnName}') and synced ('${syncedColumn.columnName}')`,\n })\n }\n if (syncedColumn.nullable !== false && overlayColumn.nullable === false) {\n ctx.addIssue({\n code: 'custom',\n path: path(index),\n message: `cow mutation '${mutation.name}': column '${property}' is nullable on synced but NOT NULL on overlay — a NULL synced value would fail the copy`,\n })\n }\n }\n }\n }\n for (const [index, view] of (definition.views ?? []).entries()) {\n if (seen.has(view.view)) {\n ctx.addIssue({ code: 'custom', path: ['views', index, 'view'], message: `duplicate relation '${view.view}'` })\n }\n seen.add(view.view)\n }\n\n const views = definition.views ?? []\n const viewByName = new Map(views.map((view) => [view.view, view]))\n for (const [viewIndex, view] of views.entries()) {\n for (const [dependencyIndex, dependency] of view.dependencies.entries()) {\n if (!seen.has(dependency)) {\n ctx.addIssue({\n code: 'custom',\n path: ['views', viewIndex, 'dependencies', dependencyIndex],\n message: `view '${view.view}' depends on unknown relation '${dependency}'`,\n })\n }\n }\n }\n\n const visiting = new Set<string>()\n const visited = new Set<string>()\n let cycleReported = false\n const visit = (name: string, path: string[]): void => {\n if (visited.has(name) || cycleReported) return\n if (visiting.has(name)) {\n cycleReported = true\n ctx.addIssue({\n code: 'custom',\n path: ['views'],\n message: `view dependencies form a cycle: ${[...path, name].join(' -> ')}`,\n })\n return\n }\n visiting.add(name)\n const view = viewByName.get(name)\n for (const dependency of view?.dependencies ?? []) {\n if (viewByName.has(dependency)) visit(dependency, [...path, name])\n }\n visiting.delete(name)\n visited.add(name)\n }\n for (const view of views) visit(view.view, [])\n})\nexport const canonicalDefinitionSchema = localDefinitionSchema.safeExtend({\n /** Flattened, pinned snapshots. Imported relations never participate in this namespace's DDL. */\n imports: z.array(localDefinitionSchema).max(32).optional(),\n})\nexport type CanonicalDefinition = z.infer<typeof canonicalDefinitionSchema>\n\n/**\n * Project namespace-local tables and views onto the shared read/query surface.\n * A view deliberately becomes a CanonicalTable-shaped relation with no write\n * policy, indexes, actions, defaults, or constraints. Keeping this adapter at\n * the canonical boundary makes SDL and compiler behavior identical without\n * pretending views are writable tables in the wire contract.\n */\n/** A table or view as the compiler/SDL see it; resolved views also carry their multi-source metadata. */\nexport type CanonicalRelation = CanonicalTable & { resolved?: CanonicalResolved }\n\nexport function canonicalRelations(definition: CanonicalDefinition): CanonicalRelation[] {\n const views = (definition.views ?? []).map<CanonicalRelation>((view) => ({\n table: view.view,\n ...(view.description !== undefined ? { description: view.description } : {}),\n columns: view.columns,\n ...(view.primaryKey !== undefined ? { primaryKey: view.primaryKey } : {}),\n links: view.links,\n indexes: [],\n // A resolved table's write policies (evaluated against the resolved row)\n // ride alongside the view's read policy.\n policies: { read: view.policies.read, ...(view.resolved?.policies ?? {}) },\n actions: [],\n ...(view.resolved !== undefined ? { resolved: view.resolved } : {}),\n ...(view.internal ? { internal: true as const } : {}),\n }))\n return [...definition.tables, ...views].sort((a, b) => a.table.localeCompare(b.table))\n}\n\n/**\n * Deterministic serialization discipline: tables sorted by name, columns in\n * declaration order (order is meaningful for DDL), links/indexes/actions\n * sorted by name, object keys emitted in schema order. `serializeNamespace`\n * (authoring layer) and the server-side re-validation both normalize through\n * this function before hashing so CLI and server hash identical bytes.\n */\nexport function normalizeCanonical(definition: CanonicalDefinition): CanonicalDefinition {\n const sortByName = <T extends { name: string }>(items: T[]): T[] =>\n [...items].sort((a, b) => a.name.localeCompare(b.name))\n const normalized: CanonicalDefinition = {\n ...definition,\n enums: sortByName(definition.enums),\n tables: [...definition.tables]\n .sort((a, b) => a.table.localeCompare(b.table))\n .map((t) => {\n const { cowMutations, foreignKeys, checks, ...rest } = t\n return {\n ...rest,\n links: sortByName(t.links),\n indexes: [...t.indexes].sort((a, b) =>\n (a.name ?? a.columns.join('_')).localeCompare(b.name ?? b.columns.join('_'))),\n actions: sortByName(t.actions),\n ...(foreignKeys?.length ? { foreignKeys: sortByName(foreignKeys) } : {}),\n ...(checks?.length ? { checks: sortByName(checks) } : {}),\n // Omitted entirely when absent/empty so pre-CoW documents hash unchanged.\n ...(cowMutations !== undefined && cowMutations.length > 0 ? { cowMutations: sortByName(cowMutations) } : {}),\n }\n }),\n }\n if (definition.views !== undefined) {\n normalized.views = [...definition.views]\n .sort((a, b) => a.view.localeCompare(b.view))\n .map((view) => ({\n ...view,\n links: sortByName(view.links),\n dependencies: [...view.dependencies].sort(),\n }))\n }\n if (definition.imports?.length) {\n normalized.imports = definition.imports.map(normalizeCanonical).sort((a, b) => a.namespace.localeCompare(b.namespace))\n } else {\n delete normalized.imports\n }\n return normalized\n}\n","/**\n * Compiled-operation IR — THE frozen contract between the GraphQL compiler\n * (push time, CLI preview + canonical server compile) and the data-plane\n * executor (runtime). The artifact is inert, validated JSON: no generated\n * code ever crosses the registry (plan §4).\n *\n * Design invariants:\n * - Policies are BAKED IN at compile time: every table-touching node carries\n * its read policy AND-ed into `where` (or `writePolicy`/`insertCheck` for\n * mutation targets). Execution needs only (IR, claims, variables).\n * - §4f dynamic slots: a variable typed with a generated input type\n * (BoolExp/OrderBy/SelectColumn/InsertInput/SetInput/AppendInput/OnConflict)\n * marks a dynamic slot. The executor validates the runtime value against\n * the artifact's per-table whitelist metadata, lowers it to Drizzle, and\n * ANDs it with the baked policy — the policy is non-negotiable regardless\n * of what the client sends.\n * - `capability`/`role` predicate leaves resolve to booleans against the\n * caller's claims BEFORE execution, pruning dead branches per caller.\n * - Versioned via `irVersion` + `normalizeIr` (the normalizeSnapshot\n * pattern): executor upgrades decouple from artifact re-pushes.\n */\nimport { z } from 'zod'\nimport { COLUMN_TYPES, type ColumnType } from '../canonical/v2.js'\nexport { CELL_PARTS, CELLS_FIELD, cellColumnName, type CellPart } from '../constants.js'\n\n/** Maximum supported version; emit the oldest version that preserves semantics. */\nexport const IR_VERSION = 5 as const\nexport const LEGACY_IR_VERSION = 1 as const\nexport const GUARDED_IR_VERSION = 2 as const\n/** Older v2 executors must not strip namespace-scoped authorization. */\nexport const COMPOSED_IR_VERSION = 3 as const\nexport const SQL_IR_VERSION = 4 as const\nexport const RUNTIME_SQL_IR_VERSION = 5 as const\nconst irVersionSchema = z.union([z.literal(LEGACY_IR_VERSION), z.literal(GUARDED_IR_VERSION), z.literal(COMPOSED_IR_VERSION), z.literal(SQL_IR_VERSION), z.literal(RUNTIME_SQL_IR_VERSION)])\nconst operationVersionSchema = z.object({ irVersion: irVersionSchema })\n\n/** Keep v1 artifact identity when assembling only legacy operations from registry rows. */\nexport function requiredArtifactIrVersion(operations: readonly unknown[]): z.infer<typeof irVersionSchema> {\n let required: z.infer<typeof irVersionSchema> = LEGACY_IR_VERSION\n for (const operation of operations) {\n const { irVersion } = operationVersionSchema.parse(operation)\n if (irVersion > required) required = irVersion\n }\n return required\n}\n\n// ---------------------------------------------------------------------------\n// Values & claims\n// ---------------------------------------------------------------------------\n\n/** The exact claim keys the platform stamps — mirrors claims.ts. */\nexport const CLAIMS_CONTRACT = {\n sub: 'string',\n org: 'string?',\n roles: 'string[]',\n capabilities: 'string[]',\n} as const\nexport type ClaimKey = 'sub' | 'org'\n\nconst scalarLiteral = z.union([z.string(), z.number(), z.boolean(), z.null()])\n\nexport const valueIrSchema = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('literal'), value: z.union([scalarLiteral, z.array(scalarLiteral)]) }),\n z.object({ kind: z.literal('variable'), name: z.string() }),\n z.object({ kind: z.literal('claim'), key: z.enum(['sub', 'org']) }),\n])\nexport type ValueIr = z.infer<typeof valueIrSchema>\n\n// ---------------------------------------------------------------------------\n// Predicates\n// ---------------------------------------------------------------------------\n\nexport const CMP_OPS = [\n 'eq', 'neq', 'gt', 'gte', 'lt', 'lte', 'in', 'nin',\n 'like', 'ilike', 'isNull', 'contains', 'hasKey',\n] as const\nexport type CmpOp = (typeof CMP_OPS)[number]\n\nexport type PredIr =\n | { kind: 'and'; operands: PredIr[] }\n | { kind: 'or'; operands: PredIr[] }\n | { kind: 'not'; operand: PredIr }\n | { kind: 'cmp'; op: CmpOp; column: string; value: ValueIr }\n /** EXISTS through a declared link; `where` runs against the target table. */\n | { kind: 'exists'; link: string; where: PredIr }\n /** Aggregation predicate (Hasura `rel_aggregate: { count: { predicate } }`). */\n | { kind: 'aggPredicate'; link: string; fn: 'count'; op: Exclude<CmpOp, 'in' | 'nin' | 'like' | 'ilike' | 'isNull' | 'contains' | 'hasKey'>; value: number; where?: PredIr }\n /** Boolean claims leaves — pre-resolved against claims before execution. */\n | { kind: 'capability'; key: string; namespace?: string }\n | { kind: 'role'; key: string; namespace?: string }\n /** §4f: a client-supplied BoolExp variable lands here, validated + lowered at runtime. */\n | { kind: 'dynamicFilter'; slot: string }\n | { kind: 'const'; value: boolean }\n\nexport const predIrSchema: z.ZodType<PredIr> = z.lazy(() =>\n z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('and'), operands: z.array(predIrSchema).min(1) }),\n z.object({ kind: z.literal('or'), operands: z.array(predIrSchema).min(1) }),\n z.object({ kind: z.literal('not'), operand: predIrSchema }),\n z.object({ kind: z.literal('cmp'), op: z.enum(CMP_OPS), column: z.string(), value: valueIrSchema }),\n z.object({ kind: z.literal('exists'), link: z.string(), where: predIrSchema }),\n z.object({\n kind: z.literal('aggPredicate'), link: z.string(), fn: z.literal('count'),\n op: z.enum(['eq', 'neq', 'gt', 'gte', 'lt', 'lte']), value: z.number(),\n where: predIrSchema.optional(),\n }),\n z.object({ kind: z.literal('capability'), key: z.string(), namespace: z.string().optional() }),\n z.object({ kind: z.literal('role'), key: z.string(), namespace: z.string().optional() }),\n z.object({ kind: z.literal('dynamicFilter'), slot: z.string() }),\n z.object({ kind: z.literal('const'), value: z.boolean() }),\n ]),\n) as z.ZodType<PredIr>\n\n// ---------------------------------------------------------------------------\n// Ordering / paging\n// ---------------------------------------------------------------------------\n\nexport const orderIrSchema = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('column'),\n column: z.string(),\n /** Order through a to-one link: `link` is set and `column` is on the target. */\n link: z.string().optional(),\n direction: z.enum(['asc', 'desc']),\n nulls: z.enum(['first', 'last']).optional(),\n }),\n /** §4f: `$orderBy: [FooOrderBy!]` variable — validated + lowered at runtime. */\n z.object({ kind: z.literal('dynamic'), slot: z.string() }),\n])\nexport type OrderIr = z.infer<typeof orderIrSchema>\n\nexport const limitIrSchema = z.object({\n /** Fixed value or a variable, clamped to [1, max]; absent → default. */\n variable: z.string().optional(),\n value: z.number().int().positive().optional(),\n default: z.number().int().positive(),\n max: z.number().int().positive(),\n})\nexport type LimitIr = z.infer<typeof limitIrSchema>\n\n// ---------------------------------------------------------------------------\n// Selections\n// ---------------------------------------------------------------------------\n\n/** One cell of a `cells { … }` block: the parts selected for one column. */\nexport interface CellSelectionIr {\n alias: string\n /** Logical column whose cell this is. */\n column: string\n typename: string\n parts: Array<{\n alias: string\n part: 'source' | 'at' | 'by' | 'conflicts'\n /** `conflicts { … }`: the candidate fields selected, in order. */\n fields?: Array<{ alias: string; field: 'source' | 'at' | 'value' }>\n /** `conflicts { … }` element typename. */\n typename?: string\n }>\n}\n\nexport interface SelectionIr {\n /** GraphQL type name for __typename synthesis + Apollo normalization. */\n typename: string\n columns: Array<{ alias: string; column: string }>\n /** The typed `cells { … }` block (tables with cell metadata, resolved tables). */\n cells?: { alias: string; typename: string; fields: CellSelectionIr[] }\n relations: Array<{\n alias: string\n link: string\n selection: SelectionIr\n /** Fixed shape from the document; policy for the target table is ALSO\n * injected by the compiler into this `where` — never trust it absent. */\n where?: PredIr\n orderBy?: OrderIr[]\n limit?: LimitIr\n offset?: { variable?: string; value?: number }\n }>\n aggregates: Array<{\n alias: string\n /** Absent link = same-table aggregate (used by aggregate roots). */\n link?: string\n where?: PredIr\n count?: { columns?: string[]; distinct?: boolean }\n sum?: string[]\n avg?: string[]\n /** `nodes { }` selection inside an aggregate block. */\n nodes?: SelectionIr\n }>\n}\n\nconst selectionIrSchema: z.ZodType<SelectionIr> = z.lazy(() =>\n z.object({\n typename: z.string(),\n columns: z.array(z.object({ alias: z.string(), column: z.string() })),\n cells: z.object({\n alias: z.string(),\n typename: z.string(),\n fields: z.array(z.object({\n alias: z.string(),\n column: z.string(),\n typename: z.string(),\n parts: z.array(z.object({\n alias: z.string(),\n part: z.enum(['source', 'at', 'by', 'conflicts']),\n fields: z.array(z.object({ alias: z.string(), field: z.enum(['source', 'at', 'value']) })).optional(),\n typename: z.string().optional(),\n })),\n })),\n }).optional(),\n relations: z.array(z.object({\n alias: z.string(),\n link: z.string(),\n selection: selectionIrSchema,\n where: predIrSchema.optional(),\n orderBy: z.array(orderIrSchema).optional(),\n limit: limitIrSchema.optional(),\n offset: z.object({ variable: z.string().optional(), value: z.number().int().optional() }).optional(),\n })),\n aggregates: z.array(z.object({\n alias: z.string(),\n link: z.string().optional(),\n where: predIrSchema.optional(),\n count: z.object({ columns: z.array(z.string()).optional(), distinct: z.boolean().optional() }).optional(),\n sum: z.array(z.string()).optional(),\n avg: z.array(z.string()).optional(),\n nodes: selectionIrSchema.optional(),\n })),\n }),\n) as z.ZodType<SelectionIr>\n\nexport { selectionIrSchema }\n\n// ---------------------------------------------------------------------------\n// Roots\n// ---------------------------------------------------------------------------\n\n/** `@include(if: $var)` / `@skip(if: $var)` on a root field. */\nconst includeIfSchema = z.object({ variable: z.string(), negated: z.boolean() })\n\n/**\n * `@prefetch(source:)` on a resolved-table query root: before the SQL runs,\n * the data plane refreshes the named prefetch source for the keys this root\n * addresses. `key` is the single pk value (byPk / `pk: {_eq}`) or the pk list\n * (`pk: {_in}` on batch sources).\n */\nexport const prefetchPlanIrSchema = z.object({\n source: z.string(),\n maxStalenessMs: z.number().int().positive().optional(),\n key: z.union([z.object({ one: valueIrSchema }), z.object({ many: valueIrSchema })]),\n})\nexport type PrefetchPlanIr = z.infer<typeof prefetchPlanIrSchema>\n\nconst selectRootSchema = z.object({\n kind: z.literal('select'),\n alias: z.string(),\n table: z.string(),\n selection: selectionIrSchema,\n /** Composed at compile time: AND(policy, documentWhere?, dynamicFilter?). */\n where: predIrSchema,\n orderBy: z.array(orderIrSchema).default([]),\n distinctOn: z.union([z.array(z.string()), z.object({ slot: z.string() })]).optional(),\n limit: limitIrSchema,\n offset: z.object({ variable: z.string().optional(), value: z.number().int().optional() }).optional(),\n includeIf: includeIfSchema.optional(),\n prefetch: z.array(prefetchPlanIrSchema).optional(),\n})\n\nconst byPkRootSchema = z.object({\n kind: z.literal('byPk'),\n alias: z.string(),\n table: z.string(),\n selection: selectionIrSchema,\n pk: z.array(z.object({ column: z.string(), value: valueIrSchema })).min(1),\n /** Policy predicate — ANDed with the PK match. */\n where: predIrSchema,\n includeIf: includeIfSchema.optional(),\n prefetch: z.array(prefetchPlanIrSchema).optional(),\n})\n\nconst aggregateRootSchema = z.object({\n kind: z.literal('aggregate'),\n alias: z.string(),\n table: z.string(),\n where: predIrSchema,\n count: z.object({ columns: z.array(z.string()).optional(), distinct: z.boolean().optional() }).optional(),\n sum: z.array(z.string()).optional(),\n avg: z.array(z.string()).optional(),\n nodes: selectionIrSchema.optional(),\n includeIf: includeIfSchema.optional(),\n})\n\n/**\n * The date-bucket units a grouped aggregate may apply to a `date` /\n * `timestamptz` group key. A CLOSED enum on purpose: the executor maps each\n * member to a `date_trunc` literal, so no caller-supplied string ever reaches\n * SQL text. Adding a unit means adding it here AND to the executor's map —\n * the executor's exhaustive switch makes the omission a type error.\n */\nexport const DATE_BUCKETS = ['year', 'quarter', 'month', 'week', 'day', 'hour'] as const\nexport type DateBucket = (typeof DATE_BUCKETS)[number]\n\n/**\n * One group key: a column, optionally bucketed. `bucket` is only ever set on a\n * `date` / `timestamptz` column — the compiler rejects it on anything else, so\n * the executor can apply `date_trunc` without re-checking the column type.\n */\nconst groupByKeyIrSchema = z.object({\n column: z.string(),\n bucket: z.enum(DATE_BUCKETS).optional(),\n})\nexport type GroupByKeyIr = z.infer<typeof groupByKeyIrSchema>\n\n/**\n * A GROUPED aggregate root — `<t>AggregateGroups`. The ungrouped\n * `aggregateRootSchema` above stays exactly as it was; this is additive, so no\n * already-pushed artifact changes shape.\n *\n * Two deliberate omissions relative to the ungrouped root:\n * - no `nodes`. Per-group row lists are an unbounded fan-out (groups × rows)\n * and nothing needs them; the compiler rejects the field outright.\n * - `groupBy` is document-authored only — it is NOT a §4f dynamic slot. Group\n * keys pick which expressions reach GROUP BY, and dynamic-input.ts already\n * refuses aggregation shapes from client input for the same reason. The\n * `where` remains fully dynamic, which is what runtime filtering needs.\n */\nconst aggregateGroupsRootSchema = z.object({\n kind: z.literal('aggregateGroups'),\n alias: z.string(),\n table: z.string(),\n /** Composed at compile time: AND(policy, documentWhere?, dynamicFilter?). */\n where: predIrSchema,\n groupBy: z.array(groupByKeyIrSchema).min(1),\n /**\n * The `key { … }` projection: which group columns appear in each entry's key\n * object, in selection order. A subset of `groupBy` (the compiler rejects a\n * key field that is not a group key — it would be indeterminate within the\n * group). Empty when the document selects only `aggregate`.\n */\n key: z.array(z.object({ alias: z.string(), column: z.string() })).default([]),\n count: z.object({ columns: z.array(z.string()).optional(), distinct: z.boolean().optional() }).optional(),\n sum: z.array(z.string()).optional(),\n avg: z.array(z.string()).optional(),\n /** Bounds the GROUP count, not the scanned rows — see MAX_GROUPS. */\n limit: limitIrSchema,\n offset: z.object({ variable: z.string().optional(), value: z.number().int().optional() }).optional(),\n includeIf: includeIfSchema.optional(),\n})\n\n/** Column → value map for _set/_append/_inc, or a §4f whole-input slot. */\nconst writeValuesSchema = z.union([\n z.object({ slot: z.string() }),\n z.object({ entries: z.array(z.object({ column: z.string(), value: valueIrSchema })) }),\n])\n\nconst onConflictIrSchema = z.union([\n z.object({ slot: z.string() }),\n z.object({ constraint: z.string(), updateColumns: z.array(z.string()) }),\n])\n\nconst mutationRootSchema = z.object({\n kind: z.literal('mutation'),\n /**\n * CRUD verbs plus the structured copy-on-write ops. `cowOverride` copies the\n * synced row into the overlay (INSERT…SELECT, ON CONFLICT DO NOTHING) then\n * applies `set` — both statements generated by the executor from this\n * metadata, never authored SQL. `cowRevert` deletes the override so the\n * coalesce view falls back to synced. Both are gated on a matching synced\n * row and carry the write policy in `where` like update/delete.\n */\n op: z.enum(['insert', 'insertOne', 'update', 'updateByPk', 'delete', 'deleteByPk', 'cowOverride', 'cowRevert', 'resolvedWrite']),\n /**\n * resolvedWrite: a write to a resolved table (`table` is its view). The\n * executor gates on the resolved row (write policy in `where`), writes only\n * the touched cells into the manual source, then re-checks `insertCheck`\n * against the resolved row. `revert` clears `revertColumns` from the manual\n * source; `delete` tombstones the row there.\n */\n resolvedAction: z.enum(['insert', 'update', 'delete', 'revert']).optional(),\n revertColumns: z.array(z.string()).optional(),\n /** `@writeback(source:, mode:)` directives on this root. */\n writeback: z.array(z.object({ source: z.string(), mode: z.enum(['sync', 'async']) })).optional(),\n /** `@localOnly(source:)` — writeback columns deliberately kept local for these sources. */\n localOnly: z.array(z.string()).optional(),\n alias: z.string(),\n table: z.string(),\n /** CoW ops: logical name of the synced twin (read through its policy-filtered view). */\n cowSynced: z.string().optional(),\n /** cowOverride: logical properties copied INSERT…SELECT from synced (pk included). */\n cowCopyColumns: z.array(z.string()).optional(),\n /** cowOverride: insert-policy WITH CHECK evaluated over the copied rows. */\n cowCopyCheck: predIrSchema.optional(),\n /** insert/insertOne: rows come from a slot ($object/$objects) or literals. */\n objects: z.union([\n z.object({ slot: z.string() }),\n z.object({ rows: z.array(z.array(z.object({ column: z.string(), value: valueIrSchema }))) }),\n ]).optional(),\n /** Server-pinned columns (e.g. author_sub ← claim('sub')) merged into every inserted row. */\n pinnedColumns: z.array(z.object({ column: z.string(), value: valueIrSchema })).default([]),\n onConflict: onConflictIrSchema.optional(),\n set: writeValuesSchema.optional(),\n append: writeValuesSchema.optional(),\n inc: writeValuesSchema.optional(),\n /** update/delete row filter: AND(writePolicy, documentWhere/pk, dynamicFilter?). */\n where: predIrSchema.optional(),\n pk: z.array(z.object({ column: z.string(), value: valueIrSchema })).optional(),\n /** WITH CHECK analogue evaluated against NEW row values (insert/update). */\n insertCheck: predIrSchema.optional(),\n returning: selectionIrSchema.nullable(),\n affectedRows: z.boolean().default(false),\n /** v2: abort the transaction when the actual write count differs, regardless of selection. */\n assertAffectedRows: z.number().int().min(0).max(2147483647).optional(),\n includeIf: includeIfSchema.optional(),\n})\n\n// v2 has no action root kind — writes are mutations (CRUD or structured CoW\n// ops above). The former `kind: 'action'` scaffolding was removed before any\n// action operation was ever compiled into a registry artifact.\nexport const rootIrSchema = z.discriminatedUnion('kind', [\n selectRootSchema, byPkRootSchema, aggregateRootSchema, aggregateGroupsRootSchema, mutationRootSchema,\n])\nexport type RootIr = z.infer<typeof rootIrSchema>\n\n// ---------------------------------------------------------------------------\n// Variables (§4f dynamic slots) & operations\n// ---------------------------------------------------------------------------\n\nexport const INPUT_REF_KINDS = [\n 'boolExp', 'orderBy', 'selectColumn', 'insertInput', 'setInput', 'appendInput', 'onConflict',\n] as const\nexport type InputRefKind = (typeof INPUT_REF_KINDS)[number]\n\n/**\n * A declared GraphQL variable default, persisted verbatim so an omitted\n * variable resolves to it instead of silently becoming NULL. Wrapped in an\n * object so an explicit `= null` stays distinguishable from \"no default\".\n * Only shapes `ValueIr` can carry are representable — the restrict pass\n * rejects anything else (including §4f slot defaults) at compile time.\n */\nexport const variableDefaultIrSchema = z.object({\n value: z.union([scalarLiteral, z.array(scalarLiteral)]),\n})\nexport type VariableDefaultIr = z.infer<typeof variableDefaultIrSchema>\n\nexport const variableIrSchema = z.object({\n name: z.string(),\n type: z.union([\n z.object({ kind: z.literal('scalar'), scalar: z.enum(COLUMN_TYPES) }),\n /** `values` is the declared membership whitelist — the executor validates against it. */\n z.object({ kind: z.literal('enum'), name: z.string(), values: z.array(z.string()).min(1) }),\n /** §4f dynamic slot: validated against `tables[table]` whitelists at runtime. */\n z.object({ kind: z.literal('inputRef'), input: z.enum(INPUT_REF_KINDS), table: z.string() }),\n ]),\n nullable: z.boolean(),\n list: z.boolean(),\n /** Absent = no default declared; see {@link variableDefaultIrSchema}. */\n defaultValue: variableDefaultIrSchema.optional(),\n})\nexport type VariableIr = z.infer<typeof variableIrSchema>\n\nconst sqlColumnSchema = z.object({ name: z.string(), type: z.enum(['text', 'boolean', 'integer', 'bigint', 'numeric', 'double', 'uuid', 'date', 'timestamptz']), nullable: z.boolean() })\n\nexport const compiledOperationSchema = z.object({\n language: z.literal('sql').optional(),\n /** Server-compiled object catalog and permission ceiling, never caller SQL. */\n sqlQuery: z.object({\n catalog: z.object({\n identity: z.string(),\n objects: z.array(z.object({\n ref: z.string(), table: z.string(), columns: z.array(sqlColumnSchema.extend({ type: z.string() })).min(1),\n scan: z.string().min(1), read: z.array(z.string()).min(1),\n }).strict()).min(1).max(256),\n }).strict(),\n read: z.array(z.string()).min(1).max(256),\n maxRows: z.number().int().min(1).max(10_000),\n }).strict().optional(),\n sql: z.object({\n text: z.string().min(1).max(1_048_576),\n columns: z.array(sqlColumnSchema).min(1).max(256),\n parameters: z.array(z.string()).max(128),\n read: z.array(z.string()).min(1).max(256),\n maxRows: z.number().int().min(1).max(10_000),\n }).strict().optional(),\n irVersion: irVersionSchema,\n name: z.string(),\n opHash: z.string().regex(/^sha256:[0-9a-f]{64}$/),\n kind: z.enum(['query', 'mutation']),\n requires: z.object({\n capability: z.string().optional(),\n role: z.string().optional(),\n }).nullable(),\n variables: z.array(variableIrSchema),\n /** Every table the op touches — data-token scoping + audit. */\n tableSet: z.array(z.string()).min(1),\n roots: z.array(rootIrSchema),\n}).superRefine((operation, ctx) => {\n if (operation.language === 'sql') {\n const validPlan = operation.sqlQuery\n ? !operation.sql && operation.irVersion === RUNTIME_SQL_IR_VERSION\n : !!operation.sql && operation.irVersion === SQL_IR_VERSION\n if (!validPlan || operation.kind !== 'query' || operation.roots.length !== 0 || !operation.requires?.capability) {\n ctx.addIssue({ code: 'custom', message: 'SQL operations require a query-only v4 plan or v5 runtime contract, capability, and no GraphQL roots' })\n }\n } else if (operation.sql || operation.sqlQuery || operation.roots.length === 0) {\n ctx.addIssue({ code: 'custom', message: 'GraphQL operations require roots and cannot carry SQL' })\n }\n for (const [index, root] of operation.roots.entries()) {\n if (root.kind !== 'mutation' || root.assertAffectedRows === undefined) continue\n if (operation.irVersion < 2 || operation.kind !== 'mutation' || root.includeIf !== undefined) {\n ctx.addIssue({ code: 'custom', path: ['roots', index], message: 'affected-row assertions require unconditional mutation roots and IR v2' })\n }\n }\n})\nexport type CompiledOperation = z.infer<typeof compiledOperationSchema>\n\n// ---------------------------------------------------------------------------\n// Artifact: per-table runtime metadata + the operation set\n// ---------------------------------------------------------------------------\n\nexport const resolvedSourceIrSchema = z.object({\n name: z.string(),\n kind: z.enum(['manual', 'etl', 'prefetch']),\n /** Logical table key of the backing relation. */\n table: z.string(),\n columns: z.array(z.string()),\n key: z.string().optional(),\n fetch: z.union([\n z.object({ shape: z.literal('single') }),\n z.object({ shape: z.literal('batch'), maxKeys: z.number().int().positive() }),\n ]).optional(),\n function: z.object({ kind: z.enum(['managed', 'native']), id: z.string() }).optional(),\n prefetchDefaults: z.object({\n maxStalenessMs: z.number().int().positive(),\n timeoutMs: z.number().int().positive(),\n onError: z.enum(['fallback', 'fail']),\n }).optional(),\n writeback: z.object({\n columns: z.array(z.string()),\n defaultMode: z.enum(['sync', 'async']),\n timeoutMs: z.number().int().positive(),\n clearManualOnConfirm: z.boolean(),\n }).optional(),\n})\nexport type ResolvedSourceIr = z.infer<typeof resolvedSourceIrSchema>\n\nexport const resolvedMetaIrSchema = z.object({\n /** Logical pk column of the resolved view (single-column). */\n pk: z.string(),\n /** Source name of the manual source. */\n manual: z.string(),\n sources: z.array(resolvedSourceIrSchema),\n deletedBy: z.array(z.string()),\n /**\n * Materialized: the view reads `table`, which the data plane refreshes from\n * the `compute` view (claims-gated) whenever it writes a source row.\n */\n materialized: z.object({ table: z.string(), compute: z.string() }).optional(),\n})\nexport type ResolvedMetaIr = z.infer<typeof resolvedMetaIrSchema>\n\n/**\n * Runtime whitelist metadata per table — everything the executor needs to\n * build Drizzle table objects, validate §4f dynamic inputs, and lower them.\n * Derived from the canonical definition at compile time.\n */\nexport const tableMetaIrSchema = z.object({\n table: z.string(),\n namespace: z.string().optional(),\n dependencies: z.array(z.string()).optional(),\n foreignReferences: z.array(z.object({ column: z.string(), target: z.string(), targetColumn: z.string() })).optional(),\n exportRead: z.union([z.literal(true), z.object({ capability: z.string() }), z.object({ role: z.string() })]).optional(),\n exportWrite: z.union([z.literal(true), z.object({ capability: z.string() }), z.object({ role: z.string() })]).optional(),\n schema: z.string(),\n typename: z.string(),\n /**\n * True when statements over this relation evaluate a claims-gated synced\n * view: synced twins (`source: schema.table`) materialize as views whose baked\n * policy reads `current_setting('request.jwt.claims')`, and namespace views\n * inherit the gate transitively through their declared dependencies. The\n * executor must stamp that GUC (transaction-scoped) before any statement\n * touching such a relation, or the synced arm yields zero rows regardless\n * of the compiled predicates.\n */\n claimsGated: z.boolean().default(false),\n columns: z.array(z.object({\n name: z.string(),\n columnName: z.string(),\n type: z.union([z.enum(COLUMN_TYPES), z.object({ enum: z.string(), values: z.array(z.string()) })]),\n nullable: z.boolean(),\n })),\n /** Empty for keyless read-only views; keyed tables and views list logical columns. */\n primaryKey: z.array(z.string()),\n links: z.array(z.object({\n name: z.string(),\n kind: z.enum(['toOne', 'toMany', 'toPlatformUser']),\n target: z.string(),\n on: z.string(),\n references: z.string(),\n })),\n /** §4f whitelists: what dynamic inputs may reference. */\n filterable: z.array(z.string()),\n orderable: z.array(z.string()),\n insertable: z.array(z.string()),\n settable: z.array(z.string()),\n appendable: z.array(z.string()),\n /**\n * Logical columns stamped with Postgres `now()` on UPDATE (canonical\n * `onUpdateFn`). Omitted when empty so pre-onUpdate artifacts still parse.\n */\n touchOnUpdate: z.array(z.string()).optional(),\n /**\n * Per-cell metadata: logical column → the logical names of its cell-part\n * columns (which are listed in `columns`, but never filterable, orderable or\n * writable). Tables stamp `at`/`by` (and a manual source `rev`) on every\n * write; resolved views expose `source`/`at`/`by`/`conflicts`. Omitted when\n * the relation tracks no cells.\n */\n cells: z.record(z.string(), z.object({\n at: z.string().optional(),\n by: z.string().optional(),\n rev: z.string().optional(),\n source: z.string().optional(),\n conflicts: z.string().optional(),\n }).strict()).optional(),\n /** Resolved-table view metadata (sources, prefetch/writeback config) for the data plane. */\n resolved: resolvedMetaIrSchema.optional(),\n constraints: z.array(z.object({ name: z.string(), columns: z.array(z.string()) })),\n /** Depth/node caps for dynamic filter trees on this table. */\n dynamicFilterMaxDepth: z.number().int().positive().default(6),\n dynamicFilterMaxNodes: z.number().int().positive().default(64),\n})\nexport type TableMetaIr = z.infer<typeof tableMetaIrSchema>\n\nexport const compiledArtifactSchema = z.object({\n irVersion: irVersionSchema,\n namespace: z.string(),\n schemaHash: z.string(),\n ownSchemaHash: z.string().optional(),\n dependencies: z.record(z.string(), z.string()).optional(),\n readPolicies: z.record(z.string(), predIrSchema).optional(),\n opsHash: z.string(),\n /** Apply-observed synced objects without a serving backing; not part of the authored schema hash. */\n unbackedTables: z.array(z.string()).optional(),\n tables: z.record(z.string(), tableMetaIrSchema),\n operations: z.record(z.string(), compiledOperationSchema),\n}).superRefine((artifact, ctx) => {\n if (Object.keys(artifact.dependencies ?? {}).length > 0 && artifact.irVersion < COMPOSED_IR_VERSION) {\n ctx.addIssue({ code: 'custom', path: ['irVersion'], message: 'cross-namespace dependencies require IR v3' })\n }\n for (const [name, operation] of Object.entries(artifact.operations)) {\n if (operation.irVersion > artifact.irVersion) {\n ctx.addIssue({ code: 'custom', path: ['operations', name, 'irVersion'], message: 'operation requires a newer IR version than its artifact' })\n }\n }\n})\nexport type CompiledArtifact = z.infer<typeof compiledArtifactSchema>\n\n// ---------------------------------------------------------------------------\n// Versioning shim\n// ---------------------------------------------------------------------------\n\nexport class IrVersionError extends Error {\n constructor(found: unknown) {\n super(`Unsupported IR version ${String(found)} — this executor supports up to ${IR_VERSION}. ` +\n 'Upgrade @sequenceholdings/orm or re-push the namespace.')\n this.name = 'IrVersionError'\n }\n}\n\n/**\n * Validate + normalize a raw registry artifact (the normalizeSnapshot\n * pattern): future IR versions add upgrade branches here so executor\n * upgrades decouple from artifact re-pushes. Never trust registry jsonb —\n * the data plane calls this on every artifact load.\n */\nexport function normalizeIr(raw: unknown): CompiledArtifact {\n if (!raw || typeof raw !== 'object') throw new IrVersionError(undefined)\n const version = (raw as { irVersion?: unknown }).irVersion\n if (!irVersionSchema.safeParse(version).success) throw new IrVersionError(version)\n return compiledArtifactSchema.parse(raw)\n}\n\n/** Index an artifact's operations by opHash (the wire selector). */\nexport function indexByHash(artifact: CompiledArtifact): Map<string, CompiledOperation> {\n const map = new Map<string, CompiledOperation>()\n for (const op of Object.values(artifact.operations)) map.set(op.opHash, op)\n return map\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/compiler/sql.ts","../src/checks/compile.ts","../src/constants.ts","../src/canonical/policy.ts","../src/canonical/resolved.ts","../src/canonical/v2.ts","../src/ir/index.ts"],"names":["identifier","column","z","index"],"mappings":"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","file":"ir.cjs","sourcesContent":["/** Claims are stamped per transaction by the Data API (`set_config('request.jwt.claims', …, true)`). */\nexport const CLAIMS_SETTING = 'request.jwt.claims'\n\n/** Claims JSON key holding the caller's granted capability pins (a string array). */\nexport const CAPABILITIES_CLAIM_KEY = 'capabilities'\n\n/** Claims JSON key holding the caller's granted custom roles (a string array). */\nexport const ROLES_CLAIM_KEY = 'roles'\n\nexport const quoteIdentifier = (name: string): string => `\"${name.replaceAll('\"', '\"\"')}\"`\n\nexport const quoteLiteral = (value: string): string => `'${value.replaceAll(\"'\", \"''\")}'`\n\n/** `nullif(…, '')` because a session that ever set the GUC reverts it to '' (not NULL) after the transaction — ''::jsonb is an error. */\nconst CLAIMS_SOURCE = `nullif(current_setting('${CLAIMS_SETTING}', true), '')::jsonb`\n\nexport const claimExpression = (key: string): string => `(${CLAIMS_SOURCE} ->> ${quoteLiteral(key)})`\n\n/** NULL claims (or a missing capabilities array) coalesce to false — capability checks fail closed. */\nconst scopedClaimsSource = (namespace?: string): string => namespace\n ? `(CASE WHEN ${CLAIMS_SOURCE} ? 'namespaces' THEN ${CLAIMS_SOURCE} -> 'namespaces' -> ${quoteLiteral(namespace)} ELSE ${CLAIMS_SOURCE} END)`\n : CLAIMS_SOURCE\n\nexport const capabilityExpression = (key: string, namespace?: string): string =>\n `coalesce(${scopedClaimsSource(namespace)} -> '${CAPABILITIES_CLAIM_KEY}' ? ${quoteLiteral(key)}, false)`\n\n/** NULL claims (or a missing roles array) coalesce to false — role checks fail closed. */\nexport const roleExpression = (key: string, namespace?: string): string =>\n `coalesce(${scopedClaimsSource(namespace)} -> '${ROLES_CLAIM_KEY}' ? ${quoteLiteral(key)}, false)`\n","import { quoteIdentifier, quoteLiteral } from '../compiler/sql.js'\n\n/** A deliberately small, data-only SQL predicate subset for PostgreSQL CHECK constraints. */\ntype Column = { name: string; columnName: string; type: string | { enum: string } }\ntype TokenKind = 'identifier' | 'string' | 'number' | 'operator' | 'lparen' | 'rparen' | 'comma' | 'end'\ntype Token = { kind: TokenKind; value: string; position: number }\ntype Value = { sql: string; column?: Column; literal?: boolean }\n\nfunction tokenize(source: string): Token[] {\n const tokens: Token[] = []\n for (let position = 0; position < source.length;) {\n const char = source[position]!\n if (/\\s/.test(char)) { position++; continue }\n if (char === '(' || char === ')' || char === ',') {\n tokens.push({ kind: char === '(' ? 'lparen' : char === ')' ? 'rparen' : 'comma', value: char, position })\n position++\n continue\n }\n if (char === \"'\") {\n const start = position++\n let value = ''\n let closed = false\n while (position < source.length) {\n if (source[position] !== \"'\") { value += source[position++]; continue }\n if (source[position + 1] === \"'\") { value += \"'\"; position += 2; continue }\n position++\n closed = true\n break\n }\n if (!closed) throw new Error(`unterminated string at position ${start}`)\n if (/[\\x00-\\x1f\\x7f]/.test(value)) throw new Error(`control character in string at position ${start}`)\n tokens.push({ kind: 'string', value, position: start })\n continue\n }\n const operator = /^(<=|>=|<>|!=|!~|=|<|>|~)/.exec(source.slice(position))\n if (operator) {\n tokens.push({ kind: 'operator', value: operator[0] === '<>' ? '!=' : operator[0], position })\n position += operator[0].length\n continue\n }\n const number = /^-?\\d+(?:\\.\\d+)?/.exec(source.slice(position))\n if (number) {\n tokens.push({ kind: 'number', value: number[0], position })\n position += number[0].length\n continue\n }\n const identifier = /^[a-zA-Z_][a-zA-Z_0-9]*/.exec(source.slice(position))\n if (identifier) {\n tokens.push({ kind: 'identifier', value: identifier[0], position })\n position += identifier[0].length\n continue\n }\n throw new Error(`unexpected character '${char}' at position ${position}`)\n }\n tokens.push({ kind: 'end', value: '', position: source.length })\n if (tokens.length > 256) throw new Error('check expression exceeds 256 tokens')\n return tokens\n}\n\nclass Parser {\n private index = 0\n private depth = 0\n private readonly columns: Map<string, Column>\n\n constructor(private readonly tokens: Token[], columns: readonly Column[]) {\n this.columns = new Map()\n for (const column of columns) {\n for (const alias of [column.name, column.columnName]) {\n const previous = this.columns.get(alias)\n if (previous && previous.columnName !== column.columnName) {\n throw new Error(`ambiguous check column '${alias}'`)\n }\n this.columns.set(alias, column)\n }\n }\n }\n\n parse(): string {\n const expression = this.parseOr()\n this.expect('end', 'end of expression')\n return expression\n }\n\n private parseOr(): string {\n let left = this.parseAnd()\n while (this.matchKeyword('or')) left = `(${left} OR ${this.parseAnd()})`\n return left\n }\n\n private parseAnd(): string {\n let left = this.parseNot()\n while (this.matchKeyword('and')) left = `(${left} AND ${this.parseNot()})`\n return left\n }\n\n private parseNot(): string {\n if (this.matchKeyword('not')) return `(NOT ${this.parseNot()})`\n return this.parsePrimary()\n }\n\n private parsePrimary(): string {\n if (this.peek().kind === 'lparen') {\n if (++this.depth > 32) throw new Error('check expression nesting exceeds 32 levels')\n this.advance()\n const expression = this.parseOr()\n this.expect('rparen', \"')'\")\n this.depth--\n return `(${expression})`\n }\n return this.parseComparison()\n }\n\n private parseComparison(): string {\n const left = this.parseValue()\n if (this.matchKeyword('is')) {\n const negate = this.matchKeyword('not')\n this.expectKeyword('null')\n return `${left.sql} IS ${negate ? 'NOT ' : ''}NULL`\n }\n if (this.matchKeyword('between')) {\n const lower = this.parseValue()\n this.expectKeyword('and')\n const upper = this.parseValue()\n return `${left.sql} BETWEEN ${lower.sql} AND ${upper.sql}`\n }\n if (this.matchKeyword('in')) {\n this.expect('lparen', \"'(' after IN\")\n const values = [this.parseValue()]\n while (this.peek().kind === 'comma') { this.advance(); values.push(this.parseValue()) }\n this.expect('rparen', \"')' after IN values\")\n if (values.some(value => !value.literal)) throw new Error('IN values must be literals')\n return `${left.sql} IN (${values.map(value => value.sql).join(', ')})`\n }\n const operator = this.expect('operator', 'a comparison operator')\n const right = this.parseValue()\n if (operator.value === '~' || operator.value === '!~') {\n if (left.column && left.column.type !== 'text') throw new Error('regex checks require a text column')\n if (!right.literal) throw new Error('regex pattern must be a literal')\n }\n return `${left.sql} ${operator.value} ${right.sql}`\n }\n\n private parseValue(): Value {\n const token = this.advance()\n if (token.kind === 'string') return { sql: quoteLiteral(token.value), literal: true }\n if (token.kind === 'number') {\n const number = Number(token.value)\n if (!Number.isFinite(number) || (Number.isInteger(number) && !Number.isSafeInteger(number))) {\n throw new Error(`unsafe numeric literal at position ${token.position}`)\n }\n return { sql: token.value, literal: true }\n }\n if (token.kind !== 'identifier') throw new Error(`expected a column or literal at position ${token.position}`)\n const keyword = token.value.toLowerCase()\n if (keyword === 'true' || keyword === 'false' || keyword === 'null') return { sql: keyword.toUpperCase(), literal: true }\n if (keyword === 'btrim') {\n this.expect('lparen', \"'(' after btrim\")\n const column = this.parseColumn()\n this.expect('rparen', \"')' after btrim column\")\n if (column.type !== 'text') throw new Error('btrim requires a text column')\n return { sql: `btrim(${quoteIdentifier(column.columnName)})`, column }\n }\n const column = this.columns.get(token.value)\n if (!column) throw new Error(`unknown check column '${token.value}'`)\n return { sql: quoteIdentifier(column.columnName), column }\n }\n\n private parseColumn(): Column {\n const token = this.expect('identifier', 'a column name')\n const column = this.columns.get(token.value)\n if (!column) throw new Error(`unknown check column '${token.value}'`)\n return column\n }\n\n private peek(): Token { return this.tokens[this.index]! }\n private advance(): Token { const token = this.peek(); if (token.kind !== 'end') this.index++; return token }\n private matchKeyword(keyword: string): boolean {\n if (this.peek().kind !== 'identifier' || this.peek().value.toLowerCase() !== keyword) return false\n this.advance()\n return true\n }\n private expectKeyword(keyword: string): void {\n if (!this.matchKeyword(keyword)) throw new Error(`expected '${keyword}' at position ${this.peek().position}`)\n }\n private expect(kind: TokenKind, description: string): Token {\n const token = this.peek()\n if (token.kind !== kind) throw new Error(`expected ${description} at position ${token.position}`)\n return this.advance()\n }\n}\n\nexport function compileCheckExpression(source: string, columns: readonly Column[]): string {\n return new Parser(tokenize(source), columns).parse()\n}\n","/** Shared grammar for namespace identifiers; never interpolate arbitrary paths. */\nexport const NAMESPACE_PATTERN = /^[a-z][a-z0-9_]{0,40}$/\n\n/** Caller-scoped delegated data credential, supplied by an authenticated host. */\nexport const ORM_DATA_TOKEN_HEADER = 'x-sequence-data-token'\n\n/** Separate service-identity credential; never used as an implicit fallback. */\nexport const ORM_SERVICE_DATA_TOKEN_HEADER = 'x-sequence-data-token-service'\n\nexport const IDENTIFIER_PATTERN = /^[a-z][a-z0-9_]*$/\n/** Native source columns may have one leading underscore; relation names may not. */\nexport const COLUMN_IDENTIFIER_PATTERN = /^_?[a-z][a-z0-9_]*$/\nexport const MAX_IDENTIFIER_LENGTH = 63\n\n/**\n * Custom Roles & Capabilities claim keys as policies reference them: a\n * host-scoped registry key, an org pin's `org/<key>`, or an Application\n * capability pin's `app/<application-id>/<key>`. Matches the registry\n * key grammar EXACTLY (`[a-z0-9-]`, 1–64 chars, no `_` — the FGA object-id\n * delimiter) so any capability that's declarable/attachable in namespace.yaml\n * can also be referenced here — a stricter pattern would let a valid key\n * register yet fail at apply (e.g. `org/2fa`, a one-char or digit-led key).\n */\nexport const CAPABILITY_KEY_PATTERN = /^(?:org\\/|app\\/[a-z][a-z0-9-]{0,63}\\/)?[a-z0-9-]{1,64}$/\n\nexport const CLAIM_KEY_PATTERN = /^[a-z][a-z0-9_]*$/\n\n/** Qualified reference to a table outside the defining file: `<schema>.<table>`. */\nexport const QUALIFIED_TABLE_PATTERN = /^[a-z][a-z0-9_]{0,62}\\.[a-z][a-z0-9_]{0,62}$/\n\n/** Qualified source syntax only; the serving installation controls authorized backing. */\nexport const SYNCED_SOURCE_PATTERN = QUALIFIED_TABLE_PATTERN\n\nexport const ORM_SCHEMA_PREFIX = 'orm_'\nexport const CONSUMER_ROLE_SUFFIX = '_consumer'\n\nexport const ormSchemaName = (namespace: string): string => `${ORM_SCHEMA_PREFIX}${namespace}`\nexport const consumerRoleName = (namespace: string): string =>\n `${ORM_SCHEMA_PREFIX}${namespace}${CONSUMER_ROLE_SUFFIX}`\n\nexport const DEFINITION_FILE_EXTENSIONS = ['.yml', '.yaml'] as const\n\n/** Reserved basenames for the namespace-level config file (description, org capability pins). */\nexport const NAMESPACE_CONFIG_FILENAMES = new Set(['namespace.yaml', 'namespace.yml'])\n\nexport const HASH_DOMAIN = 'sequence-orm-definitions\\0'\n\n/**\n * A per-file byte cap where the loader reads untrusted YAML into memory — a real failure mode, not a product\n * limit. Counts of tables/indexes/params and policy/SQL lengths are\n * deliberately uncapped; Postgres enforces its own limits loudly at apply.\n */\nexport const MAX_DEFINITION_FILE_BYTES = 1024 * 1024\n\n/** Generated SDL aggregates every table/view; it is not an individual source file. */\nexport const MAX_GENERATED_SDL_BYTES = 16 * 1024 * 1024\n\n/** Registration and reviewed exports carry SDL, canonical metadata, snapshots and migrations. */\nexport const ORM_REGISTRATION_MAX_BYTES = 64 * 1024 * 1024\n\n/** `/api/data/<ns>/actions/…` and `/api/data/<ns>/query` share the table path segment. */\nexport const RESERVED_TABLE_NAMES = new Set(['actions', 'query'])\n\n/**\n * The Data API's query-string grammar owns these parameter names — a column\n * with one of them could never be filtered over the wire, so definitions\n * refuse it up front (\"validate rejects only what can never work\").\n */\nexport const RESERVED_COLUMN_NAMES = new Set(['select', 'order', 'limit', 'offset'])\n\n/**\n * Per-cell metadata (`cellMetadata: true`, and every resolved-table source) is\n * stored as typed system columns beside each tracked column `c`:\n *\n * - `c__at` timestamptz — when the cell was last written (NULL: never / no opinion)\n * - `c__by` text — who wrote it\n * - `c__rev` uuid — a resolved table's manual source only: the edit's\n * identity, so an async writeback confirmation clears\n * only the exact edit it delivered\n *\n * A resolved view additionally exposes, per resolved column, the winner's\n * `c__src` (source name) and `c__lost` (newer candidates that lost, jsonb).\n * None of these are GraphQL columns: they surface through the typed `cells`\n * object and are never client-writable.\n */\nexport const CELL_PARTS = ['at', 'by', 'rev', 'source', 'conflicts'] as const\nexport type CellPart = (typeof CELL_PARTS)[number]\nexport const CELL_PART_SUFFIX: Readonly<Record<CellPart, string>> = {\n at: '__at', by: '__by', rev: '__rev', source: '__src', conflicts: '__lost',\n}\n/** Longest physical column name that can carry cell parts (63 minus the longest suffix). */\nexport const MAX_TRACKED_COLUMN_NAME = MAX_IDENTIFIER_LENGTH - 6\n/** GraphQL field carrying a row's per-cell metadata object. */\nexport const CELLS_FIELD = 'cells'\n\n/** Physical (and logical) name of one cell part of a column. */\nexport function cellColumnName(column: string, part: CellPart): string {\n return `${column}${CELL_PART_SUFFIX[part]}`\n}\n\n/**\n * Actor recorded when the data plane computes a materialized resolved table's\n * rows for every caller. Its claims are what the compute view's synced\n * sources see (materialized ETL sources must be readable by anyone).\n */\nexport const MATERIALIZE_ACTOR = 'orm:materialize'\nexport const MATERIALIZE_CLAIMS_JSON = JSON.stringify({ sub: MATERIALIZE_ACTOR, org: null, roles: [], capabilities: [] })\n\n/**\n * Apply-generated function that reconciles a materialized resolved table with\n * its compute view: `SELECT * FROM orm_<ns>.\"<table>__refresh\"(wait)` returns\n * `(upserted, deleted, locked)`; without `wait` it skips when another refresh\n * holds the table's lock. The one refresh implementation — the Atlas\n * reconcile, the post-ETL hook, and an operator in psql all call it.\n */\nexport function materializedRefreshFunctionName(table: string): string {\n return `${table}__refresh`\n}\n\n/**\n * Advisory-lock key serializing a materialized table's refreshes (hashed with\n * `hashtext`). A full refresh holds it exclusively and every ORM write's\n * per-row refresh holds it shared, both before reading the compute view — so\n * a full refresh never reads a snapshot older than a write it then overwrites.\n */\nexport function materializeLockKey(schema: string, table: string): string {\n return `orm:materialize:${schema}.${table}`\n}\n","/**\n * Policy expression grammar shared by tables, views and resolved tables. The\n * DSL strings are parsed and claim-checked by predicate-v2 in both the CLI\n * and the server; variants follow §4c permissive-union semantics.\n */\nimport { z } from 'zod'\n\nexport const policyVariantSchema = z.object({\n /** Claims-only guard (capability()/role()/claim() comparisons — no columns). */\n when: z.string().min(1).max(1000),\n /** Exactly one of: allow-all bypass, or a row predicate. */\n allow: z.literal(true).optional(),\n policy: z.string().min(1).max(2000).optional(),\n}).refine((v) => (v.allow === true) !== (typeof v.policy === 'string'), {\n message: 'A variant declares exactly one of allow: true or policy',\n})\n\nexport const policyExpressionSchema = z.union([\n z.string().min(1).max(2000),\n z.object({\n default: z.string().min(1).max(2000),\n variants: z.array(policyVariantSchema).max(10).default([]),\n }),\n])\nexport type PolicyExpression = z.infer<typeof policyExpressionSchema>\n","/**\n * Canonical contract for resolved tables: one logical table (a generated\n * managed view) backed by N source tables of three kinds —\n *\n * - `manual` an internal ORM table holding sparse user edits (the only\n * GraphQL mutation target),\n * - `etl` a synced (`source: schema.table`) table fed by a pipeline,\n * - `prefetch` an internal ORM \"live\" table filled by a function that reads\n * the source system on demand (and confirms writebacks).\n *\n * Each column picks its value across candidate sources with a SQL comparator\n * compiled into the view, so policies, filters, sorting and nested relations\n * all see resolved values. This module owns the metadata the compiler (write\n * roots, directives) and data plane (prefetch, writeback) need; the view SQL\n * itself is generated at authoring time and validated like any managed view.\n */\nimport { z } from 'zod'\nimport { cellColumnName, type CellPart } from '../constants.js'\nimport { policyExpressionSchema } from './policy.js'\n\n/** `'1500ms'` / `'30s'` / `'5m'` (or a millisecond number) → milliseconds; undefined when malformed. */\nexport function parseDurationMs(input: number | string): number | undefined {\n if (typeof input === 'number') return Number.isInteger(input) && input > 0 ? input : undefined\n const match = /^(\\d+(?:\\.\\d+)?)(ms|s|m)$/.exec(input)\n if (!match) return undefined\n const factor = match[2] === 'ms' ? 1 : match[2] === 's' ? 1000 : 60_000\n const value = Math.round(Number(match[1]) * factor)\n return value > 0 ? value : undefined\n}\n\nconst identifier = z.string().min(1).max(63).regex(/^[a-z][a-z0-9_]*$/)\nconst durationMs = z.number().int().positive().max(24 * 60 * 60 * 1000)\n\n/**\n * Row-level system columns the generated view adds after the authored columns\n * (GraphQL fields). Per-cell provenance lives in typed cell parts instead —\n * see RESOLVED_VIEW_CELL_PARTS.\n */\nexport const RESOLVED_VIEW_SYSTEM_COLUMNS = {\n writebackStatus: { name: 'writebackStatus', columnName: '_writeback_status', type: 'text' },\n writebackError: { name: 'writebackError', columnName: '_writeback_error', type: 'text' },\n} as const\n\n/** System columns on the internal manual / live tables (never exposed in GraphQL). */\nexport const RESOLVED_SOURCE_SYSTEM_COLUMNS = {\n tombstoned: { name: 'sysTombstoned', columnName: '_tombstoned' },\n fetchedAt: { name: 'sysFetchedAt', columnName: '_fetched_at' },\n writebackStatus: { name: 'sysWritebackStatus', columnName: '_writeback_status' },\n writebackError: { name: 'sysWritebackError', columnName: '_writeback_error' },\n writebackAt: { name: 'sysWritebackAt', columnName: '_writeback_at' },\n} as const\n\n/** Cell parts the resolved view exposes per resolved column: the winner's source, time, actor, and newer losers. */\nexport const RESOLVED_VIEW_CELL_PARTS = ['source', 'at', 'by', 'conflicts'] as const satisfies readonly CellPart[]\n/** Cell parts on a resolved table's internal sources; only the manual source carries `rev`. */\nexport const RESOLVED_SOURCE_CELL_PARTS = { manual: ['at', 'by', 'rev'], prefetch: ['at', 'by'] } as const satisfies Record<'manual' | 'prefetch', readonly CellPart[]>\n\nexport const RESERVED_RESOLVED_COLUMN_NAMES: ReadonlySet<string> = new Set([\n ...Object.values(RESOLVED_VIEW_SYSTEM_COLUMNS).flatMap((c) => [c.name, c.columnName]),\n ...Object.values(RESOLVED_SOURCE_SYSTEM_COLUMNS).flatMap((c) => [c.name, c.columnName]),\n])\n\nexport const COMPARATORS = ['latest', 'highest', 'lowest', 'priority', 'nonNullFirst', 'custom'] as const\nexport type ComparatorKind = (typeof COMPARATORS)[number]\n\nexport const canonicalFunctionRefSchema = z.object({\n /** `managed` = a Managed Function id/slug; `native` = an in-process Atlas function (reserved). */\n kind: z.enum(['managed', 'native']),\n id: z.string().min(1).max(200),\n}).strict()\nexport type CanonicalFunctionRef = z.infer<typeof canonicalFunctionRefSchema>\n\n/** What the source API can fetch: one key per call, or a batch of up to maxKeys. */\nexport const canonicalFetchShapeSchema = z.union([\n z.object({ shape: z.literal('single') }).strict(),\n z.object({ shape: z.literal('batch'), maxKeys: z.number().int().min(2).max(500) }).strict(),\n])\nexport type CanonicalFetchShape = z.infer<typeof canonicalFetchShapeSchema>\n\nexport const canonicalResolvedSourceSchema = z.object({\n name: identifier,\n kind: z.enum(['manual', 'etl', 'prefetch']),\n /** Backing relation in this namespace: an internal table (manual/prefetch) or a synced table (etl). */\n table: identifier,\n /** Resolved columns (logical names) this source supplies — the primary key is implicit. */\n columns: z.array(z.string().min(1).max(63)).min(1).max(500),\n /** etl: logical timestamptz/date column on the synced table used as every cell's updated_at. */\n updatedAt: z.string().min(1).max(63).optional(),\n /** prefetch: resolved column holding the source system's key (may be the primary key). */\n key: z.string().min(1).max(63).optional(),\n fetch: canonicalFetchShapeSchema.optional(),\n function: canonicalFunctionRefSchema.optional(),\n prefetchDefaults: z.object({\n maxStalenessMs: durationMs,\n timeoutMs: durationMs,\n onError: z.enum(['fallback', 'fail']),\n }).strict().optional(),\n writeback: z.object({\n columns: z.array(z.string().min(1).max(63)).min(1).max(500),\n defaultMode: z.enum(['sync', 'async']),\n timeoutMs: durationMs,\n /** Remove confirmed cells from the manual source so a stale edit cannot shadow the source. */\n clearManualOnConfirm: z.boolean(),\n }).strict().optional(),\n}).strict()\nexport type CanonicalResolvedSource = z.infer<typeof canonicalResolvedSourceSchema>\n\nexport const canonicalResolveRuleSchema = z.object({\n column: z.string().min(1).max(63),\n comparator: z.enum(COMPARATORS),\n /** Source names, in tie-break order. */\n candidates: z.array(identifier).min(1).max(16),\n /** custom only: SQL ORDER BY key over value / updated_at / source / actor / ord. */\n orderBy: z.string().min(1).max(2000).optional(),\n}).strict()\nexport type CanonicalResolveRule = z.infer<typeof canonicalResolveRuleSchema>\n\nexport const canonicalResolvedSchema = z.object({\n sources: z.array(canonicalResolvedSourceSchema).min(1).max(16),\n /** One rule per resolved (non-pk) column; documents the generated view for tooling. */\n resolve: z.array(canonicalResolveRuleSchema).max(500),\n /** Sources whose tombstone hides the resolved row (v1: the manual source only). */\n deletedBy: z.array(identifier).max(1).default([]),\n /**\n * Materialized: the view reads an indexed internal table (`table`) that the\n * data plane keeps in step with `compute`, the internal view holding the\n * resolution query. Omitted when the view computes on read.\n */\n materialized: z.object({ table: identifier, compute: identifier }).strict().optional(),\n /** Write policies evaluated against the RESOLVED row (reads use the view's read policy). */\n policies: z.object({\n write: policyExpressionSchema.optional(),\n insert: policyExpressionSchema.optional(),\n update: policyExpressionSchema.optional(),\n }).strict().default({}),\n}).strict()\nexport type CanonicalResolved = z.infer<typeof canonicalResolvedSchema>\n\ninterface RelationShape {\n table: string\n source?: string\n internal?: true\n cellMetadata?: true\n materializes?: string\n policies?: { read?: string | { default: string; variants: unknown[] } }\n primaryKey?: string[]\n columns: Array<{ name: string; columnName: string; type: unknown; cell?: { of: string; part: CellPart } }>\n}\ninterface ViewShape {\n view: string\n internal?: true\n primaryKey?: string[]\n columns: Array<{ name: string; columnName: string; type: unknown; nullable?: boolean; cell?: { of: string; part: CellPart } }>\n resolved?: CanonicalResolved\n}\n\ntype Column = ViewShape['columns'][number]\n\ninterface ValidationScope {\n view: ViewShape\n resolved: CanonicalResolved\n pkColumn: Column\n dataColumns: Map<string, Column>\n sourceByName: Map<string, CanonicalResolvedSource>\n fail: (message: string) => void\n}\n\n/**\n * Cross-relation validation for one resolved view. Returns messages rather\n * than throwing so the definition-level superRefine can attach paths.\n */\nexport function validateResolvedView({ view, tables, views = [] }: { view: ViewShape; tables: readonly RelationShape[]; views?: readonly ViewShape[] }): string[] {\n const resolved = view.resolved\n if (!resolved) return []\n const errors: string[] = []\n const fail = (message: string) => errors.push(`resolved table '${view.view}': ${message}`)\n\n const pkColumn = view.primaryKey?.length === 1 ? view.columns.find((c) => c.columnName === view.primaryKey?.[0]) : undefined\n if (!pkColumn) {\n fail('requires exactly one primary-key column')\n return errors\n }\n const systemNames = new Set<string>(Object.values(RESOLVED_VIEW_SYSTEM_COLUMNS).map((c) => c.name))\n const scope: ValidationScope = {\n view,\n resolved,\n pkColumn,\n dataColumns: new Map(view.columns.filter((c) => !systemNames.has(c.name) && c.cell === undefined).map((c) => [c.name, c])),\n sourceByName: new Map(),\n fail,\n }\n if (resolved.sources.filter((source) => source.kind === 'manual').length !== 1) fail('requires exactly one manual source')\n\n const tableByName = new Map(tables.map((table) => [table.table, table]))\n for (const source of resolved.sources) {\n if (scope.sourceByName.has(source.name)) fail(`duplicate source '${source.name}'`)\n scope.sourceByName.set(source.name, source)\n const table = tableByName.get(source.table)\n if (!table) fail(`source '${source.name}' references unknown table '${source.table}'`)\n else validateSource({ scope, source, table })\n }\n validateRules(scope)\n validateViewCells(scope)\n if (resolved.materialized) validateMaterialized({ scope, tableByName, views })\n for (const name of resolved.deletedBy) {\n if (scope.sourceByName.get(name)?.kind !== 'manual') fail(`deletedBy '${name}' must be the manual source`)\n }\n return errors\n}\n\nfunction validateSource({ scope, source, table }: { scope: ValidationScope; source: CanonicalResolvedSource; table: RelationShape }): void {\n const { fail } = scope\n if (source.kind === 'etl' && table.source === undefined) fail(`etl source '${source.name}' must reference a synced table`)\n if (source.kind !== 'etl' && (table.internal !== true || table.cellMetadata !== true)) {\n fail(`${source.kind} source '${source.name}' must reference an internal table with cell metadata`)\n }\n const hasRev = table.columns.some((column) => column.cell?.part === 'rev')\n if (source.kind === 'manual' && !hasRev) fail(`manual source '${source.name}' must carry '__rev' cell columns`)\n if (source.kind === 'prefetch' && hasRev) fail(`prefetch source '${source.name}' must not carry '__rev' cell columns`)\n const byName = new Map(table.columns.map((c) => [c.name, c]))\n validateSourceColumns({ scope, source, byName })\n if (source.kind === 'etl') {\n const updatedAt = source.updatedAt === undefined ? undefined : byName.get(source.updatedAt)\n if (source.updatedAt !== undefined && updatedAt?.type !== 'timestamptz' && updatedAt?.type !== 'date') {\n fail(`etl source '${source.name}' updatedAt must name a timestamptz/date column on '${source.table}'`)\n }\n }\n validatePrefetchFields({ scope, source })\n}\n\nfunction validatePrefetchFields({ scope, source }: { scope: ValidationScope; source: CanonicalResolvedSource }): void {\n const { fail, pkColumn } = scope\n if (source.kind !== 'prefetch') {\n if (source.key || source.fetch || source.function || source.prefetchDefaults || source.writeback) {\n fail(`only prefetch sources may declare key/fetch/function/prefetchDefaults/writeback ('${source.name}')`)\n }\n return\n }\n if (!source.key || !source.fetch || !source.function || !source.prefetchDefaults) {\n fail(`prefetch source '${source.name}' requires key, fetch, function and prefetchDefaults`)\n } else if (source.key !== pkColumn.name && !source.columns.includes(source.key)) {\n fail(`prefetch source '${source.name}' key '${source.key}' must be the primary key or one of its columns`)\n }\n for (const column of source.writeback?.columns ?? []) {\n if (!source.columns.includes(column)) fail(`prefetch source '${source.name}' writes back '${column}', which it does not supply`)\n }\n}\n\nfunction validateSourceColumns({ scope, source, byName }: {\n scope: ValidationScope\n source: CanonicalResolvedSource\n byName: Map<string, Column>\n}): void {\n const { fail, pkColumn, dataColumns } = scope\n for (const column of [pkColumn.name, ...source.columns]) {\n const own = column === pkColumn.name ? pkColumn : dataColumns.get(column)\n const theirs = byName.get(column)\n if (!own) fail(`source '${source.name}' supplies unknown column '${column}'`)\n else if (!theirs) fail(`source '${source.name}' table '${source.table}' has no column '${column}'`)\n else if (JSON.stringify(theirs.type) !== JSON.stringify(own.type)) fail(`column '${column}' has a different type on source '${source.name}'`)\n }\n}\n\nfunction validateRules({ resolved, pkColumn, dataColumns, sourceByName, fail }: ValidationScope): void {\n const ruled = new Set<string>()\n for (const rule of resolved.resolve) {\n if (!dataColumns.has(rule.column) || rule.column === pkColumn.name) {\n fail(`resolve rule targets unknown column '${rule.column}'`)\n continue\n }\n if (ruled.has(rule.column)) fail(`column '${rule.column}' has more than one resolve rule`)\n ruled.add(rule.column)\n if ((rule.comparator === 'custom') !== (rule.orderBy !== undefined)) {\n fail(`column '${rule.column}': orderBy is required for custom comparators and only allowed there`)\n }\n if (new Set(rule.candidates).size !== rule.candidates.length) fail(`column '${rule.column}' repeats a candidate`)\n for (const candidate of rule.candidates) {\n const source = sourceByName.get(candidate)\n if (!source) fail(`column '${rule.column}' names unknown candidate source '${candidate}'`)\n else if (!source.columns.includes(rule.column)) fail(`column '${rule.column}' candidate '${candidate}' does not supply it`)\n }\n }\n for (const column of dataColumns.keys()) {\n if (column !== pkColumn.name && !ruled.has(column)) fail(`column '${column}' has no resolve rule`)\n }\n}\n\nconst VIEW_CELL_TYPES: Readonly<Record<(typeof RESOLVED_VIEW_CELL_PARTS)[number], string>> = {\n source: 'text', at: 'timestamptz', by: 'text', conflicts: 'jsonb',\n}\n\n/** The view carries exactly source/at/by/conflicts per resolved (non-pk) column. */\nfunction validateViewCells({ view, dataColumns, pkColumn, fail }: ValidationScope): void {\n const expected = new Map<string, { part: string; columnName: string }>()\n for (const column of dataColumns.values()) {\n if (column.name === pkColumn.name) continue\n for (const part of RESOLVED_VIEW_CELL_PARTS) {\n expected.set(cellColumnName(column.name, part), { part, columnName: cellColumnName(column.columnName, part) })\n }\n }\n for (const column of view.columns) {\n if (!column.cell) continue\n const want = expected.get(column.name)\n if (!want || want.part !== column.cell.part || want.columnName !== column.columnName || cellColumnName(column.cell.of, column.cell.part) !== column.name) {\n fail(`unexpected cell column '${column.name}'`)\n continue\n }\n if (column.type !== VIEW_CELL_TYPES[column.cell.part as keyof typeof VIEW_CELL_TYPES]) fail(`cell column '${column.name}' must be ${VIEW_CELL_TYPES[column.cell.part as keyof typeof VIEW_CELL_TYPES]}`)\n expected.delete(column.name)\n }\n for (const name of expected.keys()) fail(`missing cell column '${name}'`)\n}\n\nconst columnSignature = (columns: ReadonlyArray<{ name: string; columnName: string; type: unknown }>) =>\n JSON.stringify(columns.map((column) => [column.name, column.columnName, column.type]))\n\n/**\n * A materialized resolved table: its internal table mirrors the view column\n * for column, its compute view produces those columns, and every ETL source\n * is readable by anyone — the copy is computed once for all callers, so no\n * source may filter rows per caller (the view's own read policy still does).\n */\nfunction validateMaterialized({ scope, tableByName, views }: {\n scope: ValidationScope\n tableByName: Map<string, RelationShape>\n views: readonly ViewShape[]\n}): void {\n const { view, resolved, fail } = scope\n const { table: tableName, compute: computeName } = resolved.materialized!\n const table = tableByName.get(tableName)\n if (!table || table.internal !== true || table.materializes !== view.view) {\n fail(`materialized table '${tableName}' must be an internal table that materializes '${view.view}'`)\n } else {\n if (columnSignature(table.columns) !== columnSignature(view.columns)) fail(`materialized table '${tableName}' must have exactly the view's columns`)\n if (JSON.stringify(table.primaryKey ?? []) !== JSON.stringify(view.primaryKey ?? [])) fail(`materialized table '${tableName}' must share the view's primary key`)\n }\n const compute = views.find((candidate) => candidate.view === computeName)\n if (!compute || compute.internal !== true) fail(`compute view '${computeName}' must be an internal view`)\n else if (columnSignature(compute.columns) !== columnSignature(view.columns)) fail(`compute view '${computeName}' must have exactly the view's columns`)\n for (const source of resolved.sources) {\n if (source.kind !== 'etl') continue\n const read = tableByName.get(source.table)?.policies?.read\n const unconditional = typeof read === 'string' ? read.trim() === 'true' : read !== undefined && read.default.trim() === 'true' && read.variants.length === 0\n if (!unconditional) {\n fail(`etl source '${source.name}' must have read policy 'true' to be materialized (the copy is shared by every caller)`)\n }\n }\n}\n","/**\n * Canonical namespace definition v2 — the data-only JSON a consumer's\n * TypeScript schema serializes to. This is v2's equivalent of the v1 YAML\n * `NamespaceDefinition`: the CLI's jiti loader produces it, the content hash\n * is computed over it, the server re-validates it (consumer TS never runs\n * server-side), and the SDL generator / GraphQL compiler / migration engine\n * all consume it.\n *\n * FROZEN CONTRACT (week 1): downstream tracks build against these shapes.\n * Additive evolution only; `definition_format` discriminates on the wire.\n */\nimport { z } from 'zod'\nexport { ontologyContractSchema, readOntologyContract, type OntologyContract } from '../ontology-contract.js'\nimport { compileCheckExpression } from '../checks/compile.js'\nimport {\n CELL_PART_SUFFIX, CELL_PARTS, COLUMN_IDENTIFIER_PATTERN, MAX_TRACKED_COLUMN_NAME, QUALIFIED_TABLE_PATTERN, cellColumnName, type CellPart,\n} from '../constants.js'\nimport { policyExpressionSchema } from './policy.js'\nimport { canonicalResolvedSchema, validateResolvedView, type CanonicalResolved } from './resolved.js'\n\nexport * from './resolved.js'\n\nexport const CANONICAL_FORMAT = 2 as const\n\n/** Identifier grammar shared with v1 (`^[a-z][a-z0-9_]*$`, ≤63 bytes). */\nexport const IDENTIFIER_RE = /^[a-z][a-z0-9_]*$/\nconst identifier = z.string().min(1).max(63).regex(IDENTIFIER_RE)\nconst columnIdentifier = z.string().min(1).max(63).regex(COLUMN_IDENTIFIER_PATTERN)\n\n/** The 10 v1 column types, unchanged in v2. */\nexport const COLUMN_TYPES = [\n 'uuid', 'text', 'integer', 'bigint', 'numeric', 'double',\n 'boolean', 'timestamptz', 'date', 'jsonb',\n] as const\nexport type ColumnType = (typeof COLUMN_TYPES)[number]\n\nconst columnTypeSchema = z.enum(COLUMN_TYPES)\n\n/** Enum columns reference a namespace-level `defineEnum` by name. */\nexport const canonicalEnumSchema = z.object({\n name: identifier,\n values: z.array(z.string().min(1).max(63)).min(1).max(100),\n})\nexport type CanonicalEnum = z.infer<typeof canonicalEnumSchema>\n\nexport const canonicalColumnSchema = z.object({\n /** Property name in TS (camelCase); columnName is the Postgres name. */\n name: z.string().min(1).max(63),\n columnName: columnIdentifier,\n type: z.union([columnTypeSchema, z.object({ enum: identifier })]),\n nullable: z.boolean().default(true),\n unique: z.boolean().default(false),\n /** Literal default, or one of the allowlisted SQL functions. */\n default: z.union([z.string(), z.number(), z.boolean(), z.null()]).optional(),\n defaultFn: z.enum(['gen_random_uuid()', 'now()']).optional(),\n /**\n * Stamp this column from the database clock on UPDATE (`now()`). The\n * column stays insertable (defaults fill gaps) but is omitted from\n * SetInput / settable so callers cannot backdate it.\n */\n onUpdateFn: z.enum(['now()']).optional(),\n description: z.string().max(500).optional(),\n /** Migration hints — same semantics as v1. */\n renamedFrom: columnIdentifier.optional(),\n cast: z.string().max(200).optional(),\n deprecated: z.boolean().default(false),\n /**\n * Marks a system cell-metadata column (see CELL_PARTS in constants): part\n * `part` of the cell of logical column `of`. Synthesized by authoring,\n * never client-writable, absent from GraphQL scalar fields. Omitted on\n * ordinary columns so their hashes are unchanged.\n */\n cell: z.object({ of: z.string().min(1).max(63), part: z.enum(CELL_PARTS) }).strict().optional(),\n}).superRefine((column, ctx) => {\n if (column.onUpdateFn === undefined) return\n if (typeof column.type !== 'string' || (column.type !== 'timestamptz' && column.type !== 'date')) {\n ctx.addIssue({\n code: 'custom',\n path: ['onUpdateFn'],\n message: `onUpdateFn '${column.onUpdateFn}' is only valid on timestamptz/date columns`,\n })\n }\n})\nexport type CanonicalColumn = z.infer<typeof canonicalColumnSchema>\n\nexport const canonicalLinkSchema = z.object({\n name: z.string().min(1).max(63),\n kind: z.enum(['toOne', 'toMany', 'toPlatformUser']),\n /** Target table name (namespace-local). Absent for toPlatformUser. */\n target: identifier.optional(),\n /** Owning namespace of an imported target; omitted for local links. */\n namespace: identifier.max(41).optional(),\n /** FK column on the owning side (toOne/toPlatformUser: on this table; toMany: on the target). */\n on: columnIdentifier,\n /** Referenced column on the target (default: target's PK / platform user `sub`). */\n references: columnIdentifier.optional(),\n /** enforce: true emits a real FK constraint (same-namespace toOne only). */\n enforce: z.boolean().default(false),\n onDelete: z.enum(['cascade', 'restrict', 'no action', 'set null', 'set default']).optional(),\n onUpdate: z.enum(['cascade', 'restrict', 'no action', 'set null', 'set default']).optional(),\n description: z.string().max(500).optional(),\n})\nexport type CanonicalLink = z.infer<typeof canonicalLinkSchema>\n\nexport const canonicalIndexSchema = z.object({\n columns: z.array(columnIdentifier).min(1),\n unique: z.boolean().default(false),\n name: identifier.optional(),\n})\n\nexport const canonicalCheckSchema = z.object({\n name: identifier,\n expression: z.string().min(1).max(2000),\n}).strict()\nexport type CanonicalCheck = z.infer<typeof canonicalCheckSchema>\n\n/**\n * Policy expressions stay DSL SOURCE STRINGS in the canonical form — parsing\n * and claim-key validation happen in both CLI and server via the shared\n * predicate parser. Variants follow §4c permissive-union semantics.\n */\nexport { policyExpressionSchema, policyVariantSchema, type PolicyExpression } from './policy.js'\n\nexport const canonicalPoliciesSchema = z.object({\n read: policyExpressionSchema.optional(),\n write: policyExpressionSchema.optional(),\n insert: policyExpressionSchema.optional(),\n update: policyExpressionSchema.optional(),\n})\n\n/**\n * View SQL is generated by Drizzle in the authoring process, then crosses the\n * CLI → Atlas JSON boundary. Keep the canonical form to one SELECT statement:\n * PostgreSQL validates the complete grammar when the view is created, while\n * this scanner prevents statement stacking before the text reaches DDL.\n */\nexport function isSingleViewQuerySql(value: string): boolean {\n const query = value.trim()\n if (!/^\\(*(?:select|with)\\b/i.test(query) || query.includes('\\0')) return false\n\n let state: 'normal' | 'single' | 'double' = 'normal'\n for (let index = 0; index < query.length; index += 1) {\n const char = query[index]\n const next = query[index + 1]\n if (state === 'single') {\n if (char === \"'\" && next === \"'\") index += 1\n else if (char === \"'\") state = 'normal'\n continue\n }\n if (state === 'double') {\n if (char === '\"' && next === '\"') index += 1\n else if (char === '\"') state = 'normal'\n continue\n }\n if (char === \"'\") state = 'single'\n else if (char === '\"') state = 'double'\n else if (char === ';' || (char === '-' && next === '-') || (char === '/' && next === '*')) return false\n }\n return state === 'normal' && !/\\$[a-z_0-9]*\\$/i.test(query)\n}\n\n/**\n * Managed views execute as the shared ORM relation owner. Treat function use\n * as a capability boundary: a new function is unavailable until it is\n * deliberately reviewed here as side-effect-free. The migration engine checks\n * the functions PostgreSQL actually resolved against this list and pg_catalog,\n * so qualification and same-named functions in a consumer schema cannot evade\n * the boundary.\n */\nexport const VIEW_QUERY_FUNCTION_ALLOWLIST = [\n 'abs',\n 'age',\n 'array_agg',\n 'array_append',\n 'array_cat',\n 'array_dims',\n 'array_length',\n 'array_lower',\n 'array_ndims',\n 'array_position',\n 'array_positions',\n 'array_prepend',\n 'array_remove',\n 'array_replace',\n 'array_to_string',\n 'array_trim',\n 'array_upper',\n 'ascii',\n 'avg',\n 'bit_and',\n 'bit_or',\n 'bit_xor',\n 'bool_and',\n 'bool_or',\n 'btrim',\n 'cardinality',\n 'cbrt',\n 'ceil',\n 'ceiling',\n 'char_length',\n 'character_length',\n 'chr',\n 'concat',\n 'concat_ws',\n 'count',\n 'cume_dist',\n 'date_bin',\n 'date_part',\n 'date_trunc',\n 'decode',\n 'degrees',\n 'dense_rank',\n 'encode',\n 'enum_first',\n 'enum_last',\n 'enum_range',\n 'every',\n 'exp',\n 'first_value',\n 'floor',\n 'format',\n 'grouping',\n 'initcap',\n 'json_agg',\n 'json_array_length',\n 'json_build_array',\n 'json_build_object',\n 'json_extract_path',\n 'json_extract_path_text',\n 'json_object_agg',\n 'json_object_keys',\n 'json_strip_nulls',\n 'json_typeof',\n 'jsonb_agg',\n 'jsonb_array_length',\n 'jsonb_build_array',\n 'jsonb_build_object',\n 'jsonb_extract_path',\n 'jsonb_extract_path_text',\n 'jsonb_insert',\n 'jsonb_object_agg',\n 'jsonb_object_keys',\n 'jsonb_path_exists',\n 'jsonb_path_match',\n 'jsonb_path_query',\n 'jsonb_path_query_array',\n 'jsonb_path_query_first',\n 'jsonb_pretty',\n 'jsonb_set',\n 'jsonb_set_lax',\n 'jsonb_strip_nulls',\n 'jsonb_typeof',\n 'justify_days',\n 'justify_hours',\n 'justify_interval',\n 'lag',\n 'last_value',\n 'lead',\n 'left',\n 'length',\n 'ln',\n 'log',\n 'lower',\n 'lpad',\n 'ltrim',\n 'make_date',\n 'make_interval',\n 'make_time',\n 'make_timestamp',\n 'make_timestamptz',\n 'max',\n 'md5',\n 'min',\n 'mod',\n 'nth_value',\n 'ntile',\n 'octet_length',\n 'percent_rank',\n 'pi',\n 'power',\n 'quote_ident',\n 'quote_literal',\n 'quote_nullable',\n 'radians',\n 'rank',\n 'regexp_count',\n 'regexp_instr',\n 'regexp_like',\n 'regexp_match',\n 'regexp_matches',\n 'regexp_replace',\n 'regexp_split_to_array',\n 'regexp_split_to_table',\n 'repeat',\n 'replace',\n 'reverse',\n 'right',\n 'round',\n 'row_number',\n 'rpad',\n 'rtrim',\n 'sign',\n 'split_part',\n 'sqrt',\n 'starts_with',\n 'string_agg',\n 'string_to_array',\n 'strpos',\n 'substr',\n 'substring',\n 'sum',\n 'timezone',\n 'to_ascii',\n 'to_char',\n 'to_date',\n 'to_hex',\n 'to_json',\n 'to_jsonb',\n 'to_number',\n 'to_timestamp',\n 'translate',\n 'trunc',\n 'unnest',\n 'upper',\n 'width_bucket',\n] as const\n\n/** Actions carry over from v1 as compiled named-SQL ops (plan: resolved OQ-1). */\nexport const canonicalActionSchema = z.object({\n name: identifier,\n requires: z.string().max(1000).optional(),\n params: z.record(z.string(), z.object({\n type: columnTypeSchema,\n nullable: z.boolean().default(false),\n })).default({}),\n executes: z.string().min(1).max(10_000),\n returns: z.enum(['rows', 'rowsAffected', 'scalar']).default('rowsAffected'),\n audit: z.object({ action: z.string(), resource: z.string() }).optional(),\n})\n\n/**\n * Copy-on-write mutations for overlay tables backed by a synced twin\n * (v2-only). Structured metadata, never authored SQL: the compiler and data\n * plane generate the INSERT…SELECT / UPDATE / DELETE statements from it, so\n * there is no SQL surface to validate and write policies inject like any\n * other mutation. `override` copies the synced row into the overlay\n * (ON CONFLICT DO NOTHING) then updates the `set` columns; `revert` deletes\n * the overlay row so the coalesce view falls back to synced.\n */\nexport const canonicalCowMutationSchema = z.object({\n kind: z.enum(['override', 'revert']),\n name: identifier,\n /** Synced table (same namespace) the overlay copies from / falls back to. */\n synced: identifier,\n /** Single-column primary key PROPERTY (TS camelCase, like column `name`) shared by overlay and synced. */\n pk: z.string().min(1).max(63),\n /** Override: contract properties copied INSERT…SELECT from synced (pk included). Empty for revert. */\n copy: z.array(z.string().min(1).max(63)).default([]),\n /** Override: overlay properties written by the UPDATE (never the pk). Empty for revert. */\n set: z.array(z.string().min(1).max(63)).default([]),\n}).superRefine((mutation, ctx) => {\n if (mutation.kind === 'override') {\n if (mutation.set.length === 0) {\n ctx.addIssue({ code: 'custom', path: ['set'], message: 'override mutations must set at least one column' })\n }\n if (!mutation.copy.includes(mutation.pk)) {\n ctx.addIssue({ code: 'custom', path: ['copy'], message: 'override copy list must include the pk' })\n }\n } else if (mutation.set.length > 0 || mutation.copy.length > 0) {\n ctx.addIssue({ code: 'custom', path: ['set'], message: 'revert mutations take no copy/set columns' })\n }\n if (mutation.set.includes(mutation.pk)) {\n ctx.addIssue({ code: 'custom', path: ['set'], message: 'set must not include the pk — identity columns are pinned' })\n }\n // Duplicates would reach the executor as a doubled INSERT column or SET\n // assignment — reject at the schema like the authoring helper does.\n for (const [field, values] of [['copy', mutation.copy], ['set', mutation.set]] as const) {\n if (new Set(values).size !== values.length) {\n ctx.addIssue({ code: 'custom', path: [field], message: `${field} must not contain duplicate columns` })\n }\n }\n})\nexport type CanonicalCowMutation = z.infer<typeof canonicalCowMutationSchema>\n\nexport const canonicalForeignKeySchema = z.object({\n name: identifier,\n columns: z.array(columnIdentifier).min(1).max(8),\n target: identifier,\n references: z.array(columnIdentifier).min(1).max(8),\n deferrable: z.enum(['initially-immediate', 'initially-deferred']).optional(),\n onDelete: z.enum(['cascade', 'restrict', 'no action', 'set null', 'set default']).optional(),\n onUpdate: z.enum(['cascade', 'restrict', 'no action', 'set null', 'set default']).optional(),\n}).strict()\nexport type CanonicalForeignKey = z.infer<typeof canonicalForeignKeySchema>\n\nexport const canonicalTableSchema = z.object({\n table: identifier,\n displayName: z.string().trim().min(1).max(120).optional(),\n description: z.string().max(2000).optional(),\n /** Table-level rename hint (new in v2). */\n renamedFrom: identifier.optional(),\n /** Synced/reflected read-only tables (`source: schema.table`) — v1 semantics. */\n source: z.string().regex(QUALIFIED_TABLE_PATTERN).optional(),\n columns: z.array(canonicalColumnSchema).default([]),\n primaryKey: z.array(columnIdentifier).min(1).max(8).optional(),\n links: z.array(canonicalLinkSchema).default([]),\n indexes: z.array(canonicalIndexSchema).default([]),\n /** Omitted by old definitions, preserving their existing content hashes. */\n checks: z.array(canonicalCheckSchema).max(100).optional(),\n policies: canonicalPoliciesSchema.default({}),\n /**\n * v1-conversion carry-over only. v2 has no action surface — the runtime\n * neither compiles nor executes these; writes are mutations. Kept parseable\n * so stored definitions and their content hashes stay stable.\n */\n actions: z.array(canonicalActionSchema).default([]),\n /** Optional (not defaulted) so pre-CoW canonical documents keep byte-identical hashes. */\n cowMutations: z.array(canonicalCowMutationSchema).optional(),\n /** Omitted by old definitions, preserving their existing content hashes. */\n foreignKeys: z.array(canonicalForeignKeySchema).max(100).optional(),\n /**\n * Per-cell edit metadata (`cellMetadata: true` in authoring): every tracked\n * column `c` carries typed `c__at` / `c__by` system columns (plus `c__rev`\n * on a resolved table's internal sources), listed explicitly in `columns`\n * with a `cell` marker so DDL and migrations treat them as ordinary columns.\n * Omitted when off so existing definitions hash unchanged.\n */\n cellMetadata: z.literal(true).optional(),\n /**\n * System-owned backing table of a resolved table (its manual or prefetch\n * source). Internal tables get DDL and IR metadata but no GraphQL surface;\n * only the data plane writes them. Omitted when false.\n */\n internal: z.literal(true).optional(),\n /**\n * The materialized copy of resolved table `materializes` (internal): the\n * same columns as that view, including its cell parts, maintained by the\n * data plane. Omitted otherwise.\n */\n materializes: identifier.optional(),\n})\nexport type CanonicalTable = z.infer<typeof canonicalTableSchema>\n\n/** Authored view SQL. */\nconst MAX_VIEW_QUERY = 100_000\n/**\n * A resolved table's SQL is generated from its (bounded) metadata — at most\n * 500 columns × 16 candidates — not authored, so it gets a larger ceiling.\n */\nconst MAX_RESOLVED_VIEW_QUERY = 5_000_000\n\nexport const canonicalViewSchema = z.object({\n view: identifier,\n description: z.string().max(2000).optional(),\n columns: z.array(canonicalColumnSchema).min(1),\n /** Logical identity for GraphQL only; PostgreSQL views have no PK constraint. */\n primaryKey: z.array(columnIdentifier).min(1).max(8).optional(),\n links: z.array(canonicalLinkSchema).default([]),\n policies: z.object({ read: policyExpressionSchema }).strict(),\n query: z.string().min(1).max(MAX_RESOLVED_VIEW_QUERY).refine(isSingleViewQuerySql, {\n message: 'view query must be one SELECT/WITH statement without comments or dollar-quoted bodies',\n }),\n /** Namespace-local logical relation names, sorted for deterministic hashing. */\n dependencies: z.array(identifier).max(500),\n /**\n * Present when this view is a resolved table (defineResolvedTable): the\n * multi-source metadata behind its generated query. Omitted otherwise so\n * existing views hash unchanged.\n */\n resolved: canonicalResolvedSchema.optional(),\n /** System-owned view (a materialized resolved table's compute view): no GraphQL surface. */\n internal: z.literal(true).optional(),\n}).superRefine((view, ctx) => {\n if (view.resolved === undefined && view.query.length > MAX_VIEW_QUERY) {\n ctx.addIssue({ code: 'custom', path: ['query'], message: `view query must be at most ${MAX_VIEW_QUERY} characters` })\n }\n for (const [index, column] of view.columns.entries()) {\n if (column.default !== undefined || column.defaultFn !== undefined) {\n ctx.addIssue({ code: 'custom', path: ['columns', index], message: `view column '${column.name}' cannot declare a default` })\n }\n if (column.onUpdateFn !== undefined) {\n ctx.addIssue({ code: 'custom', path: ['columns', index], message: `view column '${column.name}' cannot declare onUpdateFn` })\n }\n if (column.unique) {\n ctx.addIssue({ code: 'custom', path: ['columns', index], message: `view column '${column.name}' cannot declare unique` })\n }\n if (column.renamedFrom !== undefined || column.cast !== undefined) {\n ctx.addIssue({ code: 'custom', path: ['columns', index], message: `view column '${column.name}' cannot declare migration hints` })\n }\n }\n // A materialized resolved table's compute view (internal) produces the same\n // cell parts; validateResolvedView checks it against its public view.\n if (view.resolved === undefined && view.internal !== true) {\n for (const [index, column] of view.columns.entries()) {\n if (column.cell) ctx.addIssue({ code: 'custom', path: ['columns', index], message: `only resolved tables carry cell columns ('${column.name}')` })\n }\n }\n for (const [index, link] of view.links.entries()) {\n if (link.enforce) {\n ctx.addIssue({ code: 'custom', path: ['links', index, 'enforce'], message: `view link '${link.name}' cannot enforce a foreign key` })\n }\n if (link.onDelete !== undefined || link.onUpdate !== undefined) {\n ctx.addIssue({ code: 'custom', path: ['links', index], message: `view link '${link.name}' cannot declare referential actions` })\n }\n }\n})\nexport type CanonicalView = z.infer<typeof canonicalViewSchema>\n\n/** The type each cell part is stored as. */\nexport const CELL_PART_TYPES: Readonly<Record<CellPart, ColumnType>> = {\n at: 'timestamptz', by: 'text', rev: 'uuid', source: 'text', conflicts: 'jsonb',\n}\n\ninterface TrackedShape {\n columns: ReadonlyArray<{ name: string; columnName: string; onUpdateFn?: string; cell?: { of: string; part: CellPart } }>\n primaryKey?: readonly string[]\n}\n\n/** Columns a cell-tracking table stamps: everything except the primary key, clock columns and cell parts. */\nexport function trackedCellColumns<T extends TrackedShape>(table: T): Array<T['columns'][number]> {\n const pk = new Set(table.primaryKey ?? [])\n return table.columns.filter((column) => column.cell === undefined && !pk.has(column.columnName) && column.onUpdateFn === undefined)\n}\n\nconst SUFFIXES = Object.values(CELL_PART_SUFFIX)\n\nfunction validateCellMetadata(table: CanonicalTable, index: number, ctx: z.RefinementCtx): void {\n const fail = (message: string, path: Array<string | number> = ['tables', index]) =>\n ctx.addIssue({ code: 'custom', path, message })\n const cells = table.columns.flatMap((column, position) => (column.cell ? [{ column, position, cell: column.cell }] : []))\n // A materialized resolved table mirrors its view's cell parts verbatim;\n // validateResolvedView checks it column for column.\n if (table.materializes !== undefined) return\n if (table.cellMetadata !== true) {\n for (const { position } of cells) fail(`cell-metadata columns require cellMetadata on table '${table.table}'`, ['tables', index, 'columns', position])\n return\n }\n if (table.source !== undefined) {\n fail(`synced table '${table.table}' cannot track cell metadata`)\n return\n }\n const tracked = trackedCellColumns(table)\n const byName = new Map(tracked.map((column) => [column.name, column]))\n const withRev = cells.some(({ cell }) => cell.part === 'rev')\n if (withRev && table.internal !== true) fail(`only a resolved table's internal sources carry '__rev' cell columns ('${table.table}')`)\n const seen = new Set<string>()\n for (const { column, position, cell } of cells) {\n const path = ['tables', index, 'columns', position]\n const owner = byName.get(cell.of)\n if (!owner) {\n fail(`cell column '${column.name}' belongs to '${cell.of}', which is not a tracked column`, path)\n continue\n }\n if (cell.part !== 'at' && cell.part !== 'by' && cell.part !== 'rev') fail(`a table cell column must be part at/by/rev, not '${cell.part}'`, path)\n if (column.name !== cellColumnName(owner.name, cell.part) || column.columnName !== cellColumnName(owner.columnName, cell.part)) {\n fail(`cell column for '${owner.name}' ${cell.part} must be named '${cellColumnName(owner.name, cell.part)}' / '${cellColumnName(owner.columnName, cell.part)}'`, path)\n }\n if (column.type !== CELL_PART_TYPES[cell.part] || !column.nullable || column.unique || column.default !== undefined || column.defaultFn !== undefined) {\n fail(`cell column '${column.name}' must be a nullable, default-less ${CELL_PART_TYPES[cell.part]}`, path)\n }\n const key = `${cell.of}:${cell.part}`\n if (seen.has(key)) fail(`duplicate cell column '${column.name}'`, path)\n seen.add(key)\n }\n for (const column of tracked) {\n if (column.columnName.length > MAX_TRACKED_COLUMN_NAME) {\n fail(`column '${column.columnName}' is too long to track cell metadata (max ${MAX_TRACKED_COLUMN_NAME} characters)`)\n }\n if (SUFFIXES.some((suffix) => column.columnName.endsWith(suffix))) {\n fail(`column '${column.columnName}' ends in a reserved cell-metadata suffix (${SUFFIXES.join(', ')})`)\n }\n for (const part of withRev ? (['at', 'by', 'rev'] as const) : (['at', 'by'] as const)) {\n if (!seen.has(`${column.name}:${part}`)) fail(`tracked column '${column.name}' is missing its '${cellColumnName(column.columnName, part)}' cell column`)\n }\n }\n}\n\nexport const exportGateSchema = z.union([z.literal(true), z.object({ capability: z.string().min(1) }).strict(), z.object({ role: z.string().min(1) }).strict()])\nexport const relationExportSchema = z.object({ read: exportGateSchema, write: exportGateSchema.optional() }).strict()\n\nexport const localDefinitionSchema = z.object({\n definition_format: z.literal(CANONICAL_FORMAT),\n namespace: identifier.max(41),\n description: z.string().max(2000).optional(),\n enums: z.array(canonicalEnumSchema).default([]),\n tables: z.array(canonicalTableSchema).min(0).max(500),\n /** Optional to preserve byte-identical hashes for pre-view canonical v2 documents. */\n views: z.array(canonicalViewSchema).max(500).optional(),\n /** Target-owned cross-namespace access contract, using existing namespace grants. */\n exports: z.record(identifier, relationExportSchema).optional(),\n /** Verbatim custom-roles grammar (@sequenceholdings/custom-roles-manifest). */\n capabilities: z.object({\n roles: z.unknown().optional(),\n uses: z.array(z.string()).default([]),\n }).default({ uses: [] }),\n}).superRefine((definition, ctx) => {\n const seen = new Set<string>()\n for (const [index, table] of definition.tables.entries()) {\n if (seen.has(table.table)) {\n ctx.addIssue({ code: 'custom', path: ['tables', index, 'table'], message: `duplicate relation '${table.table}'` })\n }\n seen.add(table.table)\n validateCellMetadata(table, index, ctx)\n if (table.source !== undefined) {\n for (const [columnIndex, column] of table.columns.entries()) {\n if (column.onUpdateFn !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['tables', index, 'columns', columnIndex],\n message: `synced table '${table.table}' column '${column.name}' cannot declare onUpdateFn`,\n })\n }\n }\n }\n }\n\n const fkTables = new Map(definition.tables.map(table => [table.table, table]))\n const relations = new Set([...fkTables.keys(), ...(definition.views ?? []).map(view => view.view)])\n for (const name of Object.keys(definition.exports ?? {})) {\n if (!relations.has(name)) ctx.addIssue({ code: 'custom', path: ['exports', name], message: `export '${name}' is not a local object` })\n }\n for (const [tableIndex, table] of definition.tables.entries()) {\n for (const [linkIndex, link] of table.links.entries()) {\n if (link.enforce && link.namespace !== undefined && link.namespace !== definition.namespace) {\n ctx.addIssue({ code: 'custom', path: ['tables', tableIndex, 'links', linkIndex], message: 'physical foreign keys require a local target; use an ORM link without enforce' })\n }\n }\n const names = new Set([\n ...(table.primaryKey?.length ? [`${table.table}_pkey`] : []),\n ...table.columns.filter(column => column.unique && !(table.primaryKey?.length === 1 && table.primaryKey[0] === column.columnName)).map(column => `${table.table}_${column.columnName}_unique`),\n ...table.links.filter(link => link.enforce).map(link => `fk_${table.table}_${link.name}`),\n ])\n for (const [index, link] of table.links.entries()) {\n if ((link.onDelete !== undefined || link.onUpdate !== undefined) && (!link.enforce || link.kind !== 'toOne')) {\n ctx.addIssue({ code: 'custom', path: ['tables', tableIndex, 'links', index], message: 'referential actions require an enforced toOne link' })\n }\n if (link.onDelete === 'set null' || link.onUpdate === 'set null') {\n const source = table.columns.find(column => column.columnName === link.on)\n if (source?.nullable === false || table.primaryKey?.includes(link.on)) ctx.addIssue({ code: 'custom', path: ['tables', tableIndex, 'links', index], message: 'SET NULL requires a nullable source column' })\n }\n }\n for (const [index, check] of (table.checks ?? []).entries()) {\n const fail = (message: string) => ctx.addIssue({ code: 'custom', path: ['tables', tableIndex, 'checks', index], message })\n if (table.source) fail('synced tables cannot declare checks')\n if (names.has(check.name)) fail(`duplicate constraint '${check.name}'`)\n names.add(check.name)\n try { compileCheckExpression(check.expression, table.columns) }\n catch (error) { fail(error instanceof Error ? error.message : String(error)) }\n }\n for (const [index, fk] of (table.foreignKeys ?? []).entries()) {\n const fail = (message: string) => ctx.addIssue({ code: 'custom', path: ['tables', tableIndex, 'foreignKeys', index], message })\n if (names.has(fk.name)) fail(`duplicate foreign key '${fk.name}'`)\n names.add(fk.name)\n const target = fkTables.get(fk.target)\n if (table.source || !target || target.source) {\n fail('foreign keys must connect owned tables in the same namespace')\n continue\n }\n if (fk.columns.length !== fk.references.length) fail('foreign key columns and references must have the same number of columns')\n if (new Set(fk.columns).size !== fk.columns.length || new Set(fk.references).size !== fk.references.length) fail('foreign key columns must not repeat')\n for (const [position, name] of fk.columns.entries()) {\n const sourceColumn = table.columns.find(column => column.columnName === name)\n const targetColumn = target.columns.find(column => column.columnName === fk.references[position])\n if (!sourceColumn || !targetColumn) fail('foreign key references an unknown column')\n else if (JSON.stringify(sourceColumn.type) !== JSON.stringify(targetColumn.type)) fail('foreign key column types must match')\n }\n if (fk.onDelete === 'set null' || fk.onUpdate === 'set null') {\n if (fk.columns.some(name => table.columns.find(column => column.columnName === name)?.nullable === false || table.primaryKey?.includes(name))) fail('SET NULL requires nullable source columns')\n }\n const uniqueKeys = [target.primaryKey ?? [], ...target.indexes.filter(index => index.unique).map(index => index.columns), ...target.columns.filter(column => column.unique).map(column => [column.columnName])]\n if (!uniqueKeys.some(key => key.length === fk.references.length && key.every(column => fk.references.includes(column)))) fail('foreign key target columns must form a unique key')\n }\n }\n\n for (const [viewIndex, view] of (definition.views ?? []).entries()) {\n for (const message of validateResolvedView({ view, tables: definition.tables, views: definition.views ?? [] })) {\n ctx.addIssue({ code: 'custom', path: ['views', viewIndex, 'resolved'], message })\n }\n }\n\n // CoW mutations: overlay must be an owned table; synced twin must be a\n // synced table in this namespace; copy/set columns must exist on both sides.\n const tableByName = new Map(definition.tables.map((table) => [table.table, table]))\n for (const [tableIndex, table] of definition.tables.entries()) {\n const cowMutations = table.cowMutations ?? []\n if (cowMutations.length === 0) continue\n const path = (index: number, ...rest: Array<string | number>): Array<string | number> =>\n ['tables', tableIndex, 'cowMutations', index, ...rest]\n if (table.source !== undefined) {\n ctx.addIssue({ code: 'custom', path: path(0), message: `synced table '${table.table}' cannot declare cow mutations — it is read-only` })\n continue\n }\n for (const [index, mutation] of cowMutations.entries()) {\n const synced = tableByName.get(mutation.synced)\n if (!synced || synced.source === undefined) {\n ctx.addIssue({\n code: 'custom',\n path: path(index, 'synced'),\n message: `cow mutation '${mutation.name}' references '${mutation.synced}', which is not a synced table in this namespace`,\n })\n continue\n }\n // The full helper invariants, mirrored so hand-written canonical cannot\n // bypass them (the generated conflict/copy SQL depends on every one):\n // single-column PK identity on both sides, matching scalar types AND\n // Postgres column names for every copied column, and no nullable-synced\n // → NOT-NULL-overlay traps.\n const overlayColumnsByName = new Map(table.columns.map((column) => [column.name, column]))\n const syncedColumnsByName = new Map(synced.columns.map((column) => [column.name, column]))\n let columnsExist = true\n for (const property of [mutation.pk, ...mutation.copy, ...mutation.set]) {\n if (!overlayColumnsByName.has(property)) {\n columnsExist = false\n ctx.addIssue({ code: 'custom', path: path(index), message: `cow mutation '${mutation.name}': column '${property}' does not exist on overlay '${table.table}'` })\n }\n }\n for (const property of [mutation.pk, ...mutation.copy]) {\n if (!syncedColumnsByName.has(property)) {\n columnsExist = false\n ctx.addIssue({ code: 'custom', path: path(index), message: `cow mutation '${mutation.name}': column '${property}' does not exist on synced '${mutation.synced}'` })\n }\n }\n if (!columnsExist) continue\n\n const overlayPk = table.primaryKey ?? []\n const syncedPk = synced.primaryKey ?? []\n if (overlayPk.length !== 1 || overlayPk[0] !== mutation.pk || syncedPk.length !== 1 || syncedPk[0] !== mutation.pk) {\n ctx.addIssue({\n code: 'custom',\n path: path(index, 'pk'),\n message: `cow mutation '${mutation.name}': pk '${mutation.pk}' must be the single-column primary key on both '${table.table}' and '${mutation.synced}'`,\n })\n }\n for (const property of [mutation.pk, ...mutation.copy]) {\n const overlayColumn = overlayColumnsByName.get(property)\n const syncedColumn = syncedColumnsByName.get(property)\n if (!overlayColumn || !syncedColumn) continue\n if (JSON.stringify(overlayColumn.type) !== JSON.stringify(syncedColumn.type)) {\n ctx.addIssue({\n code: 'custom',\n path: path(index),\n message: `cow mutation '${mutation.name}': column '${property}' must have the same type on overlay and synced`,\n })\n }\n if (overlayColumn.columnName !== syncedColumn.columnName) {\n ctx.addIssue({\n code: 'custom',\n path: path(index),\n message: `cow mutation '${mutation.name}': column '${property}' maps to different Postgres names on overlay ('${overlayColumn.columnName}') and synced ('${syncedColumn.columnName}')`,\n })\n }\n if (syncedColumn.nullable !== false && overlayColumn.nullable === false) {\n ctx.addIssue({\n code: 'custom',\n path: path(index),\n message: `cow mutation '${mutation.name}': column '${property}' is nullable on synced but NOT NULL on overlay — a NULL synced value would fail the copy`,\n })\n }\n }\n }\n }\n for (const [index, view] of (definition.views ?? []).entries()) {\n if (seen.has(view.view)) {\n ctx.addIssue({ code: 'custom', path: ['views', index, 'view'], message: `duplicate relation '${view.view}'` })\n }\n seen.add(view.view)\n }\n\n const views = definition.views ?? []\n const viewByName = new Map(views.map((view) => [view.view, view]))\n for (const [viewIndex, view] of views.entries()) {\n for (const [dependencyIndex, dependency] of view.dependencies.entries()) {\n if (!seen.has(dependency)) {\n ctx.addIssue({\n code: 'custom',\n path: ['views', viewIndex, 'dependencies', dependencyIndex],\n message: `view '${view.view}' depends on unknown relation '${dependency}'`,\n })\n }\n }\n }\n\n const visiting = new Set<string>()\n const visited = new Set<string>()\n let cycleReported = false\n const visit = (name: string, path: string[]): void => {\n if (visited.has(name) || cycleReported) return\n if (visiting.has(name)) {\n cycleReported = true\n ctx.addIssue({\n code: 'custom',\n path: ['views'],\n message: `view dependencies form a cycle: ${[...path, name].join(' -> ')}`,\n })\n return\n }\n visiting.add(name)\n const view = viewByName.get(name)\n for (const dependency of view?.dependencies ?? []) {\n if (viewByName.has(dependency)) visit(dependency, [...path, name])\n }\n visiting.delete(name)\n visited.add(name)\n }\n for (const view of views) visit(view.view, [])\n})\nexport const canonicalDefinitionSchema = localDefinitionSchema.safeExtend({\n /** Flattened, pinned snapshots. Imported relations never participate in this namespace's DDL. */\n imports: z.array(localDefinitionSchema).max(32).optional(),\n})\nexport type CanonicalDefinition = z.infer<typeof canonicalDefinitionSchema>\n\n/**\n * Project namespace-local tables and views onto the shared read/query surface.\n * A view deliberately becomes a CanonicalTable-shaped relation with no write\n * policy, indexes, actions, defaults, or constraints. Keeping this adapter at\n * the canonical boundary makes SDL and compiler behavior identical without\n * pretending views are writable tables in the wire contract.\n */\n/** A table or view as the compiler/SDL see it; resolved views also carry their multi-source metadata. */\nexport type CanonicalRelation = CanonicalTable & { resolved?: CanonicalResolved }\n\nexport function canonicalRelations(definition: CanonicalDefinition): CanonicalRelation[] {\n const views = (definition.views ?? []).map<CanonicalRelation>((view) => ({\n table: view.view,\n ...(view.description !== undefined ? { description: view.description } : {}),\n columns: view.columns,\n ...(view.primaryKey !== undefined ? { primaryKey: view.primaryKey } : {}),\n links: view.links,\n indexes: [],\n // A resolved table's write policies (evaluated against the resolved row)\n // ride alongside the view's read policy.\n policies: { read: view.policies.read, ...(view.resolved?.policies ?? {}) },\n actions: [],\n ...(view.resolved !== undefined ? { resolved: view.resolved } : {}),\n ...(view.internal ? { internal: true as const } : {}),\n }))\n return [...definition.tables, ...views].sort((a, b) => a.table.localeCompare(b.table))\n}\n\n/**\n * Deterministic serialization discipline: tables sorted by name, columns in\n * declaration order (order is meaningful for DDL), links/indexes/actions\n * sorted by name, object keys emitted in schema order. `serializeNamespace`\n * (authoring layer) and the server-side re-validation both normalize through\n * this function before hashing so CLI and server hash identical bytes.\n */\nexport function normalizeCanonical(definition: CanonicalDefinition): CanonicalDefinition {\n const sortByName = <T extends { name: string }>(items: T[]): T[] =>\n [...items].sort((a, b) => a.name.localeCompare(b.name))\n const normalized: CanonicalDefinition = {\n ...definition,\n enums: sortByName(definition.enums),\n tables: [...definition.tables]\n .sort((a, b) => a.table.localeCompare(b.table))\n .map((t) => {\n const { cowMutations, foreignKeys, checks, ...rest } = t\n return {\n ...rest,\n links: sortByName(t.links),\n indexes: [...t.indexes].sort((a, b) =>\n (a.name ?? a.columns.join('_')).localeCompare(b.name ?? b.columns.join('_'))),\n actions: sortByName(t.actions),\n ...(foreignKeys?.length ? { foreignKeys: sortByName(foreignKeys) } : {}),\n ...(checks?.length ? { checks: sortByName(checks) } : {}),\n // Omitted entirely when absent/empty so pre-CoW documents hash unchanged.\n ...(cowMutations !== undefined && cowMutations.length > 0 ? { cowMutations: sortByName(cowMutations) } : {}),\n }\n }),\n }\n if (definition.views !== undefined) {\n normalized.views = [...definition.views]\n .sort((a, b) => a.view.localeCompare(b.view))\n .map((view) => ({\n ...view,\n links: sortByName(view.links),\n dependencies: [...view.dependencies].sort(),\n }))\n }\n if (definition.imports?.length) {\n normalized.imports = definition.imports.map(normalizeCanonical).sort((a, b) => a.namespace.localeCompare(b.namespace))\n } else {\n delete normalized.imports\n }\n return normalized\n}\n","/**\n * Compiled-operation IR — THE frozen contract between the GraphQL compiler\n * (push time, CLI preview + canonical server compile) and the data-plane\n * executor (runtime). The artifact is inert, validated JSON: no generated\n * code ever crosses the registry (plan §4).\n *\n * Design invariants:\n * - Policies are BAKED IN at compile time: every table-touching node carries\n * its read policy AND-ed into `where` (or `writePolicy`/`insertCheck` for\n * mutation targets). Execution needs only (IR, claims, variables).\n * - §4f dynamic slots: a variable typed with a generated input type\n * (BoolExp/OrderBy/SelectColumn/InsertInput/SetInput/AppendInput/OnConflict)\n * marks a dynamic slot. The executor validates the runtime value against\n * the artifact's per-table whitelist metadata, lowers it to Drizzle, and\n * ANDs it with the baked policy — the policy is non-negotiable regardless\n * of what the client sends.\n * - `capability`/`role` predicate leaves resolve to booleans against the\n * caller's claims BEFORE execution, pruning dead branches per caller.\n * - Versioned via `irVersion` + `normalizeIr` (the normalizeSnapshot\n * pattern): executor upgrades decouple from artifact re-pushes.\n */\nimport { z } from 'zod'\nimport { COLUMN_TYPES, type ColumnType } from '../canonical/v2.js'\nexport { CELL_PARTS, CELLS_FIELD, cellColumnName, type CellPart } from '../constants.js'\n\n/** Maximum supported version; emit the oldest version that preserves semantics. */\nexport const IR_VERSION = 5 as const\nexport const LEGACY_IR_VERSION = 1 as const\nexport const GUARDED_IR_VERSION = 2 as const\n/** Older v2 executors must not strip namespace-scoped authorization. */\nexport const COMPOSED_IR_VERSION = 3 as const\nexport const SQL_IR_VERSION = 4 as const\nexport const RUNTIME_SQL_IR_VERSION = 5 as const\nconst irVersionSchema = z.union([z.literal(LEGACY_IR_VERSION), z.literal(GUARDED_IR_VERSION), z.literal(COMPOSED_IR_VERSION), z.literal(SQL_IR_VERSION), z.literal(RUNTIME_SQL_IR_VERSION)])\nconst operationVersionSchema = z.object({ irVersion: irVersionSchema })\n\n/** Keep v1 artifact identity when assembling only legacy operations from registry rows. */\nexport function requiredArtifactIrVersion(operations: readonly unknown[]): z.infer<typeof irVersionSchema> {\n let required: z.infer<typeof irVersionSchema> = LEGACY_IR_VERSION\n for (const operation of operations) {\n const { irVersion } = operationVersionSchema.parse(operation)\n if (irVersion > required) required = irVersion\n }\n return required\n}\n\n// ---------------------------------------------------------------------------\n// Values & claims\n// ---------------------------------------------------------------------------\n\n/**\n * The exact claim keys the platform stamps — mirrors claims.ts.\n *\n * `ext_subject` and `ext_email` are verified-borrower claims: the subject and\n * (verified, lowercased) email of an external principal that reached the ORM\n * through an Artifact Next ingress. Only an embedding host's in-process\n * delegated credential carries them — never a bearer, data token or header —\n * and every other caller has them absent, which matches no row.\n */\nexport const CLAIMS_CONTRACT = {\n sub: 'string',\n org: 'string?',\n ext_subject: 'string?',\n ext_email: 'string?',\n roles: 'string[]',\n capabilities: 'string[]',\n} as const\n/** Verified-borrower claim keys; text-typed, compared to text columns with = only. */\nexport const EXTERNAL_POLICY_CLAIM_KEYS = ['ext_subject', 'ext_email'] as const\nexport type ExternalPolicyClaimKey = (typeof EXTERNAL_POLICY_CLAIM_KEYS)[number]\nexport type ClaimKey = 'sub' | 'org' | ExternalPolicyClaimKey\n\nexport function isExternalPolicyClaimKey(key: string): key is ExternalPolicyClaimKey {\n return (EXTERNAL_POLICY_CLAIM_KEYS as readonly string[]).includes(key)\n}\n\nconst scalarLiteral = z.union([z.string(), z.number(), z.boolean(), z.null()])\n\nexport const valueIrSchema = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('literal'), value: z.union([scalarLiteral, z.array(scalarLiteral)]) }),\n z.object({ kind: z.literal('variable'), name: z.string() }),\n z.object({ kind: z.literal('claim'), key: z.enum(['sub', 'org', ...EXTERNAL_POLICY_CLAIM_KEYS]) }),\n])\nexport type ValueIr = z.infer<typeof valueIrSchema>\n\n// ---------------------------------------------------------------------------\n// Predicates\n// ---------------------------------------------------------------------------\n\nexport const CMP_OPS = [\n 'eq', 'neq', 'gt', 'gte', 'lt', 'lte', 'in', 'nin',\n 'like', 'ilike', 'isNull', 'contains', 'hasKey',\n] as const\nexport type CmpOp = (typeof CMP_OPS)[number]\n\nexport type PredIr =\n | { kind: 'and'; operands: PredIr[] }\n | { kind: 'or'; operands: PredIr[] }\n | { kind: 'not'; operand: PredIr }\n | { kind: 'cmp'; op: CmpOp; column: string; value: ValueIr }\n /** EXISTS through a declared link; `where` runs against the target table. */\n | { kind: 'exists'; link: string; where: PredIr }\n /** Aggregation predicate (Hasura `rel_aggregate: { count: { predicate } }`). */\n | { kind: 'aggPredicate'; link: string; fn: 'count'; op: Exclude<CmpOp, 'in' | 'nin' | 'like' | 'ilike' | 'isNull' | 'contains' | 'hasKey'>; value: number; where?: PredIr }\n /** Boolean claims leaves — pre-resolved against claims before execution. */\n | { kind: 'capability'; key: string; namespace?: string }\n | { kind: 'role'; key: string; namespace?: string }\n /** §4f: a client-supplied BoolExp variable lands here, validated + lowered at runtime. */\n | { kind: 'dynamicFilter'; slot: string }\n | { kind: 'const'; value: boolean }\n\nexport const predIrSchema: z.ZodType<PredIr> = z.lazy(() =>\n z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('and'), operands: z.array(predIrSchema).min(1) }),\n z.object({ kind: z.literal('or'), operands: z.array(predIrSchema).min(1) }),\n z.object({ kind: z.literal('not'), operand: predIrSchema }),\n z.object({ kind: z.literal('cmp'), op: z.enum(CMP_OPS), column: z.string(), value: valueIrSchema }),\n z.object({ kind: z.literal('exists'), link: z.string(), where: predIrSchema }),\n z.object({\n kind: z.literal('aggPredicate'), link: z.string(), fn: z.literal('count'),\n op: z.enum(['eq', 'neq', 'gt', 'gte', 'lt', 'lte']), value: z.number(),\n where: predIrSchema.optional(),\n }),\n z.object({ kind: z.literal('capability'), key: z.string(), namespace: z.string().optional() }),\n z.object({ kind: z.literal('role'), key: z.string(), namespace: z.string().optional() }),\n z.object({ kind: z.literal('dynamicFilter'), slot: z.string() }),\n z.object({ kind: z.literal('const'), value: z.boolean() }),\n ]),\n) as z.ZodType<PredIr>\n\n// ---------------------------------------------------------------------------\n// Ordering / paging\n// ---------------------------------------------------------------------------\n\nexport const orderIrSchema = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('column'),\n column: z.string(),\n /** Order through a to-one link: `link` is set and `column` is on the target. */\n link: z.string().optional(),\n direction: z.enum(['asc', 'desc']),\n nulls: z.enum(['first', 'last']).optional(),\n }),\n /** §4f: `$orderBy: [FooOrderBy!]` variable — validated + lowered at runtime. */\n z.object({ kind: z.literal('dynamic'), slot: z.string() }),\n])\nexport type OrderIr = z.infer<typeof orderIrSchema>\n\nexport const limitIrSchema = z.object({\n /** Fixed value or a variable, clamped to [1, max]; absent → default. */\n variable: z.string().optional(),\n value: z.number().int().positive().optional(),\n default: z.number().int().positive(),\n max: z.number().int().positive(),\n})\nexport type LimitIr = z.infer<typeof limitIrSchema>\n\n// ---------------------------------------------------------------------------\n// Selections\n// ---------------------------------------------------------------------------\n\n/** One cell of a `cells { … }` block: the parts selected for one column. */\nexport interface CellSelectionIr {\n alias: string\n /** Logical column whose cell this is. */\n column: string\n typename: string\n parts: Array<{\n alias: string\n part: 'source' | 'at' | 'by' | 'conflicts'\n /** `conflicts { … }`: the candidate fields selected, in order. */\n fields?: Array<{ alias: string; field: 'source' | 'at' | 'value' }>\n /** `conflicts { … }` element typename. */\n typename?: string\n }>\n}\n\nexport interface SelectionIr {\n /** GraphQL type name for __typename synthesis + Apollo normalization. */\n typename: string\n columns: Array<{ alias: string; column: string }>\n /** The typed `cells { … }` block (tables with cell metadata, resolved tables). */\n cells?: { alias: string; typename: string; fields: CellSelectionIr[] }\n relations: Array<{\n alias: string\n link: string\n selection: SelectionIr\n /** Fixed shape from the document; policy for the target table is ALSO\n * injected by the compiler into this `where` — never trust it absent. */\n where?: PredIr\n orderBy?: OrderIr[]\n limit?: LimitIr\n offset?: { variable?: string; value?: number }\n }>\n aggregates: Array<{\n alias: string\n /** Absent link = same-table aggregate (used by aggregate roots). */\n link?: string\n where?: PredIr\n count?: { columns?: string[]; distinct?: boolean }\n sum?: string[]\n avg?: string[]\n /** `nodes { }` selection inside an aggregate block. */\n nodes?: SelectionIr\n }>\n}\n\nconst selectionIrSchema: z.ZodType<SelectionIr> = z.lazy(() =>\n z.object({\n typename: z.string(),\n columns: z.array(z.object({ alias: z.string(), column: z.string() })),\n cells: z.object({\n alias: z.string(),\n typename: z.string(),\n fields: z.array(z.object({\n alias: z.string(),\n column: z.string(),\n typename: z.string(),\n parts: z.array(z.object({\n alias: z.string(),\n part: z.enum(['source', 'at', 'by', 'conflicts']),\n fields: z.array(z.object({ alias: z.string(), field: z.enum(['source', 'at', 'value']) })).optional(),\n typename: z.string().optional(),\n })),\n })),\n }).optional(),\n relations: z.array(z.object({\n alias: z.string(),\n link: z.string(),\n selection: selectionIrSchema,\n where: predIrSchema.optional(),\n orderBy: z.array(orderIrSchema).optional(),\n limit: limitIrSchema.optional(),\n offset: z.object({ variable: z.string().optional(), value: z.number().int().optional() }).optional(),\n })),\n aggregates: z.array(z.object({\n alias: z.string(),\n link: z.string().optional(),\n where: predIrSchema.optional(),\n count: z.object({ columns: z.array(z.string()).optional(), distinct: z.boolean().optional() }).optional(),\n sum: z.array(z.string()).optional(),\n avg: z.array(z.string()).optional(),\n nodes: selectionIrSchema.optional(),\n })),\n }),\n) as z.ZodType<SelectionIr>\n\nexport { selectionIrSchema }\n\n// ---------------------------------------------------------------------------\n// Roots\n// ---------------------------------------------------------------------------\n\n/** `@include(if: $var)` / `@skip(if: $var)` on a root field. */\nconst includeIfSchema = z.object({ variable: z.string(), negated: z.boolean() })\n\n/**\n * `@prefetch(source:)` on a resolved-table query root: before the SQL runs,\n * the data plane refreshes the named prefetch source for the keys this root\n * addresses. `key` is the single pk value (byPk / `pk: {_eq}`) or the pk list\n * (`pk: {_in}` on batch sources).\n */\nexport const prefetchPlanIrSchema = z.object({\n source: z.string(),\n maxStalenessMs: z.number().int().positive().optional(),\n key: z.union([z.object({ one: valueIrSchema }), z.object({ many: valueIrSchema })]),\n})\nexport type PrefetchPlanIr = z.infer<typeof prefetchPlanIrSchema>\n\nconst selectRootSchema = z.object({\n kind: z.literal('select'),\n alias: z.string(),\n table: z.string(),\n selection: selectionIrSchema,\n /** Composed at compile time: AND(policy, documentWhere?, dynamicFilter?). */\n where: predIrSchema,\n orderBy: z.array(orderIrSchema).default([]),\n distinctOn: z.union([z.array(z.string()), z.object({ slot: z.string() })]).optional(),\n limit: limitIrSchema,\n offset: z.object({ variable: z.string().optional(), value: z.number().int().optional() }).optional(),\n includeIf: includeIfSchema.optional(),\n prefetch: z.array(prefetchPlanIrSchema).optional(),\n})\n\nconst byPkRootSchema = z.object({\n kind: z.literal('byPk'),\n alias: z.string(),\n table: z.string(),\n selection: selectionIrSchema,\n pk: z.array(z.object({ column: z.string(), value: valueIrSchema })).min(1),\n /** Policy predicate — ANDed with the PK match. */\n where: predIrSchema,\n includeIf: includeIfSchema.optional(),\n prefetch: z.array(prefetchPlanIrSchema).optional(),\n})\n\nconst aggregateRootSchema = z.object({\n kind: z.literal('aggregate'),\n alias: z.string(),\n table: z.string(),\n where: predIrSchema,\n count: z.object({ columns: z.array(z.string()).optional(), distinct: z.boolean().optional() }).optional(),\n sum: z.array(z.string()).optional(),\n avg: z.array(z.string()).optional(),\n nodes: selectionIrSchema.optional(),\n includeIf: includeIfSchema.optional(),\n})\n\n/**\n * The date-bucket units a grouped aggregate may apply to a `date` /\n * `timestamptz` group key. A CLOSED enum on purpose: the executor maps each\n * member to a `date_trunc` literal, so no caller-supplied string ever reaches\n * SQL text. Adding a unit means adding it here AND to the executor's map —\n * the executor's exhaustive switch makes the omission a type error.\n */\nexport const DATE_BUCKETS = ['year', 'quarter', 'month', 'week', 'day', 'hour'] as const\nexport type DateBucket = (typeof DATE_BUCKETS)[number]\n\n/**\n * One group key: a column, optionally bucketed. `bucket` is only ever set on a\n * `date` / `timestamptz` column — the compiler rejects it on anything else, so\n * the executor can apply `date_trunc` without re-checking the column type.\n */\nconst groupByKeyIrSchema = z.object({\n column: z.string(),\n bucket: z.enum(DATE_BUCKETS).optional(),\n})\nexport type GroupByKeyIr = z.infer<typeof groupByKeyIrSchema>\n\n/**\n * A GROUPED aggregate root — `<t>AggregateGroups`. The ungrouped\n * `aggregateRootSchema` above stays exactly as it was; this is additive, so no\n * already-pushed artifact changes shape.\n *\n * Two deliberate omissions relative to the ungrouped root:\n * - no `nodes`. Per-group row lists are an unbounded fan-out (groups × rows)\n * and nothing needs them; the compiler rejects the field outright.\n * - `groupBy` is document-authored only — it is NOT a §4f dynamic slot. Group\n * keys pick which expressions reach GROUP BY, and dynamic-input.ts already\n * refuses aggregation shapes from client input for the same reason. The\n * `where` remains fully dynamic, which is what runtime filtering needs.\n */\nconst aggregateGroupsRootSchema = z.object({\n kind: z.literal('aggregateGroups'),\n alias: z.string(),\n table: z.string(),\n /** Composed at compile time: AND(policy, documentWhere?, dynamicFilter?). */\n where: predIrSchema,\n groupBy: z.array(groupByKeyIrSchema).min(1),\n /**\n * The `key { … }` projection: which group columns appear in each entry's key\n * object, in selection order. A subset of `groupBy` (the compiler rejects a\n * key field that is not a group key — it would be indeterminate within the\n * group). Empty when the document selects only `aggregate`.\n */\n key: z.array(z.object({ alias: z.string(), column: z.string() })).default([]),\n count: z.object({ columns: z.array(z.string()).optional(), distinct: z.boolean().optional() }).optional(),\n sum: z.array(z.string()).optional(),\n avg: z.array(z.string()).optional(),\n /** Bounds the GROUP count, not the scanned rows — see MAX_GROUPS. */\n limit: limitIrSchema,\n offset: z.object({ variable: z.string().optional(), value: z.number().int().optional() }).optional(),\n includeIf: includeIfSchema.optional(),\n})\n\n/** Column → value map for _set/_append/_inc, or a §4f whole-input slot. */\nconst writeValuesSchema = z.union([\n z.object({ slot: z.string() }),\n z.object({ entries: z.array(z.object({ column: z.string(), value: valueIrSchema })) }),\n])\n\nconst onConflictIrSchema = z.union([\n z.object({ slot: z.string() }),\n z.object({ constraint: z.string(), updateColumns: z.array(z.string()) }),\n])\n\nconst mutationRootSchema = z.object({\n kind: z.literal('mutation'),\n /**\n * CRUD verbs plus the structured copy-on-write ops. `cowOverride` copies the\n * synced row into the overlay (INSERT…SELECT, ON CONFLICT DO NOTHING) then\n * applies `set` — both statements generated by the executor from this\n * metadata, never authored SQL. `cowRevert` deletes the override so the\n * coalesce view falls back to synced. Both are gated on a matching synced\n * row and carry the write policy in `where` like update/delete.\n */\n op: z.enum(['insert', 'insertOne', 'update', 'updateByPk', 'delete', 'deleteByPk', 'cowOverride', 'cowRevert', 'resolvedWrite']),\n /**\n * resolvedWrite: a write to a resolved table (`table` is its view). The\n * executor gates on the resolved row (write policy in `where`), writes only\n * the touched cells into the manual source, then re-checks `insertCheck`\n * against the resolved row. `revert` clears `revertColumns` from the manual\n * source; `delete` tombstones the row there.\n */\n resolvedAction: z.enum(['insert', 'update', 'delete', 'revert']).optional(),\n revertColumns: z.array(z.string()).optional(),\n /** `@writeback(source:, mode:)` directives on this root. */\n writeback: z.array(z.object({ source: z.string(), mode: z.enum(['sync', 'async']) })).optional(),\n /** `@localOnly(source:)` — writeback columns deliberately kept local for these sources. */\n localOnly: z.array(z.string()).optional(),\n alias: z.string(),\n table: z.string(),\n /** CoW ops: logical name of the synced twin (read through its policy-filtered view). */\n cowSynced: z.string().optional(),\n /** cowOverride: logical properties copied INSERT…SELECT from synced (pk included). */\n cowCopyColumns: z.array(z.string()).optional(),\n /** cowOverride: insert-policy WITH CHECK evaluated over the copied rows. */\n cowCopyCheck: predIrSchema.optional(),\n /** insert/insertOne: rows come from a slot ($object/$objects) or literals. */\n objects: z.union([\n z.object({ slot: z.string() }),\n z.object({ rows: z.array(z.array(z.object({ column: z.string(), value: valueIrSchema }))) }),\n ]).optional(),\n /** Server-pinned columns (e.g. author_sub ← claim('sub')) merged into every inserted row. */\n pinnedColumns: z.array(z.object({ column: z.string(), value: valueIrSchema })).default([]),\n onConflict: onConflictIrSchema.optional(),\n set: writeValuesSchema.optional(),\n append: writeValuesSchema.optional(),\n inc: writeValuesSchema.optional(),\n /** update/delete row filter: AND(writePolicy, documentWhere/pk, dynamicFilter?). */\n where: predIrSchema.optional(),\n pk: z.array(z.object({ column: z.string(), value: valueIrSchema })).optional(),\n /** WITH CHECK analogue evaluated against NEW row values (insert/update). */\n insertCheck: predIrSchema.optional(),\n returning: selectionIrSchema.nullable(),\n affectedRows: z.boolean().default(false),\n /** v2: abort the transaction when the actual write count differs, regardless of selection. */\n assertAffectedRows: z.number().int().min(0).max(2147483647).optional(),\n includeIf: includeIfSchema.optional(),\n})\n\n// v2 has no action root kind — writes are mutations (CRUD or structured CoW\n// ops above). The former `kind: 'action'` scaffolding was removed before any\n// action operation was ever compiled into a registry artifact.\nexport const rootIrSchema = z.discriminatedUnion('kind', [\n selectRootSchema, byPkRootSchema, aggregateRootSchema, aggregateGroupsRootSchema, mutationRootSchema,\n])\nexport type RootIr = z.infer<typeof rootIrSchema>\n\n// ---------------------------------------------------------------------------\n// Variables (§4f dynamic slots) & operations\n// ---------------------------------------------------------------------------\n\nexport const INPUT_REF_KINDS = [\n 'boolExp', 'orderBy', 'selectColumn', 'insertInput', 'setInput', 'appendInput', 'onConflict',\n] as const\nexport type InputRefKind = (typeof INPUT_REF_KINDS)[number]\n\n/**\n * A declared GraphQL variable default, persisted verbatim so an omitted\n * variable resolves to it instead of silently becoming NULL. Wrapped in an\n * object so an explicit `= null` stays distinguishable from \"no default\".\n * Only shapes `ValueIr` can carry are representable — the restrict pass\n * rejects anything else (including §4f slot defaults) at compile time.\n */\nexport const variableDefaultIrSchema = z.object({\n value: z.union([scalarLiteral, z.array(scalarLiteral)]),\n})\nexport type VariableDefaultIr = z.infer<typeof variableDefaultIrSchema>\n\nexport const variableIrSchema = z.object({\n name: z.string(),\n type: z.union([\n z.object({ kind: z.literal('scalar'), scalar: z.enum(COLUMN_TYPES) }),\n /** `values` is the declared membership whitelist — the executor validates against it. */\n z.object({ kind: z.literal('enum'), name: z.string(), values: z.array(z.string()).min(1) }),\n /** §4f dynamic slot: validated against `tables[table]` whitelists at runtime. */\n z.object({ kind: z.literal('inputRef'), input: z.enum(INPUT_REF_KINDS), table: z.string() }),\n ]),\n nullable: z.boolean(),\n list: z.boolean(),\n /** Absent = no default declared; see {@link variableDefaultIrSchema}. */\n defaultValue: variableDefaultIrSchema.optional(),\n})\nexport type VariableIr = z.infer<typeof variableIrSchema>\n\nconst sqlColumnSchema = z.object({ name: z.string(), type: z.enum(['text', 'boolean', 'integer', 'bigint', 'numeric', 'double', 'uuid', 'date', 'timestamptz']), nullable: z.boolean() })\n\nexport const compiledOperationSchema = z.object({\n language: z.literal('sql').optional(),\n /** Server-compiled object catalog and permission ceiling, never caller SQL. */\n sqlQuery: z.object({\n catalog: z.object({\n identity: z.string(),\n objects: z.array(z.object({\n ref: z.string(), table: z.string(), columns: z.array(sqlColumnSchema.extend({ type: z.string() })).min(1),\n scan: z.string().min(1), read: z.array(z.string()).min(1),\n }).strict()).min(1).max(256),\n }).strict(),\n read: z.array(z.string()).min(1).max(256),\n maxRows: z.number().int().min(1).max(10_000),\n }).strict().optional(),\n sql: z.object({\n text: z.string().min(1).max(1_048_576),\n columns: z.array(sqlColumnSchema).min(1).max(256),\n parameters: z.array(z.string()).max(128),\n read: z.array(z.string()).min(1).max(256),\n maxRows: z.number().int().min(1).max(10_000),\n }).strict().optional(),\n irVersion: irVersionSchema,\n name: z.string(),\n opHash: z.string().regex(/^sha256:[0-9a-f]{64}$/),\n kind: z.enum(['query', 'mutation']),\n requires: z.object({\n capability: z.string().optional(),\n role: z.string().optional(),\n }).nullable(),\n variables: z.array(variableIrSchema),\n /** Every table the op touches — data-token scoping + audit. */\n tableSet: z.array(z.string()).min(1),\n roots: z.array(rootIrSchema),\n}).superRefine((operation, ctx) => {\n if (operation.language === 'sql') {\n const validPlan = operation.sqlQuery\n ? !operation.sql && operation.irVersion === RUNTIME_SQL_IR_VERSION\n : !!operation.sql && operation.irVersion === SQL_IR_VERSION\n if (!validPlan || operation.kind !== 'query' || operation.roots.length !== 0 || !operation.requires?.capability) {\n ctx.addIssue({ code: 'custom', message: 'SQL operations require a query-only v4 plan or v5 runtime contract, capability, and no GraphQL roots' })\n }\n } else if (operation.sql || operation.sqlQuery || operation.roots.length === 0) {\n ctx.addIssue({ code: 'custom', message: 'GraphQL operations require roots and cannot carry SQL' })\n }\n for (const [index, root] of operation.roots.entries()) {\n if (root.kind !== 'mutation' || root.assertAffectedRows === undefined) continue\n if (operation.irVersion < 2 || operation.kind !== 'mutation' || root.includeIf !== undefined) {\n ctx.addIssue({ code: 'custom', path: ['roots', index], message: 'affected-row assertions require unconditional mutation roots and IR v2' })\n }\n }\n})\nexport type CompiledOperation = z.infer<typeof compiledOperationSchema>\n\n// ---------------------------------------------------------------------------\n// Artifact: per-table runtime metadata + the operation set\n// ---------------------------------------------------------------------------\n\nexport const resolvedSourceIrSchema = z.object({\n name: z.string(),\n kind: z.enum(['manual', 'etl', 'prefetch']),\n /** Logical table key of the backing relation. */\n table: z.string(),\n columns: z.array(z.string()),\n key: z.string().optional(),\n fetch: z.union([\n z.object({ shape: z.literal('single') }),\n z.object({ shape: z.literal('batch'), maxKeys: z.number().int().positive() }),\n ]).optional(),\n function: z.object({ kind: z.enum(['managed', 'native']), id: z.string() }).optional(),\n prefetchDefaults: z.object({\n maxStalenessMs: z.number().int().positive(),\n timeoutMs: z.number().int().positive(),\n onError: z.enum(['fallback', 'fail']),\n }).optional(),\n writeback: z.object({\n columns: z.array(z.string()),\n defaultMode: z.enum(['sync', 'async']),\n timeoutMs: z.number().int().positive(),\n clearManualOnConfirm: z.boolean(),\n }).optional(),\n})\nexport type ResolvedSourceIr = z.infer<typeof resolvedSourceIrSchema>\n\nexport const resolvedMetaIrSchema = z.object({\n /** Logical pk column of the resolved view (single-column). */\n pk: z.string(),\n /** Source name of the manual source. */\n manual: z.string(),\n sources: z.array(resolvedSourceIrSchema),\n deletedBy: z.array(z.string()),\n /**\n * Materialized: the view reads `table`, which the data plane refreshes from\n * the `compute` view (claims-gated) whenever it writes a source row.\n */\n materialized: z.object({ table: z.string(), compute: z.string() }).optional(),\n})\nexport type ResolvedMetaIr = z.infer<typeof resolvedMetaIrSchema>\n\n/**\n * Runtime whitelist metadata per table — everything the executor needs to\n * build Drizzle table objects, validate §4f dynamic inputs, and lower them.\n * Derived from the canonical definition at compile time.\n */\nexport const tableMetaIrSchema = z.object({\n table: z.string(),\n namespace: z.string().optional(),\n dependencies: z.array(z.string()).optional(),\n foreignReferences: z.array(z.object({ column: z.string(), target: z.string(), targetColumn: z.string() })).optional(),\n exportRead: z.union([z.literal(true), z.object({ capability: z.string() }), z.object({ role: z.string() })]).optional(),\n exportWrite: z.union([z.literal(true), z.object({ capability: z.string() }), z.object({ role: z.string() })]).optional(),\n schema: z.string(),\n typename: z.string(),\n /**\n * True when statements over this relation evaluate a claims-gated synced\n * view: synced twins (`source: schema.table`) materialize as views whose baked\n * policy reads `current_setting('request.jwt.claims')`, and namespace views\n * inherit the gate transitively through their declared dependencies. The\n * executor must stamp that GUC (transaction-scoped) before any statement\n * touching such a relation, or the synced arm yields zero rows regardless\n * of the compiled predicates.\n */\n claimsGated: z.boolean().default(false),\n columns: z.array(z.object({\n name: z.string(),\n columnName: z.string(),\n type: z.union([z.enum(COLUMN_TYPES), z.object({ enum: z.string(), values: z.array(z.string()) })]),\n nullable: z.boolean(),\n })),\n /** Empty for keyless read-only views; keyed tables and views list logical columns. */\n primaryKey: z.array(z.string()),\n links: z.array(z.object({\n name: z.string(),\n kind: z.enum(['toOne', 'toMany', 'toPlatformUser']),\n target: z.string(),\n on: z.string(),\n references: z.string(),\n })),\n /** §4f whitelists: what dynamic inputs may reference. */\n filterable: z.array(z.string()),\n orderable: z.array(z.string()),\n insertable: z.array(z.string()),\n settable: z.array(z.string()),\n appendable: z.array(z.string()),\n /**\n * Logical columns stamped with Postgres `now()` on UPDATE (canonical\n * `onUpdateFn`). Omitted when empty so pre-onUpdate artifacts still parse.\n */\n touchOnUpdate: z.array(z.string()).optional(),\n /**\n * Per-cell metadata: logical column → the logical names of its cell-part\n * columns (which are listed in `columns`, but never filterable, orderable or\n * writable). Tables stamp `at`/`by` (and a manual source `rev`) on every\n * write; resolved views expose `source`/`at`/`by`/`conflicts`. Omitted when\n * the relation tracks no cells.\n */\n cells: z.record(z.string(), z.object({\n at: z.string().optional(),\n by: z.string().optional(),\n rev: z.string().optional(),\n source: z.string().optional(),\n conflicts: z.string().optional(),\n }).strict()).optional(),\n /** Resolved-table view metadata (sources, prefetch/writeback config) for the data plane. */\n resolved: resolvedMetaIrSchema.optional(),\n constraints: z.array(z.object({ name: z.string(), columns: z.array(z.string()) })),\n /** Depth/node caps for dynamic filter trees on this table. */\n dynamicFilterMaxDepth: z.number().int().positive().default(6),\n dynamicFilterMaxNodes: z.number().int().positive().default(64),\n})\nexport type TableMetaIr = z.infer<typeof tableMetaIrSchema>\n\nexport const compiledArtifactSchema = z.object({\n irVersion: irVersionSchema,\n namespace: z.string(),\n schemaHash: z.string(),\n ownSchemaHash: z.string().optional(),\n dependencies: z.record(z.string(), z.string()).optional(),\n readPolicies: z.record(z.string(), predIrSchema).optional(),\n opsHash: z.string(),\n /** Apply-observed synced objects without a serving backing; not part of the authored schema hash. */\n unbackedTables: z.array(z.string()).optional(),\n tables: z.record(z.string(), tableMetaIrSchema),\n operations: z.record(z.string(), compiledOperationSchema),\n}).superRefine((artifact, ctx) => {\n if (Object.keys(artifact.dependencies ?? {}).length > 0 && artifact.irVersion < COMPOSED_IR_VERSION) {\n ctx.addIssue({ code: 'custom', path: ['irVersion'], message: 'cross-namespace dependencies require IR v3' })\n }\n for (const [name, operation] of Object.entries(artifact.operations)) {\n if (operation.irVersion > artifact.irVersion) {\n ctx.addIssue({ code: 'custom', path: ['operations', name, 'irVersion'], message: 'operation requires a newer IR version than its artifact' })\n }\n }\n})\nexport type CompiledArtifact = z.infer<typeof compiledArtifactSchema>\n\n// ---------------------------------------------------------------------------\n// Versioning shim\n// ---------------------------------------------------------------------------\n\nexport class IrVersionError extends Error {\n constructor(found: unknown) {\n super(`Unsupported IR version ${String(found)} — this executor supports up to ${IR_VERSION}. ` +\n 'Upgrade @sequenceholdings/orm or re-push the namespace.')\n this.name = 'IrVersionError'\n }\n}\n\n/**\n * Validate + normalize a raw registry artifact (the normalizeSnapshot\n * pattern): future IR versions add upgrade branches here so executor\n * upgrades decouple from artifact re-pushes. Never trust registry jsonb —\n * the data plane calls this on every artifact load.\n */\nexport function normalizeIr(raw: unknown): CompiledArtifact {\n if (!raw || typeof raw !== 'object') throw new IrVersionError(undefined)\n const version = (raw as { irVersion?: unknown }).irVersion\n if (!irVersionSchema.safeParse(version).success) throw new IrVersionError(version)\n return compiledArtifactSchema.parse(raw)\n}\n\n/** Index an artifact's operations by opHash (the wire selector). */\nexport function indexByHash(artifact: CompiledArtifact): Map<string, CompiledOperation> {\n const map = new Map<string, CompiledOperation>()\n for (const op of Object.values(artifact.operations)) map.set(op.opHash, op)\n return map\n}\n"]}
|