@ai-matrx/records 0.47.0 → 0.49.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/CHANGELOG.md +54 -0
- package/dist/core/index.cjs +28 -2
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +20 -8
- package/dist/core/index.d.ts +20 -8
- package/dist/core/index.js +28 -2
- package/dist/core/index.js.map +1 -1
- package/dist/{field-CFK39l0H.d.cts → field-z68hD9VX.d.cts} +5 -0
- package/dist/{field-CFK39l0H.d.ts → field-z68hD9VX.d.ts} +5 -0
- package/dist/index.cjs +17 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +50 -5
- package/dist/index.d.ts +50 -5
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/react/index.cjs +41 -8
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +77 -6
- package/dist/react/index.d.ts +77 -6
- package/dist/react/index.js +41 -8
- package/dist/react/index.js.map +1 -1
- package/dist/use-cases/index.cjs.map +1 -1
- package/dist/use-cases/index.d.cts +1 -1
- package/dist/use-cases/index.d.ts +1 -1
- package/dist/use-cases/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/vocabulary.ts","../src/level.ts","../src/choice.ts","../src/coerce.ts","../src/pipeline.ts","../src/rule.ts","../src/portal.ts","../src/aggregate.ts","../src/capture-queue.ts","../src/results.ts","../src/ops.ts","../src/store.generated.ts","../src/record-scope.ts"],"sourcesContent":["// src/vocabulary.ts — @ai-matrx/records\n//\n// THE CLOSED VOCABULARIES. Every list here is a word set the STORE enforces,\n// and the store is the only place any of them is decided. The literal values\n// are not typed by hand: `src/store.generated.ts` is regenerated from the live\n// catalogue by `pnpm records:generate`, and `pnpm check:store-registry` fails\n// the build the moment this package and the database disagree. What lives HERE\n// is the type layer over those literals, so a wrong word is a compile error in\n// a consumer rather than a `23514` at three in the morning.\n\nimport {\n ACTOR_VOCABULARY,\n ABSENCE_REASONS,\n VALUE_ENVELOPE_KEYS,\n VALUE_ALTERNATE_KEYS,\n STORAGE_MODES,\n RULE_USES,\n PER_VALUE_ACCESS_WORDS,\n PARITY_FIELD_TYPES,\n RULE_NODE_KINDS,\n RETIRED_ACTOR_WORDS,\n} from \"./store.generated\";\n\n/**\n * VAL-8. Who wrote a value. `user`, `agent`, `system` — enforced by every write\n * door, and the three retired words (`human`, `ai`, `code`) are translated by\n * the store's own `custom.actor_word`, never by a caller.\n */\nexport type Actor = (typeof ACTOR_VOCABULARY)[number];\n\n/** The words the store still accepts and rewrites, mapped to what they become. */\nexport type RetiredActorWord = keyof typeof RETIRED_ACTOR_WORDS;\n\n/**\n * VAL-2. Why a value is missing. A value is never blank for an unexplained\n * reason: it either holds something or it says one of these four words.\n */\nexport type AbsenceReason = (typeof ABSENCE_REASONS)[number];\n\n/** The closed key set of one value envelope (VAL-1 … VAL-4). */\nexport type ValueEnvelopeKey = (typeof VALUE_ENVELOPE_KEYS)[number];\n\n/** The closed key set of one ranked alternate (VAL-3). */\nexport type ValueAlternateKey = (typeof VALUE_ALTERNATE_KEYS)[number];\n\n/**\n * REC-4. `heavy` is indexed storage with Rules on write; `light` is\n * whole-document storage with Rules on read. Per Table, one store.\n */\nexport type StorageMode = (typeof STORAGE_MODES)[number];\n\n/** REC-15. One Rule object, four uses. */\nexport type RuleUse = (typeof RULE_USES)[number];\n\n/**\n * VAL-5 / VAL-6. The words that may NOT appear inside a value envelope:\n * visibility and access belong to a Field and to a Record, never to a value.\n * The store refuses each of them by name and so does this package's mirror.\n */\nexport type PerValueAccessWord = (typeof PER_VALUE_ACCESS_WORDS)[number];\n\n/** FLD-11. The parity floor: the field type a person picks in the UI. */\nexport type ParityFieldType = (typeof PARITY_FIELD_TYPES)[number][\"parity_type\"];\n\n/** FLD-1. The five behaviours a Field can have. One, exactly, and closed. */\nexport type FieldBehavior = (typeof PARITY_FIELD_TYPES)[number][\"behavior\"];\n\n/** The node kinds `custom.rule_eval` evaluates. */\nexport type RuleNodeKind = (typeof RULE_NODE_KINDS)[number][\"node\"];\n\n/**\n * REC-32. The seven table types, closed. The parenthesised names are the\n * retired ones the doctrine records; never coin an eighth.\n */\nexport const TABLE_TYPES = [\n \"entity\",\n \"detail\",\n \"reference\",\n \"ledger\",\n \"restricted\",\n \"system\",\n \"deprecated\",\n] as const;\nexport type TableType = (typeof TABLE_TYPES)[number];\n\n/** REC-33. The two origins. A table we ship in schema `custom` is `standard`. */\nexport const TABLE_ORIGINS = [\"standard\", \"custom\"] as const;\nexport type TableOrigin = (typeof TABLE_ORIGINS)[number];\n\n/** REL-1. Ownership is one fact, stored once, read from the field's side. */\nexport const RELATION_FLAVORS = [\"owned\", \"referenced\"] as const;\nexport type RelationFlavor = (typeof RELATION_FLAVORS)[number];\n\n/** REL-2. What happens to the far side, separate from flavour. */\nexport const ON_DELETE = [\"cascade\", \"set_null\", \"restrict\"] as const;\nexport type OnDelete = (typeof ON_DELETE)[number];\n\n/** REL-3. A snapshot is a frozen copy in the relation's payload, never a pointer. */\nexport const RELATION_BINDINGS = [\"live\", \"snapshot\"] as const;\nexport type RelationBinding = (typeof RELATION_BINDINGS)[number];\n\n/** REL-7. */\nexport const RELATION_CARDINALITIES = [\"one\", \"many\"] as const;\nexport type RelationCardinality = (typeof RELATION_CARDINALITIES)[number];\n\n/** FLD-7. Where a Field's values come from. */\nexport const FIELD_SOURCES = [\"manual\", \"formula\", \"agent\", \"synced\"] as const;\nexport type FieldSource = (typeof FIELD_SOURCES)[number];\n\n/** FLD-9. A Formula declares whether it computes on read or on write. */\nexport const COMPUTE_ON = [\"read\", \"write\"] as const;\nexport type ComputeOn = (typeof COMPUTE_ON)[number];\n\n/**\n * AGT-7 / FLD-12. A Field's sensitivity sets a ceiling a merge field can never\n * widen — and these are THE STORE'S four words, checked against its own guard.\n *\n * This list used to read `standard · sensitive · secret`, which the store has\n * never accepted: writing a Field with `sensitivity: \"standard\"` is refused\n * with \"the field <name> has to say how sensitive its values are, and it says\n * standard\". The knob `custom/field_sensitivity_levels` keys off these same\n * four words to decide which level may read and edit each one, so a package\n * carrying three different words could never have agreed with it. Corrected\n * against the live store, 2026-09-18.\n */\nexport const FIELD_SENSITIVITIES = [\"public\", \"internal\", \"confidential\", \"restricted\"] as const;\nexport type FieldSensitivity = (typeof FIELD_SENSITIVITIES)[number];\n\n/** DYN-17 / §D. Which tier a MERGE FIELD's value is delivered in. */\nexport const DELIVERIES = [\"inline\", \"on_demand\", \"auto\"] as const;\nexport type Delivery = (typeof DELIVERIES)[number];\n\n/**\n * FLD-12. WHETHER AN AGENT MAY SEE A FIELD'S VALUES, and these are the STORE'S\n * four words — not the merge field's delivery tiers.\n *\n * `Field.context_policy` used to be typed as `Delivery` here, which is a\n * different question with a different vocabulary: writing a Field with\n * `context_policy: \"inline\"` is refused with \"the field <name> has to say\n * whether an agent may see its values, and it says inline\". Delivery is about\n * HOW MUCH of a value a merge field carries into a turn; this is about WHETHER\n * the value reaches an agent at all, and conflating them let a screen offer a\n * word the store has never accepted. Corrected against the live store,\n * 2026-09-18.\n */\nexport const CONTEXT_POLICIES = [\"include\", \"summarize\", \"exclude\", \"on_request\"] as const;\nexport type ContextPolicy = (typeof CONTEXT_POLICIES)[number];\n\n/** DYN-3. The eight sources, closed. Relationships and rules are not sources. */\nexport const MERGE_FIELD_SOURCES = [\n \"literal\",\n \"record\",\n \"state\",\n \"actor\",\n \"platform\",\n \"user_input\",\n \"tool\",\n \"derived\",\n] as const;\nexport type MergeFieldSource = (typeof MERGE_FIELD_SOURCES)[number];\n\n/** DYN-4. What a merge field resolves INTO. The consumer never learns which. */\nexport const MERGE_FIELD_SEMANTIC_TYPES = [\n \"value\",\n \"reference\",\n \"resolver\",\n \"computed\",\n \"collection\",\n] as const;\nexport type MergeFieldSemanticType = (typeof MERGE_FIELD_SEMANTIC_TYPES)[number];\n\n/** DYNAMIC-VALUES §A. Any number of these; never fused into the source. */\nexport const MERGE_FIELD_MODIFIERS = [\n \"scoped\",\n \"temporal\",\n \"collection\",\n \"live\",\n \"fallback\",\n \"formatted\",\n \"required\",\n] as const;\nexport type MergeFieldModifier = (typeof MERGE_FIELD_MODIFIERS)[number];\n\n/** DYN-12. The five override policies. Exactly one, and it outranks the ladder. */\nexport const OVERRIDE_POLICIES = [\n \"must_supply\",\n \"shown_overridable\",\n \"shown_locked\",\n \"server_fixed\",\n \"derived\",\n] as const;\nexport type OverridePolicy = (typeof OVERRIDE_POLICIES)[number];\n\n/** DYNAMIC-VALUES §C. What a resolved merge field's freshness was. */\nexport const FRESHNESS = [\"live\", \"cached\", \"snapshot\"] as const;\nexport type Freshness = (typeof FRESHNESS)[number];\n\n/** REC-1. How a Table shows itself. */\nexport const TABLE_DISPLAYS = [\"list\", \"grid\", \"board\", \"calendar\", \"timeline\"] as const;\nexport type TableDisplay = (typeof TABLE_DISPLAYS)[number];\n","// src/level.ts — @ai-matrx/records\n//\n// THE FOUR WORDS, AND THEIR ORDER. `public.permission_level` is a closed enum —\n// viewer < commenter < editor < admin — and the store says so in its own\n// refusals (\"This needs the admin level (viewer < commenter < editor < admin)\").\n//\n// It lives here, in the headless package, for one reason: a screen that has to\n// decide whether to DRAW a control needs the same ordering the door uses to\n// decide whether to accept the call. Two orderings is two answers to one\n// question, and the second one is always the wrong one.\n//\n// Nothing here decides policy. `atLeast` compares two words the store defined;\n// which word a door requires is the door's business and is never restated here.\n\n/** `public.permission_level`, in the store's own order. */\nexport type PermissionLevel = \"viewer\" | \"commenter\" | \"editor\" | \"admin\";\n\n/** The order the store writes them in, lowest first. */\nexport const PERMISSION_LEVELS: readonly PermissionLevel[] = [\n \"viewer\",\n \"commenter\",\n \"editor\",\n \"admin\",\n] as const;\n\nconst ORDINAL: Record<PermissionLevel, number> = {\n viewer: 1,\n commenter: 2,\n editor: 3,\n admin: 4,\n};\n\n/** Whether `held` is the same rung as `needed` or a higher one. Nothing held is never enough. */\nexport function atLeast(held: PermissionLevel | null | undefined, needed: PermissionLevel): boolean {\n if (!held) return false;\n const have = ORDINAL[held];\n return have !== undefined && have >= ORDINAL[needed];\n}\n\n/** A level word the store sent, or null when it sent something this package does not know. */\nexport function asPermissionLevel(word: unknown): PermissionLevel | null {\n return typeof word === \"string\" && word in ORDINAL ? (word as PermissionLevel) : null;\n}\n\n/** The higher of two levels — what a person holds when two ways in both let them through. */\nexport function highestLevel(\n left: PermissionLevel | null | undefined,\n right: PermissionLevel | null | undefined,\n): PermissionLevel | null {\n if (!left) return right ?? null;\n if (!right) return left;\n return ORDINAL[left] >= ORDINAL[right] ? left : right;\n}\n\n/**\n * What one subject's level is, as `custom.my_levels` answers it. `null` is an\n * ANSWER — \"you hold nothing on this\" — and never a missing row: a screen that\n * could not tell \"no access\" from \"not asked yet\" would draw one of them as the\n * other.\n */\nexport interface MyLevel {\n id: string;\n level: PermissionLevel | null;\n}\n","// src/choice.ts — @ai-matrx/records\n//\n// WHAT A CHOICE VALUE IS, in one place, for every screen and every caller.\n//\n// A pick-list is a Table and an option is a Record of it (FLD-5 / FLD-6) — that part is\n// unchanged and is the store being right. What a CELL holds is not the option record's id: it\n// is the option's own stable key, a short word derived from its title when the option is born,\n// unique within its list and never rewritten. So renaming \"Circle\" to \"Round\" rewrites no row,\n// and nothing — no person, no agent, no import — is ever asked to know a uuid for a word the\n// product showed them.\n//\n// The read doors hand back the LABEL in the cell and name the key beside it in `_choices`:\n//\n// { \"kind\": \"Circle\",\n// \"_choices\": { \"kind\": { \"key\": \"circle\", \"label\": \"Circle\", \"id\": \"…\",\n// \"retired\": false, \"reason\": null } } }\n//\n// A multi-choice cell reads as an array of labels and its `_choices` entry is an array in the\n// same order. A RETIRED option is in there too, with `retired: true` and the reason — a value\n// whose choice was retired reads as its label and says what happened rather than vanishing.\n//\n// WRITING takes the label, the key, or (so nothing that worked yesterday breaks) the option\n// record's id. The store normalises all three to the key on the way in and refuses a word that\n// names no choice, naming the choices themselves.\n\nimport type { RecordDocument, StoredRecord } from \"./record\";\n\n/** One option, as `_choices` names it and as `optionsOf` returns it. */\nexport interface ChoiceOption {\n /** The stable key the cell actually holds. */\n key: string;\n /** What a person reads. */\n label: string;\n /** The option RECORD's id, for a caller that needs the row itself. */\n id?: string;\n /** True when the option was retired: still readable, no longer pickable. */\n retired?: boolean;\n /** Why it is no longer offered, in a sentence, when it is retired. */\n reason?: string | null;\n}\n\nconst UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/**\n * The stable key of an option RECORD as `custom.field_options` returns it.\n *\n * It lives in `metadata.option_key`, not in the document: FLD-5 keeps a category to one title\n * field, and the key is the store's own bookkeeping rather than a column anybody declared.\n * The fallback is the same slug the store derives, so an option written by something that has\n * not caught up still answers.\n */\nexport function optionKey(option: StoredRecord): string {\n const stored = option.metadata?.[\"option_key\"];\n if (typeof stored === \"string\" && stored.trim() !== \"\") return stored;\n return choiceSlug(optionLabel(option));\n}\n\n/** What a person reads on an option record. */\nexport function optionLabel(option: StoredRecord): string {\n const doc = option.data as RecordDocument | undefined;\n const title = doc?.[\"title\"] ?? doc?.[\"name\"];\n if (typeof title === \"string\" && title.trim() !== \"\") return title;\n return \"Unnamed choice\";\n}\n\n/**\n * The store's own slug, mirrored so a client can predict a key without a round trip.\n * `custom.choice_slug` is the original; a title with nothing a-z0-9 in it gets a short hash of\n * itself there, and this returns the empty-ish fallback rather than guessing a hash — a caller\n * that needs the real key for such a title reads it off the option.\n */\nexport function choiceSlug(word: string): string {\n const slug = word\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"_\")\n .replace(/^_+|_+$/g, \"\")\n .slice(0, 55);\n return slug === \"\" ? \"choice\" : slug;\n}\n\n/**\n * Does this stored (or typed) value name this option? The key, the label and the option's own\n * id all name the same choice, and a control has to recognise every one of them: what the read\n * door hands it is the LABEL, what the store holds is the KEY, and what a screen written before\n * this contract sends is the ID.\n */\nexport function isTheChosen(option: StoredRecord, value: unknown): boolean {\n if (typeof value !== \"string\") return false;\n const asked = value.trim().toLowerCase();\n if (asked === \"\") return false;\n return (\n asked === optionKey(option).toLowerCase() ||\n asked === optionLabel(option).toLowerCase() ||\n asked === option.id.toLowerCase()\n );\n}\n\n/** Every value of one cell, as strings, whether the Field is multi or not. */\nexport function choiceValuesOf(value: unknown): string[] {\n if (Array.isArray(value)) return value.filter((v): v is string => typeof v === \"string\");\n if (typeof value === \"string\" && value !== \"\") return [value];\n return [];\n}\n\n/**\n * What the read door said about one column's choices: the key behind the label, and whether the\n * option was retired and why. Returns an empty array when the document carries no `_choices`\n * entry for that column, which is also what a document written before this contract looks like.\n */\nexport function choicesOf(document: RecordDocument | undefined, fieldKeyOrId: string): ChoiceOption[] {\n const block = document?.[\"_choices\"];\n if (!block || typeof block !== \"object\") return [];\n const entry = (block as Record<string, unknown>)[fieldKeyOrId];\n if (!entry) return [];\n const list = Array.isArray(entry) ? entry : [entry];\n return list.filter((x): x is ChoiceOption => !!x && typeof x === \"object\" && typeof (x as ChoiceOption).key === \"string\");\n}\n\n/** True when this cell's value points at a choice that has since been retired. */\nexport function holdsARetiredChoice(document: RecordDocument | undefined, fieldKeyOrId: string): boolean {\n return choicesOf(document, fieldKeyOrId).some((c) => c.retired === true);\n}\n\n/** True when a token looks like a uuid — which a choice value is no longer allowed to be. */\nexport function looksLikeAnId(value: unknown): boolean {\n return typeof value === \"string\" && UUID.test(value);\n}\n","// src/coerce.ts — @ai-matrx/records\n//\n// WHAT A TYPED-IN ANSWER MEANS TO A FIELD, WORKED OUT IN ONE PLACE.\n//\n// Every door into this store that a person types into hands over STRINGS. A\n// browser input is a string. A clipboard cell is a string. A CSV column is a\n// string. A public form's answer is a string. A Field does not take strings —\n// it takes a number, a tick, a day, the id of an option — and until the string\n// has been turned into one of those, the store refuses it.\n//\n// 🚨 WHY THIS FILE EXISTS (AGENT-BUILDS-2's closing walk, 2026-09-21). A real\n// customer picked a time on Ironclad Mobile Mechanic's public booking page,\n// typed their name, phone, email and vehicle, pressed \"Book it\", and the page\n// answered:\n//\n// \"Vehicle Year takes a number, and it was given a string\"\n//\n// The appointment was not made. `BookingPicker` kept its answers as\n// `Record<string, string>` and the confirm route passed them through\n// uncoerced, so a booking page over ANY table with a number field was\n// unbookable by anybody. The store was right and said so plainly; nothing\n// between the person and the store had done the one job that stood between\n// them.\n//\n// AND IT WAS ALREADY SOLVED, TWICE, IN THE WRONG PLACE. The grid's paste\n// (`@ai-matrx/records-ui` `valueFromPastedText`) and the import wizard each\n// carried their own coercion — good ones — while the two PUBLIC doors, the\n// ones a stranger uses, carried none. That is the shape the platform-primitive\n// rule exists to stop: a capability scoped to the feature that surfaced it.\n// So the coercion lives HERE, headless, in the package both the screens and\n// the servers already depend on, and every one of those five doors calls it.\n//\n// THREE RULES IT KEEPS:\n//\n// 1. A VALUE IS COERCED, NEVER GUESSED. Writing 0 for \"about twelve\" or\n// today's date for \"soon\" is how a table quietly becomes untrue. A string\n// that is not the thing is REFUSED, by name, in words the person can act\n// on — \"Vehicle Year holds a number, and “twenty nineteen” is not one\".\n// 2. THE REFUSAL NAMES THE FIELD IN PLAIN WORDS, never its key, because the\n// person reading it is looking at a label on a screen.\n// 3. IT DECIDES NOTHING ELSE. Required, the Rules, the cap, the rate window\n// and every wall are the store's. This turns a string into a value and\n// stops.\n\nimport type { Field } from \"./field\";\n\n/**\n * EVERYTHING THIS FILE NEEDS TO KNOW ABOUT A FIELD, AND NOTHING ELSE.\n *\n * A full `Field` satisfies it, and so does every narrower shape the store\n * hands to a screen — `CaptureField` on a phone with no network, the Field\n * documents `custom.form_public` and `custom.booking_public` publish to a\n * stranger. Asking for the whole `Field` would have meant the capture sheet\n * keeping its own `Number(raw)`, which is exactly the duplication this file\n * exists to end.\n */\nexport interface CoercibleField {\n /** Named so the doc above is checkable: a full {@link Field} satisfies this. */\n key: string;\n label?: string | null;\n name?: string | null;\n /** FLD-1. One of five behaviours; an unknown word is treated as text. */\n type?: string | null;\n multi?: boolean | null;\n unit?: string | null;\n format?: string | null;\n config?: Record<string, unknown> | null | undefined;\n relation_target?: string | null;\n}\n\n// ───────────────────────────────────────────────────────────────────────────\n// WHICH KIND OF THING A FIELD HOLDS\n// ───────────────────────────────────────────────────────────────────────────\n\n/**\n * The kind of value one Field holds, resolved from its DECLARATION only — the\n * behaviour, the modifiers, the format, the relation target and the config,\n * because those are what the store stores. A screen that guessed from a value\n * would answer differently for an empty record.\n *\n * `plain_text`, `long_text`, `number` and `boolean` are behaviours that carry\n * no parity type of their own; every other word here is a parity type.\n */\nexport const FIELD_KINDS = [\n \"attachment\",\n \"checkbox\",\n \"currency\",\n \"datetime\",\n \"email\",\n \"formula\",\n \"json\",\n \"long_text\",\n \"lookup\",\n \"member\",\n \"multi_select\",\n \"number\",\n \"percent\",\n \"phone\",\n \"relation\",\n \"rollup\",\n \"select\",\n \"text\",\n \"url\",\n] as const;\n\n/**\n * 🚨 THE UNION IS DERIVED FROM THE LIST ABOVE, and the list is what the\n * coverage test walks. Add a kind here and the test drives it; give it no arm\n * in `coerceTypedAnswer` and the test says so, instead of the new kind falling\n * quietly through `default:` and a value of the wrong shape reaching the store\n * — which is the whole defect this file closes.\n */\nexport type FieldKind = (typeof FIELD_KINDS)[number];\n\n/** The kernel Table ids REC-31 pins the two special relations to. */\nexport interface KernelTargets {\n /** The kernel `File` Table — a relation pointing here is an attachment. */\n file?: string | undefined;\n /** The kernel `Person` Table — a relation pointing here names a person. */\n person?: string | undefined;\n}\n\n/**\n * Which kind of value this Field holds.\n *\n * This is the ONE classifier. `@ai-matrx/records-ui`'s `editorKindFor` — which\n * decides which editor to DRAW — delegates to it, so the editor a person types\n * into and the coercion applied to what they typed can never disagree about\n * the same column. They did disagree before this moved here; that is the whole\n * class of grid defect September was spent closing.\n */\nexport function fieldKindFor(field: CoercibleField, kernel?: KernelTargets): FieldKind {\n const format = (field.format ?? \"\").toLowerCase();\n const config = field.config ?? {};\n switch (field.type) {\n case \"boolean\":\n return \"checkbox\";\n case \"text\":\n if (format === \"email\") return \"email\";\n if (format === \"phone\") return \"phone\";\n if (format === \"url\") return \"url\";\n if (format === \"json\" || config[\"json\"] === true) return \"json\";\n if (format === \"long\" || config[\"multiline\"] === true) return \"long_text\";\n return \"text\";\n case \"range\": {\n const kind = String(config[\"kind\"] ?? \"number\");\n if (kind === \"date\" || kind === \"datetime\") return \"datetime\";\n // THE FORMAT, AND ONLY THE FORMAT. A unit is not a currency: a quantity\n // in `units` drawn as money is how three of something rendered \"units3\".\n if (format === \"currency\") return \"currency\";\n if (format === \"percent\" || field.unit === \"%\") return \"percent\";\n return \"number\";\n }\n case \"list\":\n return field.multi ? \"multi_select\" : \"select\";\n case \"relation\": {\n const parity = String(config[\"parity\"] ?? \"\");\n if (parity === \"attachment\" || parity === \"member\") return parity;\n if (kernel?.file && field.relation_target === kernel.file) return \"attachment\";\n if (kernel?.person && field.relation_target === kernel.person) return \"member\";\n return \"relation\";\n }\n case \"formula\": {\n const via = config[\"via\"];\n if (via && config[\"agg\"]) return \"rollup\";\n if (via) return \"lookup\";\n return \"formula\";\n }\n default:\n return \"text\";\n }\n}\n\n// ───────────────────────────────────────────────────────────────────────────\n// THE COERCION\n// ───────────────────────────────────────────────────────────────────────────\n\n/** One Field's options, indexed the way a typed word has to be looked up. */\nexport interface ChoiceOptions {\n /**\n * Lower-cased label, option key and option id, each pointing at the OPTION\n * RECORD'S ID — which is what a list Field stores (FLD-5/FLD-6).\n */\n byWord: Map<string, string>;\n /** The labels, in order, so a refusal can say what is on offer. */\n labels: string[];\n}\n\n/** What one answer became, or the sentence saying why it did not. */\nexport type Coerced =\n | { value: unknown }\n | { refusal: string; unmatched?: string[] };\n\nexport interface CoerceOptions {\n /** This Field's choices, when the caller has loaded them. */\n options?: ChoiceOptions | undefined;\n /** The kernel File/Person Table ids, for classifying relations. */\n kernel?: KernelTargets | undefined;\n /**\n * The Field's name as this caller writes it. Defaults to the Field's own\n * label. A screen passes the same words it printed above the box.\n */\n label?: string | undefined;\n}\n\nconst TRUE_WORDS = new Set([\"true\", \"yes\", \"y\", \"1\", \"✓\", \"x\", \"checked\", \"on\"]);\nconst FALSE_WORDS = new Set([\"false\", \"no\", \"n\", \"0\", \"\", \"unchecked\", \"off\"]);\n\n/** The Field's name in plain words — never its key on a screen. */\nexport function coercionLabel(field: CoercibleField): string {\n const label = (field.label ?? \"\").trim();\n if (label !== \"\") return label;\n const name = (field.name ?? \"\").trim();\n if (name !== \"\") return name;\n return field.key\n .replace(/[_-]+/g, \" \")\n .replace(/\\b\\w/g, (c) => c.toUpperCase())\n .trim();\n}\n\n/**\n * Turn ONE typed-in string into the value this Field holds — or say, in a\n * sentence a person can act on, why it is not one.\n *\n * An empty answer is `null` for every kind: a blank means \"no answer here\",\n * and clearing a value is a thing a person means to do. Whether the Field may\n * be blank is the store's question, asked with the Field's `required` and its\n * Rules, not this one's.\n */\nexport function coerceTypedAnswer(\n field: CoercibleField,\n raw: string,\n opts: CoerceOptions = {},\n): Coerced {\n const label = opts.label ?? coercionLabel(field);\n const text = raw.trim();\n const kind = fieldKindFor(field, opts.kernel);\n\n if (text === \"\" && kind !== \"checkbox\") return { value: null };\n\n switch (kind) {\n case \"checkbox\": {\n const word = text.toLowerCase();\n if (TRUE_WORDS.has(word)) return { value: true };\n if (FALSE_WORDS.has(word)) return { value: word === \"\" ? null : false };\n return {\n refusal: `${label} is a tick box, so it takes yes or no — “${raw}” is neither. Write TRUE/FALSE, yes/no or 1/0.`,\n };\n }\n case \"number\":\n case \"currency\":\n case \"percent\": {\n // PEOPLE WRITE NUMBERS THE WAY PEOPLE WRITE NUMBERS. \"$1,250.50\",\n // \"(300)\" for a negative, \"12%\", \"2019\" — all of them are the number\n // that was meant, and refusing them makes the column people use most\n // the one the product cannot take.\n const negative = /^\\(.*\\)$/.test(text);\n const bare = text\n .replace(/^\\(|\\)$/g, \"\")\n .replace(/[\\s,]/g, \"\")\n .replace(/^[^\\d.\\-+]+/, \"\")\n .replace(/[^\\d.\\-+eE]+$/, \"\");\n const n = Number(bare);\n if (bare === \"\" || Number.isNaN(n)) {\n return {\n refusal: `${label} holds a number, and “${raw}” is not one. Write digits — a currency symbol, a percent sign, commas and brackets for a negative are all fine.`,\n };\n }\n return { value: negative ? -n : n };\n }\n case \"datetime\": {\n // A DAY IS NOT AN INSTANT, AND TREATING IT AS ONE MOVES IT. `2026-09-01`\n // parsed as an instant is midnight UTC, and a screen west of Greenwich\n // then draws it as 31 August — measured on fifty pasted invoice dates,\n // all one day early, systematically. A date Field holds a DAY.\n const wantsTime = String(field.config?.[\"kind\"] ?? \"date\") === \"datetime\";\n const plainDay = /^\\s*(\\d{4})-(\\d{2})-(\\d{2})\\s*$/.exec(raw);\n if (!wantsTime && plainDay) return { value: `${plainDay[1]}-${plainDay[2]}-${plainDay[3]}` };\n const at = Date.parse(text);\n if (Number.isNaN(at)) {\n return {\n refusal: `${label} holds a date, and “${raw}” is not one this can read. Write it as 2026-09-21, or the way your spreadsheet writes dates.`,\n };\n }\n const parsed = new Date(at);\n if (wantsTime) return { value: parsed.toISOString() };\n const y = parsed.getFullYear();\n const m = String(parsed.getMonth() + 1).padStart(2, \"0\");\n const d = String(parsed.getDate()).padStart(2, \"0\");\n return { value: `${y}-${m}-${d}` };\n }\n case \"json\": {\n try {\n return { value: JSON.parse(text) };\n } catch {\n return {\n refusal: `${label} holds a document, and “${raw}” is not valid JSON. Write the whole object, braces and all.`,\n };\n }\n }\n case \"select\":\n case \"multi_select\": {\n // A LIST IS AN IDENTITY, AND A WORD IS HOW A PERSON NAMES ONE. The store\n // keeps the option's id; the person types its label. Matching the two is\n // the whole job, and it is case-insensitive because \"COMPLETED\" and\n // \"Completed\" are one option.\n if (!opts.options) {\n return {\n refusal: `${label} is a list and its options have not been read yet, so nothing can be matched to “${raw}”. Try again once the column's choices have loaded.`,\n };\n }\n const wanted = kind === \"multi_select\"\n ? text.split(/[,;]/).map((w) => w.trim()).filter((w) => w.length > 0)\n : [text];\n if (wanted.length === 0) return { value: kind === \"multi_select\" ? [] : null };\n const matched: string[] = [];\n const unmatched: string[] = [];\n for (const word of wanted) {\n const hit = opts.options.byWord.get(word.toLowerCase());\n if (hit === undefined) unmatched.push(word);\n else matched.push(hit);\n }\n if (unmatched.length > 0) {\n const offered = opts.options.labels.length > 0\n ? opts.options.labels.join(\", \")\n : \"it has none yet\";\n return {\n refusal:\n `${label} does not have ${unmatched.map((w) => `“${w}”`).join(\" or \")} among its options. ` +\n `It offers: ${offered}.`,\n unmatched,\n };\n }\n return { value: kind === \"multi_select\" ? matched : matched[0] };\n }\n // AN IDENTITY IS NOT A WORD. Writing the word would put a string where an\n // id belongs, and every filter, colour and rollup built on that column\n // would stop agreeing with it. So it is refused and the person is told\n // which control does hold it.\n case \"member\":\n return {\n refusal: `${label} names a person in this organization, so it is chosen rather than typed. Open it and pick them.`,\n };\n case \"attachment\":\n return {\n refusal: `${label} holds a file, which cannot arrive as typed-in text. Open it and attach the file.`,\n };\n case \"relation\":\n return {\n refusal: `${label} points at another record, so it is chosen rather than typed. Open it and pick the record.`,\n };\n case \"formula\":\n case \"lookup\":\n case \"rollup\":\n return {\n refusal: `${label} is worked out by the system, so nothing can be written into it.`,\n };\n default:\n // text, long_text, email, phone, url — the string IS the value, and the\n // format Rules on it are the store's to judge.\n return { value: raw };\n }\n}\n\n/** What a whole set of typed-in answers became. */\nexport interface CoercedAnswers {\n /** Ready to send to the store. Only the keys that coerced cleanly. */\n values: Record<string, unknown>;\n /** Field key → the sentence saying why that answer was not written. */\n refusals: Record<string, string>;\n /** The field keys the caller sent that this table has no Field for. */\n unknownKeys: string[];\n}\n\n/**\n * Every typed-in answer on one screen, coerced together — the shape the two\n * public doors and the import wizard actually need.\n *\n * Keys the table has no Field for are reported rather than dropped: the store\n * refuses an unknown key by name and a caller that quietly deleted it would\n * hide a real mismatch between a page and its table.\n */\nexport function coerceTypedAnswers(\n fields: readonly CoercibleField[],\n answers: Readonly<Record<string, unknown>>,\n opts: {\n kernel?: KernelTargets | undefined;\n /** Choices per Field key, for the list columns. */\n options?: ReadonlyMap<string, ChoiceOptions> | undefined;\n /** Field key → the words that screen printed above the box. */\n labels?: Readonly<Record<string, string>> | undefined;\n } = {},\n): CoercedAnswers {\n const byKey = new Map(fields.map((f) => [f.key, f]));\n const values: Record<string, unknown> = {};\n const refusals: Record<string, string> = {};\n const unknownKeys: string[] = [];\n\n for (const [key, given] of Object.entries(answers)) {\n const field = byKey.get(key);\n if (!field) {\n unknownKeys.push(key);\n // Passed through untouched: it is the STORE's job to say it does not\n // know this key, in its own words, naming it.\n values[key] = given;\n continue;\n }\n // ALREADY THE RIGHT SHAPE IS LEFT ALONE. A screen with real editors hands\n // over a number, a boolean or an array already; only a STRING needs this.\n if (typeof given !== \"string\") {\n values[key] = given;\n continue;\n }\n const opt: CoerceOptions = {};\n const choices = opts.options?.get(key);\n if (choices) opt.options = choices;\n if (opts.kernel) opt.kernel = opts.kernel;\n const label = opts.labels?.[key];\n if (label) opt.label = label;\n\n const answered = coerceTypedAnswer(field, given, opt);\n if (\"refusal\" in answered) refusals[key] = answered.refusal;\n else values[key] = answered.value;\n }\n\n return { values, refusals, unknownKeys };\n}\n","// src/pipeline.ts — @ai-matrx/records · PRODUCTS row 7\n//\n// A PIPELINE IS NOT A NEW KIND OF THING, and this module adds none. A pipeline is a\n// Choice Field that a Table names as its STAGE field, plus transition Rules of the ONE\n// Rule object (REC-15) about that Table. A move is an ORDINARY record write: the validate\n// use judges it, History records it because it is a write, and the entry effects are the\n// applicability use's own declared consequence.\n//\n// SO THIS PACKAGE ENFORCES NOTHING. Every type below is the shape of a door's answer, and\n// every judgement comes from the store. A board that decided in the browser which column a\n// card may enter would be a second opinion with nothing keeping it equal to the first —\n// and it would be the comfortable one, because it is the one nobody can be refused by.\n\nimport type { Uuid } from \"./record\";\n\n/** One stage of a board: the KEY the store keeps, and the LABEL a person reads. */\nexport interface PipelineStage {\n /** The option's stable key — what a cell holds, and what a move is written with. */\n key: string;\n /** What the column heading says. Renaming a stage rewrites no record. */\n label: string;\n /** A retired choice can still be READ on a record that holds it; it cannot be picked anew. */\n retired: boolean;\n}\n\n/** What each Rule of a pipeline is about. Closed, and the store is the authority. */\nexport const PIPELINE_RULE_KINDS = [\"moves\", \"requires\", \"who\", \"limit\", \"entry\"] as const;\n/**\n * A GATE is the general form under `requires`, `who` and `limit`, and the store spells it\n * `gate:1`, `gate:2` … so several gates can sit on one stage without one overwriting the\n * next. It is matched as a prefix rather than listed, because the number is open.\n */\nexport type PipelineRuleKind = (typeof PIPELINE_RULE_KINDS)[number] | `gate:${number}`;\n\n/**\n * WHAT A GATE DOES WHEN IT SAYS NO. The closed list `custom.stage_rule_on_fail_kinds()`\n * answers — a screen offering a third answer would be offering something no Rule can carry.\n */\nexport const STAGE_RULE_ON_FAIL = [\"refuse\", \"require_approval\"] as const;\nexport type StageRuleOnFail = (typeof STAGE_RULE_ON_FAIL)[number];\n\n/**\n * THE ORGANIZATION'S ONE KNOB (`custom/stage_rule_enforcement`). `refuse` is the default and\n * what a gate is for; `warn` lets the move through and hands the same sentence back. It never\n * softens `require_approval` — \"ask somebody\" and \"carry on with a note\" are different answers.\n */\nexport const STAGE_RULE_ENFORCEMENT = [\"refuse\", \"warn\"] as const;\nexport type StageRuleEnforcement = (typeof STAGE_RULE_ENFORCEMENT)[number];\n\n/**\n * One transition Rule, as `custom.pipeline_read` hands it back — WITH the sentence it says\n * when it refuses, because a screen that knows a rule exists but not what it refuses in\n * cannot warn anybody before they drag.\n */\nexport interface PipelineRule {\n id: Uuid;\n name: string;\n /** The exact words a person is shown when this Rule stops a move. */\n message: string;\n kind: PipelineRuleKind | null;\n /** The stage this Rule is about; `null` on the one Rule about the moves themselves. */\n stage: string | null;\n uses: string[];\n /** What happens when a card ARRIVES in this stage — assign, notify, start a checklist. */\n on_entry: Record<string, unknown> | null;\n /**\n * What this Rule does when it STOPS a move. `refuse` is the default and what every\n * pipeline Rule did before gates existed; `require_approval` files the change in the\n * approvals queue with this Rule's sentence as the reason and leaves the record alone.\n */\n on_fail?: StageRuleOnFail;\n /**\n * THE GATE AS IT WAS WRITTEN, which is the only thing that makes it EDITABLE.\n *\n * A gate is saved as one Rule whose expression is an `or` of four arms — not this\n * stage, OR not a move, OR the gate is not about this card, OR the demand holds. That\n * compiled form used to be the only copy, so a settings screen could read a gate's name\n * and its sentence and nothing else: it would open every existing rule with a blank\n * condition and overwrite it the first time somebody pressed Save.\n *\n * Absent on the four sugar rules (`moves`, `requires`, `who`, `limit`), which nobody\n * writes in a condition builder, and on any gate declared before the store started\n * keeping them. Absent means \"this one was not written here\" — never \"it has no\n * condition\", which is a different and dangerous thing to draw.\n */\n when?: Record<string, unknown> | null;\n /** @see {@link PipelineRule.when} — the condition that has to hold, as it was written. */\n demands?: Record<string, unknown> | null;\n version: number;\n}\n\n/**\n * WHAT A GATE WOULD DO TO THIS BOARD TODAY, from `custom.pipeline_gate_preview`.\n *\n * The one question somebody writing a rule that will refuse their colleagues' work\n * actually has, answered while they are still typing it — the gate is judged as an\n * argument, nothing is saved, and nothing is written. The store compiles it with the\n * SAME compiler `pipeline_declare` uses, so this count and the refusal at the door are\n * the same rule.\n */\nexport interface PipelineGatePreview {\n is_pipeline: boolean;\n /** Present, and it says what would make a board exist, when `is_pipeline` is false. */\n why?: string;\n /** The stage key the gate was tried against. */\n stage?: string;\n /** Live cards of this board this person may see that are not already in that stage. */\n considered: number;\n /** How many of them this gate would turn away. */\n refused: number;\n /**\n * Up to three of them, BY NAME. A count with no names is a number nobody can check, and\n * checking it is the whole reason to show it before saving.\n */\n examples: { record_id: Uuid; title: string }[];\n /** True when the board is larger than the preview will walk, so the count is a floor. */\n truncated?: boolean;\n on_fail?: StageRuleOnFail;\n /** The word this board uses for one of its cards — \"quote\", \"deal\" — for the sentence. */\n noun?: string;\n}\n\n/** The whole board's definition, from `custom.pipeline_read`. */\nexport interface Pipeline {\n is_pipeline: boolean;\n /** Present, and it says what would make a board exist, when `is_pipeline` is false. */\n why?: string;\n table_id?: Uuid;\n /** The Field KEY that holds the stage — the twin of a Table's `type_field`. */\n stage_field?: string;\n field_id?: Uuid;\n /** What that column is called, e.g. \"Stage\". */\n stage_label?: string;\n /** In the order they were declared, which is the order the board draws them. */\n stages?: PipelineStage[];\n rules?: PipelineRule[];\n}\n\n/** One column of the board, with the store's own numbers over what this person may see. */\nexport interface PipelineColumn {\n stage_key: string;\n stage_label: string;\n /** 1-based, the declared order. */\n stage_position: number;\n cards: number;\n /** The total of the chosen measure, or null when no measure was asked for. */\n total: number | null;\n /** How many cards this column takes at once, or null when it takes any number. */\n wip_limit: number | null;\n /** True when the column already holds MORE than its limit — a state a board must show. */\n over_limit: boolean;\n}\n\n/** One column this stage demands before a card may land in it. */\nexport interface PipelineMissingField {\n field_id: Uuid;\n key: string;\n /** What the column is called, so a screen can ASK for it rather than only refuse. */\n label: string;\n}\n\n/**\n * Whether a card may go to a column, answered BEFORE the finger lets go — by the same\n * Rules, through the same evaluator, on the document the move WOULD produce.\n *\n * A board greys a column, and snaps a card back, from this. It never decides for itself.\n */\nexport interface PipelineVerdict {\n allowed: boolean;\n is_pipeline: boolean;\n /**\n * The THREE answers a board has to draw differently, and the reason `allowed` alone is\n * not enough: a card that is going for approval has not been refused, and a card that\n * moved under `warn` has not been waved through silently.\n */\n outcome?: \"allowed\" | \"refused\" | \"needs_approval\" | \"warned\";\n /** What this organization's one knob says right now. */\n enforcement?: StageRuleEnforcement;\n /** Set on `needs_approval`: what pressing on will actually do, in plain words. */\n what_happens?: string;\n /** Set on `warned`: the gates this organization asked to be told about, not stopped by. */\n warnings?: StageRuleWarning[];\n /** Approvals already filed against this card's own stage column that nobody has decided. */\n pending?: StagePending[];\n /** The stage key the move was asked about. */\n to?: string;\n /** The store's own sentence — shown verbatim, never paraphrased by a screen. */\n why: string;\n rule?: string;\n rule_id?: Uuid;\n rule_version?: number;\n kind?: PipelineRuleKind;\n /** What this Rule does when it stops a move. */\n on_fail?: StageRuleOnFail;\n /**\n * When a stage demands columns that are empty, exactly which ones — so the screen can\n * prompt for them on entry instead of sending the person away to find them.\n */\n missing?: PipelineMissingField[];\n}\n\n/** What `custom.pipeline_declare` says it made or changed. */\nexport interface PipelineDeclared {\n table_id: Uuid;\n stage_field: string;\n field_id: Uuid;\n stages: string[];\n rules: Record<string, Uuid>;\n /** Plain sentences naming each thing this declaration wrote. */\n said: string[];\n}\n\n/** The declaration a person (or an agent) writes. Everything is optional but the stages. */\nexport interface PipelineSpec {\n stage_field: { key: string; label?: string; options?: string[]; sort?: number };\n transitions?: { from: string; to: string }[];\n /** Stage name → the column keys that must be filled in to land there. */\n requires?: Record<string, string[]>;\n /** Stage name → the rung somebody needs on the record to move a card INTO it. */\n who?: Record<string, \"viewer\" | \"commenter\" | \"editor\" | \"admin\">;\n /** Stage name → how many cards may sit there at once. The mover is not counted. */\n limits?: Record<string, number>;\n /** Stage name → what happens when a card arrives: assign, notify, start a checklist. */\n on_entry?: Record<string, Record<string, unknown>>;\n /**\n * Stage name → the gates a card has to get past to land there. The general form under\n * `requires`, `who` and `limits`, and the only one that can say `require_approval`.\n */\n gates?: Record<string, PipelineGate[]>;\n moves_message?: string;\n requires_messages?: Record<string, string>;\n}\n\n/**\n * A gate the organization's own knob overruled. NOTHING FAILS SILENTLY: the move happened\n * and the sentence comes back WITH it, together with what to do about it.\n */\nexport interface StageRuleWarning {\n rule_id: Uuid;\n rule: string;\n /** The gate's own sentence, shown verbatim. */\n why: string;\n what_to_do: string;\n}\n\n/** An approval filed against this card's stage column that nobody has decided yet. */\nexport interface StagePending {\n approval_id: Uuid;\n /** The stage key the card is waiting to go to. */\n to: string;\n why: string | null;\n requested_at: string;\n state: string;\n}\n\n/**\n * The same wait, asked for a WHOLE BOARD in one question (`custom.pipeline_pending`), so a\n * board can badge every card that is waiting without a round trip per card — and therefore\n * actually does it, instead of drawing a filed card as if nobody had ever dragged it.\n */\nexport interface StagePendingOnBoard extends StagePending {\n record_id: Uuid;\n}\n\n/** What `custom.pipeline_move` answers — an OBJECT on every path, never a bare number. */\nexport interface PipelineMoveResult {\n applied: boolean;\n moved: boolean;\n outcome: \"moved\" | \"moved_with_warnings\" | \"needs_approval\";\n to: string;\n version: number;\n /** Set on `moved_with_warnings`. */\n warnings?: StageRuleWarning[];\n /** Set on `needs_approval`: the gate's sentence, the wait that was filed, and who has it. */\n why?: string;\n rule?: string;\n rule_id?: Uuid;\n approval_id?: Uuid;\n approvers?: { user_id: Uuid; name: string | null; why: string }[];\n what_happens?: string;\n}\n\n/**\n * ONE GATE ON A STAGE, as the condition builder on the stage settings screen writes it.\n * `requires`, `who` and `limits` are sugar over this shape; this is the general form, and\n * it speaks the SAME condition language as filters and formulas — never a second one.\n */\nexport interface PipelineGate {\n /** What the gate is called in the settings list. */\n name?: string;\n /** The sentence a person reads when it stops them. Required: a refusal with no words is a dead end. */\n message: string;\n /** WHEN this gate is about this record at all. Absent means always. */\n when?: Record<string, unknown>;\n /** What has to hold. One condition node of the one Rule language. */\n demands: Record<string, unknown>;\n /** Default `refuse`. */\n on_fail?: StageRuleOnFail;\n}\n\n/**\n * THE ONE PLACE A SCREEN DECIDES WHETHER A CARD LOOKS DRAGGABLE — and it decides on the\n * PERSON, not on the rules. Whether a particular move is allowed is\n * `pipelineTransitionRefusal`, which is the store's answer; whether this person may move\n * anything at all is their level on the record, which the read door already told us.\n *\n * Absent rather than dead: a viewer's card carries no drag handle at all, instead of one\n * that looks live and snaps back every time.\n */\nexport function mayDrag(level: string | null | undefined): boolean {\n return level === \"editor\" || level === \"admin\" || level === \"owner\";\n}\n","// src/rule.ts — @ai-matrx/records\n//\n// THE RULE. REC-15 … REC-19. ONE object with FOUR uses — validate, compute,\n// define membership, decide applicability — and no fifth. A Rule references\n// Fields BY ID, never by name (REC-17), and it has versions, so History knows\n// which version produced a Value (REC-19).\n\nimport type { Timestamp, Uuid } from \"./record\";\nimport type { RuleNodeKind, RuleUse } from \"./vocabulary\";\n\n/**\n * A rule expression as `custom.rule_eval` ACTUALLY evaluates it — read off the\n * door's own body, not invented here. A leaf is the node's name carrying its\n * payload (`{\"const\": 3}`, `{\"field\": \"<uuid>\"}`); an operator is\n * `{\"op\": \"eq\", \"args\": [...]}`.\n *\n * `field` / `parent_field` name a Field BY ID (REC-17 — the door refuses\n * `field_name`, `field_key` and `field_label` by name), and `merge_field` is\n * the resolver's seam, storable today and refused `0A000` until W5-MERGE-B.\n *\n * `p_values` is keyed by the Field's KEY: the door resolves the id to a key\n * (`custom.rule_field_key`) and then reads `p_values -> key`.\n */\nexport type RuleExpression =\n | { const: unknown }\n | { field: Uuid }\n | { parent_field: Uuid }\n | { merge_field: string }\n | { op: RuleNodeKind; args: RuleExpression[] };\n\n/** REC-15. One Rule, four uses; a Rule may serve more than one. */\nexport interface Rule {\n id: Uuid;\n organization_id: Uuid;\n name: string;\n kind: string | null;\n /** The Table this Rule is scoped to. */\n scope_table_id: Uuid | null;\n uses: RuleUse[];\n validates: boolean;\n computes: boolean;\n defines_membership: boolean;\n /**\n * REC-16. An applicability Rule reads the record's own Values and its\n * parent's, ONE level up, and no further.\n */\n decides_applicability: boolean;\n applies_to_types: string[];\n use_types: string[];\n expr: RuleExpression;\n /** Which Field this Rule's answer is about (REC-17: by id). */\n target_field_id: Uuid | null;\n /** What a person reads when this Rule refuses. */\n message: string | null;\n sort: number | null;\n created_by: Uuid | null;\n updated_by: Uuid | null;\n created_at: Timestamp;\n updated_at: Timestamp;\n /** REC-19. Rules have versions, and History knows which one produced a Value. */\n version: number;\n metadata: Record<string, unknown>;\n visibility: string;\n}\n\n/** What the store answers when a Rule is run: the answer and the version that gave it. */\nexport interface RuleAnswer {\n rule_id: Uuid;\n rule_name: string;\n rule_version: number;\n applies: boolean;\n answer: unknown;\n}\n\n// ── PRODUCTS row 1: a form is a VIEW ON A REAL TABLE ─────────────────────────\n//\n// A form lives beside the Rules because that is what it is MADE of: an accept\n// Rule decides what counts as a complete answer, and a subscription Rule (DOOR-18)\n// decides who hears about one. The questions are Fields of the subject Table and\n// the answers are ordinary records in it — there is no form silo anywhere.\n\n/** One form as `custom.forms` reports it to its owner. */\nexport interface FormSummary {\n form_id: string;\n table_id: string;\n title: string | null;\n slug: string;\n published_at: string | null;\n closed_at: string | null;\n submission_cap: number | null;\n /** Every answer that arrived, rejected ones excluded from `in_table` and `held`. */\n responses: number;\n /** Answers that became records — the only number that means \"it is in the table\". */\n in_table: number;\n /** Answers waiting for a person, because the form's accept Rule did not clear them. */\n held: number;\n /** Answers the accept Rule or the decoy turned away. */\n rejected: number;\n /** draft · open · closed · full — the store's own word, never derived on a screen. */\n state: \"draft\" | \"open\" | \"closed\" | \"full\";\n quarantine_rule_id: string | null;\n notify_rule_id: string | null;\n presentation: Record<string, unknown>;\n}\n\n/**\n * ONE BOOKING PAGE, AS ITS OWNER SEES IT — `custom.bookings` (PRODUCTS row 14).\n *\n * A booking page is an `anon_form` whose `presentation -> 'booking'` carries the\n * availability and the id of a slots Table, so it is the SAME object a form is and\n * this is the same list `forms()` is, asked for the booking half. The numbers are\n * the store's own: a screen that counted appointments in the browser would drift\n * from the index that actually protects a slot.\n */\nexport interface BookingSummary {\n form_id: string;\n /** The Table the appointments land in — a booking is an ordinary record in it. */\n table_id: string;\n title: string | null;\n slug: string;\n published_at: string | null;\n closed_at: string | null;\n /** How long one appointment is. The offer is the store's, never the browser's. */\n slot_minutes: number;\n /** The organization's own zone, which is what the visitor's times are drawn in. */\n timezone: string;\n /** The ONE slots Table `custom.booking_declare` finds-or-makes for this page. */\n slot_table_id: string;\n booked: number;\n cancelled: number;\n /** Booked and still ahead of now — the number that answers \"what is coming\". */\n upcoming: number;\n /** Slots a visitor is holding right now, before they have given their details. */\n held: number;\n /** The next appointment, or null when there is none. */\n next_at: string | null;\n /** draft · open · closed — the store's own word, never derived on a screen. */\n state: string;\n}\n\n/**\n * ONE WINDOW OF AN ORGANIZATION'S WEEK, in the shape `custom._booking_availability`\n * normalises to and `custom._booking_slots` generates from. `weekday` is 0 for Sunday\n * and 6 for Saturday — the database's own numbering, so a picker and the store cannot\n * disagree about which day Monday is. A window may name ONE member, which is the \"with\n * whom\" of an appointment; naming somebody who is not a member is refused BY NAME.\n */\nexport interface BookingWindow {\n weekday: number;\n /** \"09:00\" */\n from: string;\n /** \"17:00\" — later in the day than `from`, or the store refuses it by name. */\n to: string;\n member_user_id?: string | null;\n}\n\n/**\n * WHAT IS ON OFFER. Every field is the store's to default: a page declared with an\n * empty availability comes back with the organization's timezone, a 30-minute slot and\n * Monday-to-Friday nine-to-five, because a booking page that offered nothing would look\n * broken rather than unconfigured. A screen shows what came BACK, never what it sent.\n */\nexport interface BookingAvailability {\n timezone: string;\n slot_minutes: number;\n /** Dead time kept after each appointment, so two never touch. */\n buffer_minutes: number;\n /** How far ahead of now the earliest bookable slot is. */\n lead_minutes: number;\n /** Most appointments in one day, across every window. */\n max_per_day: number;\n /** How many days ahead the page offers. */\n days: number;\n windows: BookingWindow[];\n}\n\n/**\n * WHAT `custom.booking_declare` ANSWERS. `availability` is the NORMALISED offer —\n * show that, not the draft — and `questions_filled_in` is how many questions the store\n * took over (`slot`, `status`, `booked_with`), which a visitor is never asked.\n *\n * It does NOT publish. `anonPublish` is still the one act that opens the link, exactly\n * as it is for a form, so there is one act and one word for opening a public surface.\n */\nexport interface BookingDeclared {\n form_id: string;\n slot_table_id: string;\n availability: BookingAvailability;\n questions_asked: number;\n questions_filled_in: number;\n ms: number;\n}\n\n/**\n * THE VISITOR'S OWN LINK to a booking page. The page id IS the capability, exactly\n * as it is for a form; `custom.anon_submission.booking_ref` is the separate secret\n * that lets ONE visitor manage the appointment they made.\n */\nexport function bookingPath(formId: string): string {\n return `/b/${formId}`;\n}\n\n/**\n * THE PUBLIC LINK, and the one place its shape is written down.\n *\n * The form's own id IS the capability — 122 bits of UUIDv4, exactly as\n * Typeform's form id in `/to/<id>` is and as an unguessable meeting slug is\n * here. There is no second secret to keep, and revoking it is closing the form.\n */\nexport function publicFormPath(formId: string): string {\n return `/f/${formId}`;\n}\n","// src/portal.ts — @ai-matrx/records\n//\n// THE CLIENT PORTAL, FROM THE OWNER'S SIDE.\n//\n// A portal is the one way somebody with no membership of an organization is\n// let in to see the records that name them — their jobs, their invoices —\n// and nothing else. The store holds it in three tables (`custom.portal`,\n// `custom.portal_table`, `custom.portal_principal`) and answers about it\n// through six doors. These are the shapes those doors answer with, written\n// from the doors' own bodies and never from a screen's convenience.\n//\n// TWO FACTS THIS FILE EXISTS TO KEEP STRAIGHT, because a screen that gets\n// either of them wrong tells somebody a comforting lie:\n//\n// · AN INVITATION CONFERS NOTHING. `custom.portal_invite` writes a row and\n// says so in its own `say` sentence: the person gets access the moment\n// they follow the sign-in link and the platform gives them an identity,\n// and until then the row holds nothing at all. That is why\n// `PortalPrincipal` carries `signed_in` separately from `is_active` —\n// \"invited\" and \"can see their records\" are two different states and one\n// number for both is how an owner comes to believe a client is looking at\n// something they cannot reach.\n//\n// · \"VIEW AS THIS CLIENT\" IS NOT A PORTAL-SHAPED QUERY.\n// `custom.portal_preview` asks `custom.visible_set` for HER user id — the\n// exact call `custom.read_records` makes when she opens the page — so the\n// preview cannot disagree with what she sees. When she has not signed in\n// yet it REFUSES with `02000` and a sentence, rather than answering an\n// empty list that would read as \"she sees nothing\".\n\nimport type { Timestamp, Uuid } from \"./record\";\n\n/** One portal as `custom.portals` reports it to its organization. */\nexport interface PortalSummary {\n portal_id: Uuid;\n title: string;\n slug: string;\n /** The Table whose records ARE the clients. A principal is one of its rows. */\n client_table_id: Uuid;\n /** That Table's name, so a list never has to read a second door to draw a row. */\n client_table: string;\n is_active: boolean;\n /** How many Tables this portal exposes. */\n tables: number;\n /** Everybody invited and not revoked — NOT everybody who can see anything. */\n invited: number;\n /** Of those, how many have followed the link and hold an identity. */\n signed_in: number;\n /** `magic_link` today, and the door refuses every other word by name. */\n sign_in_method: string;\n opened_at: Timestamp | null;\n}\n\n/**\n * ONE (portal, Table) PAIR, as `custom.portal_tables` reports it.\n *\n * 🚨 WHY THIS EXISTS (TAILS-3, 2026-09-21). The Portals rail sits on a Table's\n * page beside Forms, Bookings and Dashboards — all table-scoped — while\n * `custom.portals` takes no table at all. On Rincon Plumbing Co's **Parts**\n * table the rail read \"Portals 10\" and listed ten cards titled \"Your jobs and\n * invoices\", which belong to **Jobs**; the empty state never rendered, so the\n * \"Build it / Ask an agent\" offer was unreachable on EVERY table of any\n * organization that already had one portal.\n *\n * This is the whole of what a table-scoped rail needs: is the table I am\n * standing on in any portal, and if not, which portals could take it.\n */\nexport interface PortalTableRef {\n portal_id: Uuid;\n table_id: Uuid;\n /** That Table's name, so a rail never reads a second door to draw a row. */\n name: string;\n}\n\n/** One Table a portal exposes, as `custom.portal_card` reports it. */\nexport interface PortalTableExposure {\n table_id: Uuid;\n /** The Table's own name. */\n name: string;\n /**\n * The key of the relation Field that says WHOSE a record is. This is the\n * whole of \"only theirs\": the association that Field writes is what carries\n * the record to the client, so a portal cannot exist without one.\n */\n names_via: string;\n /** The field keys a client sees. Empty is impossible — the door fills it. */\n visible_fields: string[];\n /** The subset a client may change. Always a subset of `visible_fields`. */\n editable_fields: string[];\n comments: boolean;\n /**\n * The most a client is ever conveyed on this Table — `viewer`, `commenter`\n * or `editor` — worked out by the door from the two lists above, never by a\n * screen.\n */\n conveys: string;\n}\n\n/** One person a portal was opened to, as `custom.portal_card` reports them. */\nexport interface PortalPrincipal {\n principal_id: Uuid;\n email: string;\n /** The record of the client Table this person IS, for the portal's purposes. */\n client_record_id: Uuid;\n /** That record's title — what an owner calls this client. */\n client: string;\n /** They followed the link and hold an identity. Until then this is false. */\n signed_in: boolean;\n /** Not revoked. An invitation that was never followed is still active. */\n is_active: boolean;\n invited_at: Timestamp;\n revoked_at: Timestamp | null;\n}\n\n/** Everything about ONE portal: what it shows, and who it was opened to. */\nexport interface PortalCard {\n portal_id: Uuid;\n title: string;\n slug: string;\n is_active: boolean;\n sign_in_method: string;\n client_table_id: Uuid;\n tables: PortalTableExposure[];\n principals: PortalPrincipal[];\n /**\n * Whether this organization's outside lane is open\n * (`custom/external_principal_enabled`). Declaring a portal opens it; while\n * it is false every door refuses an outsider BY NAME, and a screen that drew\n * the people as reachable anyway would be lying about the one thing that\n * decides whether they can sign in at all.\n */\n external_lane_open: boolean;\n}\n\n/** What `custom.portal_invite` answers. `say` is the door's own sentence. */\nexport interface PortalInvitation {\n invited: boolean;\n principal_id: Uuid;\n portal_id: Uuid;\n slug: string;\n email: string;\n client_record_id: Uuid;\n client: string;\n /** They already hold an identity. From a screen this is false: the door is passed no user. */\n bound: boolean;\n /**\n * The door's own words, and the ONLY correct summary of what just happened —\n * it says outright that an invitation confers nothing until the link is\n * followed. Show it; never paraphrase it.\n */\n say: string;\n}\n\n/** What `custom.portal_revoke` answers. `say` names the consequence, past tense. */\nexport interface PortalRevocation {\n revoked: boolean;\n principal_id: Uuid;\n email: string;\n /** The door's own sentence: they can no longer sign in, and their records stop reaching them. */\n say: string;\n}\n\n/** One row of \"what this client sees\", from `custom.portal_preview`. */\nexport interface PortalPreviewRow {\n record_id: Uuid;\n title: string;\n}\n\n/**\n * THE PUBLIC ADDRESS OF A PORTAL, and the one place its shape is written down.\n *\n * Unlike a form's link, a portal's slug is NOT the capability: the page it\n * serves asks who you are and emails a one-time link, so the slug is a name and\n * nothing more. That is why it is readable and why copying it is safe.\n */\nexport function portalPath(slug: string): string {\n return `/portal/c/${slug}`;\n}\n","// src/aggregate.ts — @ai-matrx/records\n//\n// THE EIGHTH VERB (AGT-N-8). `custom.record_aggregate` groups, buckets, filters\n// and measures INSIDE the read door's own query: the aggregate node sits above\n// the join to `custom.query_visible_ids`, so a chart is computed over the rows\n// this principal may see and the rest are never fetched at all.\n//\n// That is why a chart in this platform is not \"read everything, then sum in the\n// browser\". Summing in the browser would either read rows a person may not see\n// or quietly under-count them, and both of those are a screen telling a lie.\n\n/** The measures the store offers. Asked of `custom.agg_operations()` at run time too. */\nexport type AggregateOperation = \"count\" | \"sum\" | \"avg\" | \"min\" | \"max\";\n\n/** The periods a date Field can be bucketed into (`custom.agg_buckets()`). */\nexport type AggregateBucket = \"day\" | \"week\" | \"month\" | \"quarter\" | \"year\";\n\n/**\n * A HALF-OPEN MOMENT WINDOW: `from` is inclusive, `to` is exclusive. Half-open\n * is the only shape that makes \"September\" and \"October\" meet exactly once —\n * an inclusive `to` either double-counts the boundary moment or drops it,\n * depending on the reader, and both of those are a chart telling a lie.\n */\nexport interface AggregateWindow {\n from?: string | null;\n to?: string | null;\n}\n\n/**\n * ONE FILTER VALUE, as `custom.record_aggregate` and `custom.dashboard_run`\n * both read it: a SCALAR is an equality, and an OBJECT is a window. It is not\n * `unknown` on purpose — a filter value the store cannot read is a refusal a\n * caller should get from the compiler, not from the database.\n */\nexport type AggregateFilter = string | number | boolean | null | AggregateWindow;\n\n/** One measure. `count` counts rows and needs no Field; the rest read one. */\nexport interface AggregateMeasure {\n op: AggregateOperation;\n /** The Field's key. Required for every operation except `count`. */\n key?: string;\n}\n\n/**\n * One row of an aggregate: which group it is, what each measure came to, and\n * how many records it was worked out from. The measure keys are the store's\n * own (`count`, `sum_amount`, `avg_amount`, …), never renamed on the way out.\n */\nexport interface AggregateRow {\n groups: Record<string, string | null>;\n measures: Record<string, number | null>;\n row_count: number;\n}\n\n/** The measure key the store answers with, so a chart can find its own series. */\nexport function measureKey(measure: AggregateMeasure): string {\n return measure.op === \"count\" ? \"count\" : `${measure.op}_${measure.key ?? \"\"}`;\n}\n","// src/capture-queue.ts — @ai-matrx/records · PRODUCTS row 15, primitive P13\n//\n// THE QUEUE THAT MAKES A PHONE WITH NO BARS AS GOOD AS A PHONE WITH FIVE.\n//\n// Fulcrum's field client is the bar: a crew captures all day in a yard with no signal and\n// nothing is lost, nothing is doubled, and nobody has to think about it. Four decisions\n// carry that, and each one is a thing this file refuses to do rather than a feature:\n//\n// 1. THE CAPTURE IS WRITTEN TO DISK BEFORE THE NETWORK IS EVEN ASKED. `enqueue` returns\n// after IndexedDB has the answers AND the photograph's bytes. A queue that holds\n// captures in memory until it can send them loses the day when the screen locks.\n//\n// 2. THE IDEMPOTENCY KEY IS MINTED WHEN THE CAPTURE IS TAKEN, NOT WHEN IT IS SENT. It is\n// the row's own primary key here and `p_client_key` at the door. A lost acknowledgement\n// — the commonest failure on a bad signal, because the write SUCCEEDED and the answer\n// never came back — is then a replay that returns the first record's id, not a second\n// bin.\n//\n// 3. THEY GO UP IN THE ORDER THEY HAPPENED, ONE AT A TIME. A crew's day is a sequence and\n// a foreman reads it as one. Parallel uploads would also mean six photographs sharing\n// one thin signal and all six timing out.\n//\n// 4. A REFUSAL IS NOT A RETRY. A required answer missing, a field the sheet does not ask\n// for, a level the person does not hold — the door has decided, and sending it again\n// every thirty seconds forever is how a queue becomes a silent hole. The item stays,\n// marked `refused`, carrying the door's own sentence for the screen to show. The person\n// fixes it or throws it away; nothing decides that for them.\n//\n// The bytes never go through this file twice: `uploadFile` is called once per file and its\n// reference is written back into the queued row, so a retry after a failed SUBMIT re-sends\n// the reference rather than the photograph.\n\nimport type { CaptureFileRef, CaptureOutcome } from \"./capture\";\n\n/** One file waiting to go up, with its bytes until they have. */\nexport interface QueuedCaptureFile {\n field: string;\n name: string;\n mime_type: string;\n size_bytes: number;\n duration_ms?: number | null | undefined;\n /** The bytes. Dropped once `uploaded` is set, so the queue does not hold them twice. */\n blob?: Blob | null | undefined;\n /** Set once the platform's byte store has them. */\n uploaded?: { file_id?: string | null | undefined; url?: string | null | undefined } | null | undefined;\n}\n\n/** `waiting` → `sending` → `landed`, or `refused` when the door has decided. */\nexport type QueuedCaptureState = \"waiting\" | \"sending\" | \"landed\" | \"refused\";\n\nexport interface QueuedCapture {\n /** Minted on the phone when the capture was taken. The row's key AND the door's. */\n client_key: string;\n organization_id: string;\n sheet_id: string;\n sheet_title?: string | undefined;\n answers: Record<string, unknown>;\n files: QueuedCaptureFile[];\n device: string | null;\n /** The moment the PHONE took it — never the moment the signal came back. */\n captured_at: string;\n location: Record<string, unknown> | null;\n state: QueuedCaptureState;\n attempts: number;\n /** The door's own words, or the network's. Always something a person can act on. */\n last_error: string | null;\n record_id: string | null;\n replayed: boolean;\n queued_at: string;\n landed_at: string | null;\n}\n\nexport interface CaptureQueueCounts {\n waiting: number;\n sending: number;\n refused: number;\n landed: number;\n}\n\n/** What one pass of `sync` did, item by item. Never a single boolean. */\nexport interface CaptureSyncReport {\n attempted: number;\n landed: number;\n replayed: number;\n refused: number;\n deferred: number;\n outcomes: Array<{\n client_key: string;\n state: QueuedCaptureState;\n record_id: string | null;\n replay: boolean;\n says: string | null;\n }>;\n /** Set when the pass stopped early because the network went away again. */\n stopped_because?: string;\n}\n\n/** The two calls the queue makes on the outside world. Injected, so this file is headless. */\nexport interface CaptureQueuePorts {\n /** Put the bytes in the platform's ONE byte store and answer with the reference. */\n uploadFile(\n file: QueuedCaptureFile,\n item: QueuedCapture,\n ): Promise<{ file_id?: string | null; url?: string | null }>;\n /** `client.captureSubmit`. */\n submit(args: {\n sheet_id: string;\n client_key: string;\n answers: Record<string, unknown>;\n files: CaptureFileRef[];\n device?: string | null;\n captured_at?: string | null;\n location?: Record<string, unknown> | null;\n }): Promise<{ ok: boolean; data?: CaptureOutcome | null; error?: { message?: string; code?: string } | null }>;\n}\n\n/** The smallest store the queue needs. IndexedDB in a browser, a Map in a test. */\nexport interface CaptureQueueStore {\n all(): Promise<QueuedCapture[]>;\n put(item: QueuedCapture): Promise<void>;\n remove(clientKey: string): Promise<void>;\n meta(key: string): Promise<string | null>;\n setMeta(key: string, value: string): Promise<void>;\n}\n\nconst DB_NAME = \"matrx-capture\";\nconst DB_VERSION = 1;\nconst ITEMS = \"captures\";\nconst META = \"meta\";\n\n/**\n * THE TWO REFUSALS WORTH REPEATING, and they are the package's own list, not a guess.\n * `results.ts` says it in as many words: `stale_read` (40001) and `timed_out` (57014) are\n * \"the only two refusals in this list worth repeating\"; `store_limit` (53400) is the third\n * — the store ran out of something and the same call works in a quieter moment.\n *\n * EVERYTHING ELSE THE DOOR NAMES IS A DECISION. This was the other way round until a real\n * browser ran it (2026-09-20): the check listed SQLSTATEs, and `RecordsClient` hands back\n * its own WORD — `invalid_argument`, `door` — with the sqlstate beside it. So a capture the\n * store had refused by name was filed as a hiccup and queued again forever, which is the\n * exact silent hole this file's decision 4 exists to prevent. The unit suite passed because\n * it fed the check SQLSTATEs: it was testing the assumption, not the client.\n */\nexport const REFUSALS_WORTH_REPEATING: ReadonlySet<string> = new Set([\n \"stale_read\", \"timed_out\", \"store_limit\",\n]);\nconst SQLSTATES_WORTH_REPEATING: ReadonlySet<string> = new Set([\"40001\", \"57014\", \"53400\"]);\n\n/**\n * Did the door DECIDE, or did the attempt merely fail? A failure with no code at all is a\n * network failure and waits; a refusal the store named is a decision and stays.\n */\nexport function isDecided(\n error: { code?: string | null; sqlstate?: string | null } | null | undefined,\n): boolean {\n if (!error) return false;\n const { code, sqlstate } = error;\n if (code && REFUSALS_WORTH_REPEATING.has(code)) return false;\n if (sqlstate && SQLSTATES_WORTH_REPEATING.has(sqlstate)) return false;\n return !!(code || sqlstate);\n}\n\n/**\n * A key that is unique on a phone that has been offline for a day and has never spoken to\n * a server. `crypto.randomUUID` where it exists; otherwise random bytes, and only then the\n * clock — because two captures in the same millisecond on two phones is exactly the case\n * that must not collide.\n */\nexport function mintClientKey(): string {\n const c: Crypto | undefined = typeof crypto !== \"undefined\" ? crypto : undefined;\n if (c && typeof c.randomUUID === \"function\") return `cap-${c.randomUUID()}`;\n if (c && typeof c.getRandomValues === \"function\") {\n const b = c.getRandomValues(new Uint8Array(16));\n return `cap-${Array.from(b, (x) => x.toString(16).padStart(2, \"0\")).join(\"\")}`;\n }\n return `cap-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 12)}`;\n}\n\n/** The IndexedDB store. Returns null where there is no IndexedDB at all. */\nexport function indexedDbStore(name = DB_NAME): CaptureQueueStore | null {\n const idb: IDBFactory | undefined =\n typeof globalThis !== \"undefined\" ? (globalThis as { indexedDB?: IDBFactory }).indexedDB : undefined;\n if (!idb) return null;\n\n const open = (): Promise<IDBDatabase> =>\n new Promise((resolve, reject) => {\n const req = idb.open(name, DB_VERSION);\n req.onupgradeneeded = () => {\n const db = req.result;\n if (!db.objectStoreNames.contains(ITEMS)) db.createObjectStore(ITEMS, { keyPath: \"client_key\" });\n if (!db.objectStoreNames.contains(META)) db.createObjectStore(META);\n };\n req.onsuccess = () => resolve(req.result);\n req.onerror = () => reject(req.error);\n });\n\n const run = <T>(store: string, mode: IDBTransactionMode, fn: (s: IDBObjectStore) => IDBRequest<T>): Promise<T> =>\n open().then(\n (db) =>\n new Promise<T>((resolve, reject) => {\n const tx = db.transaction(store, mode);\n const req = fn(tx.objectStore(store));\n req.onsuccess = () => resolve(req.result);\n req.onerror = () => reject(req.error);\n tx.oncomplete = () => db.close();\n }),\n );\n\n return {\n all: () => run<QueuedCapture[]>(ITEMS, \"readonly\", (s) => s.getAll() as IDBRequest<QueuedCapture[]>),\n put: (item) => run<IDBValidKey>(ITEMS, \"readwrite\", (s) => s.put(item)).then(() => undefined),\n remove: (key) => run<undefined>(ITEMS, \"readwrite\", (s) => s.delete(key)).then(() => undefined),\n meta: (key) => run<string | undefined>(META, \"readonly\", (s) => s.get(key) as IDBRequest<string | undefined>)\n .then((v) => v ?? null),\n setMeta: (key, value) =>\n run<IDBValidKey>(META, \"readwrite\", (s) => s.put(value, key)).then(() => undefined),\n };\n}\n\n/** The in-memory store — for a test, and for a browser with storage switched off. */\nexport function memoryStore(): CaptureQueueStore {\n const rows = new Map<string, QueuedCapture>();\n const meta = new Map<string, string>();\n return {\n all: async () => Array.from(rows.values()),\n put: async (item) => void rows.set(item.client_key, item),\n remove: async (key) => void rows.delete(key),\n meta: async (key) => meta.get(key) ?? null,\n setMeta: async (key, value) => void meta.set(key, value),\n };\n}\n\nexport interface CaptureQueueOptions {\n ports: CaptureQueuePorts;\n store?: CaptureQueueStore | null;\n /** Watch `online` and drain when the signal comes back. Default true in a browser. */\n autoSync?: boolean;\n /** Told when anything changes, so a badge can say how many are waiting. */\n onChange?: (counts: CaptureQueueCounts, items: QueuedCapture[]) => void;\n now?: () => Date;\n}\n\nexport interface CaptureQueue {\n /** Write one capture to disk. Returns its client key; the network is not asked here. */\n enqueue(input: {\n organization_id: string;\n sheet_id: string;\n sheet_title?: string;\n answers: Record<string, unknown>;\n files?: Array<Omit<QueuedCaptureFile, \"uploaded\">>;\n device?: string | null;\n captured_at?: string | null;\n location?: Record<string, unknown> | null;\n client_key?: string;\n }): Promise<string>;\n list(): Promise<QueuedCapture[]>;\n counts(): Promise<CaptureQueueCounts>;\n /** Send everything waiting, oldest first, one at a time. Safe to call at any moment. */\n sync(): Promise<CaptureSyncReport>;\n /** Try one refused item again — after the person has fixed what the door named. */\n retry(clientKey: string, patch?: { answers?: Record<string, unknown> }): Promise<void>;\n /** Throw one away. The only thing that ever removes a capture nobody sent. */\n discard(clientKey: string): Promise<void>;\n /** Forget what has already landed. Never touches anything still waiting. */\n clearLanded(): Promise<number>;\n lastSyncedAt(): Promise<string | null>;\n isOnline(): boolean;\n dispose(): void;\n}\n\nfunction countOf(items: QueuedCapture[]): CaptureQueueCounts {\n const c: CaptureQueueCounts = { waiting: 0, sending: 0, refused: 0, landed: 0 };\n for (const i of items) c[i.state] += 1;\n return c;\n}\n\nexport function openCaptureQueue(opts: CaptureQueueOptions): CaptureQueue {\n const now = opts.now ?? (() => new Date());\n const store = opts.store ?? indexedDbStore() ?? memoryStore();\n let syncing: Promise<CaptureSyncReport> | null = null;\n let disposed = false;\n\n const online = (): boolean => {\n const nav = typeof navigator !== \"undefined\" ? navigator : undefined;\n return nav ? nav.onLine !== false : true;\n };\n\n const announce = async () => {\n if (!opts.onChange) return;\n const items = await store.all();\n opts.onChange(countOf(items), items);\n };\n\n const oldestFirst = (items: QueuedCapture[]) =>\n items.slice().sort((a, b) => a.captured_at.localeCompare(b.captured_at));\n\n const queue: CaptureQueue = {\n async enqueue(input) {\n const key = input.client_key ?? mintClientKey();\n const item: QueuedCapture = {\n client_key: key,\n organization_id: input.organization_id,\n sheet_id: input.sheet_id,\n sheet_title: input.sheet_title,\n answers: input.answers ?? {},\n files: (input.files ?? []).map((f) => ({ ...f, uploaded: null })),\n device: input.device ?? null,\n captured_at: input.captured_at ?? now().toISOString(),\n location: input.location ?? null,\n state: \"waiting\",\n attempts: 0,\n last_error: null,\n record_id: null,\n replayed: false,\n queued_at: now().toISOString(),\n landed_at: null,\n };\n await store.put(item);\n await announce();\n return key;\n },\n\n list: () => store.all().then(oldestFirst),\n counts: () => store.all().then(countOf),\n\n async sync() {\n if (syncing) return syncing;\n syncing = (async (): Promise<CaptureSyncReport> => {\n const report: CaptureSyncReport = {\n attempted: 0, landed: 0, replayed: 0, refused: 0, deferred: 0, outcomes: [],\n };\n const pending = oldestFirst(await store.all()).filter((i) => i.state === \"waiting\" || i.state === \"sending\");\n if (!online()) {\n report.deferred = pending.length;\n report.stopped_because = \"There is no signal, so nothing was sent. Everything is still here.\";\n return report;\n }\n\n for (const item of pending) {\n report.attempted += 1;\n item.state = \"sending\";\n item.attempts += 1;\n await store.put(item);\n await announce();\n\n try {\n // THE BYTES FIRST, AND ONLY ONCE. A file whose reference is already written\n // back is not uploaded again, so a failure at the SUBMIT step does not send\n // the photograph twice.\n for (const f of item.files) {\n if (f.uploaded) continue;\n f.uploaded = await opts.ports.uploadFile(f, item);\n f.blob = null;\n await store.put(item);\n }\n\n const refs: CaptureFileRef[] = item.files.map((f) => ({\n field: f.field,\n name: f.name,\n mime_type: f.mime_type,\n size_bytes: f.size_bytes,\n duration_ms: f.duration_ms ?? null,\n file_id: f.uploaded?.file_id ?? null,\n url: f.uploaded?.url ?? null,\n }));\n\n const res = await opts.ports.submit({\n sheet_id: item.sheet_id,\n client_key: item.client_key,\n answers: item.answers,\n files: refs,\n device: item.device,\n captured_at: item.captured_at,\n location: item.location,\n });\n\n if (res.ok && res.data && res.data.record_id) {\n item.state = \"landed\";\n item.record_id = res.data.record_id;\n item.replayed = !!res.data.replay;\n item.landed_at = now().toISOString();\n item.last_error = null;\n report.landed += 1;\n if (item.replayed) report.replayed += 1;\n report.outcomes.push({\n client_key: item.client_key, state: item.state,\n record_id: item.record_id, replay: item.replayed,\n says: res.data.message ?? null,\n });\n } else if (res.ok && res.data && !res.data.record_id) {\n // The door answered in words — closed, not open yet. It is not a failure of\n // this phone and it is not something a retry loop can fix.\n item.state = \"refused\";\n item.last_error = res.data.message ?? `This sheet is ${res.data.state}.`;\n report.refused += 1;\n report.outcomes.push({\n client_key: item.client_key, state: item.state, record_id: null,\n replay: false, says: item.last_error,\n });\n } else if (isDecided(res.error)) {\n item.state = \"refused\";\n item.last_error = res.error?.message ?? \"The store refused this capture.\";\n report.refused += 1;\n report.outcomes.push({\n client_key: item.client_key, state: item.state, record_id: null,\n replay: false, says: item.last_error,\n });\n } else {\n item.state = \"waiting\";\n item.last_error = res.error?.message ?? \"It could not be sent just now.\";\n report.deferred += 1;\n report.outcomes.push({\n client_key: item.client_key, state: item.state, record_id: null,\n replay: false, says: item.last_error,\n });\n }\n } catch (err) {\n // A thrown error is the NETWORK, not a decision: it waits.\n item.state = \"waiting\";\n item.last_error =\n err instanceof Error ? err.message : \"It could not be sent just now.\";\n report.deferred += 1;\n report.outcomes.push({\n client_key: item.client_key, state: item.state, record_id: null,\n replay: false, says: item.last_error,\n });\n }\n\n await store.put(item);\n await announce();\n\n if (!online()) {\n report.stopped_because =\n \"The signal went away again. Everything still on the phone is still here.\";\n break;\n }\n }\n\n await store.setMeta(\"last_synced_at\", now().toISOString());\n return report;\n })();\n try {\n return await syncing;\n } finally {\n syncing = null;\n }\n },\n\n async retry(clientKey, patch) {\n const items = await store.all();\n const item = items.find((i) => i.client_key === clientKey);\n if (!item) return;\n if (patch?.answers) item.answers = { ...item.answers, ...patch.answers };\n item.state = \"waiting\";\n item.last_error = null;\n await store.put(item);\n await announce();\n },\n\n async discard(clientKey) {\n await store.remove(clientKey);\n await announce();\n },\n\n async clearLanded() {\n const items = await store.all();\n const landed = items.filter((i) => i.state === \"landed\");\n for (const i of landed) await store.remove(i.client_key);\n await announce();\n return landed.length;\n },\n\n lastSyncedAt: () => store.meta(\"last_synced_at\"),\n isOnline: online,\n\n dispose() {\n disposed = true;\n if (typeof window !== \"undefined\" && handler) window.removeEventListener(\"online\", handler);\n },\n };\n\n let handler: (() => void) | null = null;\n const auto = opts.autoSync ?? typeof window !== \"undefined\";\n if (auto && typeof window !== \"undefined\") {\n handler = () => {\n if (!disposed) void queue.sync();\n };\n window.addEventListener(\"online\", handler);\n }\n\n return queue;\n}\n","// src/results.ts — @ai-matrx/records\n//\n// THE NEVER-THROW RESULT ENVELOPE, and the refusal vocabulary behind it.\n//\n// This package's whole posture toward the store is in one sentence: THE CLIENT\n// MIRRORS THE STORE'S CONTRACT AND NEVER RE-IMPLEMENTS A RULE THE STORE\n// ENFORCES. When the store refuses, the client hands back the store's OWN\n// message, the store's OWN hint and the store's OWN SQLSTATE, under a code a\n// screen can branch on. It never rewrites the sentence, never swallows it, and\n// never invents a friendlier one — the store's refusals were written to be read\n// by a person, and a client that paraphrases them is lying about what happened.\n\nimport type { PerValueAccessWord } from \"./vocabulary\";\nimport type { Uuid } from \"./record\";\n\n/**\n * What KIND of refusal it was. The mapping from SQLSTATE to code lives in\n * `/core`, and it is checked against `STORE_REFUSAL_CODES` — the list of every\n * SQLSTATE the store's own bodies raise, generated from the live catalogue. A\n * code the store can raise and this union cannot name is a hole, and the\n * real-door suite fails on it.\n */\nexport type RecordsErrorCode =\n /** `PT409` — somebody else's write won. The record clock moved under you. */\n | \"stale_write\"\n /** `42501` — a door. Either the schema is revoked, or the store is switched off, or this principal may not pass. */\n | \"door\"\n /** `23514` — a Rule, a shape guard, or a validation the store enforces refused it. */\n | \"refused_by_rule\"\n /**\n * `22004` / `22023` / `22P02` — the call itself was malformed: a missing id, a\n * patch that is not an object, or a value that does not fit the type the\n * store holds for that Field. The store's own message names the value and the\n * type it could not be read as.\n */\n | \"invalid_argument\"\n /** `02000` — the record is not here (deleted, never existed, or another organization's). */\n | \"not_found\"\n /** `23503` — something it points at is not there. */\n | \"missing_reference\"\n /** `23505` — that thing is already here. */\n | \"already_exists\"\n /** `0A000` — the store does not do this yet, and says which part. */\n | \"not_supported\"\n /** `53400` / `22012` — the store ran out of something, or the arithmetic could not be done. */\n | \"store_limit\"\n /**\n * `40001` — the visibility snapshot this connection carries is older than a\n * write the reader has already observed, so the store refused to answer at\n * all rather than hand back something they just lost. Retry on a fresh\n * connection; it is the one refusal in this list that is worth repeating.\n */\n | \"stale_read\"\n /**\n * `57014` — the store cancelled the statement at its own timeout. Nothing was\n * refused on its merits and nothing was written; the same call can succeed on\n * a smaller page or a quieter moment. With `stale_read`, one of the only two\n * refusals in this list worth repeating.\n */\n | \"timed_out\"\n /**\n * THE DOOR THAT DOES NOT EXIST YET. Not an error condition in the database —\n * this package asked for a door that is not in the live catalogue, so it\n * refused to guess. `door_absent` always names the door and the lane that\n * owns it; it is never a silent no-op and never an empty list.\n */\n | \"door_absent\"\n /**\n * `PGRST202` / `PGRST205` — PostgREST could not find the function or the\n * schema. The database this client is pointed at is not serving the record\n * store: the schema is not exposed, or the grants are not there.\n */\n | \"store_not_served\"\n /**\n * `PT428` — the move was not refused and it did not happen: a stage gate whose\n * `on_fail` is `require_approval` filed a request with the people who can\n * answer it, and left the record exactly where it was. The store's own\n * sentence is the gate's own sentence, and the DETAIL carries the approval.\n *\n * It is the one code in this list that is not a failure. A screen that drew it\n * as one would tell somebody their work was rejected when it is being\n * considered; a screen that drew it as success would move the card while\n * somebody is still deciding. `custom.pipeline_move` answers an object on this\n * path rather than raising, so a caller only meets PT428 when the move went\n * through the ORDINARY write door — which is most of them.\n */\n | \"needs_approval\"\n /**\n * THE CALL NEVER REACHED THE STORE. Not a refusal — a transport failure: the\n * browser lost the network, the gateway answered with an HTTP status and no\n * body, the request was cancelled. supabase-js hands these back with an EMPTY\n * `code` (a `FetchError`) or with the HTTP status in it (`\"404\"`, `\"502\"`),\n * neither of which is a SQLSTATE, and until 2026-09-22 they all landed in\n * `internal` — which is the one classification that tells a screen nothing,\n * and which made the package print a sentence about ITSELF to the person\n * (lane TAILS-6). Nothing was written, and the same call can simply be made\n * again, which is what separates it from `internal`.\n */\n | \"unreachable\"\n /** Anything the mapper could not place. It still carries the store's own words. */\n | \"internal\";\n\n/** A refusal, in the store's own words. */\nexport interface RecordsError {\n code: RecordsErrorCode;\n /** THE STORE'S message, verbatim. Never paraphrased. */\n message: string;\n /** THE STORE'S hint, verbatim — this is where the remedy is written. */\n hint?: string;\n /** The SQLSTATE, so a caller can be exact when a code is not exact enough. */\n sqlstate?: string;\n /** Whatever the store put in DETAIL, parsed when it was json. */\n detail?: unknown;\n /**\n * TRUE when this package did not recognise the class it was handed, so a\n * caller can say so instead of reading the silence as \"handled\".\n *\n * 🚨 IT IS A FLAG AND A SEPARATE SENTENCE, NEVER AN APPENDIX TO `hint`\n * (lane TAILS-6, 2026-09-22). `mapPgError` used to append \"@ai-matrx/records\n * did not recognise SQLSTATE … from checklistTemplates\" ONTO `hint`, and\n * `hint` is the field every screen treats as THE REMEDY — the sentence a\n * person is told to act on. So a dropped connection on the Checklists tab\n * showed a plumbing company \"Something went wrong at our end\" over a line\n * about a TypeScript package and a SQLSTATE. A note this package writes about\n * ITSELF is for whoever debugs it and belongs nowhere a person reads.\n */\n unmapped?: boolean;\n /**\n * THIS PACKAGE'S OWN NOTE, for an engineer. Never the store's words and never\n * a person's: screens render it out of sight (a `title` attribute, a\n * screen-reader line) or not at all.\n */\n diagnostic?: string;\n}\n\nexport type RecordsResult<T> = { ok: true; data: T } | { ok: false; error: RecordsError };\n\n/** Narrowing helper for hosts compiled without `strictNullChecks`. */\nexport function isRecordsErr<T>(\n result: RecordsResult<T>,\n): result is { ok: false; error: RecordsError } {\n return result.ok === false;\n}\n\nexport const ok = <T>(data: T): RecordsResult<T> => ({ ok: true, data });\nexport const err = <T>(error: RecordsError): RecordsResult<T> => ({ ok: false, error });\n\n/**\n * A `stale_write` carries everything the screen needs to show the conflict\n * rather than a toast: which version you wrote against, which one won, and the\n * value of every field you touched as it stands now. The store builds this and\n * this type is its shape — nothing is reconstructed on the client.\n */\nexport interface StaleWriteDetail {\n expected_version: number;\n current_version: number;\n contested_fields: Record<string, unknown>;\n}\n\n/** The parsed form of a `stale_write`, for `useRecordMutation`'s conflict state. */\nexport interface WriteConflict extends StaleWriteDetail {\n record_id: Uuid;\n /** The store's own sentence — what the screen shows. */\n message: string;\n /** The store's own remedy. */\n hint: string;\n}\n\n/**\n * The structural shape of a PostgREST failure as supabase-js resolves it: a\n * PLAIN OBJECT parsed from the response body, NOT an `Error`. Reading\n * `.message` off `instanceof Error` discards the real database message on every\n * genuine failure.\n */\nexport interface PgError {\n code?: string | null;\n message: string;\n details?: string | null;\n hint?: string | null;\n}\n\n/** What the validation mirror answers: the same sentence the trigger would raise. */\nexport interface PredictedRefusal {\n /** The field key the store would name, when it names one. */\n field_key?: string;\n /** The message the store's own body would raise, word for word. */\n message: string;\n hint?: string;\n sqlstate: string;\n /**\n * Which of the store's bodies would raise it, so a reader can go and check\n * that this mirror still tells the truth.\n */\n predicted_by: string;\n}\n\n/** VAL-5 / VAL-6, named so a caller can say which word was the problem. */\nexport interface ForbiddenEnvelopeWord {\n field_key: string;\n word: PerValueAccessWord;\n}\n","/**\n * THE CLIENT OPERATION LEDGER — how a browser recognises the echo of its own write.\n *\n * Every private-channel notice the record store broadcasts reaches EVERY browser watching that\n * Table, including the one that caused it. Until now the writer had no way to tell its own\n * change from a colleague's: the notice carried ids and nothing about who moved them, so\n * `recordsRealtimePort.ts` declared `acceptEchoFromSelf: true` and the writer re-read a page it\n * had already updated. It was named honestly rather than faked, and this is the other half.\n *\n * THE SHAPE. Every write through `RecordsClient` mints a uuid, sends it to the store as the\n * platform envelope key `_op_id`, and remembers it here. The store lifts that key out before\n * storage — it is never written onto the record — carries it on the change-feed row, and puts\n * it in the notice as `op_id`. A notice whose `op_id` is in this ledger is this browser's own\n * echo and is dropped.\n *\n * WHY A TIME WINDOW RATHER THAN A DELETE-ON-MATCH. One write can produce MORE THAN ONE notice:\n * a record write that also moves a column produces a `record` notice and a `field` notice, and\n * a statement touching two Tables produces one per Table. Forgetting an op the first time it\n * came back would make the second notice look like somebody else's and cost the re-read this\n * exists to avoid. So an op is remembered for a window and expires on its own.\n *\n * 🚨 THE WINDOW IS A CORRECTNESS BOUNDARY, NOT A TUNING KNOB, AND IT FAILS IN THE SAFE\n * DIRECTION BY CONSTRUCTION. Too SHORT and a late echo is treated as a stranger's change: one\n * extra read of a page that is already correct — invisible. Too LONG and a stranger's change\n * that happened to reuse our uuid would be dropped — which cannot happen, because it is a v4\n * uuid nobody else has ever seen. The only real cost of a long window is memory, so it is\n * bounded by COUNT as well as by time.\n *\n * WHAT THIS IS NOT. It is not a replacement for the store's optimistic concurrency, and it\n * never decides what is true — a dropped echo means \"I already know about this\", and every\n * path that could be wrong about that (a reconnect, a tab wake, a notice with no `op_id` at\n * all) re-reads through the door as it always did.\n */\nimport type { Uuid } from \"./core/index\";\n\n/** How long an operation stays recognisable as ours. See the header: it fails safe both ways. */\nconst REMEMBER_MS = 30_000;\n\n/** A ceiling so a long-lived tab that writes constantly cannot grow this without bound. */\nconst REMEMBER_MAX = 500;\n\n/** op id → the moment it was minted. Insertion-ordered, which is what makes the trim cheap. */\nconst ours = new Map<string, number>();\n\nfunction trim(now: number): void {\n // A Map iterates in insertion order and ids are minted in time order, so the first entry\n // that is still inside the window means every entry after it is too.\n for (const [id, at] of ours) {\n if (now - at <= REMEMBER_MS) break;\n ours.delete(id);\n }\n // Then the ceiling, oldest first, for a tab that writes faster than the window expires.\n while (ours.size > REMEMBER_MAX) {\n const oldest = ours.keys().next();\n if (oldest.done === true) break;\n ours.delete(oldest.value);\n }\n}\n\n/**\n * Mint the id for one client operation and remember it as ours.\n *\n * ONE CALL IS ONE OPERATION. A fifty-row paste through `recordWriteMany` is ONE op id, because\n * the store announces one statement once — and it REFUSES a batch carrying two different ones\n * by name, for exactly that reason.\n */\nexport function mintOpId(): Uuid {\n const id = crypto.randomUUID();\n const now = Date.now();\n ours.set(id, now);\n trim(now);\n return id as Uuid;\n}\n\n/**\n * Is this notice the echo of a write this browser made?\n *\n * `undefined`/`null` is NOT ours and never has been: a notice with no `op_id` came from a\n * server-side write, an agent tool, another client, or a store older than this mechanism —\n * all of which are changes this browser has not seen and must read.\n */\nexport function isOwnOp(opId: string | null | undefined): boolean {\n if (!opId) return false;\n const at = ours.get(opId);\n if (at === undefined) return false;\n if (Date.now() - at > REMEMBER_MS) {\n ours.delete(opId);\n return false;\n }\n return true;\n}\n\n/** Test seam: forget everything. Never called by product code. */\nexport function forgetAllOps(): void {\n ours.clear();\n}\n\n/** Test seam: how many operations are currently remembered. */\nexport function rememberedOpCount(): number {\n return ours.size;\n}\n","// src/store.generated.ts — @ai-matrx/records\n//\n// GENERATED. Do not edit by hand: `pnpm records:generate` rewrites it from the\n// live record store, and `pnpm check:store-registry` fails the build when this\n// file and the store disagree. Every literal below was read from the database's\n// own catalogue — the vocabularies from the store's vocabulary functions, the\n// parity types from `custom.parity_field_types()`, the doors from `pg_proc`,\n// the kernel ids from the kernel rows themselves, the tokens from\n// `platform.entity_types`.\n//\n// Counts at generation: 3 actor words, 4 absence\n// reasons, 14 parity field types, 25 rule node kinds,\n// 9 kernel Tables, 559 doors, 48 knobs,\n// 1024 entity tokens.\n\nexport const ACTOR_VOCABULARY = [\"user\", \"agent\", \"system\"] as const;\n\n/** The three words the store still accepts and rewrites, and what each becomes. */\nexport const RETIRED_ACTOR_WORDS = {\"ai\": \"agent\", \"code\": \"system\", \"human\": \"user\"} as const;\n\nexport const ABSENCE_REASONS = [\"never asked\", \"none\", \"refused\", \"conflicting\"] as const;\n\nexport const VALUE_ENVELOPE_KEYS = [\"ver\", \"src\", \"actor\", \"on_behalf_of\", \"at\", \"absent\", \"alternates\", \"dated\", \"pinned\"] as const;\n\nexport const VALUE_ALTERNATE_KEYS = [\"value\", \"src\", \"rank\"] as const;\n\nexport const STORAGE_MODES = [\"light\", \"heavy\"] as const;\n\nexport const RULE_USES = [\"validate\", \"compute\", \"membership\", \"applicability\"] as const;\n\nexport const PER_VALUE_ACCESS_WORDS = [\"visibility\", \"access\", \"share\", \"acl\", \"permission\", \"permissions\", \"secret\"] as const;\n\n/** FLD-11's parity floor, each with the behaviour it is MADE OF (FLD-1). */\nexport const PARITY_FIELD_TYPES = [\n { parity_type: \"attachment\", behavior: \"relation\", made_of: \"REC-31: a File record reached through a relation, target the kernel `File` Table\" },\n { parity_type: \"checkbox\", behavior: \"boolean\", made_of: \"a ticked or unticked answer, stored as a REAL boolean — and a record that never answered holds neither, so filters and group-by see three states, not two\" },\n { parity_type: \"currency\", behavior: \"range\", made_of: \"FLD-N-1: a number whose UNIT is the currency and whose format is currency — on the Field, never in presentation\" },\n { parity_type: \"datetime\", behavior: \"range\", made_of: \"a range of kind date or datetime — the dated modifier says the VALUES are dated, which is a different question\" },\n { parity_type: \"email\", behavior: \"text\", made_of: \"text whose format is email\" },\n { parity_type: \"formula\", behavior: \"formula\", made_of: \"FLD-9: a declared computation, on read or on write, evaluated by custom.rule_eval\" },\n { parity_type: \"lookup\", behavior: \"formula\", made_of: \"a Value read THROUGH a relation — config.via names the relation field, config.pick the Value on the far side\" },\n { parity_type: \"member\", behavior: \"relation\", made_of: \"a person: a relation whose target is the kernel `Person` Table\" },\n { parity_type: \"multi_select\", behavior: \"list\", made_of: \"many choices from the same Table — the multi modifier, never a second behaviour\" },\n { parity_type: \"percent\", behavior: \"range\", made_of: \"a number whose unit is % and whose format is percent\" },\n { parity_type: \"phone\", behavior: \"text\", made_of: \"text whose format is phone\" },\n { parity_type: \"rollup\", behavior: \"formula\", made_of: \"an aggregate ALONG a relation — config.via, config.of, config.agg; far-side ids are taken DISTINCT, so nothing is counted twice\" },\n { parity_type: \"select\", behavior: \"list\", made_of: \"one choice from a Table shown as a list (FLD-5/FLD-6)\" },\n { parity_type: \"url\", behavior: \"text\", made_of: \"text whose format is url, with the pattern Rule that makes the format enforceable\" },\n] as const;\n\n/** The node kinds `custom.rule_eval` evaluates, and the lane that owns each. */\nexport const RULE_NODE_KINDS = [\n { node: \"actor_at_least\", evaluated_by: \"PIPELINES\" },\n { node: \"add\", evaluated_by: \"W1-RULE\" },\n { node: \"and\", evaluated_by: \"W1-RULE\" },\n { node: \"concat\", evaluated_by: \"W1-RULE\" },\n { node: \"const\", evaluated_by: \"W1-RULE\" },\n { node: \"div\", evaluated_by: \"W1-RULE\" },\n { node: \"eq\", evaluated_by: \"W1-RULE\" },\n { node: \"field\", evaluated_by: \"W1-RULE\" },\n { node: \"gt\", evaluated_by: \"W1-RULE\" },\n { node: \"gte\", evaluated_by: \"W1-RULE\" },\n { node: \"length\", evaluated_by: \"W1-RULE\" },\n { node: \"lt\", evaluated_by: \"W1-RULE\" },\n { node: \"lte\", evaluated_by: \"W1-RULE\" },\n { node: \"matches\", evaluated_by: \"W1-RULE\" },\n { node: \"merge_field\", evaluated_by: \"W5-MERGE-B\" },\n { node: \"mul\", evaluated_by: \"W1-RULE\" },\n { node: \"ne\", evaluated_by: \"W1-RULE\" },\n { node: \"not\", evaluated_by: \"W1-RULE\" },\n { node: \"or\", evaluated_by: \"W1-RULE\" },\n { node: \"parent_field\", evaluated_by: \"W1-RULE-APPLY\" },\n { node: \"present\", evaluated_by: \"W1-RULE\" },\n { node: \"previous\", evaluated_by: \"PIPELINES\" },\n { node: \"sibling_count\", evaluated_by: \"STAGE-RULES\" },\n { node: \"stage_count\", evaluated_by: \"PIPELINES\" },\n { node: \"sub\", evaluated_by: \"W1-RULE\" },\n] as const;\n\n/** REC-27. The kernel, by name and by id, as the store holds it. */\nexport const KERNEL_TABLES = [\n { id: \"11111111-0000-4000-8000-000000000002\", name: \"Field\" },\n { id: \"11111111-0000-4000-8000-000000000006\", name: \"File\" },\n { id: \"11111111-0000-4000-8000-000000000009\", name: \"Merge Field\" },\n { id: \"11111111-0000-4000-8000-000000000004\", name: \"Organization\" },\n { id: \"11111111-0000-4000-8000-000000000005\", name: \"Person\" },\n { id: \"11111111-0000-4000-8000-000000000007\", name: \"Presentation\" },\n { id: \"11111111-0000-4000-8000-000000000003\", name: \"Rule\" },\n { id: \"11111111-0000-4000-8000-000000000001\", name: \"Table\" },\n { id: \"11111111-0000-4000-8000-000000000008\", name: \"Widget\" },\n] as const;\n\n/**\n * Every door the store actually has, with the argument list and the result the\n * catalogue reports. A client call whose door is not in this list is answered\n * `door_absent` by name — never a guess, never a silent no-op.\n */\nexport const STORE_DOORS = [\n { name: \"absence_reasons\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"actor_vocabulary\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"actor_word\", args: \"p_declared text\", returns: \"text\", security: \"invoker\" },\n { name: \"addressed_cap\", args: \"p_user_id uuid, p_type text, p_id uuid, p_organization_id uuid DEFAULT NULL::uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"permission_level\", security: \"definer\" },\n { name: \"addressed_cap_specific\", args: \"p_user_id uuid, p_type text, p_id uuid, p_organization_id uuid DEFAULT NULL::uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"permission_level\", security: \"definer\" },\n { name: \"agent_change_approval\", args: \"p_organization uuid, p_conversation uuid DEFAULT NULL::uuid, p_table uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"agent_context\", args: \"p_organization_id uuid, p_table_id uuid, p_limit integer DEFAULT 50\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"agent_table_claim\", args: \"p_organization uuid, p_table uuid, p_conversation uuid DEFAULT NULL::uuid\", returns: \"void\", security: \"definer\" },\n { name: \"agg_assert_key\", args: \"p_key text\", returns: \"text\", security: \"invoker\" },\n { name: \"agg_buckets\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"agg_cadence_normalize\", args: \"p_cadence text\", returns: \"text\", security: \"invoker\" },\n { name: \"agg_deliver\", args: \"p_organization_id uuid, p_rule_id uuid, p_record_id uuid, p_channel text, p_recipient_user_id uuid, p_event_key text, p_subject text, p_body text, p_payload jsonb DEFAULT '{}'::jsonb, p_dedupe_suffix text DEFAULT NULL::text\", returns: \"uuid\", security: \"invoker\" },\n { name: \"agg_deliver_quietly\", args: \"p_organization_id uuid, p_rule_id uuid, p_subject_id uuid, p_channel text, p_recipient_user_id uuid, p_event_key text, p_subject text, p_body text, p_payload jsonb, p_quiet_hours jsonb, p_link text, p_dedupe_suffix text DEFAULT NULL::text\", returns: \"uuid\", security: \"invoker\" },\n { name: \"agg_digest_assemble\", args: \"p_organization_id uuid, p_rule_id uuid, p_since timestamp with time zone DEFAULT NULL::timestamp with time zone, p_until timestamp with time zone DEFAULT NULL::timestamp with time zone\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"agg_digest_due_at\", args: \"p_cadence text, p_schedule text, p_quiet jsonb, p_after timestamp with time zone\", returns: \"timestamp with time zone\", security: \"invoker\" },\n { name: \"agg_digest_run\", args: \"p_organization_id uuid, p_rule_id uuid DEFAULT NULL::uuid, p_since timestamp with time zone DEFAULT NULL::timestamp with time zone\", returns: \"integer\", security: \"invoker\" },\n { name: \"agg_digest_tick\", args: \"\", returns: \"integer\", security: \"invoker\" },\n { name: \"agg_explain\", args: \"p_organization_id uuid, p_table_id uuid, p_group_by jsonb DEFAULT '[]'::jsonb, p_measures jsonb DEFAULT '[]'::jsonb, p_bucket jsonb DEFAULT NULL::jsonb, p_filter jsonb DEFAULT '{}'::jsonb, p_required text DEFAULT 'viewer'::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"agg_last_digest_at\", args: \"p_organization_id uuid, p_rule_id uuid\", returns: \"timestamp with time zone\", security: \"invoker\" },\n { name: \"agg_operations\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"agg_quiet_until\", args: \"p_quiet jsonb, p_at timestamp with time zone\", returns: \"timestamp with time zone\", security: \"invoker\" },\n { name: \"agg_record_name\", args: \"p_organization_id uuid, p_record_id uuid, p_state jsonb DEFAULT NULL::jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"agg_sql\", args: \"p_organization_id uuid, p_table_id uuid, p_group_by jsonb DEFAULT '[]'::jsonb, p_measures jsonb DEFAULT '[]'::jsonb, p_bucket jsonb DEFAULT NULL::jsonb, p_filter jsonb DEFAULT '{}'::jsonb, p_limit integer DEFAULT 200, p_required text DEFAULT 'viewer'::text\", returns: \"text\", security: \"invoker\" },\n { name: \"agg_subscription_cadences\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"agg_subscription_fire\", args: \"p_organization_id uuid, p_record_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_changed_field_ids jsonb DEFAULT '[]'::jsonb\", returns: \"integer\", security: \"invoker\" },\n { name: \"agg_subscription_fire_entered\", args: \"p_organization_id uuid, p_record_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_since timestamp with time zone DEFAULT NULL::timestamp with time zone\", returns: \"integer\", security: \"invoker\" },\n { name: \"agg_subscription_tick\", args: \"p_window interval DEFAULT '00:15:00'::interval\", returns: \"integer\", security: \"invoker\" },\n { name: \"agg_subscriptions\", args: \"p_organization_id uuid, p_saved_view_id uuid DEFAULT NULL::uuid, p_cadence text DEFAULT NULL::text\", returns: \"TABLE(rule_id uuid, saved_view_id uuid, table_id uuid, cadence text, schedule text, quiet_hours jsonb, channel text, recipient_user_id uuid, event_key text, name text)\", security: \"invoker\" },\n { name: \"agg_value_sql\", args: \"p_key text\", returns: \"text\", security: \"invoker\" },\n { name: \"agg_view_admits\", args: \"p_organization_id uuid, p_saved_view_id uuid, p_record_id uuid\", returns: \"boolean\", security: \"invoker\" },\n { name: \"agg_view_admits_state\", args: \"p_definition jsonb, p_state jsonb\", returns: \"boolean\", security: \"invoker\" },\n { name: \"anon_capture\", args: \"p_organization_id uuid, p_client_key text, p_table_id uuid, p_payload jsonb, p_device text DEFAULT NULL::text, p_captured_at timestamp with time zone DEFAULT NULL::timestamp with time zone\", returns: \"uuid\", security: \"definer\" },\n { name: \"anon_clear\", args: \"p_organization_id uuid, p_submission_id uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"anon_inbound_land\", args: \"p_address text, p_secret text, p_payload jsonb, p_raw_payload jsonb DEFAULT '{}'::jsonb, p_client_key text DEFAULT NULL::text\", returns: \"uuid\", security: \"definer\" },\n { name: \"anon_publish\", args: \"p_organization_id uuid, p_form_id uuid, p_published boolean DEFAULT true\", returns: \"timestamp with time zone\", security: \"definer\" },\n { name: \"anon_rate_take\", args: \"p_organization_id uuid, p_form_id uuid, p_bucket text, p_token_id uuid DEFAULT NULL::uuid\", returns: \"integer\", security: \"definer\" },\n { name: \"anon_submissions\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_state text DEFAULT NULL::text, p_limit integer DEFAULT 100, p_offset integer DEFAULT 0\", returns: \"TABLE(id uuid, form_id uuid, inbound_id uuid, table_id uuid, source text, state text, payload jsonb, raw_payload jsonb, client_key text, record_id uuid, remote_origin text, rejection_reason text, created_at timestamp with time zone, cleared_at timestamp with time zone)\", security: \"definer\" },\n { name: \"anon_token_issue\", args: \"p_organization_id uuid, p_mode text, p_allowed_origins jsonb, p_form_id uuid DEFAULT NULL::uuid, p_saved_view_id uuid DEFAULT NULL::uuid, p_record_id uuid DEFAULT NULL::uuid, p_expires_at timestamp with time zone DEFAULT NULL::timestamp with time zone\", returns: \"TABLE(token_id uuid, secret text)\", security: \"definer\" },\n { name: \"anon_token_revoke\", args: \"p_organization_id uuid, p_token_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"anon_token_verify\", args: \"p_secret text, p_origin text, p_required_mode text\", returns: \"TABLE(token_id uuid, organization_id uuid, form_id uuid, saved_view_id uuid, record_id uuid, mode text)\", security: \"definer\" },\n { name: \"anon_write\", args: \"p_secret text, p_origin text, p_payload jsonb, p_client_key text DEFAULT NULL::text, p_raw_payload jsonb DEFAULT '{}'::jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"applicable_fields\", args: \"p_organization_id uuid, p_table_id uuid, p_record_type text DEFAULT NULL::text\", returns: \"SETOF custom.record\", security: \"definer\" },\n { name: \"assert_client_may_change\", args: \"p_organization_id uuid, p_subject_id uuid, p_door text, p_required permission_level DEFAULT 'editor'::permission_level, p_subject_word text DEFAULT 'record'::text\", returns: \"void\", security: \"invoker\" },\n { name: \"assert_client_may_open\", args: \"p_organization_id uuid, p_subject_id uuid, p_door text, p_required permission_level DEFAULT 'viewer'::permission_level, p_subject_word text DEFAULT 'record'::text\", returns: \"void\", security: \"invoker\" },\n { name: \"assert_client_may_reach\", args: \"p_organization_id uuid, p_door text\", returns: \"void\", security: \"invoker\" },\n { name: \"assert_columns_are_defined\", args: \"p_organization_id uuid, p_record_id uuid, p_patch jsonb\", returns: \"void\", security: \"definer\" },\n { name: \"assert_entity_door\", args: \"p_organization_id uuid, p_door text\", returns: \"void\", security: \"definer\" },\n { name: \"assert_entity_is_organization_scoped\", args: \"p_token text, p_label text, p_scoped boolean\", returns: \"void\", security: \"invoker\" },\n { name: \"assert_may_know_table\", args: \"p_organization_id uuid, p_table_id uuid, p_door text\", returns: \"void\", security: \"invoker\" },\n { name: \"assert_organization_admin\", args: \"p_organization_id uuid, p_door text, p_what text\", returns: \"void\", security: \"invoker\" },\n { name: \"assert_organization_wall\", args: \"p_kind text, p_organization_id uuid, p_row jsonb\", returns: \"void\", security: \"invoker\" },\n { name: \"assert_store_door\", args: \"p_organization_id uuid, p_door text\", returns: \"void\", security: \"invoker\" },\n { name: \"booking_cancel\", args: \"p_booking_ref text, p_origin text DEFAULT NULL::text\", returns: \"TABLE(booking_ref text, record_id uuid, slot_key text, state text, message text)\", security: \"definer\" },\n { name: \"booking_confirm\", args: \"p_form_id uuid, p_hold_id uuid, p_origin text, p_payload jsonb, p_bucket text, p_honeypot text DEFAULT NULL::text, p_client_key text DEFAULT NULL::text\", returns: \"TABLE(booking_ref text, record_id uuid, submission_id uuid, slot_key text, slot_at timestamp with time zone, state text, message text)\", security: \"definer\" },\n { name: \"booking_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_title text, p_questions jsonb, p_availability jsonb DEFAULT '{}'::jsonb, p_presentation jsonb DEFAULT '{}'::jsonb, p_submission_cap integer DEFAULT NULL::integer, p_quarantine_rule_id uuid DEFAULT NULL::uuid, p_notify_rule_id uuid DEFAULT NULL::uuid, p_form_id uuid DEFAULT NULL::uuid, p_slug text DEFAULT NULL::text, p_home_id uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"booking_hold\", args: \"p_form_id uuid, p_slot_key text, p_origin text, p_bucket text, p_client_key text DEFAULT NULL::text\", returns: \"TABLE(hold_id uuid, slot_key text, expires_at timestamp with time zone, member_user_id uuid, state text, message text)\", security: \"definer\" },\n { name: \"booking_manage\", args: \"p_booking_ref text, p_days integer DEFAULT NULL::integer\", returns: \"TABLE(booking_ref text, form_id uuid, title text, slot_key text, slot_at timestamp with time zone, status text, slots jsonb, availability jsonb, state text, message text)\", security: \"definer\" },\n { name: \"booking_notify\", args: \"p_organization_id uuid, p_form_id uuid, p_record_id uuid, p_submission_id uuid, p_event text, p_when text\", returns: \"uuid\", security: \"invoker\" },\n { name: \"booking_public\", args: \"p_form_id uuid, p_days integer DEFAULT NULL::integer\", returns: \"TABLE(form_id uuid, organization_id uuid, table_id uuid, title text, presentation jsonb, fields jsonb, honeypot_key text, availability jsonb, slots jsonb, state text, message text)\", security: \"definer\" },\n { name: \"booking_reschedule\", args: \"p_booking_ref text, p_slot_key text, p_origin text, p_bucket text DEFAULT NULL::text\", returns: \"TABLE(booking_ref text, record_id uuid, slot_key text, slot_at timestamp with time zone, state text, message text)\", security: \"definer\" },\n { name: \"bookings\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(form_id uuid, table_id uuid, title text, slug text, published_at timestamp with time zone, closed_at timestamp with time zone, slot_minutes integer, timezone text, slot_table_id uuid, booked bigint, cancelled bigint, upcoming bigint, held bigint, next_at timestamp with time zone, state text)\", security: \"definer\" },\n { name: \"bump_epoch\", args: \"p_entity_type text, p_entity_id uuid, p_organization_id uuid DEFAULT NULL::uuid\", returns: \"bigint\", security: \"definer\" },\n { name: \"cache_lookup\", args: \"p_container_type text, p_container_id uuid, p_item_type text, p_item_id uuid\", returns: \"permission_level\", security: \"definer\" },\n { name: \"caller_role\", args: \"\", returns: \"name\", security: \"invoker\" },\n { name: \"capture_open\", args: \"p_organization_id uuid, p_sheet_id uuid\", returns: \"TABLE(sheet_id uuid, organization_id uuid, table_id uuid, title text, presentation jsonb, fields jsonb, state text, may_capture boolean, message text)\", security: \"definer\" },\n { name: \"capture_publish\", args: \"p_organization_id uuid, p_sheet_id uuid, p_open boolean DEFAULT true\", returns: \"timestamp with time zone\", security: \"definer\" },\n { name: \"capture_sheet_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_title text, p_questions jsonb, p_presentation jsonb DEFAULT '{}'::jsonb, p_sheet_id uuid DEFAULT NULL::uuid, p_notify_rule_id uuid DEFAULT NULL::uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"capture_sheets\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(sheet_id uuid, table_id uuid, title text, slug text, state text, opened_at timestamp with time zone, captures bigint, replays bigint, last_capture_at timestamp with time zone, presentation jsonb)\", security: \"definer\" },\n { name: \"capture_submit\", args: \"p_organization_id uuid, p_sheet_id uuid, p_client_key text, p_payload jsonb, p_files jsonb DEFAULT '[]'::jsonb, p_device text DEFAULT NULL::text, p_captured_at timestamp with time zone DEFAULT NULL::timestamp with time zone, p_location jsonb DEFAULT NULL::jsonb\", returns: \"TABLE(record_id uuid, state text, message text, replay boolean, file_ids uuid[])\", security: \"definer\" },\n { name: \"carry_unchanged_value_stamps\", args: \"p_old jsonb, p_new jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"carrying_edges_in\", args: \"p_organization_id uuid\", returns: \"TABLE(container_type text, container_id uuid, item_type text, item_id uuid, conveys_max permission_level)\", security: \"definer\" },\n { name: \"carrying_edges_of\", args: \"p_item_type text, p_item_id uuid\", returns: \"TABLE(container_type text, container_id uuid, conveys_max permission_level)\", security: \"definer\" },\n { name: \"checklist_declare\", args: \"p_organization_id uuid, p_spec jsonb, p_template_id uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"checklist_refusal\", args: \"p_spec jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"checklist_run\", args: \"p_organization_id uuid, p_run_id uuid\", returns: \"TABLE(step_id uuid, step_order integer, ref text, title text, role text, assignee_name text, assignee_user_id uuid, due_on timestamp with time zone, due_state text, status text, finished boolean, requires text, requires_key text, requires_label text, requires_id uuid, evidence jsonb, blocked_by text[], may_complete boolean, refusal text)\", security: \"definer\" },\n { name: \"checklist_runs\", args: \"p_organization_id uuid, p_about_table_id uuid DEFAULT NULL::uuid, p_about_record_id uuid DEFAULT NULL::uuid, p_include_closed boolean DEFAULT true, p_limit integer DEFAULT 100\", returns: \"TABLE(run_id uuid, name text, template_id uuid, template text, about_record_id uuid, about text, about_table_id uuid, started_at timestamp with time zone, started_by uuid, origin text, step_count integer, done integer, overdue integer, next_step text, next_due timestamp with time zone, closed_at timestamp with time zone)\", security: \"definer\" },\n { name: \"checklist_start\", args: \"p_organization_id uuid, p_template_id uuid, p_about_record_id uuid DEFAULT NULL::uuid, p_roles jsonb DEFAULT '{}'::jsonb, p_starting_at timestamp with time zone DEFAULT NULL::timestamp with time zone\", returns: \"jsonb\", security: \"definer\" },\n { name: \"checklist_step_complete\", args: \"p_organization_id uuid, p_step_id uuid, p_evidence jsonb DEFAULT '{}'::jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"checklist_step_refusal\", args: \"p_organization_id uuid, p_step_id uuid\", returns: \"text\", security: \"definer\" },\n { name: \"checklist_steps_table\", args: \"p_organization_id uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"checklist_template_shape\", args: \"p_organization_id uuid, p_template_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"checklist_templates\", args: \"p_organization_id uuid, p_about_table_id uuid DEFAULT NULL::uuid, p_limit integer DEFAULT 100\", returns: \"TABLE(template_id uuid, name text, about_table_id uuid, about_table text, steps integer, roles integer, trigger_kind text, trigger_status text, open_runs integer, total_runs integer, updated_at timestamp with time zone)\", security: \"definer\" },\n { name: \"choice_census\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"choice_field_map\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"choice_filter_normalize\", args: \"p_map jsonb, p_filter jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"choice_key_for\", args: \"p_organization_id uuid, p_options_table_id uuid, p_title text, p_exclude uuid DEFAULT NULL::uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"choice_key_of\", args: \"p_field jsonb, p_token text\", returns: \"text\", security: \"invoker\" },\n { name: \"choice_options\", args: \"p_organization_id uuid, p_options_table_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"choice_render\", args: \"p_organization_id uuid, p_table_id uuid, p_doc jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"choice_render_groups\", args: \"p_map jsonb, p_groups jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"choice_render_note\", args: \"p_field jsonb, p_value jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"choice_render_value\", args: \"p_field jsonb, p_value jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"choice_slug\", args: \"p_word text\", returns: \"text\", security: \"invoker\" },\n { name: \"choice_synonyms\", args: \"p_organization_id uuid, p_table_id uuid, p_token text\", returns: \"text[]\", security: \"invoker\" },\n { name: \"choice_synonyms_in\", args: \"p_map jsonb, p_token text\", returns: \"text[]\", security: \"invoker\" },\n { name: \"choice_words\", args: \"p_field jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"client_write_grants\", args: \"\", returns: \"TABLE(role_name text, object_name text, privilege text)\", security: \"invoker\" },\n { name: \"comment_mention_deliver\", args: \"p_organization_id uuid, p_record_id uuid, p_table_id uuid, p_comment_id uuid, p_recipient uuid, p_author_name text, p_record_title text, p_body text\", returns: \"uuid\", security: \"definer\" },\n { name: \"comment_thread\", args: \"p_organization_id uuid, p_record_id uuid, p_include_resolved boolean DEFAULT false\", returns: \"jsonb\", security: \"definer\" },\n { name: \"comment_write\", args: \"p_organization_id uuid, p_record_id uuid, p_body text, p_anchor jsonb DEFAULT '{}'::jsonb, p_parent_comment_id uuid DEFAULT NULL::uuid, p_mentions uuid[] DEFAULT NULL::uuid[]\", returns: \"jsonb\", security: \"definer\" },\n { name: \"computed_block\", args: \"p_block jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"computed_provenance\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(field_key text, field_id uuid, value jsonb, rule_id uuid, rule_version integer, computed_at timestamp with time zone)\", security: \"definer\" },\n { name: \"containment_chain\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(ancestor_id uuid, depth integer)\", security: \"invoker\" },\n { name: \"containment_depth_ceiling\", args: \"p_organization_id uuid DEFAULT NULL::uuid\", returns: \"integer\", security: \"invoker\" },\n { name: \"containment_edges\", args: \"p_organization_id uuid\", returns: \"TABLE(parent_id uuid, child_id uuid, via text)\", security: \"invoker\" },\n { name: \"containment_parent\", args: \"p_data jsonb\", returns: \"uuid\", security: \"invoker\" },\n { name: \"context_resolve\", args: \"p_organization_id uuid, p_bindings jsonb, p_scope_slug text DEFAULT 'scopes'::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"conversation_scope\", args: \"p_organization_id uuid, p_conversation_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"conversation_scope_bind\", args: \"p_organization_id uuid, p_conversation_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"conversation_scope_context\", args: \"p_organization_id uuid, p_conversation_id uuid, p_relations integer DEFAULT 12, p_history integer DEFAULT 15, p_siblings integer DEFAULT 8\", returns: \"jsonb\", security: \"definer\" },\n { name: \"conversation_scope_unbind\", args: \"p_organization_id uuid, p_conversation_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"cross_organization_links_open\", args: \"p_source_organization_id uuid, p_target_organization_id uuid\", returns: \"boolean\", security: \"invoker\" },\n { name: \"custom_fields_tables\", args: \"\", returns: \"TABLE(token text, schema_name text, table_name text)\", security: \"invoker\" },\n { name: \"dashboard_block_normalize\", args: \"p_organization_id uuid, p_subject_table_id uuid, p_block jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"dashboard_class\", args: \"\", returns: \"text\", security: \"invoker\" },\n { name: \"dashboard_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_name text, p_blocks jsonb DEFAULT '[]'::jsonb, p_presentation jsonb DEFAULT '{}'::jsonb, p_dashboard_id uuid DEFAULT NULL::uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"dashboard_delete\", args: \"p_organization_id uuid, p_dashboard_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"dashboard_field_keys\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"text[]\", security: \"definer\" },\n { name: \"dashboard_kinds\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"dashboard_moment_sql\", args: \"p_key text\", returns: \"text\", security: \"invoker\" },\n { name: \"dashboard_run\", args: \"p_organization_id uuid, p_dashboard_id uuid, p_filter jsonb DEFAULT '{}'::jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"dashboard_stuck\", args: \"p_organization_id uuid, p_table_id uuid, p_state_key text, p_days integer DEFAULT 14, p_filter jsonb DEFAULT '{}'::jsonb, p_limit integer DEFAULT 50, p_required text DEFAULT 'viewer'::text\", returns: \"TABLE(record_id uuid, title text, state text, last_changed_at timestamp with time zone, days_unchanged numeric, measured_from text)\", security: \"definer\" },\n { name: \"dashboard_window_sql\", args: \"p_key text, p_window jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"dashboards\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(dashboard_id uuid, table_id uuid, name text, blocks jsonb, presentation jsonb, block_count integer, version integer, created_at timestamp with time zone, updated_at timestamp with time zone)\", security: \"definer\" },\n { name: \"delete_cascade_closure\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"uuid[]\", security: \"invoker\" },\n { name: \"delete_preview\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"delete_rule\", args: \"p_organization_id uuid, p_record_id uuid, p_apply boolean DEFAULT true\", returns: \"jsonb\", security: \"definer\" },\n { name: \"dependency_cycle\", args: \"p_organization_id uuid, p_row custom.record\", returns: \"text[]\", security: \"invoker\" },\n { name: \"dependency_label\", args: \"p_organization_id uuid, p_node text\", returns: \"text\", security: \"invoker\" },\n { name: \"derive_visibility\", args: \"p_container_type text, p_container_id uuid\", returns: \"TABLE(item_type text, item_id uuid, depth integer, max_level permission_level)\", security: \"definer\" },\n { name: \"derived_value\", args: \"p_organization_id uuid, p_record_id uuid, p_field_data jsonb, p_values jsonb DEFAULT NULL::jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"derived_values\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"derived_values_of\", args: \"v_rec custom.record\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"doc_content_hash\", args: \"p_body text\", returns: \"text\", security: \"invoker\" },\n { name: \"doc_format_value\", args: \"p_field_data jsonb, p_value jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"doc_letterhead\", args: \"p_organization_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"doc_name_token_pattern\", args: \"\", returns: \"text\", security: \"invoker\" },\n { name: \"doc_name_tokens\", args: \"p_body text\", returns: \"TABLE(ordinal integer, raw text)\", security: \"invoker\" },\n { name: \"doc_render_body\", args: \"p_organization_id uuid, p_template_id uuid, p_record_id uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"doc_render_document\", args: \"p_organization_id uuid, p_template_id uuid, p_record_id uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"doc_render_read\", args: \"p_organization_id uuid, p_render_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"doc_render_write\", args: \"p_organization_id uuid, p_template_id uuid, p_record_id uuid, p_table_id uuid, p_template_version integer, p_body text, p_content_hash text\", returns: \"uuid\", security: \"definer\" },\n { name: \"doc_renders\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(render_id uuid, template_id uuid, record_id uuid, table_id uuid, template_version integer, body text, content_hash text, rendered_at timestamp with time zone)\", security: \"definer\" },\n { name: \"doc_sign\", args: \"p_organization_id uuid, p_render_id uuid, p_field_key text, p_signer_name text, p_signer_user_id uuid DEFAULT NULL::uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"doc_signature_field_ok\", args: \"p_field_data jsonb\", returns: \"boolean\", security: \"invoker\" },\n { name: \"doc_signature_intact\", args: \"p_organization_id uuid, p_signature_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"doc_signature_read\", args: \"p_organization_id uuid, p_signature_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"doc_signature_write\", args: \"p_organization_id uuid, p_render_id uuid, p_record_id uuid, p_field_key text, p_signer_name text, p_signer_user_id uuid, p_document_hash text, p_document_version integer\", returns: \"uuid\", security: \"definer\" },\n { name: \"doc_signatures\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(signature_id uuid, render_id uuid, record_id uuid, field_key text, signer_name text, signer_user_id uuid, signed_at timestamp with time zone, document_hash text, document_version integer)\", security: \"definer\" },\n { name: \"doc_template_delete\", args: \"p_organization_id uuid, p_template_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"doc_template_read\", args: \"p_organization_id uuid, p_template_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"doc_template_save\", args: \"p_organization_id uuid, p_table_id uuid, p_name text, p_body text, p_template_id uuid DEFAULT NULL::uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"doc_templates\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"TABLE(template_id uuid, renders_table_id uuid, name text, body text, template_version integer, token_count bigint, updated_at timestamp with time zone)\", security: \"definer\" },\n { name: \"doc_token_pattern\", args: \"\", returns: \"text\", security: \"invoker\" },\n { name: \"doc_tokens\", args: \"p_body text\", returns: \"TABLE(ordinal integer, raw text, field_id uuid)\", security: \"invoker\" },\n { name: \"doc_unresolved_tokens\", args: \"p_organization_id uuid, p_table_id uuid, p_body text\", returns: \"TABLE(raw text, field_id uuid, why text)\", security: \"invoker\" },\n { name: \"doors_not_deciding_the_caller\", args: \"\", returns: \"TABLE(function_name text, identity_args text)\", security: \"invoker\" },\n { name: \"doors_not_deciding_the_record\", args: \"\", returns: \"TABLE(function_name text, identity_args text, why text)\", security: \"invoker\" },\n { name: \"doors_not_masking_fields\", args: \"\", returns: \"TABLE(function_name text, identity_args text, why text)\", security: \"invoker\" },\n { name: \"doors_not_on_one_ladder\", args: \"\", returns: \"TABLE(function_name text, identity_args text, why text)\", security: \"invoker\" },\n { name: \"effective_level\", args: \"p_user_id uuid, p_organization_id uuid, p_id uuid, p_type text DEFAULT 'record'::text\", returns: \"permission_level\", security: \"definer\" },\n { name: \"enrich_cells\", args: \"p_organization_id uuid, p_table_id uuid, p_field_keys text[] DEFAULT NULL::text[], p_record_ids uuid[] DEFAULT NULL::uuid[]\", returns: \"TABLE(record_id uuid, field_key text, agent_owned boolean, value jsonb, value_version integer, actor text, on_behalf_of text, written_at timestamp with time zone, source jsonb, absent_reason text, alternates jsonb, pinned boolean, stale boolean, due_at timestamp with time zone)\", security: \"definer\" },\n { name: \"enrich_declare\", args: \"p_organization_id uuid, p_field_id uuid, p_spec jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"enrich_due\", args: \"p_organization_id uuid, p_field_id uuid, p_limit integer DEFAULT 50, p_include_fresh boolean DEFAULT false\", returns: \"TABLE(record_id uuid, title text, inputs jsonb, current_value jsonb, written_at timestamp with time zone, reason text, trimmed_to integer)\", security: \"definer\" },\n { name: \"enrich_land\", args: \"p_organization_id uuid, p_field_id uuid, p_results jsonb, p_run jsonb DEFAULT '{}'::jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"enrich_normalize\", args: \"p_organization_id uuid, p_table_id uuid, p_field_key text, p_spec jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"enrich_pin\", args: \"p_organization_id uuid, p_record_id uuid, p_field_key text, p_pinned boolean DEFAULT true\", returns: \"jsonb\", security: \"definer\" },\n { name: \"enrich_run_class\", args: \"\", returns: \"text\", security: \"invoker\" },\n { name: \"enrich_runs\", args: \"p_organization_id uuid, p_field_id uuid DEFAULT NULL::uuid, p_limit integer DEFAULT 50\", returns: \"TABLE(run_id uuid, field_id uuid, field_key text, model text, trigger_word text, rows_seen integer, rows_written integer, rows_absent integer, rows_below_floor integer, rows_pinned integer, rows_refused integer, cost_cents numeric, cost_per_row_cents numeric, ran_at timestamp with time zone)\", security: \"definer\" },\n { name: \"enrich_sensitivity_rank\", args: \"p_word text\", returns: \"integer\", security: \"invoker\" },\n { name: \"enrich_triggers\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"enrichments\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(field_id uuid, table_id uuid, field_key text, label text, enrichment jsonb, enabled boolean, review_interval_days integer, rows_total integer, rows_filled integer, rows_stale integer, rows_pinned integer, rows_absent integer, runs integer, cost_cents numeric, cost_per_row_cents numeric, last_run_at timestamp with time zone, last_run jsonb)\", security: \"definer\" },\n { name: \"entity_field_declare\", args: \"p_organization_id uuid, p_token text, p_spec jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"entity_field_retire\", args: \"p_organization_id uuid, p_field_id uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"entity_field_rights\", args: \"p_organization_id uuid, p_token text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"entity_field_update\", args: \"p_organization_id uuid, p_field_id uuid, p_patch jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"entity_fields\", args: \"p_organization_id uuid, p_token text\", returns: \"SETOF custom.record\", security: \"definer\" },\n { name: \"entity_record_read\", args: \"p_organization_id uuid, p_token text, p_record_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"entity_records_find\", args: \"p_organization_id uuid, p_token text, p_key text, p_value jsonb DEFAULT NULL::jsonb, p_limit integer DEFAULT 50, p_offset integer DEFAULT 0\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"entity_table\", args: \"p_token text\", returns: \"TABLE(token text, schema_name text, table_name text, type text, title_column text, label text, has_organization boolean, has_deleted_at boolean)\", security: \"invoker\" },\n { name: \"entity_value_write\", args: \"p_organization_id uuid, p_token text, p_record_id uuid, p_patch jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"export_ceiling\", args: \"p_organization_id uuid DEFAULT NULL::uuid\", returns: \"integer\", security: \"invoker\" },\n { name: \"export_records\", args: \"p_organization_id uuid, p_table_id uuid, p_limit integer DEFAULT 1000\", returns: \"TABLE(id uuid, document jsonb)\", security: \"invoker\" },\n { name: \"external_foreign_table_findings\", args: \"\", returns: \"SETOF text\", security: \"definer\" },\n { name: \"external_history_event\", args: \"p_organization_id uuid, p_link_id uuid, p_operation text\", returns: \"bigint\", security: \"definer\" },\n { name: \"external_rows\", args: \"p_organization_id uuid, p_source_id uuid\", returns: \"SETOF jsonb\", security: \"definer\" },\n { name: \"external_source_declare\", args: \"p_organization_id uuid, p_tier text, p_connection_token text, p_external_schema text, p_external_table text, p_link_template text\", returns: \"uuid\", security: \"definer\" },\n { name: \"external_stub_upsert\", args: \"p_organization_id uuid, p_source_id uuid, p_table_id uuid, p_external_key text, p_link_url text, p_cached_title text\", returns: \"uuid\", security: \"definer\" },\n { name: \"external_tier_contract\", args: \"\", returns: \"jsonb\", security: \"definer\" },\n { name: \"external_write_through\", args: \"p_organization_id uuid, p_record_id uuid, p_patch jsonb\", returns: \"void\", security: \"definer\" },\n { name: \"external_writes_set\", args: \"p_organization_id uuid, p_source_id uuid, p_enabled boolean\", returns: \"boolean\", security: \"definer\" },\n { name: \"field_behaviour\", args: \"p_field_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"field_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_spec jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"field_dependants\", args: \"p_organization_id uuid, p_field_id uuid\", returns: \"TABLE(kind text, dependant_id uuid, label text, how text)\", security: \"definer\" },\n { name: \"field_history\", args: \"p_organization_id uuid, p_table_id uuid, p_field_key text, p_limit integer DEFAULT 100, p_offset integer DEFAULT 0, p_record_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(record_id uuid, record_title text, version integer, occurred_at timestamp with time zone, operation_label text, actor jsonb, before jsonb, after jsonb)\", security: \"definer\" },\n { name: \"field_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"field_options\", args: \"p_organization_id uuid, p_field_id uuid\", returns: \"SETOF custom.record\", security: \"definer\" },\n { name: \"field_retire\", args: \"p_organization_id uuid, p_field_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"field_rules\", args: \"p_field_data jsonb\", returns: \"TABLE(kind text, spec jsonb)\", security: \"invoker\" },\n { name: \"field_update\", args: \"p_organization_id uuid, p_field_id uuid, p_patch jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"field_value_convert\", args: \"p_to jsonb, p_value jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"file_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"form_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_title text, p_questions jsonb, p_presentation jsonb DEFAULT '{}'::jsonb, p_submission_cap integer DEFAULT NULL::integer, p_quarantine_rule_id uuid DEFAULT NULL::uuid, p_notify_rule_id uuid DEFAULT NULL::uuid, p_form_id uuid DEFAULT NULL::uuid, p_slug text DEFAULT NULL::text\", returns: \"uuid\", security: \"definer\" },\n { name: \"form_notify\", args: \"p_organization_id uuid, p_form_id uuid, p_record_id uuid, p_submission_id uuid\", returns: \"uuid\", security: \"invoker\" },\n { name: \"form_public\", args: \"p_form_id uuid\", returns: \"TABLE(form_id uuid, organization_id uuid, table_id uuid, title text, presentation jsonb, fields jsonb, honeypot_key text, state text, message text)\", security: \"definer\" },\n { name: \"form_slug\", args: \"p_organization_id uuid, p_title text, p_form_id uuid DEFAULT NULL::uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"form_submit\", args: \"p_form_id uuid, p_origin text, p_payload jsonb, p_bucket text, p_honeypot text DEFAULT NULL::text, p_client_key text DEFAULT NULL::text\", returns: \"TABLE(submission_id uuid, record_id uuid, state text, message text)\", security: \"definer\" },\n { name: \"forms\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(form_id uuid, table_id uuid, title text, slug text, published_at timestamp with time zone, closed_at timestamp with time zone, submission_cap integer, responses bigint, in_table bigint, held bigint, rejected bigint, state text, quarantine_rule_id uuid, notify_rule_id uuid, presentation jsonb)\", security: \"definer\" },\n { name: \"formula_value\", args: \"p_organization_id uuid, p_record_id uuid, p_field_data jsonb, p_values jsonb DEFAULT NULL::jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"freshness_verdict\", args: \"p_written_at timestamp with time zone, p_ceiling_seconds numeric\", returns: \"jsonb\", security: \"definer\" },\n { name: \"guard_refusals_are_complete\", args: \"\", returns: \"TABLE(guard text, said text)\", security: \"invoker\" },\n { name: \"has_visibility\", args: \"p_user_id uuid, p_type text, p_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level\", returns: \"boolean\", security: \"definer\" },\n { name: \"has_visibility_at\", args: \"p_user_id uuid, p_type text, p_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level, p_organization_id uuid DEFAULT NULL::uuid, p_min_version bigint DEFAULT NULL::bigint\", returns: \"boolean\", security: \"definer\" },\n { name: \"hidden_field_notice\", args: \"p_field custom.record, p_action text DEFAULT 'read'::text\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"history_actor\", args: \"p_tier text, p_document jsonb, p_actor_id uuid, p_people jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"history_changes\", args: \"p_organization_id uuid, p_table_id uuid, p_old jsonb, p_new jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"history_people\", args: \"p_organization_id uuid, p_ids uuid[]\", returns: \"jsonb\", security: \"definer\" },\n { name: \"history_prune\", args: \"p_organization_id uuid, p_scope text DEFAULT 'values'::text, p_table_id uuid DEFAULT NULL::uuid, p_dry_run boolean DEFAULT true\", returns: \"jsonb\", security: \"definer\" },\n { name: \"history_restore_body\", args: \"p_current jsonb, p_target jsonb, p_field_key text DEFAULT NULL::text\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"history_restore_body\", args: \"p_current jsonb, p_target jsonb, p_field_key text, p_author jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"history_retention\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"history_retention_floor_raise\", args: \"p_organization_id uuid, p_days integer\", returns: \"integer\", security: \"definer\" },\n { name: \"history_retention_set\", args: \"p_organization_id uuid, p_table_id uuid, p_days integer\", returns: \"integer\", security: \"definer\" },\n { name: \"home_add\", args: \"p_organization_id uuid, p_table_id uuid, p_home_record_id uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"home_relations\", args: \"\", returns: \"TABLE(table_id uuid, home_record_id uuid, organization_id uuid, relation_id uuid)\", security: \"invoker\" },\n { name: \"inbound_addresses\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"inbound_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_label text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"inbound_domain\", args: \"p_organization_id uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"inbound_mail_land\", args: \"p_address text, p_mail jsonb, p_secret text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"inbound_mail_map\", args: \"p_organization_id uuid, p_table_id uuid, p_mail jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"inbound_set\", args: \"p_organization_id uuid, p_inbound_id uuid, p_enabled boolean\", returns: \"jsonb\", security: \"definer\" },\n { name: \"index_payload\", args: \"p_organization_id uuid, p_table_id uuid, p_limit integer DEFAULT 1000\", returns: \"TABLE(id uuid, searchable text)\", security: \"invoker\" },\n { name: \"intern_provenance\", args: \"p_data jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"io_cell\", args: \"p_organization_id uuid, p_field jsonb, p_word text, p_date_order text DEFAULT 'mdy'::text\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"io_changed_field_ids\", args: \"p_organization_id uuid, p_table_id uuid, p_old jsonb, p_new jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"io_changed_keys\", args: \"p_old jsonb, p_new jsonb\", returns: \"text[]\", security: \"invoker\" },\n { name: \"io_comment_resolve\", args: \"p_organization_id uuid, p_comment_id uuid, p_resolved boolean DEFAULT true\", returns: \"boolean\", security: \"definer\" },\n { name: \"io_comment_write\", args: \"p_organization_id uuid, p_record_id uuid, p_body text, p_anchor jsonb DEFAULT '{}'::jsonb, p_parent_comment_id uuid DEFAULT NULL::uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"io_comments\", args: \"p_organization_id uuid, p_record_id uuid, p_include_resolved boolean DEFAULT false\", returns: \"TABLE(id uuid, body text, anchor jsonb, parent_comment_id uuid, created_by uuid, created_at timestamp with time zone, resolved_at timestamp with time zone, resolved_by uuid)\", security: \"definer\" },\n { name: \"io_csv_escape\", args: \"p_value text, p_delimiter text DEFAULT ','::text\", returns: \"text\", security: \"invoker\" },\n { name: \"io_csv_parse\", args: \"p_text text, p_delimiter text DEFAULT NULL::text\", returns: \"TABLE(row_number integer, cells text[])\", security: \"invoker\" },\n { name: \"io_export\", args: \"p_organization_id uuid, p_table_id uuid, p_columns text[] DEFAULT NULL::text[], p_limit integer DEFAULT 10000, p_required text DEFAULT 'viewer'::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"io_export_csv\", args: \"p_organization_id uuid, p_table_id uuid, p_columns text[] DEFAULT NULL::text[], p_limit integer DEFAULT 10000, p_delimiter text DEFAULT chr(44), p_required text DEFAULT 'viewer'::text\", returns: \"text\", security: \"definer\" },\n { name: \"io_import_begin\", args: \"p_organization_id uuid, p_table_id uuid, p_format text DEFAULT 'csv'::text, p_source_name text DEFAULT NULL::text, p_source_columns jsonb DEFAULT '[]'::jsonb, p_file_hash text DEFAULT NULL::text, p_policy jsonb DEFAULT '{}'::jsonb, p_dedupe_key text DEFAULT NULL::text, p_file_bytes bigint DEFAULT NULL::bigint, p_force boolean DEFAULT false\", returns: \"jsonb\", security: \"definer\" },\n { name: \"io_import_finish\", args: \"p_organization_id uuid, p_import_id uuid, p_unmapped text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"io_import_forget\", args: \"p_organization_id uuid, p_import_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"io_import_open\", args: \"p_organization_id uuid, p_table_id uuid, p_format text DEFAULT 'csv'::text, p_source_name text DEFAULT NULL::text, p_source_columns jsonb DEFAULT '[]'::jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"io_import_plan\", args: \"p_organization_id uuid, p_table_id uuid, p_columns jsonb DEFAULT '[]'::jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"io_import_report\", args: \"p_organization_id uuid, p_import_id uuid, p_state text DEFAULT NULL::text, p_limit integer DEFAULT 100, p_offset integer DEFAULT 0\", returns: \"jsonb\", security: \"definer\" },\n { name: \"io_import_rows\", args: \"p_organization_id uuid, p_import_id uuid, p_rows jsonb, p_mapping jsonb DEFAULT '{}'::jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"io_imports\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_limit integer DEFAULT 25\", returns: \"jsonb\", security: \"definer\" },\n { name: \"io_infer_column\", args: \"p_organization_id uuid, p_table_id uuid, p_header text, p_samples jsonb DEFAULT '[]'::jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"io_infer_type\", args: \"p_samples jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"io_money_unit\", args: \"p_word text\", returns: \"text\", security: \"invoker\" },\n { name: \"io_outbox_announce\", args: \"\", returns: \"trigger\", security: \"definer\" },\n { name: \"io_outbox_broadcast_stmt\", args: \"\", returns: \"trigger\", security: \"definer\" },\n { name: \"io_outbox_drain\", args: \"p_organization_id uuid, p_consumer text, p_limit integer DEFAULT 100, p_event_key text DEFAULT 'records.changed'::text\", returns: \"TABLE(outbox_id uuid, record_id uuid, table_id uuid, operation text, changed_field_ids jsonb, actor jsonb, occurred_at timestamp with time zone)\", security: \"definer\" },\n { name: \"io_outbox_release\", args: \"p_organization_id uuid, p_consumer text, p_older_than interval DEFAULT '00:15:00'::interval\", returns: \"integer\", security: \"definer\" },\n { name: \"io_proposal_accept\", args: \"p_organization_id uuid, p_import_id uuid, p_column text, p_type text DEFAULT NULL::text, p_label text DEFAULT NULL::text\", returns: \"uuid\", security: \"definer\" },\n { name: \"io_proposal_reject\", args: \"p_organization_id uuid, p_import_id uuid, p_column text\", returns: \"boolean\", security: \"definer\" },\n { name: \"io_proposal_spec\", args: \"p_proposal jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"io_record_changed\", args: \"\", returns: \"trigger\", security: \"definer\" },\n { name: \"io_record_changed_stmt_delete\", args: \"\", returns: \"trigger\", security: \"definer\" },\n { name: \"io_record_changed_stmt_insert\", args: \"\", returns: \"trigger\", security: \"definer\" },\n { name: \"io_record_changed_stmt_update\", args: \"\", returns: \"trigger\", security: \"definer\" },\n { name: \"io_relation_candidate\", args: \"p_organization_id uuid, p_table_id uuid, p_words text[]\", returns: \"uuid\", security: \"invoker\" },\n { name: \"io_restore\", args: \"p_organization_id uuid, p_record_id uuid, p_version integer\", returns: \"integer\", security: \"definer\" },\n { name: \"io_restore\", args: \"p_organization_id uuid, p_record_id uuid, p_version integer, p_author jsonb\", returns: \"integer\", security: \"definer\" },\n { name: \"io_revisions\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(version integer, changed_at timestamp with time zone, changed_by uuid, summary text, operation text, changed_fields jsonb)\", security: \"definer\" },\n { name: \"io_sample_words\", args: \"p_samples jsonb\", returns: \"TABLE(word text)\", security: \"invoker\" },\n { name: \"io_value_shape\", args: \"p_envelope jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"is_a_retirement\", args: \"p_old_deleted timestamp with time zone, p_new_deleted timestamp with time zone, p_old_data jsonb, p_new_data jsonb, p_old_table uuid, p_new_table uuid, p_old_org uuid, p_new_org uuid, p_old_class text, p_new_class text\", returns: \"boolean\", security: \"invoker\" },\n { name: \"ladder_replanners\", args: \"p_roots text[] DEFAULT ARRAY['custom.has_visibility'::text, 'custom.effective_level'::text, 'custom.reaches_directly'::text, 'custom.visible_set'::text]\", returns: \"TABLE(fn text, lang text, why text, remedy text)\", security: \"definer\" },\n { name: \"level_floor\", args: \"\", returns: \"permission_level\", security: \"definer\" },\n { name: \"levels_raised_by_a_less_specific_rung\", args: \"\", returns: \"TABLE(organization_id uuid, organization_name text, member_id uuid, member_email text, record_id uuid, addressed_level permission_level, answered_level permission_level)\", security: \"definer\" },\n { name: \"list_door_disagreements\", args: \"p_pretend text DEFAULT NULL::text, p_only_organization uuid DEFAULT NULL::uuid, p_sample integer DEFAULT 200\", returns: \"TABLE(organization_id uuid, organization_name text, member_id uuid, table_id uuid, record_id uuid, door text, why text)\", security: \"invoker\" },\n { name: \"list_door_disagreements\", args: \"p_pretend text, p_only_organization uuid, p_sample integer, p_exhaustive boolean\", returns: \"TABLE(organization_id uuid, organization_name text, member_id uuid, table_id uuid, record_id uuid, door text, why text)\", security: \"invoker\" },\n { name: \"lookup_value\", args: \"p_organization_id uuid, p_record_id uuid, p_field_data jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"mask_document\", args: \"p_document jsonb, p_visible_keys text[], p_notices jsonb, p_by_id boolean DEFAULT false, p_key_ids jsonb DEFAULT '{}'::jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"mask_document\", args: \"p_document jsonb, p_visible_keys text[], p_notices jsonb, p_by_id boolean DEFAULT false, p_key_ids jsonb DEFAULT '{}'::jsonb, p_declared_keys text[] DEFAULT NULL::text[]\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"mask_says_withheld\", args: \"p_mask jsonb, p_key text\", returns: \"boolean\", security: \"invoker\" },\n { name: \"may_invite_outside\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"merge_field_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"migrate_choice_keys\", args: \"p_organization_id uuid, p_table_id uuid, p_dry_run boolean DEFAULT false\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_delete\", args: \"p_organization_id uuid, p_record_id uuid, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_demote\", args: \"p_organization_id uuid, p_table_id uuid, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_extract_parent\", args: \"p_organization_id uuid, p_id uuid, p_parent_table_id uuid, p_moved_keys text[], p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_merge\", args: \"p_organization_id uuid, p_winner_id uuid, p_loser_id uuid, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_promote\", args: \"p_organization_id uuid, p_table_id uuid, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_purge\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_dry_run boolean DEFAULT true\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_reclass\", args: \"p_organization_id uuid, p_id uuid, p_to text DEFAULT 'field'::text, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_rename\", args: \"p_organization_id uuid, p_id uuid, p_to text, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_reparent\", args: \"p_organization_id uuid, p_id uuid, p_parent_id uuid, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_retype\", args: \"p_organization_id uuid, p_id uuid, p_to text, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_split\", args: \"p_organization_id uuid, p_record_id uuid, p_moved_keys text[], p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_undo\", args: \"p_organization_id uuid, p_log_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrations\", args: \"p_organization_id uuid, p_target_id uuid DEFAULT NULL::uuid, p_limit integer DEFAULT 100\", returns: \"TABLE(id uuid, verb text, target_kind text, target_id uuid, note text, applied_at timestamp with time zone, applied_by uuid, undone_at timestamp with time zone)\", security: \"definer\" },\n { name: \"mirror_asks_the_whole_database\", args: \"\", returns: \"TABLE(schema_name text, table_name text, policy_name text, why text)\", security: \"invoker\" },\n { name: \"my_level\", args: \"p_organization_id uuid, p_id uuid, p_type text DEFAULT 'record'::text\", returns: \"permission_level\", security: \"definer\" },\n { name: \"my_levels\", args: \"p_organization_id uuid, p_ids jsonb, p_type text DEFAULT 'record'::text\", returns: \"TABLE(id uuid, level permission_level)\", security: \"definer\" },\n { name: \"organization_clear\", args: \"p_organization_id uuid, p_confirm text, p_and_destroy boolean DEFAULT false\", returns: \"jsonb\", security: \"definer\" },\n { name: \"organization_contents\", args: \"p_organization_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"organization_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"organization_references\", args: \"p_kind text, p_organization_id uuid, p_row jsonb\", returns: \"TABLE(site text, what text, ref_id uuid, openable boolean)\", security: \"invoker\" },\n { name: \"owning_table\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"uuid\", security: \"invoker\" },\n { name: \"owning_table_gone\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"boolean\", security: \"invoker\" },\n { name: \"page_ceiling\", args: \"p_organization_id uuid DEFAULT NULL::uuid\", returns: \"integer\", security: \"invoker\" },\n { name: \"page_contract\", args: \"p_organization_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"page_size\", args: \"p_organization_id uuid, p_door text, p_limit integer, p_default integer DEFAULT NULL::integer, p_ceiling integer DEFAULT NULL::integer\", returns: \"integer\", security: \"invoker\" },\n { name: \"parity_field_types\", args: \"\", returns: \"TABLE(parity_type text, behavior text, made_of text)\", security: \"invoker\" },\n { name: \"parity_type\", args: \"p_field_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"parity_values\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(field_key text, field_id uuid, parity_type text, behavior text, unit text, format text, value jsonb, value_version integer, actor text, written_at timestamp with time zone)\", security: \"invoker\" },\n { name: \"per_value_access_words\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"person_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"phone_canonical\", args: \"p_text text\", returns: \"text\", security: \"invoker\" },\n { name: \"phone_display\", args: \"p_text text\", returns: \"text\", security: \"invoker\" },\n { name: \"phone_pattern\", args: \"\", returns: \"text\", security: \"invoker\" },\n { name: \"pin_agent_cells\", args: \"p_new jsonb, p_old jsonb, p_agent_keys text[]\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"pipeline_board\", args: \"p_organization_id uuid, p_table_id uuid, p_measure text DEFAULT NULL::text\", returns: \"TABLE(stage_key text, stage_label text, stage_position integer, cards bigint, total numeric, wip_limit integer, over_limit boolean)\", security: \"definer\" },\n { name: \"pipeline_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_spec jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"pipeline_gate_preview\", args: \"p_organization_id uuid, p_table_id uuid, p_stage text, p_gate jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"pipeline_move\", args: \"p_organization_id uuid, p_record_id uuid, p_to text, p_also jsonb DEFAULT '{}'::jsonb, p_expected_version integer DEFAULT NULL::integer\", returns: \"jsonb\", security: \"definer\" },\n { name: \"pipeline_pending\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"pipeline_read\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"pipeline_transition_refusal\", args: \"p_organization_id uuid, p_record_id uuid, p_to text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"portal_admits\", args: \"p_organization_id uuid, p_user_id uuid DEFAULT NULL::uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"portal_card\", args: \"p_organization_id uuid, p_portal_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"portal_declare\", args: \"p_organization_id uuid, p_title text, p_client_table_id uuid, p_tables jsonb, p_portal_id uuid DEFAULT NULL::uuid, p_slug text DEFAULT NULL::text, p_sign_in_method text DEFAULT 'magic_link'::text\", returns: \"uuid\", security: \"definer\" },\n { name: \"portal_field_map\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"TABLE(field_id uuid, field_key text, field_type text, points_at uuid)\", security: \"definer\" },\n { name: \"portal_invitation\", args: \"p_slug text, p_email text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"portal_invite\", args: \"p_organization_id uuid, p_portal_id uuid, p_client_record_id uuid, p_email text, p_user_id uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"portal_me\", args: \"\", returns: \"jsonb\", security: \"definer\" },\n { name: \"portal_preview\", args: \"p_organization_id uuid, p_portal_id uuid, p_principal_id uuid, p_table_id uuid\", returns: \"TABLE(record_id uuid, title text)\", security: \"definer\" },\n { name: \"portal_principal_bind\", args: \"p_organization_id uuid, p_principal_id uuid, p_user_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"portal_public\", args: \"p_slug text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"portal_record_title\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"text\", security: \"definer\" },\n { name: \"portal_revoke\", args: \"p_organization_id uuid, p_portal_id uuid, p_principal_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"portal_slug\", args: \"p_organization_id uuid, p_title text, p_portal_id uuid DEFAULT NULL::uuid\", returns: \"text\", security: \"definer\" },\n { name: \"portal_tables\", args: \"p_organization_id uuid\", returns: \"TABLE(portal_id uuid, table_id uuid, name text)\", security: \"definer\" },\n { name: \"portals\", args: \"p_organization_id uuid\", returns: \"TABLE(portal_id uuid, title text, slug text, client_table_id uuid, client_table text, is_active boolean, tables integer, invited integer, signed_in integer, sign_in_method text, opened_at timestamp with time zone)\", security: \"definer\" },\n { name: \"presentation_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"promote_field\", args: \"p_organization_id uuid, p_table_id uuid, p_field_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"promote_table\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"promoted_field_cap\", args: \"\", returns: \"integer\", security: \"invoker\" },\n { name: \"promoted_fields\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"TABLE(field_id uuid, field_key text, parity_type text, is_unique boolean, value_path text, index_arm text, index_expr text, index_name text, indexable boolean, why_not text)\", security: \"invoker\" },\n { name: \"promoted_index_arm\", args: \"p_field_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"promoted_index_ddl\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"TABLE(step integer, purpose text, statement text)\", security: \"invoker\" },\n { name: \"promoted_index_expr\", args: \"p_field_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"promoted_index_name\", args: \"p_table_id uuid, p_field_key text, p_unique boolean\", returns: \"text\", security: \"invoker\" },\n { name: \"promoted_query_sql\", args: \"p_organization_id uuid, p_table_id uuid, p_field_key text\", returns: \"text\", security: \"invoker\" },\n { name: \"promoted_read\", args: \"p_organization_id uuid, p_table_id uuid, p_field_key text, p_value text\", returns: \"SETOF uuid\", security: \"invoker\" },\n { name: \"promoted_value_path\", args: \"p_field_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"promotion_inline_ceiling\", args: \"\", returns: \"integer\", security: \"invoker\" },\n { name: \"provenance_prune\", args: \"p_organization_id uuid DEFAULT NULL::uuid, p_dry_run boolean DEFAULT true, p_limit integer DEFAULT 200000\", returns: \"jsonb\", security: \"definer\" },\n { name: \"provenance_retention_days\", args: \"p_organization_id uuid\", returns: \"integer\", security: \"definer\" },\n { name: \"provenance_write\", args: \"p_organization_id uuid, p_conversation_id uuid, p_turn_id text, p_rows jsonb\", returns: \"integer\", security: \"definer\" },\n { name: \"query_access_ids\", args: \"p_organization_id uuid, p_required text DEFAULT 'viewer'::text\", returns: \"uuid[]\", security: \"invoker\" },\n { name: \"query_across_homes\", args: \"p_organization_id uuid, p_table_id uuid, p_limit integer DEFAULT 50, p_offset integer DEFAULT 0, p_required text DEFAULT 'viewer'::text\", returns: \"TABLE(record_id uuid, home_record_id uuid, data jsonb, created_at timestamp with time zone)\", security: \"definer\" },\n { name: \"query_by_coordinates\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_coordinates jsonb DEFAULT '[]'::jsonb, p_limit integer DEFAULT 50, p_offset integer DEFAULT 0, p_required text DEFAULT 'viewer'::text\", returns: \"TABLE(record_id uuid, table_id uuid, data jsonb, coordinates_matched integer)\", security: \"definer\" },\n { name: \"query_can_see\", args: \"p_organization_id uuid, p_record_id uuid, p_required text DEFAULT 'viewer'::text\", returns: \"boolean\", security: \"definer\" },\n { name: \"query_hot_paths\", args: \"\", returns: \"TABLE(name text, statement text)\", security: \"invoker\" },\n { name: \"query_hot_paths_prepared\", args: \"\", returns: \"TABLE(name text, prepared boolean, generic_plans bigint)\", security: \"invoker\" },\n { name: \"query_is_store_owner\", args: \"\", returns: \"boolean\", security: \"invoker\" },\n { name: \"query_prepare_hot\", args: \"\", returns: \"integer\", security: \"invoker\" },\n { name: \"query_principal\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"query_record_as_of\", args: \"p_organization_id uuid, p_record_id uuid, p_recorded_at timestamp with time zone DEFAULT NULL::timestamp with time zone, p_world_on date DEFAULT NULL::date, p_required text DEFAULT 'viewer'::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"query_relation_edges\", args: \"p_organization_id uuid, p_flavor text DEFAULT NULL::text, p_role text DEFAULT NULL::text\", returns: \"TABLE(parent_id uuid, child_id uuid, role text, flavor text)\", security: \"definer\" },\n { name: \"query_rollup\", args: \"p_organization_id uuid, p_roots uuid[], p_flavor text DEFAULT NULL::text, p_role text DEFAULT NULL::text, p_max_depth integer DEFAULT 33, p_required text DEFAULT 'viewer'::text\", returns: \"TABLE(record_id uuid, depth integer)\", security: \"definer\" },\n { name: \"query_rollup_sum\", args: \"p_organization_id uuid, p_roots uuid[], p_field_key text, p_flavor text DEFAULT NULL::text, p_role text DEFAULT NULL::text, p_max_depth integer DEFAULT 33, p_required text DEFAULT 'viewer'::text\", returns: \"numeric\", security: \"definer\" },\n { name: \"query_table_as_of\", args: \"p_organization_id uuid, p_table_id uuid, p_recorded_at timestamp with time zone DEFAULT NULL::timestamp with time zone, p_world_on date DEFAULT NULL::date, p_limit integer DEFAULT 50, p_offset integer DEFAULT 0, p_required text DEFAULT 'viewer'::text\", returns: \"TABLE(record_id uuid, data jsonb)\", security: \"definer\" },\n { name: \"query_table_homes\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"SETOF uuid\", security: \"definer\" },\n { name: \"query_visibility_parity\", args: \"p_organization_id uuid\", returns: \"TABLE(side text, container_type text, container_id uuid, item_type text, item_id uuid, stored_level permission_level, derived_level permission_level, reason text)\", security: \"definer\" },\n { name: \"query_visible_ids\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_required text DEFAULT 'viewer'::text\", returns: \"SETOF uuid\", security: \"definer\" },\n { name: \"reachable_from\", args: \"p_organization_id uuid, p_roots uuid[]\", returns: \"TABLE(record_id uuid, depth integer, via text)\", security: \"invoker\" },\n { name: \"reaches_directly\", args: \"p_user_id uuid, p_type text, p_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level\", returns: \"boolean\", security: \"definer\" },\n { name: \"read_door_carried_ids\", args: \"p_user uuid, p_organization_id uuid, p_table_id uuid, p_required permission_level, OUT o_ids uuid[], OUT o_containers integer\", returns: \"record\", security: \"definer\" },\n { name: \"read_door_granted_ids\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"uuid[]\", security: \"definer\" },\n { name: \"read_door_ladder_ceiling\", args: \"\", returns: \"integer\", security: \"invoker\" },\n { name: \"read_door_parity\", args: \"p_organization_id uuid, p_table_id uuid, p_user uuid, p_required permission_level, p_sample integer\", returns: \"TABLE(record_id uuid, set_based boolean, per_row boolean, verdict text)\", security: \"definer\" },\n { name: \"read_mask\", args: \"p_organization_id uuid, p_record_id uuid, p_action text DEFAULT 'read'::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"read_paths_outside_the_door\", args: \"\", returns: \"TABLE(object_name text, why text)\", security: \"invoker\" },\n { name: \"read_record\", args: \"p_organization_id uuid, p_record_id uuid, p_by_id boolean DEFAULT false\", returns: \"jsonb\", security: \"definer\" },\n { name: \"read_records\", args: \"p_organization_id uuid, p_table_id uuid, p_by_id boolean DEFAULT false, p_limit integer DEFAULT 200, p_offset integer DEFAULT 0\", returns: \"TABLE(id uuid, document jsonb, level permission_level)\", security: \"definer\" },\n { name: \"read_records_by_ids\", args: \"p_organization_id uuid, p_table_id uuid, p_record_ids uuid[], p_by_id boolean DEFAULT false\", returns: \"TABLE(id uuid, document jsonb, level permission_level)\", security: \"definer\" },\n { name: \"realtime_topic_admits\", args: \"p_topic text\", returns: \"boolean\", security: \"definer\" },\n { name: \"record_aggregate\", args: \"p_organization_id uuid, p_table_id uuid, p_group_by jsonb DEFAULT '[]'::jsonb, p_measures jsonb DEFAULT '[]'::jsonb, p_bucket jsonb DEFAULT NULL::jsonb, p_filter jsonb DEFAULT '{}'::jsonb, p_limit integer DEFAULT 200, p_required text DEFAULT 'viewer'::text\", returns: \"TABLE(groups jsonb, measures jsonb, row_count bigint)\", security: \"definer\" },\n { name: \"record_applicability\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(rule_id uuid, rule_name text, rule_version integer, applies boolean, answer jsonb)\", security: \"invoker\" },\n { name: \"record_as_of\", args: \"p_organization_id uuid, p_record_id uuid, p_at timestamp with time zone\", returns: \"TABLE(state jsonb, replayed boolean)\", security: \"definer\" },\n { name: \"record_card\", args: \"p_viewer uuid, p_organization_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"record_carrying_edges\", args: \"p_id uuid, p_data_class text, p_data jsonb, p_deleted_at timestamp with time zone\", returns: \"TABLE(container_id uuid, item_id uuid, edge_role text)\", security: \"invoker\" },\n { name: \"record_delete\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"timestamp with time zone\", security: \"definer\" },\n { name: \"record_history\", args: \"p_organization_id uuid, p_record_id uuid, p_limit integer DEFAULT 200, p_offset integer DEFAULT 0\", returns: \"TABLE(version integer, occurred_at timestamp with time zone, operation text, operation_label text, actor jsonb, changes jsonb, migration_id uuid, undoable boolean)\", security: \"definer\" },\n { name: \"record_platform_keys\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"record_relation_edges\", args: \"p_organization_id uuid, p_id uuid, p_table_id uuid, p_data_class text, p_data jsonb, p_deleted_at timestamp with time zone\", returns: \"TABLE(target_id uuid, edge_role text, field_id uuid, ord integer)\", security: \"invoker\" },\n { name: \"record_reparent\", args: \"p_organization_id uuid, p_record_id uuid, p_parent_id uuid\", returns: \"void\", security: \"definer\" },\n { name: \"record_resolve\", args: \"p_organization_id uuid, p_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"record_restore\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"void\", security: \"definer\" },\n { name: \"record_restore_preview\", args: \"p_organization_id uuid, p_record_id uuid, p_version integer, p_field_key text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"record_restore_version\", args: \"p_organization_id uuid, p_record_id uuid, p_version integer\", returns: \"jsonb\", security: \"definer\" },\n { name: \"record_restore_version\", args: \"p_organization_id uuid, p_record_id uuid, p_version integer, p_author jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"record_scope_context\", args: \"p_organization_id uuid, p_record_id uuid, p_relations integer DEFAULT 12, p_history integer DEFAULT 15, p_siblings integer DEFAULT 8\", returns: \"jsonb\", security: \"definer\" },\n { name: \"record_stage_pending\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"record_state_as_of\", args: \"p_record_id uuid, p_at timestamp with time zone\", returns: \"TABLE(state jsonb, replayed boolean)\", security: \"definer\" },\n { name: \"record_table\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"record_update\", args: \"p_organization_id uuid, p_record_id uuid, p_patch jsonb, p_expected_version integer DEFAULT NULL::integer\", returns: \"integer\", security: \"definer\" },\n { name: \"record_values\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"record_values_of\", args: \"p_row custom.record\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"record_values_versioned\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(field_key text, field_id uuid, value jsonb, value_version integer, source jsonb, absent_reason text, actor text, on_behalf_of text, written_at timestamp with time zone, alternates jsonb)\", security: \"definer\" },\n { name: \"record_words\", args: \"p_organization_id uuid, p_record_id uuid, p_noun text DEFAULT NULL::text\", returns: \"text\", security: \"definer\" },\n { name: \"record_write\", args: \"p_organization_id uuid, p_table_id uuid, p_data jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"record_write_many\", args: \"p_organization_id uuid, p_table_id uuid, p_rows jsonb[], p_ids uuid[] DEFAULT NULL::uuid[]\", returns: \"uuid[]\", security: \"definer\" },\n { name: \"refusals_claiming_a_level_never_asked\", args: \"\", returns: \"TABLE(function_name text, identity_args text, why text)\", security: \"invoker\" },\n { name: \"relation_carry\", args: \"p_organization_id uuid, p_container_id uuid, p_item_id uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"relation_edges_withdraw\", args: \"p_organization_id uuid, p_field_ids uuid[], p_why text\", returns: \"integer\", security: \"definer\" },\n { name: \"relation_own\", args: \"p_organization_id uuid, p_owner_id uuid, p_target_id uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"relation_target_card\", args: \"p_organization_id uuid, p_record_id uuid, p_via_key text DEFAULT NULL::text\", returns: \"TABLE(target_id uuid, target_organization_id uuid, is_foreign boolean, masked boolean, reader_level permission_level, card jsonb, why text)\", security: \"definer\" },\n { name: \"relation_target_external\", args: \"p_connection_token text, p_external_table text, p_external_key text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"relation_target_ours\", args: \"p_entity_token text, p_row_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"relation_targets\", args: \"p_organization_id uuid, p_record_id uuid, p_via_key text\", returns: \"SETOF uuid\", security: \"definer\" },\n { name: \"relation_uncarry\", args: \"p_organization_id uuid, p_container_id uuid, p_item_id uuid\", returns: \"integer\", security: \"definer\" },\n { name: \"relation_words\", args: \"p_organization_id uuid, p_field_id uuid, p_value text\", returns: \"text\", security: \"definer\" },\n { name: \"relation_words_many\", args: \"p_organization_id uuid, p_field_id uuid, p_record_ids uuid[]\", returns: \"TABLE(record_id uuid, words text)\", security: \"definer\" },\n { name: \"reopen_declared_doors\", args: \"\", returns: \"TABLE(reopened text)\", security: \"definer\" },\n { name: \"required_epoch\", args: \"p_container_type text, p_container_id uuid, p_item_type text, p_item_id uuid\", returns: \"bigint\", security: \"definer\" },\n { name: \"resolve_first_match\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"resolve_id\", args: \"p_organization_id uuid, p_id uuid\", returns: \"uuid\", security: \"invoker\" },\n { name: \"retired_actor_words\", args: \"\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"rollup_value\", args: \"p_organization_id uuid, p_record_id uuid, p_field_data jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"rule_applies\", args: \"p_organization_id uuid, p_rule_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"rule_context\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"rule_declare\", args: \"p_organization_id uuid, p_spec jsonb, p_rule_id uuid DEFAULT NULL::uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"rule_dependency_edges\", args: \"p_organization_id uuid, p_row custom.record DEFAULT NULL::custom.record\", returns: \"TABLE(needs text, needed text)\", security: \"invoker\" },\n { name: \"rule_eval\", args: \"p_organization_id uuid, p_expr jsonb, p_values jsonb, p_context jsonb DEFAULT '{}'::jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"rule_field_key\", args: \"p_organization_id uuid, p_field_id uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"rule_field_label\", args: \"p_organization_id uuid, p_field_id uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"rule_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"rule_members\", args: \"p_organization_id uuid, p_rule_id uuid\", returns: \"SETOF custom.record\", security: \"invoker\" },\n { name: \"rule_membership\", args: \"p_organization_id uuid, p_rule_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"rule_node_kinds\", args: \"\", returns: \"TABLE(node text, evaluated_by text, note text)\", security: \"invoker\" },\n { name: \"rule_run\", args: \"p_organization_id uuid, p_rule_id uuid, p_values jsonb, p_context jsonb DEFAULT '{}'::jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"rule_truth\", args: \"p_answer jsonb\", returns: \"boolean\", security: \"invoker\" },\n { name: \"rule_uses\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"rule_version\", args: \"p_organization_id uuid, p_rule_id uuid\", returns: \"integer\", security: \"invoker\" },\n { name: \"said\", args: \"p_value text, p_when_there_is_none text\", returns: \"text\", security: \"invoker\" },\n { name: \"share_access\", args: \"p_organization_id uuid, p_subject_id uuid\", returns: \"TABLE(principal_kind text, principal_id uuid, principal_label text, level permission_level, reason text, reason_detail text, via_type text, via_id uuid, revocable boolean)\", security: \"definer\" },\n { name: \"share_grant\", args: \"p_organization_id uuid, p_subject_id uuid, p_principal_kind text, p_principal_id uuid, p_level permission_level DEFAULT 'viewer'::permission_level\", returns: \"jsonb\", security: \"definer\" },\n { name: \"share_lane_set\", args: \"p_organization_id uuid, p_subject_id uuid, p_choice text, p_level permission_level DEFAULT NULL::permission_level\", returns: \"jsonb\", security: \"definer\" },\n { name: \"share_lanes\", args: \"\", returns: \"TABLE(choice text, lane text, discoverable boolean, label text, means text)\", security: \"definer\" },\n { name: \"share_levels\", args: \"\", returns: \"TABLE(level permission_level, ordinal integer, label text, means text)\", security: \"definer\" },\n { name: \"share_people\", args: \"p_organization_id uuid, p_subject_id uuid DEFAULT NULL::uuid, p_query text DEFAULT NULL::text, p_limit integer DEFAULT 25\", returns: \"TABLE(user_id uuid, email text, display_name text, membership text, already_at permission_level, already_why text)\", security: \"definer\" },\n { name: \"share_revoke\", args: \"p_organization_id uuid, p_subject_id uuid, p_principal_kind text, p_principal_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"share_subject_name\", args: \"p_organization_id uuid, p_type text, p_id uuid\", returns: \"text\", security: \"definer\" },\n { name: \"shared_only_disagreements\", args: \"p_pretend text DEFAULT NULL::text\", returns: \"TABLE(organization_id uuid, organization_name text, member_id uuid, record_id uuid, table_id uuid, ladder boolean, read_door boolean, rls_mirror boolean, why text)\", security: \"invoker\" },\n { name: \"sign_request_cancel\", args: \"p_organization_id uuid, p_request_id uuid, p_reason text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"sign_request_create\", args: \"p_organization_id uuid, p_render_id uuid, p_field_key text, p_signer_email text, p_signer_name text, p_expires_in interval DEFAULT '14 days'::interval\", returns: \"jsonb\", security: \"definer\" },\n { name: \"sign_request_decline\", args: \"p_token text, p_reason text DEFAULT NULL::text, p_ip text DEFAULT NULL::text, p_user_agent text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"sign_request_public\", args: \"p_token text, p_origin text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"sign_request_remind\", args: \"p_organization_id uuid, p_request_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"sign_request_sentence\", args: \"p_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"sign_request_sign\", args: \"p_token text, p_signed_name text, p_mark text, p_image text DEFAULT NULL::text, p_ip text DEFAULT NULL::text, p_user_agent text DEFAULT NULL::text, p_origin text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"sign_request_state\", args: \"p_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"sign_request_unchanged\", args: \"p_organization_id uuid, p_request_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"sign_requests\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(request_id uuid, render_id uuid, record_id uuid, field_key text, document_title text, signer_name text, signer_email text, signer_has_account boolean, state text, sentence text, document_version integer, document_hash text, sent_at timestamp with time zone, expires_at timestamp with time zone, viewed_at timestamp with time zone, signed_at timestamp with time zone, declined_at timestamp with time zone, invalidated_at timestamp with time zone, signature_id uuid, signature_mark text, reminder_count integer)\", security: \"definer\" },\n { name: \"sign_token_decode\", args: \"p_token text\", returns: \"bytea\", security: \"invoker\" },\n { name: \"sign_token_encode\", args: \"p_bytes bytea\", returns: \"text\", security: \"invoker\" },\n { name: \"silent_page_doors\", args: \"\", returns: \"TABLE(door text, why text)\", security: \"definer\" },\n { name: \"size_refusal\", args: \"p_organization_id uuid, p_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"source_next_pointer\", args: \"p_sources jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"source_pointer\", args: \"p_sources jsonb, p_source jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"stage_rule_enforcement\", args: \"p_organization_id uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"stage_rule_on_fail_kinds\", args: \"\", returns: \"TABLE(behaviour text, note text)\", security: \"invoker\" },\n { name: \"stamp_value_envelopes\", args: \"p_data jsonb, p_actor text, p_on_behalf_of text, p_at timestamp with time zone\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"storage_modes\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"store_is_open\", args: \"p_organization_id uuid DEFAULT NULL::uuid\", returns: \"boolean\", security: \"invoker\" },\n { name: \"subscription_cadences\", args: \"p_organization_id uuid\", returns: \"text[]\", security: \"definer\" },\n { name: \"subscription_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_spec jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"subscription_mute\", args: \"p_organization_id uuid, p_rule_id uuid, p_muted boolean DEFAULT true\", returns: \"boolean\", security: \"definer\" },\n { name: \"subscription_preview\", args: \"p_organization_id uuid, p_rule_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"subscriptions\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(rule_id uuid, name text, table_id uuid, saved_view_id uuid, cadence text, schedule text, quiet_hours jsonb, channel text, recipient_user_id uuid, event_key text, muted boolean, mine boolean, i_may_mute boolean, last_sent_at timestamp with time zone, next_digest_at timestamp with time zone)\", security: \"definer\" },\n { name: \"table_capacity\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"table_carries_its_rows\", args: \"p_user_id uuid, p_table_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level\", returns: \"boolean\", security: \"definer\" },\n { name: \"table_column_source\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"table_contents\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"TABLE(record_id uuid, kind text, goes_at integer)\", security: \"invoker\" },\n { name: \"table_declare\", args: \"p_organization_id uuid, p_spec jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"table_has_a_visible_record\", args: \"p_user uuid, p_organization_id uuid, p_table_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"table_is_live\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"boolean\", security: \"invoker\" },\n { name: \"table_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"table_record_ceiling\", args: \"\", returns: \"integer\", security: \"invoker\" },\n { name: \"table_record_ceiling\", args: \"p_organization_id uuid\", returns: \"integer\", security: \"invoker\" },\n { name: \"table_rules\", args: \"p_organization_id uuid, p_table_id uuid, p_use text, p_record_type text DEFAULT NULL::text\", returns: \"SETOF custom.record\", security: \"invoker\" },\n { name: \"table_share_outside\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"table_share_outside_accept\", args: \"p_token text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"table_share_outside_for_me\", args: \"\", returns: \"TABLE(invitation_id uuid, organization_id uuid, organization text, table_id uuid, table_name text, level text, level_label text, token text, expires_at timestamp with time zone, say text)\", security: \"definer\" },\n { name: \"table_share_outside_invite\", args: \"p_organization_id uuid, p_table_id uuid, p_email text, p_level permission_level DEFAULT 'viewer'::permission_level\", returns: \"jsonb\", security: \"definer\" },\n { name: \"table_share_outside_resend\", args: \"p_organization_id uuid, p_invitation_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"table_share_outside_revoke\", args: \"p_organization_id uuid, p_invitation_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"table_stage_field\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"text\", security: \"definer\" },\n { name: \"table_storage\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"table_type_field\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"text\", security: \"definer\" },\n { name: \"tables_at_home\", args: \"p_organization_id uuid, p_home_ids uuid[]\", returns: \"TABLE(table_id uuid, home_record_id uuid, kind text)\", security: \"definer\" },\n { name: \"tables_described_without_asking\", args: \"\", returns: \"TABLE(function_name text, identity_args text, why text)\", security: \"invoker\" },\n { name: \"trg_associations_bump_visibility\", args: \"\", returns: \"trigger\", security: \"definer\" },\n { name: \"undeclared_keys\", args: \"p_organization_id uuid, p_table_id uuid, p_data jsonb\", returns: \"text[]\", security: \"invoker\" },\n { name: \"validate_custom_fields\", args: \"p_token text, p_organization_id uuid, p_values jsonb\", returns: \"void\", security: \"invoker\" },\n { name: \"validate_value_envelope\", args: \"p_organization_id uuid, p_fields custom.record[], p_data jsonb\", returns: \"void\", security: \"invoker\" },\n { name: \"validate_values\", args: \"p_organization_id uuid, p_fields custom.record[], p_values jsonb, p_record_type text DEFAULT NULL::text\", returns: \"void\", security: \"invoker\" },\n { name: \"value_alternate_keys\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"value_envelope_keys\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"value_envelope_ok\", args: \"p_data jsonb\", returns: \"boolean\", security: \"invoker\" },\n { name: \"value_envelope_refusal\", args: \"p_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"value_read\", args: \"p_organization_id uuid, p_record_id uuid, p_key text\", returns: \"TABLE(field_key text, field_id uuid, value jsonb, value_version integer, source jsonb, absent_reason text, actor text, on_behalf_of text, written_at timestamp with time zone, alternates jsonb)\", security: \"definer\" },\n { name: \"value_restore\", args: \"p_organization_id uuid, p_record_id uuid, p_field_key text, p_version integer\", returns: \"jsonb\", security: \"definer\" },\n { name: \"value_restore\", args: \"p_organization_id uuid, p_record_id uuid, p_field_key text, p_version integer, p_author jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"value_versions\", args: \"p_old jsonb, p_new jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"view_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_spec jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"views\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(view_id uuid, name text, table_id uuid, filters jsonb, definition jsonb, created_at timestamp with time zone)\", security: \"definer\" },\n { name: \"visibility_ancestors\", args: \"p_item_type text, p_item_id uuid\", returns: \"TABLE(container_type text, container_id uuid, depth integer, max_level permission_level)\", security: \"definer\" },\n { name: \"visibility_as_of\", args: \"p_organization_id uuid, p_record_id uuid, p_at timestamp with time zone\", returns: \"TABLE(principal_kind text, principal_id uuid, level permission_level, through_kind text, through_id uuid, reason text, replayed boolean, held_from timestamp with time zone, held_to timestamp with time zone)\", security: \"definer\" },\n { name: \"visibility_cache_rebuild\", args: \"\", returns: \"integer\", security: \"definer\" },\n { name: \"visibility_parity\", args: \"\", returns: \"TABLE(side text, container_type text, container_id uuid, item_type text, item_id uuid, stored_level permission_level, derived_level permission_level, reason text)\", security: \"definer\" },\n { name: \"visibility_warm\", args: \"p_container_type text, p_container_id uuid\", returns: \"integer\", security: \"definer\" },\n { name: \"visible_predicate_sql\", args: \"p_user uuid, p_organization_id uuid, p_table_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level, p_alias text DEFAULT 'r'::text\", returns: \"text\", security: \"definer\" },\n { name: \"visible_record_ids\", args: \"p_user_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level\", returns: \"TABLE(id uuid)\", security: \"definer\" },\n { name: \"visible_set\", args: \"p_user uuid, p_organization_id uuid, p_table_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level, OUT o_all_visible boolean, OUT o_true_visibility platform.visibility[], OUT o_granted_all uuid[], OUT o_granted_visible uuid[], OUT o_carried_visible uuid[], OUT o_ladder_calls integer, OUT o_fallback boolean, OUT o_note text\", returns: \"record\", security: \"definer\" },\n { name: \"widget_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"withheld_marker\", args: \"p_mask jsonb, p_key text\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"withheld_sentence\", args: \"p_mask jsonb, p_key text\", returns: \"text\", security: \"invoker\" },\n { name: \"work_approval_approvers\", args: \"p_organization_id uuid, p_subject_id uuid, p_approver_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(user_id uuid, name text, why text)\", security: \"definer\" },\n { name: \"work_approval_decide\", args: \"p_organization_id uuid, p_approval_id uuid, p_approve boolean, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_approval_kinds\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"work_approval_may_decide\", args: \"p_organization_id uuid, p_approval_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"work_approval_read\", args: \"p_organization_id uuid, p_approval_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_approval_request\", args: \"p_organization_id uuid, p_subject_id uuid, p_change jsonb, p_note text DEFAULT NULL::text, p_approver_id uuid DEFAULT NULL::uuid, p_origin text DEFAULT 'person'::text, p_conversation_id uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_assign\", args: \"p_organization_id uuid, p_record_id uuid, p_assignee_user_id uuid, p_due_date timestamp with time zone DEFAULT NULL::timestamp with time zone, p_clear_due boolean DEFAULT false\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_assignment_fields\", args: \"p_options_table_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(key text, label text, spec jsonb)\", security: \"invoker\" },\n { name: \"work_has_assignment\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"work_inbox\", args: \"p_organization_id uuid, p_limit integer DEFAULT 50, p_offset integer DEFAULT 0, p_include_decided boolean DEFAULT false\", returns: \"TABLE(item_id uuid, kind text, origin text, title text, subject_id uuid, subject_kind text, summary text, state text, due_on timestamp with time zone, due_state text, actionable boolean, requested_by uuid, requested_by_name text, at timestamp with time zone)\", security: \"definer\" },\n { name: \"work_instantiation_shape\", args: \"p_organization_id uuid, p_instantiation_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_list\", args: \"p_organization_id uuid, p_flavour text DEFAULT 'mine'::text, p_include_finished boolean DEFAULT false, p_limit integer DEFAULT 100, p_offset integer DEFAULT 0\", returns: \"TABLE(record_id uuid, table_id uuid, table_name text, title text, assignee_id uuid, assignee_name text, assignee_user_id uuid, due_on timestamp with time zone, due_state text, status text, terminal boolean, assigned_by uuid, updated_at timestamp with time zone)\", security: \"definer\" },\n { name: \"work_person\", args: \"p_organization_id uuid, p_user_id uuid, p_create boolean DEFAULT true\", returns: \"uuid\", security: \"definer\" },\n { name: \"work_record_states\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(state_id uuid, name text, sort integer, terminal boolean, is_current boolean, allowed boolean, refusal text)\", security: \"definer\" },\n { name: \"work_relation_kinds\", args: \"\", returns: \"TABLE(kind text, available boolean, why text)\", security: \"invoker\" },\n { name: \"work_set_state\", args: \"p_organization_id uuid, p_record_id uuid, p_state_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_slot_expire\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"integer\", security: \"definer\" },\n { name: \"work_slot_hold\", args: \"p_organization_id uuid, p_table_id uuid, p_slot_key text, p_holder text, p_ttl interval DEFAULT '00:15:00'::interval\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_slot_holds\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"TABLE(hold_id uuid, slot_key text, holder text, expires_at timestamp with time zone, expired boolean)\", security: \"definer\" },\n { name: \"work_slot_index_name\", args: \"p_table_id uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"work_slot_release\", args: \"p_organization_id uuid, p_hold_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"work_slots_declare\", args: \"p_organization_id uuid, p_name text, p_slug text, p_home_id uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_state_id\", args: \"p_organization_id uuid, p_table_id uuid, p_value text\", returns: \"uuid\", security: \"invoker\" },\n { name: \"work_states\", args: \"\", returns: \"TABLE(sort integer, name text, terminal boolean, next text[])\", security: \"invoker\" },\n { name: \"work_take_assignment\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_template_declare\", args: \"p_organization_id uuid, p_name text, p_graph jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"work_template_instantiate\", args: \"p_organization_id uuid, p_template_id uuid, p_overrides jsonb DEFAULT '{}'::jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_template_refusal\", args: \"p_graph jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"work_template_shape\", args: \"p_organization_id uuid, p_template_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_templates\", args: \"p_organization_id uuid, p_limit integer DEFAULT 100\", returns: \"TABLE(template_id uuid, name text, nodes integer, relations integer, created_at timestamp with time zone)\", security: \"definer\" },\n { name: \"work_transition_refusal\", args: \"p_organization_id uuid, p_from_state_id uuid, p_to_state_id uuid\", returns: \"text\", security: \"definer\" },\n { name: \"work_whose_turn\", args: \"p_organization_id uuid, p_table_id uuid, p_include_finished boolean DEFAULT false\", returns: \"TABLE(record_id uuid, title text, assignee_id uuid, turn text, due_on timestamp with time zone, state text, status text, terminal boolean)\", security: \"definer\" },\n] as const;\n\n/** The campaign's own knobs, with the value the store resolves them to today. */\nexport const STORE_KNOBS = [\n { key: \"accessible_entity_ids_guard\", value: \"true\", type: \"boolean\" },\n { key: \"agent_schema_changes\", value: \"\\\"ask\\\"\", type: \"string\" },\n { key: \"associations_guard\", value: \"true\", type: \"boolean\" },\n { key: \"code_paths_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_chat_seeding_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_checkout_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_context_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_education_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_extension_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_grid_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_retirement_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_saved_ai_outputs_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_scopes_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"containment_depth_ceiling\", value: \"16\", type: \"integer\" },\n { key: \"cross_organization_links\", value: \"false\", type: \"boolean\" },\n { key: \"document_letterhead\", value: \"{}\", type: \"json\" },\n { key: \"document_max_bytes\", value: \"1048576\", type: \"integer\" },\n { key: \"emergency_door_guard\", value: \"false\", type: \"boolean\" },\n { key: \"emergency_door_sweep_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"enrichment_batch_ceiling\", value: \"200\", type: \"integer\" },\n { key: \"enrichment_confidence_floor\", value: \"0.6\", type: \"number\" },\n { key: \"enrichment_cost_cap_cents\", value: \"2000\", type: \"integer\" },\n { key: \"enrichment_model\", value: \"\\\"claude-fable-5-latest\\\"\", type: \"string\" },\n { key: \"enrichment_sensitivity_ceiling\", value: \"\\\"internal\\\"\", type: \"string\" },\n { key: \"entity_custom_fields_guard\", value: \"false\", type: \"boolean\" },\n { key: \"entity_types_guard\", value: \"false\", type: \"boolean\" },\n { key: \"export_rows_ceiling\", value: \"100000\", type: \"integer\" },\n { key: \"external_principal_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"field_index_guard\", value: \"false\", type: \"boolean\" },\n { key: \"field_sensitivity_levels\", value: \"{\\\"edit\\\": {\\\"public\\\": \\\"editor\\\", \\\"internal\\\": \\\"editor\\\", \\\"restricted\\\": \\\"admin\\\", \\\"confidential\\\": \\\"admin\\\"}, \\\"read\\\": {\\\"public\\\": \\\"viewer\\\", \\\"internal\\\": \\\"viewer\\\", \\\"restricted\\\": \\\"admin\\\", \\\"confidential\\\": \\\"editor\\\"}}\", type: \"json\" },\n { key: \"inbound_domain\", value: \"\\\"inbound.matrxserver.com\\\"\", type: \"string\" },\n { key: \"member_default_level\", value: \"\\\"viewer\\\"\", type: \"enum\" },\n { key: \"member_default_visibility\", value: \"\\\"all_records\\\"\", type: \"enum\" },\n { key: \"outside_invite_who\", value: \"\\\"org_admins_and_table_owners\\\"\", type: \"string\" },\n { key: \"page_size_ceiling\", value: \"1000\", type: \"integer\" },\n { key: \"provenance_retention_days\", value: \"30\", type: \"number\" },\n { key: \"records_tool_default\", value: \"true\", type: \"boolean\" },\n { key: \"row_versions_guard\", value: \"false\", type: \"boolean\" },\n { key: \"sandbox_expanded_frame_height_px\", value: \"20000\", type: \"integer\" },\n { key: \"sandbox_frame_height_px\", value: \"4000\", type: \"integer\" },\n { key: \"sandbox_message_bytes\", value: \"65536\", type: \"integer\" },\n { key: \"sandbox_org_components\", value: \"true\", type: \"boolean\" },\n { key: \"signup_provisioning_guard\", value: \"false\", type: \"boolean\" },\n { key: \"stage_rule_enforcement\", value: \"\\\"refuse\\\"\", type: \"enum\" },\n { key: \"system_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"table_record_ceiling\", value: \"150000\", type: \"integer\" },\n { key: \"value_max_bytes\", value: \"100000\", type: \"integer\" },\n { key: \"world_publish_enabled\", value: \"false\", type: \"boolean\" },\n] as const;\n\n/**\n * Every SQLSTATE the store's own function bodies raise, with the functions that\n * raise it. This is the list the client's refusal mapper is checked against: a\n * code the store can raise and the package cannot name is a hole, and the\n * real-door suite says so by name.\n */\nexport const STORE_REFUSAL_CODES = [\n { code: \"02000\", raised_by: \"_checklist_instantiate,_table_share_invite_payload,checklist_declare,checklist_run,checklist_step_complete,checklist_step_refusal,checklist_template_shape,conversation_scope_bind,dashboard_delete,dashboard_run,doc_letterhead,doc_render_body,doc_render_document,doc_render_read,doc_sign,doc_signature_intact,doc_signature_read,doc_template_delete,doc_template_read,doc_template_save,enrich_pin,entity_field_retire,entity_field_update,entity_record_read,entity_value_write,external_history_event,external_rows,external_stub_upsert,external_writes_set,io_restore,migrate_delete,migrate_extract_parent,migrate_merge,migrate_reclass,migrate_rename,migrate_reparent,migrate_retype,migrate_split,migrate_undo,organization_clear,portal_card,portal_declare,portal_invite,portal_preview,portal_principal_bind,portal_revoke,read_record,record_delete,record_restore,record_restore_preview,record_table,record_update,relation_uncarry,share_access,share_grant,share_lane_set,share_people,share_revoke,sign_request_cancel,sign_request_create,sign_request_remind,sign_request_unchanged,table_share_outside_accept,table_share_outside_invite,table_share_outside_resend,table_share_outside_revoke,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_assign,work_record_states,work_set_state\" },\n { code: \"0A000\", raised_by: \"checklist_step_complete,external_rows,external_source_declare,external_write_through,promote_field,promoted_index_expr,promoted_query_sql,promoted_read,rule_eval,work_assign\" },\n { code: \"22003\", raised_by: \"context_resolve\" },\n { code: \"22004\", raised_by: \"_entity_custom_fields_guard,_value_envelope,actor_word,agg_assert_key,agg_sql,anon_capture,anon_token_issue,anon_write,assert_client_may_reach,booking_declare,capture_submit,checklist_declare,context_resolve,dashboard_block_normalize,dashboard_declare,dashboard_window_sql,doc_render_write,doc_sign,doc_signature_write,doc_template_save,enrich_land,enrich_normalize,external_history_event,external_rows,external_source_declare,external_stub_upsert,external_write_through,external_writes_set,field_history,form_declare,form_submit,home_add,io_comment_write,io_import_begin,io_infer_column,io_outbox_drain,io_restore,migrate_choice_keys,migrate_purge,migrate_reclass,migrate_split,migrate_undo,organization_clear,organization_contents,pipeline_declare,pipeline_gate_preview,portal_declare,portal_invite,portal_principal_bind,provenance_retention_days,provenance_write,query_across_homes,query_by_coordinates,query_rollup,record_delete,record_reparent,record_resolve,record_restore,record_update,record_write,record_write_many,relation_carry,relation_own,rule_declare,share_grant,sign_request_create,sign_request_sign,subscription_declare,table_declare,table_share_outside_invite,value_restore,view_declare,work_approval_decide,work_approval_request,work_template_declare\" },\n { code: \"22007\", raised_by: \"dashboard_window_sql\" },\n { code: \"22012\", raised_by: \"rule_eval\" },\n { code: \"22023\", raised_by: \"_booking_availability,_entity_custom_fields_guard,_take_op_id,_value_envelope,_work_shape_guard,actor_word,agg_assert_key,agg_sql,anon_token_issue,booking_declare,containment_parent,dashboard_block_normalize,dashboard_window_sql,doc_render_body,doc_render_write,doc_signature_write,enrich_declare,enrich_land,enrich_normalize,enrich_pin,entity_value_write,external_history_event,external_source_declare,external_stub_upsert,external_write_through,field_history,field_update,io_export,io_import_begin,io_import_finish,io_import_plan,io_import_report,io_proposal_accept,migrate_merge,migrate_reclass,my_levels,organization_clear,page_size,pin_agent_cells,pipeline_move,portal_declare,provenance_write,query_by_coordinates,query_rollup,record_update,record_write_many,relation_carry,rule_eval,rule_members,share_grant,share_lane_set,sign_request_create,sign_request_sign,subscription_declare,table_rules,visibility_as_of,work_approval_request,work_list,work_slot_hold\" },\n { code: \"23503\", raised_by: \"_booking_availability,_checklist_instantiate,_containment_guard,_display_spec_for,_field_document_for,_pipeline_stage_key,_record_rule_uses,agg_digest_assemble,anon_publish,anon_rate_take,anon_token_issue,anon_write,assert_organization_wall,booking_cancel,booking_confirm,booking_declare,booking_hold,booking_reschedule,capture_publish,checklist_declare,checklist_steps_table,comment_write,dashboard_declare,delete_rule,doc_sign,doc_template_save,enrich_declare,enrich_due,enrich_land,form_declare,form_submit,home_add,inbound_declare,inbound_mail_land,inbound_set,io_comment_write,io_import_begin,io_import_finish,io_import_report,io_import_rows,io_proposal_accept,migrate_demote,migrate_promote,pipeline_board,pipeline_declare,pipeline_move,pipeline_read,pipeline_transition_refusal,promote_field,promote_table,record_applicability,record_reparent,relation_carry,relation_own,resolve_first_match,rule_applies,rule_declare,rule_eval,rule_members,rule_run,sign_request_create,subscription_mute,subscription_preview,view_declare,work_set_state,work_take_assignment,work_template_instantiate\" },\n { code: \"23505\", raised_by: \"_unique_rule_holds,doc_sign,doc_signature_write,entity_field_declare,field_declare,home_add,inbound_declare,io_proposal_accept,relation_carry,relation_own,share_grant,sign_request_cancel,sign_request_create,table_share_outside_invite,table_share_outside_resend,work_approval_decide,work_slot_hold\" },\n { code: \"23514\", raised_by: \"_checklist_instantiate,_checklist_step_guard,_containment_guard,_dated_values_guard,_derived_fields,_display_spec_for,_entity_custom_fields_guard,_field_class_guard,_field_document_for,_field_shape_guard,_field_type_parity_guard,_merge_field_shape_guard,_merge_field_temporal_guard,_promoted_field_cap_guard,_record_rule_uses,_resolve_choice_words,_rule_shape_guard,_rule_topology_guard,_store_relation_edge_names_its_field,_table_columns_word_guard,_table_shape_guard,_undeclared_key_guard,_value_envelope,_with_display,_work_shape_guard,_workdoors_approval_guard,assert_columns_are_defined,assert_entity_is_organization_scoped,booking_declare,capture_publish,capture_sheet_declare,checklist_declare,checklist_step_complete,doc_sign,doc_signature_write,doc_template_save,entity_field_declare,entity_field_retire,entity_field_update,entity_records_find,entity_table,field_declare,field_retire,field_update,home_add,io_import_rows,migrate_merge,relation_carry,relation_own,sign_request_create,sign_request_sign,table_declare,validate_value_envelope,validate_values,work_set_state,work_slots_declare,work_take_assignment,work_template_instantiate\" },\n { code: \"40001\", raised_by: \"has_visibility_at\" },\n { code: \"42501\", raised_by: \"_doc_render_immutable,_doc_signature_immutable,_field_definition_write,_field_write_door,_rule_definition_write,_store_door,anon_capture,anon_inbound_land,anon_publish,anon_token_issue,anon_token_verify,anon_write,assert_client_may_change,assert_client_may_open,assert_client_may_reach,assert_may_know_table,assert_organization_admin,assert_store_door,booking_confirm,booking_declare,booking_hold,capture_submit,checklist_run,comment_write,conversation_scope_bind,conversation_scope_unbind,enrich_declare,enrich_due,enrich_land,enrich_normalize,entity_field_declare,entity_field_retire,entity_field_update,entity_value_write,external_write_through,form_declare,form_submit,inbound_mail_land,io_comment_resolve,io_comment_write,io_import_begin,io_import_finish,io_restore,migrate_purge,migrate_reclass,my_levels,organization_clear,portal_declare,portal_invitation,portal_invite,portal_principal_bind,promote_table,query_visibility_parity,read_record,read_records,read_records_by_ids,record_table,share_grant,subscription_mute,subscription_preview,table_share_outside_accept,table_share_outside_invite,table_share_outside_resend,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_person\" },\n { code: \"42703\", raised_by: \"entity_table,portal_declare\" },\n { code: \"53400\", raised_by: \"anon_rate_take,delete_cascade_closure,enrich_due,enrich_land,promote_field\" },\n { code: \"54001\", raised_by: \"record_delete\" },\n { code: \"PT409\", raised_by: \"record_update\" },\n { code: \"PT428\", raised_by: \"_record_rule_uses\" },\n] as const;\n\n/** `platform.entity_types` — the registered tokens a Table or relation may name. */\nexport const ENTITY_TOKENS = [\n \"access_delta_probe\",\n \"access_delta_run\",\n \"access_request\",\n \"account_addon\",\n \"acquisition_block\",\n \"activity\",\n \"admin_audit_log\",\n \"admin_email_log\",\n \"admin_markdown_sample\",\n \"admin_user\",\n \"admission_config\",\n \"agent\",\n \"agent_card\",\n \"agent_definition_version\",\n \"agent_drift_alert\",\n \"agent_exemplar\",\n \"agent_mandate_note\",\n \"agent_prompt_remediation\",\n \"agent_provision_legacy\",\n \"agent_run\",\n \"agent_run_stage\",\n \"agent_schedule\",\n \"agent_schedule_claim\",\n \"agent_shortcut\",\n \"agent_surface_binding\",\n \"agent_template\",\n \"agent_usage\",\n \"agent_user_kv\",\n \"ai_api\",\n \"ai_endpoint\",\n \"ai_model\",\n \"ai_model_alias\",\n \"ai_offering\",\n \"ai_provider\",\n \"ai_setting\",\n \"analysis_result\",\n \"anon_form\",\n \"anon_function_birth_grandfather\",\n \"anon_hit\",\n \"anon_inbound\",\n \"anon_replay\",\n \"anon_submission\",\n \"anon_token\",\n \"api_field_warning\",\n \"api_request_log\",\n \"app\",\n \"app_config\",\n \"app_config_history\",\n \"app_definition_version\",\n \"app_error\",\n \"app_execution\",\n \"app_instance\",\n \"app_log\",\n \"app_log_muted_pattern\",\n \"app_log_norm_exception\",\n \"app_rate_limit\",\n \"app_setting\",\n \"app_sync_status\",\n \"approach\",\n \"artifact\",\n \"assessment\",\n \"assessment_item\",\n \"assessment_result\",\n \"assignment_session\",\n \"assist\",\n \"assist_producer_policy\",\n \"assist_producer_policy_history\",\n \"association_type\",\n \"assurance_level\",\n \"attempt\",\n \"audit_broken_functions\",\n \"audit_canonical_findings\",\n \"audit_exemption\",\n \"audit_function_deps\",\n \"audit_function_runtime_probe\",\n \"audit_m2m_candidates\",\n \"audit_refresh_log\",\n \"audit_stale_registry\",\n \"audit_unregistered_candidates\",\n \"bak_assoc_file_processed_document_20260812\",\n \"bak_assoc_type_file_processed_document_20260812\",\n \"bak_organization_name_dd043\",\n \"base_entity_template\",\n \"batch_cost_event\",\n \"batch_provider_batch\",\n \"batch_work_item\",\n \"billing_capability\",\n \"billing_capability_limit\",\n \"billing_connect_account\",\n \"billing_customer\",\n \"billing_plan\",\n \"billing_plan_limit\",\n \"billing_price\",\n \"billing_product\",\n \"billing_spend_guardrail\",\n \"billing_stripe_event\",\n \"billing_subscription\",\n \"billing_usage_ledger\",\n \"billing_user_plan\",\n \"browser_account_binding\",\n \"browser_action_event\",\n \"browser_authenticator_window\",\n \"browser_capture\",\n \"browser_control_request\",\n \"browser_handoff\",\n \"browser_login_attempt\",\n \"browser_login_recipe\",\n \"browser_profile\",\n \"browser_profile_checkpoint\",\n \"browser_run\",\n \"browser_site_observation\",\n \"browser_site_policy\",\n \"browser_stream_ticket\",\n \"build_lock\",\n \"calendar_event\",\n \"canvas_comment\",\n \"canvas_comment_like\",\n \"canvas_item\",\n \"canvas_item_state\",\n \"canvas_like\",\n \"canvas_score\",\n \"canvas_view\",\n \"capture_window\",\n \"carrying_rule\",\n \"catalog_entries_history\",\n \"catalog_entry\",\n \"category\",\n \"change_type_default\",\n \"chat_user_usage_summary\",\n \"citations\",\n \"class_purchase\",\n \"classifier_revision_ledger\",\n \"client_callable_door\",\n \"client_callable_door_retirement\",\n \"client_excluded_column_unregistered\",\n \"cmp_entry\",\n \"cmp_feedback\",\n \"code_file\",\n \"code_folder\",\n \"code_repository\",\n \"coding_session\",\n \"coding_session_entry\",\n \"comment\",\n \"commerce_asset_allocation\",\n \"commerce_asset_grading\",\n \"commerce_asset_identifier\",\n \"commerce_asset_lot_event\",\n \"commerce_asset_mandate_result\",\n \"commerce_asset_price_factor\",\n \"commerce_asset_reshoot_request\",\n \"commerce_asset_review\",\n \"commerce_asset_unknown\",\n \"commerce_certified_printer\",\n \"commerce_cloud_sync_connection\",\n \"commerce_ebay_business_policy\",\n \"commerce_ebay_category\",\n \"commerce_ebay_category_aspect\",\n \"commerce_ebay_category_tree\",\n \"commerce_ebay_custom_policy\",\n \"commerce_ebay_inventory_item\",\n \"commerce_ebay_inventory_item_group\",\n \"commerce_ebay_inventory_item_group_member\",\n \"commerce_ebay_inventory_location\",\n \"commerce_ebay_listing\",\n \"commerce_ebay_marketplace_policy\",\n \"commerce_ebay_media_asset\",\n \"commerce_ebay_notification_destination\",\n \"commerce_ebay_notification_event\",\n \"commerce_ebay_notification_subscription\",\n \"commerce_ebay_notification_topic\",\n \"commerce_ebay_offer\",\n \"commerce_ebay_order\",\n \"commerce_ebay_order_line_item\",\n \"commerce_ebay_shipping_fulfillment\",\n \"commerce_ebay_store_category\",\n \"commerce_human_correction\",\n \"commerce_intake_artifact\",\n \"commerce_intake_asset\",\n \"commerce_intake_batch\",\n \"commerce_label_batch\",\n \"commerce_label_code\",\n \"commerce_marketplace_account\",\n \"commerce_marketplace_account_deletion_audit\",\n \"commerce_marketplace_api_call\",\n \"commerce_marketplace_rate_budget\",\n \"commerce_marketplace_site\",\n \"commerce_marketplace_sync_run\",\n \"commerce_prediction_outcome\",\n \"commerce_print_order\",\n \"commerce_product\",\n \"commerce_product_channel_ref\",\n \"commerce_product_media\",\n \"commerce_product_variant\",\n \"commerce_recall_audit\",\n \"comparison_set\",\n \"component_group\",\n \"contact_medium\",\n \"contact_submission\",\n \"content_certification\",\n \"content_ir_kind\",\n \"content_ir_kind_component\",\n \"content_ir_kind_component_incident\",\n \"content_ir_kind_conformance\",\n \"content_ir_kind_edge\",\n \"content_ir_kind_example\",\n \"content_ir_kind_instance\",\n \"content_ir_kind_surface\",\n \"content_lane\",\n \"context_access_log\",\n \"context_item\",\n \"context_item_suggestion\",\n \"context_item_value\",\n \"context_value_refs\",\n \"conversation\",\n \"conversation_value\",\n \"courts\",\n \"credential_attachment\",\n \"credential_item\",\n \"credential_mutation_receipt\",\n \"crm_address\",\n \"crm_affiliation\",\n \"crm_blocklist_entry\",\n \"crm_contact_candidate\",\n \"crm_deal\",\n \"crm_deal_stage_event\",\n \"crm_enrichment_call\",\n \"crm_interaction\",\n \"crm_merge_candidate\",\n \"crm_outreach_list\",\n \"crm_outreach_list_member\",\n \"crm_party_merge\",\n \"crm_registry_ingest_run\",\n \"crm_registry_source\",\n \"crm_saved_view\",\n \"crm_sending_event\",\n \"crm_sending_identity\",\n \"crm_sending_identity_check\",\n \"crm_sending_policy\",\n \"custom_entity_definition\",\n \"custom_field_definition\",\n \"custom_field_target\",\n \"custom_record\",\n \"cx_agent_memory\",\n \"cx_agent_plan\",\n \"cx_agent_task\",\n \"cx_code_edit\",\n \"cx_code_message_file\",\n \"cx_conversation_documents\",\n \"cx_media\",\n \"cx_observational_memory\",\n \"cx_observational_memory_event\",\n \"cx_pending_injection\",\n \"cx_request\",\n \"cx_request_snapshot\",\n \"cx_tool_trace\",\n \"cx_user_request\",\n \"cx_user_todo\",\n \"dashboard_saved_view\",\n \"data_rights_event\",\n \"data_store\",\n \"data_store_members\",\n \"dataset\",\n \"dd171_containment_baseline\",\n \"dd175_cast\",\n \"dd175_component_lane_baseline\",\n \"ddl_guard_log\",\n \"deck_suggestion\",\n \"definer_class_exemption\",\n \"definer_client_grant_grandfather\",\n \"definer_grant_baseline\",\n \"deprecated_relation\",\n \"derive_run\",\n \"dev_login_audit\",\n \"dict_entry\",\n \"dict_provider_publication\",\n \"dict_setting\",\n \"dm_conversation\",\n \"dm_message\",\n \"dm_participant\",\n \"doc_render\",\n \"doc_signature\",\n \"dockets\",\n \"domain_classification\",\n \"edge_payload_kind\",\n \"egress_device\",\n \"egress_pairing\",\n \"egress_ticket\",\n \"emails\",\n \"embedding_cache\",\n \"embeddings_google_gemini_2_1536\",\n \"embeddings_oai_3_small_1536\",\n \"embeddings_voyage_4_large_1024\",\n \"embeddings_voyage_code_3_1024\",\n \"endpoint_family_sweep_state\",\n \"engine_owner_task\",\n \"entity_grant\",\n \"entity_relationship\",\n \"entity_type\",\n \"esign_campaign\",\n \"esign_campaign_member\",\n \"esign_consent_disclosure\",\n \"esign_envelope\",\n \"esign_envelope_certificate\",\n \"esign_envelope_document\",\n \"esign_envelope_event\",\n \"esign_envelope_external_ref\",\n \"esign_envelope_signer\",\n \"esign_provider\",\n \"esign_provider_binding\",\n \"esign_signing_key\",\n \"execution_event_cursor\",\n \"extension_auth_code\",\n \"external_link\",\n \"external_source\",\n \"extract_sweep_state\",\n \"fc_card\",\n \"fc_detail\",\n \"fc_set\",\n \"feature_doc\",\n \"feature_knob\",\n \"feedback_comments\",\n \"feedback_user_messages\",\n \"field_component\",\n \"file\",\n \"file_analysis\",\n \"file_entities\",\n \"file_overrides\",\n \"file_page_annotations\",\n \"file_pages\",\n \"file_rag_job\",\n \"file_version\",\n \"files_account_tier\",\n \"files_machine_written_prefix\",\n \"files_sync_mapping\",\n \"files_user_account\",\n \"flashcard_data\",\n \"flashcard_history\",\n \"flashcard_review\",\n \"flashcard_set\",\n \"flashcard_sets\",\n \"flexible_data\",\n \"folder\",\n \"function_contract\",\n \"game_badge\",\n \"game_result\",\n \"game_room\",\n \"global_execution\",\n \"global_execution_checkpoint\",\n \"global_execution_control\",\n \"global_execution_event\",\n \"global_meter_entry\",\n \"global_origin\",\n \"global_request\",\n \"google_document\",\n \"growth_loop_event\",\n \"growth_loop_run\",\n \"growth_loop_stage_run\",\n \"guardian_link\",\n \"guest_conversion_audit\",\n \"guest_execution_log\",\n \"guest_executions\",\n \"guided_checklist_run\",\n \"heatmap_save\",\n \"hindsight_enrollment\",\n \"hindsight_finding\",\n \"hindsight_regression_case\",\n \"hindsight_replay\",\n \"hindsight_replay_step\",\n \"hindsight_review\",\n \"hr_access_audit\",\n \"hr_access_role\",\n \"hr_accommodation_request\",\n \"hr_ai_evidence\",\n \"hr_alert_routing_rule\",\n \"hr_application\",\n \"hr_approval_authority\",\n \"hr_approval_delegation\",\n \"hr_asset\",\n \"hr_asset_assignment\",\n \"hr_attendance_exception\",\n \"hr_auto_close_rule\",\n \"hr_availability\",\n \"hr_background_check\",\n \"hr_benefits_event\",\n \"hr_calculation_snapshot\",\n \"hr_candidate\",\n \"hr_candidate_conversion\",\n \"hr_candidate_message\",\n \"hr_careers_portal\",\n \"hr_checklist_item\",\n \"hr_checklist_run\",\n \"hr_checklist_template\",\n \"hr_checklist_template_item\",\n \"hr_compensation\",\n \"hr_corrective_action\",\n \"hr_course\",\n \"hr_course_version\",\n \"hr_credential\",\n \"hr_crew\",\n \"hr_deduction_code\",\n \"hr_department\",\n \"hr_derived_grant\",\n \"hr_disposition_event\",\n \"hr_earning_code\",\n \"hr_eeo_response\",\n \"hr_emergency_contact\",\n \"hr_employee\",\n \"hr_employee_private\",\n \"hr_employer_profile\",\n \"hr_employment\",\n \"hr_employment_pin\",\n \"hr_engagement\",\n \"hr_establishment\",\n \"hr_external_identity\",\n \"hr_field_policy\",\n \"hr_holiday\",\n \"hr_holiday_calendar\",\n \"hr_i9\",\n \"hr_i9_document\",\n \"hr_incident\",\n \"hr_incident_party\",\n \"hr_interview\",\n \"hr_interview_kit\",\n \"hr_job_title\",\n \"hr_jurisdiction\",\n \"hr_jurisdiction_rule\",\n \"hr_jurisdiction_rule_class\",\n \"hr_jurisdiction_rule_org_decision\",\n \"hr_jurisdiction_rule_test\",\n \"hr_kiosk_device\",\n \"hr_kiosk_session\",\n \"hr_labor_target\",\n \"hr_leave_case\",\n \"hr_leave_enrollment\",\n \"hr_leave_ledger\",\n \"hr_leave_policy\",\n \"hr_leave_request\",\n \"hr_legal_hold\",\n \"hr_legal_hold_item\",\n \"hr_location\",\n \"hr_new_hire_report\",\n \"hr_offer\",\n \"hr_opening\",\n \"hr_overtime_alert\",\n \"hr_overtime_alert_rule\",\n \"hr_overtime_preapproval\",\n \"hr_pay_group\",\n \"hr_pay_period\",\n \"hr_pay_period_employment\",\n \"hr_payroll_export\",\n \"hr_payroll_export_line\",\n \"hr_position_assignment\",\n \"hr_posting\",\n \"hr_posting_publication\",\n \"hr_provider_binding\",\n \"hr_provider_event\",\n \"hr_provisioning_result\",\n \"hr_punch\",\n \"hr_recalculation_batch\",\n \"hr_record_class\",\n \"hr_records_request\",\n \"hr_reference_check\",\n \"hr_reporting_line\",\n \"hr_requisition\",\n \"hr_restricted_note\",\n \"hr_retention_rule\",\n \"hr_role_assignment\",\n \"hr_schedule\",\n \"hr_schedule_change\",\n \"hr_schedule_guidance\",\n \"hr_schedule_template\",\n \"hr_schedule_template_shift\",\n \"hr_scorecard\",\n \"hr_separation\",\n \"hr_shift\",\n \"hr_shift_claim\",\n \"hr_staffing_requirement\",\n \"hr_survey\",\n \"hr_survey_invitation\",\n \"hr_survey_question\",\n \"hr_survey_response\",\n \"hr_tax_registration\",\n \"hr_tax_withholding\",\n \"hr_time_adjustment\",\n \"hr_training_assignment\",\n \"hr_training_attempt\",\n \"hr_transcript_entry\",\n \"hr_verification_letter_request\",\n \"hr_work_interval\",\n \"hr_workflow_binding\",\n \"hr_workflow_decision\",\n \"hr_workflow_definition\",\n \"hr_workflow_event\",\n \"hr_workflow_failure\",\n \"hr_workflow_flow_type\",\n \"hr_workflow_instance\",\n \"hr_workflow_step\",\n \"hr_workflow_step_definition\",\n \"hr_workweek\",\n \"html_extraction\",\n \"iam_access_audit\",\n \"iam_api_key\",\n \"iam_emergency_door_request\",\n \"idempotency\",\n \"industry\",\n \"industry_curator\",\n \"infra_status\",\n \"ingest_runs\",\n \"integration_connection\",\n \"integration_connection_resource\",\n \"interview_decision_interview\",\n \"interview_decision_question\",\n \"interview_document_revision\",\n \"interview_hole\",\n \"interview_question\",\n \"interview_session\",\n \"interview_turn\",\n \"invitation\",\n \"invitation_code\",\n \"invitation_request\",\n \"io_comment\",\n \"io_contract\",\n \"io_import\",\n \"io_outbox\",\n \"item\",\n \"item_mastery\",\n \"judge_verdict\",\n \"jurisdiction_policy\",\n \"keyword_classification_queue\",\n \"kg_alert\",\n \"kg_chunk_entities\",\n \"kg_chunks\",\n \"kg_clusters\",\n \"kg_edges\",\n \"kg_entities\",\n \"kg_entity_aliases\",\n \"kg_suggestion_ack\",\n \"kg_sweep_queue\",\n \"kg_sweep_run\",\n \"kg_sweep_state\",\n \"kg_value_match\",\n \"knob_override\",\n \"knob_override_audit\",\n \"knob_rung_lock\",\n \"knob_scope_kind\",\n \"knob_write_door\",\n \"league_membership\",\n \"learn_doc\",\n \"library_doc\",\n \"lifecycle_archive\",\n \"lifecycle_archive_row\",\n \"lifecycle_audit\",\n \"lifecycle_entity_plan\",\n \"lifecycle_map_build\",\n \"lifecycle_reference_map\",\n \"lifecycle_run\",\n \"lifecycle_tier_ledger\",\n \"location\",\n \"mandate\",\n \"mandate_advance_batch_row\",\n \"mandate_binding\",\n \"mandate_binding_legacy\",\n \"mandate_goal_clauses\",\n \"mandate_legacy\",\n \"mandate_observation\",\n \"mandate_reference\",\n \"mandate_scan\",\n \"mandate_treatment\",\n \"marketing_initiative\",\n \"masterwork_corpus_item\",\n \"masterwork_run\",\n \"masterwork_run_kind\",\n \"masterwork_source\",\n \"math_course_structure\",\n \"math_problem\",\n \"matrx_action_ledger\",\n \"mcp_config\",\n \"mcp_server\",\n \"mcp_user_conn\",\n \"media_capture_handoff\",\n \"media_catalog_setting\",\n \"media_library_item\",\n \"media_selection_item\",\n \"media_selection_job\",\n \"media_source_library\",\n \"meet_call_invite\",\n \"meet_meeting\",\n \"meet_note\",\n \"meet_participant\",\n \"meet_recording\",\n \"meet_transcript_segment\",\n \"membership\",\n \"membership_grant\",\n \"merge_field_provenance\",\n \"message\",\n \"message_template\",\n \"meta_excluded_schema\",\n \"meta_table_stats_history\",\n \"metadata_reserved_keys\",\n \"microservice_project\",\n \"migration_log\",\n \"mtx_media_heal_queue\",\n \"mtx_public_url_guard\",\n \"ner_shadow\",\n \"note\",\n \"note_folder\",\n \"notification\",\n \"notification_channel_preference\",\n \"notification_event_override\",\n \"notification_event_type\",\n \"notification_preference\",\n \"notification_submission\",\n \"notify_outsider_door_baseline\",\n \"oauth_handoff_claim\",\n \"opinion_clusters\",\n \"opinions\",\n \"ops_issue_class\",\n \"ops_issue_event\",\n \"ops_proof_check\",\n \"ops_proof_run\",\n \"ops_proof_scenario\",\n \"org_admin_audit\",\n \"org_change_policy\",\n \"org_context_ledger\",\n \"org_industries\",\n \"org_member_control\",\n \"org_module_config\",\n \"org_plan\",\n \"org_repair_0253_backup\",\n \"organization\",\n \"organization_preferences\",\n \"organization_visibility_version\",\n \"output_feedback\",\n \"outreach_acceptance\",\n \"page_extraction_job\",\n \"page_extraction_page_run\",\n \"page_extraction_results\",\n \"page_extraction_runs\",\n \"page_intent_queue\",\n \"page_mapping_queue\",\n \"part_config\",\n \"part_config_sub\",\n \"party\",\n \"party_contact_point\",\n \"passkey_credential\",\n \"path_drift_repair_2026_09\",\n \"pc_article\",\n \"pc_episode\",\n \"pc_show\",\n \"pc_studio_run\",\n \"pc_studio_run_asset\",\n \"pdf_consolidation_log\",\n \"pdf_redaction_audit\",\n \"pdf_redaction_key_escrow\",\n \"permission_grant\",\n \"plan_cms_fill_item\",\n \"plan_cms_fill_job\",\n \"plan_entity\",\n \"plan_node\",\n \"plan_node_artifact\",\n \"plan_node_step\",\n \"plan_profile\",\n \"platform_action_request\",\n \"platform_actor_session\",\n \"platform_actor_token\",\n \"platform_actor_token_event\",\n \"platform_continued_access\",\n \"platform_org_knob_override\",\n \"platform_outcome_event\",\n \"platform_outsider_consumer\",\n \"platform_reachability\",\n \"platform_reference_category\",\n \"platform_reference_declaration\",\n \"platform_repo\",\n \"platform_saved_view\",\n \"platform_schema\",\n \"platform_share_link\",\n \"platform_user_knob_override\",\n \"podcast_race\",\n \"policy_overlap_backup\",\n \"policy_overlap_probe\",\n \"processed_document\",\n \"processed_document_page\",\n \"product_capture_file\",\n \"product_capture_item\",\n \"product_capture_payload\",\n \"product_capture_product\",\n \"product_capture_question\",\n \"profile\",\n \"project\",\n \"prompt\",\n \"provider_account\",\n \"provider_account_credential\",\n \"provision\",\n \"provision_generate_target\",\n \"provision_grant\",\n \"provision_marker\",\n \"provision_rule_message\",\n \"provision_schema\",\n \"provision_shape_debt\",\n \"provision_spec\",\n \"provision_spec_grandfather\",\n \"provision_vocabulary\",\n \"purpose\",\n \"quiz_session\",\n \"rag_ingest_run\",\n \"rag_library_audit_log\",\n \"rate_limit_buckets\",\n \"recompute_queue\",\n \"record\",\n \"record_alias\",\n \"redaction_mapping\",\n \"research_analysis\",\n \"research_content\",\n \"research_context_bundle\",\n \"research_document\",\n \"research_intent\",\n \"research_keyword\",\n \"research_media\",\n \"research_source\",\n \"research_synthesis\",\n \"research_tag\",\n \"research_template\",\n \"research_topic\",\n \"retention_policy\",\n \"retrieval_audit\",\n \"review_queue\",\n \"route_manifest_entry\",\n \"row_version\",\n \"rulebook\",\n \"runtime_operation_stream\",\n \"runtime_operation_stream_batch\",\n \"sandbox_instance\",\n \"sch_agent_task\",\n \"sch_run\",\n \"sch_task\",\n \"sch_trigger\",\n \"schema_client_exposure\",\n \"schema_migration_ledger\",\n \"schema_migration_legacy\",\n \"schema_migration_slot_grandfather\",\n \"schema_templates\",\n \"scope\",\n \"scope_association_suggestion\",\n \"scope_dataset_instance\",\n \"scope_door_registry\",\n \"scope_item_value_suggestion\",\n \"scope_suggestion\",\n \"scope_type\",\n \"scrape_domain\",\n \"scrape_domain_settings\",\n \"scrape_failure_log\",\n \"scrape_parsed_page\",\n \"scrape_path_override\",\n \"scrape_path_pattern\",\n \"scrape_retry_queue\",\n \"seo_ai_capability\",\n \"seo_ai_visibility_citation\",\n \"seo_ai_visibility_claim\",\n \"seo_ai_visibility_panel\",\n \"seo_ai_visibility_response\",\n \"seo_ai_visibility_signal\",\n \"seo_backlink\",\n \"seo_backlink_change_event\",\n \"seo_backlink_dimension_snapshot\",\n \"seo_backlink_observation\",\n \"seo_backlink_snapshot\",\n \"seo_change_assessment\",\n \"seo_change_event\",\n \"seo_change_item\",\n \"seo_change_metric\",\n \"seo_change_set\",\n \"seo_change_theory\",\n \"seo_collection_run\",\n \"seo_competitor\",\n \"seo_competitor_observation\",\n \"seo_competitor_opportunity\",\n \"seo_coverage_mention\",\n \"seo_coverage_tracker\",\n \"seo_dimension_value_matcher\",\n \"seo_engine_schedule\",\n \"seo_geo_place\",\n \"seo_gsc_dig_rule\",\n \"seo_keyword\",\n \"seo_keyword_class_rule\",\n \"seo_keyword_edge\",\n \"seo_keyword_facet\",\n \"seo_keyword_market\",\n \"seo_keyword_market_observation\",\n \"seo_keyword_place\",\n \"seo_keyword_saved_view\",\n \"seo_keyword_topic\",\n \"seo_landscape_brief\",\n \"seo_link_gap_domain\",\n \"seo_link_gap_match\",\n \"seo_map_facet\",\n \"seo_map_facet_value\",\n \"seo_map_topic\",\n \"seo_page_measurement_health\",\n \"seo_page_performance\",\n \"seo_provider_call\",\n \"seo_provider_task\",\n \"seo_rank_observation\",\n \"seo_rank_target\",\n \"seo_raw_payload\",\n \"seo_referring_domain_profile\",\n \"seo_reputation_case\",\n \"seo_search_performance_daily\",\n \"seo_serp_mention\",\n \"seo_serp_opportunity\",\n \"seo_serp_result\",\n \"seo_serp_snapshot\",\n \"seo_site_geo_area\",\n \"seo_site_keyword_offering\",\n \"seo_site_keyword_value\",\n \"seo_site_offering_value\",\n \"seo_site_topic_value\",\n \"seo_site_value_combo\",\n \"seo_site_value_worth\",\n \"seo_site_vocabulary\",\n \"seo_source_request\",\n \"seo_starter_pack\",\n \"seo_starter_pack_item\",\n \"seo_story_angle\",\n \"seo_topic\",\n \"seo_topical_map\",\n \"seo_web_analytics_daily\",\n \"share_link\",\n \"shareable_resource_registry\",\n \"shared_canvas_item\",\n \"short_link\",\n \"shortcut_category\",\n \"skill\",\n \"skill_category\",\n \"skill_render_definition\",\n \"sms_consent\",\n \"sms_conversation\",\n \"sms_message\",\n \"sms_message_media\",\n \"sms_notification\",\n \"sms_notification_preference\",\n \"sms_phone_number\",\n \"sms_rate_limits\",\n \"sms_webhook_logs\",\n \"soft_delete_edge\",\n \"source_authority\",\n \"stage_dockets_966c18eca7\",\n \"stage_ref_kind\",\n \"stamped_write_table\",\n \"structure\",\n \"structured_list\",\n \"studio_cleaned_segments\",\n \"studio_concept_items\",\n \"studio_documents\",\n \"studio_module_segments\",\n \"studio_raw_segments\",\n \"studio_recording_chunks\",\n \"studio_recording_segments\",\n \"studio_run\",\n \"studio_session\",\n \"studio_session_settings\",\n \"study_attempt\",\n \"study_goal\",\n \"study_media\",\n \"study_plan\",\n \"study_plan_block\",\n \"study_plan_day\",\n \"study_reminder_context\",\n \"study_reminder_delivery\",\n \"study_session\",\n \"study_source_chunk\",\n \"study_streak\",\n \"study_structured_section\",\n \"superseded_policy\",\n \"surface\",\n \"system_announcement\",\n \"system_context_item\",\n \"system_error\",\n \"system_orgs\",\n \"system_personal_org_failure\",\n \"system_write_failure\",\n \"task\",\n \"task_user_state\",\n \"taxonomy_node\",\n \"template_context_items\",\n \"template_scope_types\",\n \"templates\",\n \"test_handset_inbox\",\n \"thread\",\n \"tool\",\n \"tool_binding\",\n \"tool_bundle\",\n \"tool_call\",\n \"tool_definition_version\",\n \"tool_executor\",\n \"tool_surface_defaults\",\n \"tool_test_sample\",\n \"tool_ui\",\n \"tool_ui_incident\",\n \"tool_ui_version\",\n \"topic_placement_queue\",\n \"transcript\",\n \"trigger_event\",\n \"udt_dataset_fields\",\n \"udt_dataset_row_versions\",\n \"udt_dataset_rows\",\n \"udt_dataset_template\",\n \"udt_dataset_template_fields\",\n \"udt_document\",\n \"udt_document_snapshot\",\n \"udt_structured_list_items\",\n \"udt_workbook_snapshot\",\n \"ui_client\",\n \"ui_surface_agent_pref\",\n \"ui_surface_agent_role\",\n \"ui_surface_client_tool\",\n \"ui_surface_config\",\n \"ui_surface_value\",\n \"ui_surface_write_target\",\n \"unsubscribe_token\",\n \"uploads_inflight\",\n \"user_achievement\",\n \"user_active_context\",\n \"user_analysis_preference\",\n \"user_bookmark\",\n \"user_email_preference\",\n \"user_entity_state\",\n \"user_feedback\",\n \"user_follows\",\n \"user_form_profile\",\n \"user_markdown_sample\",\n \"user_memory\",\n \"user_preference\",\n \"user_profile\",\n \"user_secret\",\n \"user_secret_audit\",\n \"user_secret_grant\",\n \"user_stat\",\n \"user_storage_usage\",\n \"user_surface_state\",\n \"visibility_cache\",\n \"visibility_epoch\",\n \"voice\",\n \"war_room\",\n \"wbx_capture\",\n \"wbx_demo\",\n \"wbx_guidance\",\n \"wbx_highlight\",\n \"wbx_pattern\",\n \"wbx_recipe\",\n \"wbx_screenshot\",\n \"wbx_seo_audit\",\n \"wc_claim\",\n \"wc_impairment_definition\",\n \"wc_injury\",\n \"wc_report\",\n \"web_analysis_item\",\n \"web_brand\",\n \"web_brand_asset\",\n \"web_brand_offering\",\n \"web_business_fact\",\n \"web_business_location\",\n \"web_channel_analytics_daily\",\n \"web_crawl_event\",\n \"web_crawl_preset\",\n \"web_crawl_schedule\",\n \"web_crawl_session\",\n \"web_crawl_url\",\n \"web_discovered_item\",\n \"web_finding\",\n \"web_gsc_page_stat\",\n \"web_link_edge\",\n \"web_listing_publisher\",\n \"web_location_listing\",\n \"web_offering_template\",\n \"web_page\",\n \"web_page_content\",\n \"web_page_evidence\",\n \"web_page_sitemap\",\n \"web_property\",\n \"web_provider\",\n \"web_result\",\n \"web_screenshot\",\n \"web_site\",\n \"web_site_endpoint_rule\",\n \"web_site_item_config\",\n \"web_site_offering\",\n \"web_sitemap\",\n \"web_snapshot\",\n \"web_tag_manager_snapshot\",\n \"web_youtube_video\",\n \"webhook_deliveries\",\n \"webhook_dispatch_state\",\n \"webhooks\",\n \"wf_node_data_slot\",\n \"work_claim\",\n \"work_item\",\n \"workbook\",\n \"worker_heartbeat\",\n \"workflow\",\n \"workflow_card\",\n \"workflow_checkpoint\",\n \"workflow_comparison\",\n \"workflow_definition_version\",\n \"workflow_idempotency\",\n \"workflow_job\",\n \"workflow_node_events\",\n \"workflow_node_outcome\",\n \"workflow_plan\",\n \"workflow_plan_event\",\n \"workflow_plan_sample\",\n \"workflow_recovery_audit\",\n \"workflow_run\",\n \"workflow_run_log\",\n \"workflow_runtime_surface\",\n \"workflow_template\",\n \"workflow_trigger\",\n \"workflow_trigger_fire\",\n \"workflow_work_item\",\n \"working_document\",\n \"write_guard_key\",\n \"youtube_quota_day\",\n \"youtube_search\",\n \"youtube_video\",\n] as const;\n\nexport type StoreRefusalCode = (typeof STORE_REFUSAL_CODES)[number][\"code\"];\nexport type StoreDoorName = (typeof STORE_DOORS)[number][\"name\"];\nexport type EntityToken = (typeof ENTITY_TOKENS)[number];\nexport type KernelTableName = (typeof KERNEL_TABLES)[number][\"name\"];\n","// src/record-scope.ts — @ai-matrx/records · AGT-N-9 · PRODUCTS row 11\n//\n// A CONVERSATION THAT IS ABOUT ONE RECORD.\n//\n// These are the shapes `custom.record_scope_context` and its three siblings answer. They\n// are types over ONE door, not a model of their own: the assembly happens inside the\n// database, through `custom.read_record`, under the operating person's own field-level\n// security, and this file only says what comes back.\n//\n// TWO ABSENCES, NEVER ONE. `withheld[].because` is `\"masked\"` when the STORE kept a Field\n// from this reader, and `\"policy\"` when the ORGANIZATION keeps it out of conversations.\n// A screen that collapsed them would tell somebody \"you may not see this\" about a field\n// they can read on the record two inches away.\n\nimport type { PermissionLevel } from \"./level\";\nimport type { Uuid } from \"./record\";\n\n/** One value the agent was given, with the triple that makes it citable. */\nexport interface RecordScopeField {\n key: string;\n label: string;\n type: string;\n value: unknown;\n /** DYN: a merge field resolves to a TRIPLE, not a string. */\n cite: {\n record_id: Uuid;\n field_id: Uuid;\n value_version: number;\n written_at: string | null;\n };\n}\n\n/** A Field the agent was NOT given, and which of the two reasons it is. */\nexport interface RecordScopeWithheld {\n key: string;\n label: string;\n because: \"masked\" | \"policy\";\n reason: string;\n needs?: string;\n /** The whole sentence, already written — a screen prints it rather than composing one. */\n says: string;\n}\n\nexport interface RecordScopeRelation {\n via: string;\n target_id: Uuid;\n foreign: boolean;\n masked: boolean;\n your_level: PermissionLevel | null;\n card: Record<string, unknown> | null;\n why: string | null;\n}\n\nexport interface RecordScopeHistoryEntry {\n version: number;\n at: string;\n what: string;\n who: string | null;\n changes: Array<Record<string, unknown>>;\n}\n\nexport interface RecordScopeComment {\n id: Uuid;\n body: string;\n created_at: string;\n created_by_name: string;\n field_key: string | null;\n}\n\nexport interface RecordScopeContext {\n record: {\n id: Uuid;\n title: string;\n table_id: Uuid;\n table_name: string | null;\n scope_type: string;\n plural: string;\n version: number;\n updated_at: string;\n your_level: PermissionLevel;\n };\n fields: RecordScopeField[];\n withheld: RecordScopeWithheld[];\n relations: RecordScopeRelation[];\n history: RecordScopeHistoryEntry[];\n comments: RecordScopeComment[];\n may_comment: boolean;\n siblings: {\n shown: Array<{ id: Uuid; title: string }>;\n more_than_shown: boolean;\n says: string;\n };\n /** Questions derived from THIS record's shape — never a fixed list. */\n suggested: string[];\n /** One sentence naming what is not in the conversation. Printed verbatim. */\n says: string;\n assembled_at: string;\n}\n\n/** What a conversation is about. `readable` false means the person lost access to it. */\nexport interface ConversationScope {\n bound: boolean;\n readable?: boolean;\n record_id?: Uuid;\n table_id?: Uuid;\n scope_type?: string;\n title?: string;\n bound_at?: string;\n bound_by?: Uuid;\n because?: string;\n}\n\nexport interface ConversationScopeContext {\n scope: ConversationScope;\n context: RecordScopeContext | null;\n}\n\n/** `About: Acme Industrial` — the chip a bound chat wears. */\nexport function scopeChip(scope: ConversationScope): string {\n return scope.title ? `About: ${scope.title}` : \"About: this record\";\n}\n"],"mappings":"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,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AC7mDO,SAAS,UAAU,OAAkC;AAC1D,SAAO,MAAM,QAAQ,UAAU,MAAM,KAAK,KAAK;AACjD;","names":["err"]}
|
|
1
|
+
{"version":3,"sources":["../src/vocabulary.ts","../src/level.ts","../src/choice.ts","../src/coerce.ts","../src/pipeline.ts","../src/rule.ts","../src/portal.ts","../src/aggregate.ts","../src/capture-queue.ts","../src/results.ts","../src/ops.ts","../src/store.generated.ts","../src/record-scope.ts"],"sourcesContent":["// src/vocabulary.ts — @ai-matrx/records\n//\n// THE CLOSED VOCABULARIES. Every list here is a word set the STORE enforces,\n// and the store is the only place any of them is decided. The literal values\n// are not typed by hand: `src/store.generated.ts` is regenerated from the live\n// catalogue by `pnpm records:generate`, and `pnpm check:store-registry` fails\n// the build the moment this package and the database disagree. What lives HERE\n// is the type layer over those literals, so a wrong word is a compile error in\n// a consumer rather than a `23514` at three in the morning.\n\nimport {\n ACTOR_VOCABULARY,\n ABSENCE_REASONS,\n VALUE_ENVELOPE_KEYS,\n VALUE_ALTERNATE_KEYS,\n STORAGE_MODES,\n RULE_USES,\n PER_VALUE_ACCESS_WORDS,\n PARITY_FIELD_TYPES,\n RULE_NODE_KINDS,\n RETIRED_ACTOR_WORDS,\n} from \"./store.generated\";\n\n/**\n * VAL-8. Who wrote a value. `user`, `agent`, `system` — enforced by every write\n * door, and the three retired words (`human`, `ai`, `code`) are translated by\n * the store's own `custom.actor_word`, never by a caller.\n */\nexport type Actor = (typeof ACTOR_VOCABULARY)[number];\n\n/** The words the store still accepts and rewrites, mapped to what they become. */\nexport type RetiredActorWord = keyof typeof RETIRED_ACTOR_WORDS;\n\n/**\n * VAL-2. Why a value is missing. A value is never blank for an unexplained\n * reason: it either holds something or it says one of these four words.\n */\nexport type AbsenceReason = (typeof ABSENCE_REASONS)[number];\n\n/** The closed key set of one value envelope (VAL-1 … VAL-4). */\nexport type ValueEnvelopeKey = (typeof VALUE_ENVELOPE_KEYS)[number];\n\n/** The closed key set of one ranked alternate (VAL-3). */\nexport type ValueAlternateKey = (typeof VALUE_ALTERNATE_KEYS)[number];\n\n/**\n * REC-4. `heavy` is indexed storage with Rules on write; `light` is\n * whole-document storage with Rules on read. Per Table, one store.\n */\nexport type StorageMode = (typeof STORAGE_MODES)[number];\n\n/** REC-15. One Rule object, four uses. */\nexport type RuleUse = (typeof RULE_USES)[number];\n\n/**\n * VAL-5 / VAL-6. The words that may NOT appear inside a value envelope:\n * visibility and access belong to a Field and to a Record, never to a value.\n * The store refuses each of them by name and so does this package's mirror.\n */\nexport type PerValueAccessWord = (typeof PER_VALUE_ACCESS_WORDS)[number];\n\n/** FLD-11. The parity floor: the field type a person picks in the UI. */\nexport type ParityFieldType = (typeof PARITY_FIELD_TYPES)[number][\"parity_type\"];\n\n/** FLD-1. The five behaviours a Field can have. One, exactly, and closed. */\nexport type FieldBehavior = (typeof PARITY_FIELD_TYPES)[number][\"behavior\"];\n\n/** The node kinds `custom.rule_eval` evaluates. */\nexport type RuleNodeKind = (typeof RULE_NODE_KINDS)[number][\"node\"];\n\n/**\n * REC-32. The seven table types, closed. The parenthesised names are the\n * retired ones the doctrine records; never coin an eighth.\n */\nexport const TABLE_TYPES = [\n \"entity\",\n \"detail\",\n \"reference\",\n \"ledger\",\n \"restricted\",\n \"system\",\n \"deprecated\",\n] as const;\nexport type TableType = (typeof TABLE_TYPES)[number];\n\n/** REC-33. The two origins. A table we ship in schema `custom` is `standard`. */\nexport const TABLE_ORIGINS = [\"standard\", \"custom\"] as const;\nexport type TableOrigin = (typeof TABLE_ORIGINS)[number];\n\n/** REL-1. Ownership is one fact, stored once, read from the field's side. */\nexport const RELATION_FLAVORS = [\"owned\", \"referenced\"] as const;\nexport type RelationFlavor = (typeof RELATION_FLAVORS)[number];\n\n/** REL-2. What happens to the far side, separate from flavour. */\nexport const ON_DELETE = [\"cascade\", \"set_null\", \"restrict\"] as const;\nexport type OnDelete = (typeof ON_DELETE)[number];\n\n/** REL-3. A snapshot is a frozen copy in the relation's payload, never a pointer. */\nexport const RELATION_BINDINGS = [\"live\", \"snapshot\"] as const;\nexport type RelationBinding = (typeof RELATION_BINDINGS)[number];\n\n/** REL-7. */\nexport const RELATION_CARDINALITIES = [\"one\", \"many\"] as const;\nexport type RelationCardinality = (typeof RELATION_CARDINALITIES)[number];\n\n/** FLD-7. Where a Field's values come from. */\nexport const FIELD_SOURCES = [\"manual\", \"formula\", \"agent\", \"synced\"] as const;\nexport type FieldSource = (typeof FIELD_SOURCES)[number];\n\n/** FLD-9. A Formula declares whether it computes on read or on write. */\nexport const COMPUTE_ON = [\"read\", \"write\"] as const;\nexport type ComputeOn = (typeof COMPUTE_ON)[number];\n\n/**\n * AGT-7 / FLD-12. A Field's sensitivity sets a ceiling a merge field can never\n * widen — and these are THE STORE'S four words, checked against its own guard.\n *\n * This list used to read `standard · sensitive · secret`, which the store has\n * never accepted: writing a Field with `sensitivity: \"standard\"` is refused\n * with \"the field <name> has to say how sensitive its values are, and it says\n * standard\". The knob `custom/field_sensitivity_levels` keys off these same\n * four words to decide which level may read and edit each one, so a package\n * carrying three different words could never have agreed with it. Corrected\n * against the live store, 2026-09-18.\n */\nexport const FIELD_SENSITIVITIES = [\"public\", \"internal\", \"confidential\", \"restricted\"] as const;\nexport type FieldSensitivity = (typeof FIELD_SENSITIVITIES)[number];\n\n/** DYN-17 / §D. Which tier a MERGE FIELD's value is delivered in. */\nexport const DELIVERIES = [\"inline\", \"on_demand\", \"auto\"] as const;\nexport type Delivery = (typeof DELIVERIES)[number];\n\n/**\n * FLD-12. WHETHER AN AGENT MAY SEE A FIELD'S VALUES, and these are the STORE'S\n * four words — not the merge field's delivery tiers.\n *\n * `Field.context_policy` used to be typed as `Delivery` here, which is a\n * different question with a different vocabulary: writing a Field with\n * `context_policy: \"inline\"` is refused with \"the field <name> has to say\n * whether an agent may see its values, and it says inline\". Delivery is about\n * HOW MUCH of a value a merge field carries into a turn; this is about WHETHER\n * the value reaches an agent at all, and conflating them let a screen offer a\n * word the store has never accepted. Corrected against the live store,\n * 2026-09-18.\n */\nexport const CONTEXT_POLICIES = [\"include\", \"summarize\", \"exclude\", \"on_request\"] as const;\nexport type ContextPolicy = (typeof CONTEXT_POLICIES)[number];\n\n/** DYN-3. The eight sources, closed. Relationships and rules are not sources. */\nexport const MERGE_FIELD_SOURCES = [\n \"literal\",\n \"record\",\n \"state\",\n \"actor\",\n \"platform\",\n \"user_input\",\n \"tool\",\n \"derived\",\n] as const;\nexport type MergeFieldSource = (typeof MERGE_FIELD_SOURCES)[number];\n\n/** DYN-4. What a merge field resolves INTO. The consumer never learns which. */\nexport const MERGE_FIELD_SEMANTIC_TYPES = [\n \"value\",\n \"reference\",\n \"resolver\",\n \"computed\",\n \"collection\",\n] as const;\nexport type MergeFieldSemanticType = (typeof MERGE_FIELD_SEMANTIC_TYPES)[number];\n\n/** DYNAMIC-VALUES §A. Any number of these; never fused into the source. */\nexport const MERGE_FIELD_MODIFIERS = [\n \"scoped\",\n \"temporal\",\n \"collection\",\n \"live\",\n \"fallback\",\n \"formatted\",\n \"required\",\n] as const;\nexport type MergeFieldModifier = (typeof MERGE_FIELD_MODIFIERS)[number];\n\n/** DYN-12. The five override policies. Exactly one, and it outranks the ladder. */\nexport const OVERRIDE_POLICIES = [\n \"must_supply\",\n \"shown_overridable\",\n \"shown_locked\",\n \"server_fixed\",\n \"derived\",\n] as const;\nexport type OverridePolicy = (typeof OVERRIDE_POLICIES)[number];\n\n/** DYNAMIC-VALUES §C. What a resolved merge field's freshness was. */\nexport const FRESHNESS = [\"live\", \"cached\", \"snapshot\"] as const;\nexport type Freshness = (typeof FRESHNESS)[number];\n\n/** REC-1. How a Table shows itself. */\nexport const TABLE_DISPLAYS = [\"list\", \"grid\", \"board\", \"calendar\", \"timeline\"] as const;\nexport type TableDisplay = (typeof TABLE_DISPLAYS)[number];\n","// src/level.ts — @ai-matrx/records\n//\n// THE FOUR WORDS, AND THEIR ORDER. `public.permission_level` is a closed enum —\n// viewer < commenter < editor < admin — and the store says so in its own\n// refusals (\"This needs the admin level (viewer < commenter < editor < admin)\").\n//\n// It lives here, in the headless package, for one reason: a screen that has to\n// decide whether to DRAW a control needs the same ordering the door uses to\n// decide whether to accept the call. Two orderings is two answers to one\n// question, and the second one is always the wrong one.\n//\n// Nothing here decides policy. `atLeast` compares two words the store defined;\n// which word a door requires is the door's business and is never restated here.\n\n/** `public.permission_level`, in the store's own order. */\nexport type PermissionLevel = \"viewer\" | \"commenter\" | \"editor\" | \"admin\";\n\n/** The order the store writes them in, lowest first. */\nexport const PERMISSION_LEVELS: readonly PermissionLevel[] = [\n \"viewer\",\n \"commenter\",\n \"editor\",\n \"admin\",\n] as const;\n\nconst ORDINAL: Record<PermissionLevel, number> = {\n viewer: 1,\n commenter: 2,\n editor: 3,\n admin: 4,\n};\n\n/** Whether `held` is the same rung as `needed` or a higher one. Nothing held is never enough. */\nexport function atLeast(held: PermissionLevel | null | undefined, needed: PermissionLevel): boolean {\n if (!held) return false;\n const have = ORDINAL[held];\n return have !== undefined && have >= ORDINAL[needed];\n}\n\n/** A level word the store sent, or null when it sent something this package does not know. */\nexport function asPermissionLevel(word: unknown): PermissionLevel | null {\n return typeof word === \"string\" && word in ORDINAL ? (word as PermissionLevel) : null;\n}\n\n/** The higher of two levels — what a person holds when two ways in both let them through. */\nexport function highestLevel(\n left: PermissionLevel | null | undefined,\n right: PermissionLevel | null | undefined,\n): PermissionLevel | null {\n if (!left) return right ?? null;\n if (!right) return left;\n return ORDINAL[left] >= ORDINAL[right] ? left : right;\n}\n\n/**\n * What one subject's level is, as `custom.my_levels` answers it. `null` is an\n * ANSWER — \"you hold nothing on this\" — and never a missing row: a screen that\n * could not tell \"no access\" from \"not asked yet\" would draw one of them as the\n * other.\n */\nexport interface MyLevel {\n id: string;\n level: PermissionLevel | null;\n}\n","// src/choice.ts — @ai-matrx/records\n//\n// WHAT A CHOICE VALUE IS, in one place, for every screen and every caller.\n//\n// A pick-list is a Table and an option is a Record of it (FLD-5 / FLD-6) — that part is\n// unchanged and is the store being right. What a CELL holds is not the option record's id: it\n// is the option's own stable key, a short word derived from its title when the option is born,\n// unique within its list and never rewritten. So renaming \"Circle\" to \"Round\" rewrites no row,\n// and nothing — no person, no agent, no import — is ever asked to know a uuid for a word the\n// product showed them.\n//\n// The read doors hand back the LABEL in the cell and name the key beside it in `_choices`:\n//\n// { \"kind\": \"Circle\",\n// \"_choices\": { \"kind\": { \"key\": \"circle\", \"label\": \"Circle\", \"id\": \"…\",\n// \"retired\": false, \"reason\": null } } }\n//\n// A multi-choice cell reads as an array of labels and its `_choices` entry is an array in the\n// same order. A RETIRED option is in there too, with `retired: true` and the reason — a value\n// whose choice was retired reads as its label and says what happened rather than vanishing.\n//\n// WRITING takes the label, the key, or (so nothing that worked yesterday breaks) the option\n// record's id. The store normalises all three to the key on the way in and refuses a word that\n// names no choice, naming the choices themselves.\n\nimport type { RecordDocument, StoredRecord } from \"./record\";\n\n/** One option, as `_choices` names it and as `optionsOf` returns it. */\nexport interface ChoiceOption {\n /** The stable key the cell actually holds. */\n key: string;\n /** What a person reads. */\n label: string;\n /** The option RECORD's id, for a caller that needs the row itself. */\n id?: string;\n /** True when the option was retired: still readable, no longer pickable. */\n retired?: boolean;\n /** Why it is no longer offered, in a sentence, when it is retired. */\n reason?: string | null;\n}\n\nconst UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/**\n * The stable key of an option RECORD as `custom.field_options` returns it.\n *\n * It lives in `metadata.option_key`, not in the document: FLD-5 keeps a category to one title\n * field, and the key is the store's own bookkeeping rather than a column anybody declared.\n * The fallback is the same slug the store derives, so an option written by something that has\n * not caught up still answers.\n */\nexport function optionKey(option: StoredRecord): string {\n const stored = option.metadata?.[\"option_key\"];\n if (typeof stored === \"string\" && stored.trim() !== \"\") return stored;\n return choiceSlug(optionLabel(option));\n}\n\n/** What a person reads on an option record. */\nexport function optionLabel(option: StoredRecord): string {\n const doc = option.data as RecordDocument | undefined;\n const title = doc?.[\"title\"] ?? doc?.[\"name\"];\n if (typeof title === \"string\" && title.trim() !== \"\") return title;\n return \"Unnamed choice\";\n}\n\n/**\n * The store's own slug, mirrored so a client can predict a key without a round trip.\n * `custom.choice_slug` is the original; a title with nothing a-z0-9 in it gets a short hash of\n * itself there, and this returns the empty-ish fallback rather than guessing a hash — a caller\n * that needs the real key for such a title reads it off the option.\n */\nexport function choiceSlug(word: string): string {\n const slug = word\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"_\")\n .replace(/^_+|_+$/g, \"\")\n .slice(0, 55);\n return slug === \"\" ? \"choice\" : slug;\n}\n\n/**\n * Does this stored (or typed) value name this option? The key, the label and the option's own\n * id all name the same choice, and a control has to recognise every one of them: what the read\n * door hands it is the LABEL, what the store holds is the KEY, and what a screen written before\n * this contract sends is the ID.\n */\nexport function isTheChosen(option: StoredRecord, value: unknown): boolean {\n if (typeof value !== \"string\") return false;\n const asked = value.trim().toLowerCase();\n if (asked === \"\") return false;\n return (\n asked === optionKey(option).toLowerCase() ||\n asked === optionLabel(option).toLowerCase() ||\n asked === option.id.toLowerCase()\n );\n}\n\n/** Every value of one cell, as strings, whether the Field is multi or not. */\nexport function choiceValuesOf(value: unknown): string[] {\n if (Array.isArray(value)) return value.filter((v): v is string => typeof v === \"string\");\n if (typeof value === \"string\" && value !== \"\") return [value];\n return [];\n}\n\n/**\n * What the read door said about one column's choices: the key behind the label, and whether the\n * option was retired and why. Returns an empty array when the document carries no `_choices`\n * entry for that column, which is also what a document written before this contract looks like.\n */\nexport function choicesOf(document: RecordDocument | undefined, fieldKeyOrId: string): ChoiceOption[] {\n const block = document?.[\"_choices\"];\n if (!block || typeof block !== \"object\") return [];\n const entry = (block as Record<string, unknown>)[fieldKeyOrId];\n if (!entry) return [];\n const list = Array.isArray(entry) ? entry : [entry];\n return list.filter((x): x is ChoiceOption => !!x && typeof x === \"object\" && typeof (x as ChoiceOption).key === \"string\");\n}\n\n/** True when this cell's value points at a choice that has since been retired. */\nexport function holdsARetiredChoice(document: RecordDocument | undefined, fieldKeyOrId: string): boolean {\n return choicesOf(document, fieldKeyOrId).some((c) => c.retired === true);\n}\n\n/** True when a token looks like a uuid — which a choice value is no longer allowed to be. */\nexport function looksLikeAnId(value: unknown): boolean {\n return typeof value === \"string\" && UUID.test(value);\n}\n","// src/coerce.ts — @ai-matrx/records\n//\n// WHAT A TYPED-IN ANSWER MEANS TO A FIELD, WORKED OUT IN ONE PLACE.\n//\n// Every door into this store that a person types into hands over STRINGS. A\n// browser input is a string. A clipboard cell is a string. A CSV column is a\n// string. A public form's answer is a string. A Field does not take strings —\n// it takes a number, a tick, a day, the id of an option — and until the string\n// has been turned into one of those, the store refuses it.\n//\n// 🚨 WHY THIS FILE EXISTS (AGENT-BUILDS-2's closing walk, 2026-09-21). A real\n// customer picked a time on Ironclad Mobile Mechanic's public booking page,\n// typed their name, phone, email and vehicle, pressed \"Book it\", and the page\n// answered:\n//\n// \"Vehicle Year takes a number, and it was given a string\"\n//\n// The appointment was not made. `BookingPicker` kept its answers as\n// `Record<string, string>` and the confirm route passed them through\n// uncoerced, so a booking page over ANY table with a number field was\n// unbookable by anybody. The store was right and said so plainly; nothing\n// between the person and the store had done the one job that stood between\n// them.\n//\n// AND IT WAS ALREADY SOLVED, TWICE, IN THE WRONG PLACE. The grid's paste\n// (`@ai-matrx/records-ui` `valueFromPastedText`) and the import wizard each\n// carried their own coercion — good ones — while the two PUBLIC doors, the\n// ones a stranger uses, carried none. That is the shape the platform-primitive\n// rule exists to stop: a capability scoped to the feature that surfaced it.\n// So the coercion lives HERE, headless, in the package both the screens and\n// the servers already depend on, and every one of those five doors calls it.\n//\n// THREE RULES IT KEEPS:\n//\n// 1. A VALUE IS COERCED, NEVER GUESSED. Writing 0 for \"about twelve\" or\n// today's date for \"soon\" is how a table quietly becomes untrue. A string\n// that is not the thing is REFUSED, by name, in words the person can act\n// on — \"Vehicle Year holds a number, and “twenty nineteen” is not one\".\n// 2. THE REFUSAL NAMES THE FIELD IN PLAIN WORDS, never its key, because the\n// person reading it is looking at a label on a screen.\n// 3. IT DECIDES NOTHING ELSE. Required, the Rules, the cap, the rate window\n// and every wall are the store's. This turns a string into a value and\n// stops.\n\nimport type { Field } from \"./field\";\n\n/**\n * EVERYTHING THIS FILE NEEDS TO KNOW ABOUT A FIELD, AND NOTHING ELSE.\n *\n * A full `Field` satisfies it, and so does every narrower shape the store\n * hands to a screen — `CaptureField` on a phone with no network, the Field\n * documents `custom.form_public` and `custom.booking_public` publish to a\n * stranger. Asking for the whole `Field` would have meant the capture sheet\n * keeping its own `Number(raw)`, which is exactly the duplication this file\n * exists to end.\n */\nexport interface CoercibleField {\n /** Named so the doc above is checkable: a full {@link Field} satisfies this. */\n key: string;\n label?: string | null;\n name?: string | null;\n /** FLD-1. One of five behaviours; an unknown word is treated as text. */\n type?: string | null;\n multi?: boolean | null;\n unit?: string | null;\n format?: string | null;\n config?: Record<string, unknown> | null | undefined;\n relation_target?: string | null;\n}\n\n// ───────────────────────────────────────────────────────────────────────────\n// WHICH KIND OF THING A FIELD HOLDS\n// ───────────────────────────────────────────────────────────────────────────\n\n/**\n * The kind of value one Field holds, resolved from its DECLARATION only — the\n * behaviour, the modifiers, the format, the relation target and the config,\n * because those are what the store stores. A screen that guessed from a value\n * would answer differently for an empty record.\n *\n * `plain_text`, `long_text`, `number` and `boolean` are behaviours that carry\n * no parity type of their own; every other word here is a parity type.\n */\nexport const FIELD_KINDS = [\n \"attachment\",\n \"checkbox\",\n \"currency\",\n \"datetime\",\n \"email\",\n \"formula\",\n \"json\",\n \"long_text\",\n \"lookup\",\n \"member\",\n \"multi_select\",\n \"number\",\n \"percent\",\n \"phone\",\n \"relation\",\n \"rollup\",\n \"select\",\n \"text\",\n \"url\",\n] as const;\n\n/**\n * 🚨 THE UNION IS DERIVED FROM THE LIST ABOVE, and the list is what the\n * coverage test walks. Add a kind here and the test drives it; give it no arm\n * in `coerceTypedAnswer` and the test says so, instead of the new kind falling\n * quietly through `default:` and a value of the wrong shape reaching the store\n * — which is the whole defect this file closes.\n */\nexport type FieldKind = (typeof FIELD_KINDS)[number];\n\n/** The kernel Table ids REC-31 pins the two special relations to. */\nexport interface KernelTargets {\n /** The kernel `File` Table — a relation pointing here is an attachment. */\n file?: string | undefined;\n /** The kernel `Person` Table — a relation pointing here names a person. */\n person?: string | undefined;\n}\n\n/**\n * Which kind of value this Field holds.\n *\n * This is the ONE classifier. `@ai-matrx/records-ui`'s `editorKindFor` — which\n * decides which editor to DRAW — delegates to it, so the editor a person types\n * into and the coercion applied to what they typed can never disagree about\n * the same column. They did disagree before this moved here; that is the whole\n * class of grid defect September was spent closing.\n */\nexport function fieldKindFor(field: CoercibleField, kernel?: KernelTargets): FieldKind {\n const format = (field.format ?? \"\").toLowerCase();\n const config = field.config ?? {};\n switch (field.type) {\n case \"boolean\":\n return \"checkbox\";\n case \"text\":\n if (format === \"email\") return \"email\";\n if (format === \"phone\") return \"phone\";\n if (format === \"url\") return \"url\";\n if (format === \"json\" || config[\"json\"] === true) return \"json\";\n if (format === \"long\" || config[\"multiline\"] === true) return \"long_text\";\n return \"text\";\n case \"range\": {\n const kind = String(config[\"kind\"] ?? \"number\");\n if (kind === \"date\" || kind === \"datetime\") return \"datetime\";\n // THE FORMAT, AND ONLY THE FORMAT. A unit is not a currency: a quantity\n // in `units` drawn as money is how three of something rendered \"units3\".\n if (format === \"currency\") return \"currency\";\n if (format === \"percent\" || field.unit === \"%\") return \"percent\";\n return \"number\";\n }\n case \"list\":\n return field.multi ? \"multi_select\" : \"select\";\n case \"relation\": {\n const parity = String(config[\"parity\"] ?? \"\");\n if (parity === \"attachment\" || parity === \"member\") return parity;\n if (kernel?.file && field.relation_target === kernel.file) return \"attachment\";\n if (kernel?.person && field.relation_target === kernel.person) return \"member\";\n return \"relation\";\n }\n case \"formula\": {\n const via = config[\"via\"];\n if (via && config[\"agg\"]) return \"rollup\";\n if (via) return \"lookup\";\n return \"formula\";\n }\n default:\n return \"text\";\n }\n}\n\n// ───────────────────────────────────────────────────────────────────────────\n// THE COERCION\n// ───────────────────────────────────────────────────────────────────────────\n\n/** One Field's options, indexed the way a typed word has to be looked up. */\nexport interface ChoiceOptions {\n /**\n * Lower-cased label, option key and option id, each pointing at the OPTION\n * RECORD'S ID — which is what a list Field stores (FLD-5/FLD-6).\n */\n byWord: Map<string, string>;\n /** The labels, in order, so a refusal can say what is on offer. */\n labels: string[];\n}\n\n/** What one answer became, or the sentence saying why it did not. */\nexport type Coerced =\n | { value: unknown }\n | { refusal: string; unmatched?: string[] };\n\nexport interface CoerceOptions {\n /** This Field's choices, when the caller has loaded them. */\n options?: ChoiceOptions | undefined;\n /** The kernel File/Person Table ids, for classifying relations. */\n kernel?: KernelTargets | undefined;\n /**\n * The Field's name as this caller writes it. Defaults to the Field's own\n * label. A screen passes the same words it printed above the box.\n */\n label?: string | undefined;\n}\n\nconst TRUE_WORDS = new Set([\"true\", \"yes\", \"y\", \"1\", \"✓\", \"x\", \"checked\", \"on\"]);\nconst FALSE_WORDS = new Set([\"false\", \"no\", \"n\", \"0\", \"\", \"unchecked\", \"off\"]);\n\n/** The Field's name in plain words — never its key on a screen. */\nexport function coercionLabel(field: CoercibleField): string {\n const label = (field.label ?? \"\").trim();\n if (label !== \"\") return label;\n const name = (field.name ?? \"\").trim();\n if (name !== \"\") return name;\n return field.key\n .replace(/[_-]+/g, \" \")\n .replace(/\\b\\w/g, (c) => c.toUpperCase())\n .trim();\n}\n\n/**\n * Turn ONE typed-in string into the value this Field holds — or say, in a\n * sentence a person can act on, why it is not one.\n *\n * An empty answer is `null` for every kind: a blank means \"no answer here\",\n * and clearing a value is a thing a person means to do. Whether the Field may\n * be blank is the store's question, asked with the Field's `required` and its\n * Rules, not this one's.\n */\nexport function coerceTypedAnswer(\n field: CoercibleField,\n raw: string,\n opts: CoerceOptions = {},\n): Coerced {\n const label = opts.label ?? coercionLabel(field);\n const text = raw.trim();\n const kind = fieldKindFor(field, opts.kernel);\n\n if (text === \"\" && kind !== \"checkbox\") return { value: null };\n\n switch (kind) {\n case \"checkbox\": {\n const word = text.toLowerCase();\n if (TRUE_WORDS.has(word)) return { value: true };\n if (FALSE_WORDS.has(word)) return { value: word === \"\" ? null : false };\n return {\n refusal: `${label} is a tick box, so it takes yes or no — “${raw}” is neither. Write TRUE/FALSE, yes/no or 1/0.`,\n };\n }\n case \"number\":\n case \"currency\":\n case \"percent\": {\n // PEOPLE WRITE NUMBERS THE WAY PEOPLE WRITE NUMBERS. \"$1,250.50\",\n // \"(300)\" for a negative, \"12%\", \"2019\" — all of them are the number\n // that was meant, and refusing them makes the column people use most\n // the one the product cannot take.\n const negative = /^\\(.*\\)$/.test(text);\n const bare = text\n .replace(/^\\(|\\)$/g, \"\")\n .replace(/[\\s,]/g, \"\")\n .replace(/^[^\\d.\\-+]+/, \"\")\n .replace(/[^\\d.\\-+eE]+$/, \"\");\n const n = Number(bare);\n if (bare === \"\" || Number.isNaN(n)) {\n return {\n refusal: `${label} holds a number, and “${raw}” is not one. Write digits — a currency symbol, a percent sign, commas and brackets for a negative are all fine.`,\n };\n }\n return { value: negative ? -n : n };\n }\n case \"datetime\": {\n // A DAY IS NOT AN INSTANT, AND TREATING IT AS ONE MOVES IT. `2026-09-01`\n // parsed as an instant is midnight UTC, and a screen west of Greenwich\n // then draws it as 31 August — measured on fifty pasted invoice dates,\n // all one day early, systematically. A date Field holds a DAY.\n const wantsTime = String(field.config?.[\"kind\"] ?? \"date\") === \"datetime\";\n const plainDay = /^\\s*(\\d{4})-(\\d{2})-(\\d{2})\\s*$/.exec(raw);\n if (!wantsTime && plainDay) return { value: `${plainDay[1]}-${plainDay[2]}-${plainDay[3]}` };\n const at = Date.parse(text);\n if (Number.isNaN(at)) {\n return {\n refusal: `${label} holds a date, and “${raw}” is not one this can read. Write it as 2026-09-21, or the way your spreadsheet writes dates.`,\n };\n }\n const parsed = new Date(at);\n if (wantsTime) return { value: parsed.toISOString() };\n const y = parsed.getFullYear();\n const m = String(parsed.getMonth() + 1).padStart(2, \"0\");\n const d = String(parsed.getDate()).padStart(2, \"0\");\n return { value: `${y}-${m}-${d}` };\n }\n case \"json\": {\n try {\n return { value: JSON.parse(text) };\n } catch {\n return {\n refusal: `${label} holds a document, and “${raw}” is not valid JSON. Write the whole object, braces and all.`,\n };\n }\n }\n case \"select\":\n case \"multi_select\": {\n // A LIST IS AN IDENTITY, AND A WORD IS HOW A PERSON NAMES ONE. The store\n // keeps the option's id; the person types its label. Matching the two is\n // the whole job, and it is case-insensitive because \"COMPLETED\" and\n // \"Completed\" are one option.\n if (!opts.options) {\n return {\n refusal: `${label} is a list and its options have not been read yet, so nothing can be matched to “${raw}”. Try again once the column's choices have loaded.`,\n };\n }\n const wanted = kind === \"multi_select\"\n ? text.split(/[,;]/).map((w) => w.trim()).filter((w) => w.length > 0)\n : [text];\n if (wanted.length === 0) return { value: kind === \"multi_select\" ? [] : null };\n const matched: string[] = [];\n const unmatched: string[] = [];\n for (const word of wanted) {\n const hit = opts.options.byWord.get(word.toLowerCase());\n if (hit === undefined) unmatched.push(word);\n else matched.push(hit);\n }\n if (unmatched.length > 0) {\n const offered = opts.options.labels.length > 0\n ? opts.options.labels.join(\", \")\n : \"it has none yet\";\n return {\n refusal:\n `${label} does not have ${unmatched.map((w) => `“${w}”`).join(\" or \")} among its options. ` +\n `It offers: ${offered}.`,\n unmatched,\n };\n }\n return { value: kind === \"multi_select\" ? matched : matched[0] };\n }\n // AN IDENTITY IS NOT A WORD. Writing the word would put a string where an\n // id belongs, and every filter, colour and rollup built on that column\n // would stop agreeing with it. So it is refused and the person is told\n // which control does hold it.\n case \"member\":\n return {\n refusal: `${label} names a person in this organization, so it is chosen rather than typed. Open it and pick them.`,\n };\n case \"attachment\":\n return {\n refusal: `${label} holds a file, which cannot arrive as typed-in text. Open it and attach the file.`,\n };\n case \"relation\":\n return {\n refusal: `${label} points at another record, so it is chosen rather than typed. Open it and pick the record.`,\n };\n case \"formula\":\n case \"lookup\":\n case \"rollup\":\n return {\n refusal: `${label} is worked out by the system, so nothing can be written into it.`,\n };\n default:\n // text, long_text, email, phone, url — the string IS the value, and the\n // format Rules on it are the store's to judge.\n return { value: raw };\n }\n}\n\n/** What a whole set of typed-in answers became. */\nexport interface CoercedAnswers {\n /** Ready to send to the store. Only the keys that coerced cleanly. */\n values: Record<string, unknown>;\n /** Field key → the sentence saying why that answer was not written. */\n refusals: Record<string, string>;\n /** The field keys the caller sent that this table has no Field for. */\n unknownKeys: string[];\n}\n\n/**\n * Every typed-in answer on one screen, coerced together — the shape the two\n * public doors and the import wizard actually need.\n *\n * Keys the table has no Field for are reported rather than dropped: the store\n * refuses an unknown key by name and a caller that quietly deleted it would\n * hide a real mismatch between a page and its table.\n */\nexport function coerceTypedAnswers(\n fields: readonly CoercibleField[],\n answers: Readonly<Record<string, unknown>>,\n opts: {\n kernel?: KernelTargets | undefined;\n /** Choices per Field key, for the list columns. */\n options?: ReadonlyMap<string, ChoiceOptions> | undefined;\n /** Field key → the words that screen printed above the box. */\n labels?: Readonly<Record<string, string>> | undefined;\n } = {},\n): CoercedAnswers {\n const byKey = new Map(fields.map((f) => [f.key, f]));\n const values: Record<string, unknown> = {};\n const refusals: Record<string, string> = {};\n const unknownKeys: string[] = [];\n\n for (const [key, given] of Object.entries(answers)) {\n const field = byKey.get(key);\n if (!field) {\n unknownKeys.push(key);\n // Passed through untouched: it is the STORE's job to say it does not\n // know this key, in its own words, naming it.\n values[key] = given;\n continue;\n }\n // ALREADY THE RIGHT SHAPE IS LEFT ALONE. A screen with real editors hands\n // over a number, a boolean or an array already; only a STRING needs this.\n if (typeof given !== \"string\") {\n values[key] = given;\n continue;\n }\n const opt: CoerceOptions = {};\n const choices = opts.options?.get(key);\n if (choices) opt.options = choices;\n if (opts.kernel) opt.kernel = opts.kernel;\n const label = opts.labels?.[key];\n if (label) opt.label = label;\n\n const answered = coerceTypedAnswer(field, given, opt);\n if (\"refusal\" in answered) refusals[key] = answered.refusal;\n else values[key] = answered.value;\n }\n\n return { values, refusals, unknownKeys };\n}\n","// src/pipeline.ts — @ai-matrx/records · PRODUCTS row 7\n//\n// A PIPELINE IS NOT A NEW KIND OF THING, and this module adds none. A pipeline is a\n// Choice Field that a Table names as its STAGE field, plus transition Rules of the ONE\n// Rule object (REC-15) about that Table. A move is an ORDINARY record write: the validate\n// use judges it, History records it because it is a write, and the entry effects are the\n// applicability use's own declared consequence.\n//\n// SO THIS PACKAGE ENFORCES NOTHING. Every type below is the shape of a door's answer, and\n// every judgement comes from the store. A board that decided in the browser which column a\n// card may enter would be a second opinion with nothing keeping it equal to the first —\n// and it would be the comfortable one, because it is the one nobody can be refused by.\n\nimport type { Uuid } from \"./record\";\n\n/** One stage of a board: the KEY the store keeps, and the LABEL a person reads. */\nexport interface PipelineStage {\n /** The option's stable key — what a cell holds, and what a move is written with. */\n key: string;\n /** What the column heading says. Renaming a stage rewrites no record. */\n label: string;\n /** A retired choice can still be READ on a record that holds it; it cannot be picked anew. */\n retired: boolean;\n}\n\n/** What each Rule of a pipeline is about. Closed, and the store is the authority. */\nexport const PIPELINE_RULE_KINDS = [\"moves\", \"requires\", \"who\", \"limit\", \"entry\"] as const;\n/**\n * A GATE is the general form under `requires`, `who` and `limit`, and the store spells it\n * `gate:1`, `gate:2` … so several gates can sit on one stage without one overwriting the\n * next. It is matched as a prefix rather than listed, because the number is open.\n */\nexport type PipelineRuleKind = (typeof PIPELINE_RULE_KINDS)[number] | `gate:${number}`;\n\n/**\n * WHAT A GATE DOES WHEN IT SAYS NO. The closed list `custom.stage_rule_on_fail_kinds()`\n * answers — a screen offering a third answer would be offering something no Rule can carry.\n */\nexport const STAGE_RULE_ON_FAIL = [\"refuse\", \"require_approval\"] as const;\nexport type StageRuleOnFail = (typeof STAGE_RULE_ON_FAIL)[number];\n\n/**\n * THE ORGANIZATION'S ONE KNOB (`custom/stage_rule_enforcement`). `refuse` is the default and\n * what a gate is for; `warn` lets the move through and hands the same sentence back. It never\n * softens `require_approval` — \"ask somebody\" and \"carry on with a note\" are different answers.\n */\nexport const STAGE_RULE_ENFORCEMENT = [\"refuse\", \"warn\"] as const;\nexport type StageRuleEnforcement = (typeof STAGE_RULE_ENFORCEMENT)[number];\n\n/**\n * One transition Rule, as `custom.pipeline_read` hands it back — WITH the sentence it says\n * when it refuses, because a screen that knows a rule exists but not what it refuses in\n * cannot warn anybody before they drag.\n */\nexport interface PipelineRule {\n id: Uuid;\n name: string;\n /** The exact words a person is shown when this Rule stops a move. */\n message: string;\n kind: PipelineRuleKind | null;\n /** The stage this Rule is about; `null` on the one Rule about the moves themselves. */\n stage: string | null;\n uses: string[];\n /** What happens when a card ARRIVES in this stage — assign, notify, start a checklist. */\n on_entry: Record<string, unknown> | null;\n /**\n * What this Rule does when it STOPS a move. `refuse` is the default and what every\n * pipeline Rule did before gates existed; `require_approval` files the change in the\n * approvals queue with this Rule's sentence as the reason and leaves the record alone.\n */\n on_fail?: StageRuleOnFail;\n /**\n * THE GATE AS IT WAS WRITTEN, which is the only thing that makes it EDITABLE.\n *\n * A gate is saved as one Rule whose expression is an `or` of four arms — not this\n * stage, OR not a move, OR the gate is not about this card, OR the demand holds. That\n * compiled form used to be the only copy, so a settings screen could read a gate's name\n * and its sentence and nothing else: it would open every existing rule with a blank\n * condition and overwrite it the first time somebody pressed Save.\n *\n * Absent on the four sugar rules (`moves`, `requires`, `who`, `limit`), which nobody\n * writes in a condition builder, and on any gate declared before the store started\n * keeping them. Absent means \"this one was not written here\" — never \"it has no\n * condition\", which is a different and dangerous thing to draw.\n */\n when?: Record<string, unknown> | null;\n /** @see {@link PipelineRule.when} — the condition that has to hold, as it was written. */\n demands?: Record<string, unknown> | null;\n version: number;\n}\n\n/**\n * WHAT A GATE WOULD DO TO THIS BOARD TODAY, from `custom.pipeline_gate_preview`.\n *\n * The one question somebody writing a rule that will refuse their colleagues' work\n * actually has, answered while they are still typing it — the gate is judged as an\n * argument, nothing is saved, and nothing is written. The store compiles it with the\n * SAME compiler `pipeline_declare` uses, so this count and the refusal at the door are\n * the same rule.\n */\nexport interface PipelineGatePreview {\n is_pipeline: boolean;\n /** Present, and it says what would make a board exist, when `is_pipeline` is false. */\n why?: string;\n /** The stage key the gate was tried against. */\n stage?: string;\n /** Live cards of this board this person may see that are not already in that stage. */\n considered: number;\n /** How many of them this gate would turn away. */\n refused: number;\n /**\n * Up to three of them, BY NAME. A count with no names is a number nobody can check, and\n * checking it is the whole reason to show it before saving.\n */\n examples: { record_id: Uuid; title: string }[];\n /** True when the board is larger than the preview will walk, so the count is a floor. */\n truncated?: boolean;\n on_fail?: StageRuleOnFail;\n /** The word this board uses for one of its cards — \"quote\", \"deal\" — for the sentence. */\n noun?: string;\n}\n\n/** The whole board's definition, from `custom.pipeline_read`. */\nexport interface Pipeline {\n is_pipeline: boolean;\n /** Present, and it says what would make a board exist, when `is_pipeline` is false. */\n why?: string;\n table_id?: Uuid;\n /** The Field KEY that holds the stage — the twin of a Table's `type_field`. */\n stage_field?: string;\n field_id?: Uuid;\n /** What that column is called, e.g. \"Stage\". */\n stage_label?: string;\n /** In the order they were declared, which is the order the board draws them. */\n stages?: PipelineStage[];\n rules?: PipelineRule[];\n}\n\n/** One column of the board, with the store's own numbers over what this person may see. */\nexport interface PipelineColumn {\n stage_key: string;\n stage_label: string;\n /** 1-based, the declared order. */\n stage_position: number;\n cards: number;\n /** The total of the chosen measure, or null when no measure was asked for. */\n total: number | null;\n /** How many cards this column takes at once, or null when it takes any number. */\n wip_limit: number | null;\n /** True when the column already holds MORE than its limit — a state a board must show. */\n over_limit: boolean;\n}\n\n/** One column this stage demands before a card may land in it. */\nexport interface PipelineMissingField {\n field_id: Uuid;\n key: string;\n /** What the column is called, so a screen can ASK for it rather than only refuse. */\n label: string;\n}\n\n/**\n * Whether a card may go to a column, answered BEFORE the finger lets go — by the same\n * Rules, through the same evaluator, on the document the move WOULD produce.\n *\n * A board greys a column, and snaps a card back, from this. It never decides for itself.\n */\nexport interface PipelineVerdict {\n allowed: boolean;\n is_pipeline: boolean;\n /**\n * The THREE answers a board has to draw differently, and the reason `allowed` alone is\n * not enough: a card that is going for approval has not been refused, and a card that\n * moved under `warn` has not been waved through silently.\n */\n outcome?: \"allowed\" | \"refused\" | \"needs_approval\" | \"warned\";\n /** What this organization's one knob says right now. */\n enforcement?: StageRuleEnforcement;\n /** Set on `needs_approval`: what pressing on will actually do, in plain words. */\n what_happens?: string;\n /** Set on `warned`: the gates this organization asked to be told about, not stopped by. */\n warnings?: StageRuleWarning[];\n /** Approvals already filed against this card's own stage column that nobody has decided. */\n pending?: StagePending[];\n /** The stage key the move was asked about. */\n to?: string;\n /** The store's own sentence — shown verbatim, never paraphrased by a screen. */\n why: string;\n rule?: string;\n rule_id?: Uuid;\n rule_version?: number;\n kind?: PipelineRuleKind;\n /** What this Rule does when it stops a move. */\n on_fail?: StageRuleOnFail;\n /**\n * When a stage demands columns that are empty, exactly which ones — so the screen can\n * prompt for them on entry instead of sending the person away to find them.\n */\n missing?: PipelineMissingField[];\n}\n\n/** What `custom.pipeline_declare` says it made or changed. */\nexport interface PipelineDeclared {\n table_id: Uuid;\n stage_field: string;\n field_id: Uuid;\n stages: string[];\n rules: Record<string, Uuid>;\n /** Plain sentences naming each thing this declaration wrote. */\n said: string[];\n}\n\n/** The declaration a person (or an agent) writes. Everything is optional but the stages. */\nexport interface PipelineSpec {\n stage_field: { key: string; label?: string; options?: string[]; sort?: number };\n transitions?: { from: string; to: string }[];\n /** Stage name → the column keys that must be filled in to land there. */\n requires?: Record<string, string[]>;\n /** Stage name → the rung somebody needs on the record to move a card INTO it. */\n who?: Record<string, \"viewer\" | \"commenter\" | \"editor\" | \"admin\">;\n /** Stage name → how many cards may sit there at once. The mover is not counted. */\n limits?: Record<string, number>;\n /** Stage name → what happens when a card arrives: assign, notify, start a checklist. */\n on_entry?: Record<string, Record<string, unknown>>;\n /**\n * Stage name → the gates a card has to get past to land there. The general form under\n * `requires`, `who` and `limits`, and the only one that can say `require_approval`.\n */\n gates?: Record<string, PipelineGate[]>;\n moves_message?: string;\n requires_messages?: Record<string, string>;\n}\n\n/**\n * A gate the organization's own knob overruled. NOTHING FAILS SILENTLY: the move happened\n * and the sentence comes back WITH it, together with what to do about it.\n */\nexport interface StageRuleWarning {\n rule_id: Uuid;\n rule: string;\n /** The gate's own sentence, shown verbatim. */\n why: string;\n what_to_do: string;\n}\n\n/** An approval filed against this card's stage column that nobody has decided yet. */\nexport interface StagePending {\n approval_id: Uuid;\n /** The stage key the card is waiting to go to. */\n to: string;\n why: string | null;\n requested_at: string;\n state: string;\n}\n\n/**\n * The same wait, asked for a WHOLE BOARD in one question (`custom.pipeline_pending`), so a\n * board can badge every card that is waiting without a round trip per card — and therefore\n * actually does it, instead of drawing a filed card as if nobody had ever dragged it.\n */\nexport interface StagePendingOnBoard extends StagePending {\n record_id: Uuid;\n}\n\n/** What `custom.pipeline_move` answers — an OBJECT on every path, never a bare number. */\nexport interface PipelineMoveResult {\n applied: boolean;\n moved: boolean;\n outcome: \"moved\" | \"moved_with_warnings\" | \"needs_approval\";\n to: string;\n version: number;\n /** Set on `moved_with_warnings`. */\n warnings?: StageRuleWarning[];\n /** Set on `needs_approval`: the gate's sentence, the wait that was filed, and who has it. */\n why?: string;\n rule?: string;\n rule_id?: Uuid;\n approval_id?: Uuid;\n approvers?: { user_id: Uuid; name: string | null; why: string }[];\n what_happens?: string;\n}\n\n/**\n * ONE GATE ON A STAGE, as the condition builder on the stage settings screen writes it.\n * `requires`, `who` and `limits` are sugar over this shape; this is the general form, and\n * it speaks the SAME condition language as filters and formulas — never a second one.\n */\nexport interface PipelineGate {\n /** What the gate is called in the settings list. */\n name?: string;\n /** The sentence a person reads when it stops them. Required: a refusal with no words is a dead end. */\n message: string;\n /** WHEN this gate is about this record at all. Absent means always. */\n when?: Record<string, unknown>;\n /** What has to hold. One condition node of the one Rule language. */\n demands: Record<string, unknown>;\n /** Default `refuse`. */\n on_fail?: StageRuleOnFail;\n}\n\n/**\n * THE ONE PLACE A SCREEN DECIDES WHETHER A CARD LOOKS DRAGGABLE — and it decides on the\n * PERSON, not on the rules. Whether a particular move is allowed is\n * `pipelineTransitionRefusal`, which is the store's answer; whether this person may move\n * anything at all is their level on the record, which the read door already told us.\n *\n * Absent rather than dead: a viewer's card carries no drag handle at all, instead of one\n * that looks live and snaps back every time.\n */\nexport function mayDrag(level: string | null | undefined): boolean {\n return level === \"editor\" || level === \"admin\" || level === \"owner\";\n}\n","// src/rule.ts — @ai-matrx/records\n//\n// THE RULE. REC-15 … REC-19. ONE object with FOUR uses — validate, compute,\n// define membership, decide applicability — and no fifth. A Rule references\n// Fields BY ID, never by name (REC-17), and it has versions, so History knows\n// which version produced a Value (REC-19).\n\nimport type { Timestamp, Uuid } from \"./record\";\nimport type { RuleNodeKind, RuleUse } from \"./vocabulary\";\n\n/**\n * A rule expression as `custom.rule_eval` ACTUALLY evaluates it — read off the\n * door's own body, not invented here. A leaf is the node's name carrying its\n * payload (`{\"const\": 3}`, `{\"field\": \"<uuid>\"}`); an operator is\n * `{\"op\": \"eq\", \"args\": [...]}`.\n *\n * `field` / `parent_field` name a Field BY ID (REC-17 — the door refuses\n * `field_name`, `field_key` and `field_label` by name), and `merge_field` is\n * the resolver's seam, storable today and refused `0A000` until W5-MERGE-B.\n *\n * `p_values` is keyed by the Field's KEY: the door resolves the id to a key\n * (`custom.rule_field_key`) and then reads `p_values -> key`.\n */\nexport type RuleExpression =\n | { const: unknown }\n | { field: Uuid }\n | { parent_field: Uuid }\n | { merge_field: string }\n | { op: RuleNodeKind; args: RuleExpression[] };\n\n/** REC-15. One Rule, four uses; a Rule may serve more than one. */\nexport interface Rule {\n id: Uuid;\n organization_id: Uuid;\n name: string;\n kind: string | null;\n /** The Table this Rule is scoped to. */\n scope_table_id: Uuid | null;\n uses: RuleUse[];\n validates: boolean;\n computes: boolean;\n defines_membership: boolean;\n /**\n * REC-16. An applicability Rule reads the record's own Values and its\n * parent's, ONE level up, and no further.\n */\n decides_applicability: boolean;\n applies_to_types: string[];\n use_types: string[];\n expr: RuleExpression;\n /** Which Field this Rule's answer is about (REC-17: by id). */\n target_field_id: Uuid | null;\n /** What a person reads when this Rule refuses. */\n message: string | null;\n sort: number | null;\n created_by: Uuid | null;\n updated_by: Uuid | null;\n created_at: Timestamp;\n updated_at: Timestamp;\n /** REC-19. Rules have versions, and History knows which one produced a Value. */\n version: number;\n metadata: Record<string, unknown>;\n visibility: string;\n}\n\n/** What the store answers when a Rule is run: the answer and the version that gave it. */\nexport interface RuleAnswer {\n rule_id: Uuid;\n rule_name: string;\n rule_version: number;\n applies: boolean;\n answer: unknown;\n}\n\n// ── PRODUCTS row 1: a form is a VIEW ON A REAL TABLE ─────────────────────────\n//\n// A form lives beside the Rules because that is what it is MADE of: an accept\n// Rule decides what counts as a complete answer, and a subscription Rule (DOOR-18)\n// decides who hears about one. The questions are Fields of the subject Table and\n// the answers are ordinary records in it — there is no form silo anywhere.\n\n/** One form as `custom.forms` reports it to its owner. */\nexport interface FormSummary {\n form_id: string;\n table_id: string;\n title: string | null;\n slug: string;\n published_at: string | null;\n closed_at: string | null;\n submission_cap: number | null;\n /** Every answer that arrived, rejected ones excluded from `in_table` and `held`. */\n responses: number;\n /** Answers that became records — the only number that means \"it is in the table\". */\n in_table: number;\n /** Answers waiting for a person, because the form's accept Rule did not clear them. */\n held: number;\n /** Answers the accept Rule or the decoy turned away. */\n rejected: number;\n /** draft · open · closed · full — the store's own word, never derived on a screen. */\n state: \"draft\" | \"open\" | \"closed\" | \"full\";\n quarantine_rule_id: string | null;\n notify_rule_id: string | null;\n presentation: Record<string, unknown>;\n}\n\n/**\n * ONE BOOKING PAGE, AS ITS OWNER SEES IT — `custom.bookings` (PRODUCTS row 14).\n *\n * A booking page is an `anon_form` whose `presentation -> 'booking'` carries the\n * availability and the id of a slots Table, so it is the SAME object a form is and\n * this is the same list `forms()` is, asked for the booking half. The numbers are\n * the store's own: a screen that counted appointments in the browser would drift\n * from the index that actually protects a slot.\n */\nexport interface BookingSummary {\n form_id: string;\n /** The Table the appointments land in — a booking is an ordinary record in it. */\n table_id: string;\n title: string | null;\n slug: string;\n published_at: string | null;\n closed_at: string | null;\n /** How long one appointment is. The offer is the store's, never the browser's. */\n slot_minutes: number;\n /** The organization's own zone, which is what the visitor's times are drawn in. */\n timezone: string;\n /** The ONE slots Table `custom.booking_declare` finds-or-makes for this page. */\n slot_table_id: string;\n booked: number;\n cancelled: number;\n /** Booked and still ahead of now — the number that answers \"what is coming\". */\n upcoming: number;\n /** Slots a visitor is holding right now, before they have given their details. */\n held: number;\n /** The next appointment, or null when there is none. */\n next_at: string | null;\n /** draft · open · closed — the store's own word, never derived on a screen. */\n state: string;\n}\n\n/**\n * ONE WINDOW OF AN ORGANIZATION'S WEEK, in the shape `custom._booking_availability`\n * normalises to and `custom._booking_slots` generates from. `weekday` is 0 for Sunday\n * and 6 for Saturday — the database's own numbering, so a picker and the store cannot\n * disagree about which day Monday is. A window may name ONE member, which is the \"with\n * whom\" of an appointment; naming somebody who is not a member is refused BY NAME.\n */\nexport interface BookingWindow {\n weekday: number;\n /** \"09:00\" */\n from: string;\n /** \"17:00\" — later in the day than `from`, or the store refuses it by name. */\n to: string;\n member_user_id?: string | null;\n}\n\n/**\n * WHAT IS ON OFFER. Every field is the store's to default: a page declared with an\n * empty availability comes back with the organization's timezone, a 30-minute slot and\n * Monday-to-Friday nine-to-five, because a booking page that offered nothing would look\n * broken rather than unconfigured. A screen shows what came BACK, never what it sent.\n */\nexport interface BookingAvailability {\n timezone: string;\n slot_minutes: number;\n /** Dead time kept after each appointment, so two never touch. */\n buffer_minutes: number;\n /** How far ahead of now the earliest bookable slot is. */\n lead_minutes: number;\n /** Most appointments in one day, across every window. */\n max_per_day: number;\n /** How many days ahead the page offers. */\n days: number;\n windows: BookingWindow[];\n}\n\n/**\n * WHAT `custom.booking_declare` ANSWERS. `availability` is the NORMALISED offer —\n * show that, not the draft — and `questions_filled_in` is how many questions the store\n * took over (`slot`, `status`, `booked_with`), which a visitor is never asked.\n *\n * It does NOT publish. `anonPublish` is still the one act that opens the link, exactly\n * as it is for a form, so there is one act and one word for opening a public surface.\n */\nexport interface BookingDeclared {\n form_id: string;\n slot_table_id: string;\n availability: BookingAvailability;\n questions_asked: number;\n questions_filled_in: number;\n ms: number;\n}\n\n/**\n * THE VISITOR'S OWN LINK to a booking page. The page id IS the capability, exactly\n * as it is for a form; `custom.anon_submission.booking_ref` is the separate secret\n * that lets ONE visitor manage the appointment they made.\n */\nexport function bookingPath(formId: string): string {\n return `/b/${formId}`;\n}\n\n/**\n * THE PUBLIC LINK, and the one place its shape is written down.\n *\n * The form's own id IS the capability — 122 bits of UUIDv4, exactly as\n * Typeform's form id in `/to/<id>` is and as an unguessable meeting slug is\n * here. There is no second secret to keep, and revoking it is closing the form.\n */\nexport function publicFormPath(formId: string): string {\n return `/f/${formId}`;\n}\n","// src/portal.ts — @ai-matrx/records\n//\n// THE CLIENT PORTAL, FROM THE OWNER'S SIDE.\n//\n// A portal is the one way somebody with no membership of an organization is\n// let in to see the records that name them — their jobs, their invoices —\n// and nothing else. The store holds it in three tables (`custom.portal`,\n// `custom.portal_table`, `custom.portal_principal`) and answers about it\n// through six doors. These are the shapes those doors answer with, written\n// from the doors' own bodies and never from a screen's convenience.\n//\n// TWO FACTS THIS FILE EXISTS TO KEEP STRAIGHT, because a screen that gets\n// either of them wrong tells somebody a comforting lie:\n//\n// · AN INVITATION CONFERS NOTHING. `custom.portal_invite` writes a row and\n// says so in its own `say` sentence: the person gets access the moment\n// they follow the sign-in link and the platform gives them an identity,\n// and until then the row holds nothing at all. That is why\n// `PortalPrincipal` carries `signed_in` separately from `is_active` —\n// \"invited\" and \"can see their records\" are two different states and one\n// number for both is how an owner comes to believe a client is looking at\n// something they cannot reach.\n//\n// · \"VIEW AS THIS CLIENT\" IS NOT A PORTAL-SHAPED QUERY.\n// `custom.portal_preview` asks `custom.visible_set` for HER user id — the\n// exact call `custom.read_records` makes when she opens the page — so the\n// preview cannot disagree with what she sees. When she has not signed in\n// yet it REFUSES with `02000` and a sentence, rather than answering an\n// empty list that would read as \"she sees nothing\".\n\nimport type { Timestamp, Uuid } from \"./record\";\n\n/** One portal as `custom.portals` reports it to its organization. */\nexport interface PortalSummary {\n portal_id: Uuid;\n title: string;\n slug: string;\n /** The Table whose records ARE the clients. A principal is one of its rows. */\n client_table_id: Uuid;\n /** That Table's name, so a list never has to read a second door to draw a row. */\n client_table: string;\n is_active: boolean;\n /** How many Tables this portal exposes. */\n tables: number;\n /** Everybody invited and not revoked — NOT everybody who can see anything. */\n invited: number;\n /** Of those, how many have followed the link and hold an identity. */\n signed_in: number;\n /** `magic_link` today, and the door refuses every other word by name. */\n sign_in_method: string;\n opened_at: Timestamp | null;\n}\n\n/**\n * ONE (portal, Table) PAIR, as `custom.portal_tables` reports it.\n *\n * 🚨 WHY THIS EXISTS (TAILS-3, 2026-09-21). The Portals rail sits on a Table's\n * page beside Forms, Bookings and Dashboards — all table-scoped — while\n * `custom.portals` takes no table at all. On Rincon Plumbing Co's **Parts**\n * table the rail read \"Portals 10\" and listed ten cards titled \"Your jobs and\n * invoices\", which belong to **Jobs**; the empty state never rendered, so the\n * \"Build it / Ask an agent\" offer was unreachable on EVERY table of any\n * organization that already had one portal.\n *\n * This is the whole of what a table-scoped rail needs: is the table I am\n * standing on in any portal, and if not, which portals could take it.\n */\nexport interface PortalTableRef {\n portal_id: Uuid;\n table_id: Uuid;\n /** That Table's name, so a rail never reads a second door to draw a row. */\n name: string;\n}\n\n/** One Table a portal exposes, as `custom.portal_card` reports it. */\nexport interface PortalTableExposure {\n table_id: Uuid;\n /** The Table's own name. */\n name: string;\n /**\n * The key of the relation Field that says WHOSE a record is. This is the\n * whole of \"only theirs\": the association that Field writes is what carries\n * the record to the client, so a portal cannot exist without one.\n */\n names_via: string;\n /** The field keys a client sees. Empty is impossible — the door fills it. */\n visible_fields: string[];\n /** The subset a client may change. Always a subset of `visible_fields`. */\n editable_fields: string[];\n comments: boolean;\n /**\n * The most a client is ever conveyed on this Table — `viewer`, `commenter`\n * or `editor` — worked out by the door from the two lists above, never by a\n * screen.\n */\n conveys: string;\n}\n\n/** One person a portal was opened to, as `custom.portal_card` reports them. */\nexport interface PortalPrincipal {\n principal_id: Uuid;\n email: string;\n /** The record of the client Table this person IS, for the portal's purposes. */\n client_record_id: Uuid;\n /** That record's title — what an owner calls this client. */\n client: string;\n /** They followed the link and hold an identity. Until then this is false. */\n signed_in: boolean;\n /** Not revoked. An invitation that was never followed is still active. */\n is_active: boolean;\n invited_at: Timestamp;\n revoked_at: Timestamp | null;\n /**\n * THE LINK THE OFFICE COPIES FOR THIS PERSON — `/invitations/portal/accept/<token>`, the\n * path `custom.portal_invite` handed back when they were asked, read off the same\n * `iam.invitations` row and never re-templated.\n *\n * 🚨 `null` IS AN ANSWER, NOT AN ABSENCE, and a screen must say which. It is null when they\n * have already followed the link, when the office took it back (a revoke withdraws the\n * invitation in the same statement), when it has expired, or when they were let in through\n * the server's own magic-link route, which binds without an invitation at all. In every one\n * of those cases there is genuinely no link to copy — so draw a sentence, never a dead\n * control. (TAILS-5, 2026-09-21; the gap PORTAL-BIND left named.)\n */\n accept_path: string | null;\n}\n\n/** Everything about ONE portal: what it shows, and who it was opened to. */\nexport interface PortalCard {\n portal_id: Uuid;\n title: string;\n slug: string;\n is_active: boolean;\n sign_in_method: string;\n client_table_id: Uuid;\n tables: PortalTableExposure[];\n principals: PortalPrincipal[];\n /**\n * Whether this organization's outside lane is open\n * (`custom/external_principal_enabled`). Declaring a portal opens it; while\n * it is false every door refuses an outsider BY NAME, and a screen that drew\n * the people as reachable anyway would be lying about the one thing that\n * decides whether they can sign in at all.\n */\n external_lane_open: boolean;\n}\n\n/** What `custom.portal_invite` answers. `say` is the door's own sentence. */\nexport interface PortalInvitation {\n invited: boolean;\n principal_id: Uuid;\n portal_id: Uuid;\n slug: string;\n email: string;\n client_record_id: Uuid;\n client: string;\n /** They already hold an identity. From a screen this is false: the door is passed no user. */\n bound: boolean;\n /**\n * The door's own words, and the ONLY correct summary of what just happened —\n * it says outright that an invitation confers nothing until the link is\n * followed. Show it; never paraphrase it.\n */\n say: string;\n}\n\n/** What `custom.portal_revoke` answers. `say` names the consequence, past tense. */\nexport interface PortalRevocation {\n revoked: boolean;\n principal_id: Uuid;\n email: string;\n /** The door's own sentence: they can no longer sign in, and their records stop reaching them. */\n say: string;\n}\n\n/** One row of \"what this client sees\", from `custom.portal_preview`. */\nexport interface PortalPreviewRow {\n record_id: Uuid;\n title: string;\n}\n\n/**\n * THE PUBLIC ADDRESS OF A PORTAL, and the one place its shape is written down.\n *\n * Unlike a form's link, a portal's slug is NOT the capability: the page it\n * serves asks who you are and emails a one-time link, so the slug is a name and\n * nothing more. That is why it is readable and why copying it is safe.\n */\nexport function portalPath(slug: string): string {\n return `/portal/c/${slug}`;\n}\n","// src/aggregate.ts — @ai-matrx/records\n//\n// THE EIGHTH VERB (AGT-N-8). `custom.record_aggregate` groups, buckets, filters\n// and measures INSIDE the read door's own query: the aggregate node sits above\n// the join to `custom.query_visible_ids`, so a chart is computed over the rows\n// this principal may see and the rest are never fetched at all.\n//\n// That is why a chart in this platform is not \"read everything, then sum in the\n// browser\". Summing in the browser would either read rows a person may not see\n// or quietly under-count them, and both of those are a screen telling a lie.\n\n/** The measures the store offers. Asked of `custom.agg_operations()` at run time too. */\nexport type AggregateOperation = \"count\" | \"sum\" | \"avg\" | \"min\" | \"max\";\n\n/** The periods a date Field can be bucketed into (`custom.agg_buckets()`). */\nexport type AggregateBucket = \"day\" | \"week\" | \"month\" | \"quarter\" | \"year\";\n\n/**\n * A HALF-OPEN MOMENT WINDOW: `from` is inclusive, `to` is exclusive. Half-open\n * is the only shape that makes \"September\" and \"October\" meet exactly once —\n * an inclusive `to` either double-counts the boundary moment or drops it,\n * depending on the reader, and both of those are a chart telling a lie.\n */\nexport interface AggregateWindow {\n from?: string | null;\n to?: string | null;\n}\n\n/**\n * ONE FILTER VALUE, as `custom.record_aggregate` and `custom.dashboard_run`\n * both read it: a SCALAR is an equality, and an OBJECT is a window. It is not\n * `unknown` on purpose — a filter value the store cannot read is a refusal a\n * caller should get from the compiler, not from the database.\n */\nexport type AggregateFilter = string | number | boolean | null | AggregateWindow;\n\n/**\n * 🚨 THE STORE'S ONE FILTER SHAPE, AND THE ONLY NAME FOR IT.\n *\n * An object of Field key -> value. A scalar is an equality, `null` is UNSET\n * (the third state of a tick box), an object is a half-open time window.\n *\n * It is not the aggregate's private shape and never was. `platform.saved_view`\n * has carried exactly this as `definition -> 'filters'` across five live\n * surface keys since DOOR-18; `custom.view_declare` writes it;\n * `custom.agg_view_admits` reads it to decide whether a change belongs to a\n * saved view; `custom.record_aggregate` takes it as `p_filter` to COMPUTE a\n * dashboard number; and `custom.read_records_matching` takes it to OPEN the\n * rows behind that number. One `custom.record_filter_sql` in the database turns\n * it into SQL for the last two, so the number and the rows cannot disagree.\n *\n * Invent a second one and a chart can compute a total whose drill-through\n * lands somewhere else, which is the only way a drill-through can lie.\n */\nexport type RecordFilter = Record<string, AggregateFilter>;\n\n/** One measure. `count` counts rows and needs no Field; the rest read one. */\nexport interface AggregateMeasure {\n op: AggregateOperation;\n /** The Field's key. Required for every operation except `count`. */\n key?: string;\n}\n\n/**\n * One row of an aggregate: which group it is, what each measure came to, and\n * how many records it was worked out from. The measure keys are the store's\n * own (`count`, `sum_amount`, `avg_amount`, …), never renamed on the way out.\n */\nexport interface AggregateRow {\n groups: Record<string, string | null>;\n measures: Record<string, number | null>;\n row_count: number;\n}\n\n/** The measure key the store answers with, so a chart can find its own series. */\nexport function measureKey(measure: AggregateMeasure): string {\n return measure.op === \"count\" ? \"count\" : `${measure.op}_${measure.key ?? \"\"}`;\n}\n\n/**\n * THE QUESTION, AS A STABLE STRING — key-sorted JSON of a `RecordFilter`.\n *\n * A React parent that rebuilds `{ status: \"Cancelled\" }` on every render hands\n * a NEW object every time, and a hook that depends on the object re-reads the\n * whole page on every render forever. Depending on this instead means the page\n * is re-read exactly when the QUESTION changed, which is what a person means.\n *\n * Nested window objects are sorted too, so `{from, to}` and `{to, from}` are\n * one question. `undefined` and an empty filter are both `\"{}\"` — the caller\n * asked nothing, and there is only one way to ask nothing.\n */\nexport function stableFilterKey(filter: RecordFilter | null | undefined): string {\n if (!filter) return \"{}\";\n const keys = Object.keys(filter).sort();\n if (keys.length === 0) return \"{}\";\n const parts = keys.map((key) => {\n const value = filter[key];\n if (value !== null && typeof value === \"object\") {\n const window = value as AggregateWindow;\n return `${JSON.stringify(key)}:{\"from\":${JSON.stringify(window.from ?? null)},\"to\":${JSON.stringify(window.to ?? null)}}`;\n }\n return `${JSON.stringify(key)}:${JSON.stringify(value ?? null)}`;\n });\n return `{${parts.join(\",\")}}`;\n}\n","// src/capture-queue.ts — @ai-matrx/records · PRODUCTS row 15, primitive P13\n//\n// THE QUEUE THAT MAKES A PHONE WITH NO BARS AS GOOD AS A PHONE WITH FIVE.\n//\n// Fulcrum's field client is the bar: a crew captures all day in a yard with no signal and\n// nothing is lost, nothing is doubled, and nobody has to think about it. Four decisions\n// carry that, and each one is a thing this file refuses to do rather than a feature:\n//\n// 1. THE CAPTURE IS WRITTEN TO DISK BEFORE THE NETWORK IS EVEN ASKED. `enqueue` returns\n// after IndexedDB has the answers AND the photograph's bytes. A queue that holds\n// captures in memory until it can send them loses the day when the screen locks.\n//\n// 2. THE IDEMPOTENCY KEY IS MINTED WHEN THE CAPTURE IS TAKEN, NOT WHEN IT IS SENT. It is\n// the row's own primary key here and `p_client_key` at the door. A lost acknowledgement\n// — the commonest failure on a bad signal, because the write SUCCEEDED and the answer\n// never came back — is then a replay that returns the first record's id, not a second\n// bin.\n//\n// 3. THEY GO UP IN THE ORDER THEY HAPPENED, ONE AT A TIME. A crew's day is a sequence and\n// a foreman reads it as one. Parallel uploads would also mean six photographs sharing\n// one thin signal and all six timing out.\n//\n// 4. A REFUSAL IS NOT A RETRY. A required answer missing, a field the sheet does not ask\n// for, a level the person does not hold — the door has decided, and sending it again\n// every thirty seconds forever is how a queue becomes a silent hole. The item stays,\n// marked `refused`, carrying the door's own sentence for the screen to show. The person\n// fixes it or throws it away; nothing decides that for them.\n//\n// The bytes never go through this file twice: `uploadFile` is called once per file and its\n// reference is written back into the queued row, so a retry after a failed SUBMIT re-sends\n// the reference rather than the photograph.\n\nimport type { CaptureFileRef, CaptureOutcome } from \"./capture\";\n\n/** One file waiting to go up, with its bytes until they have. */\nexport interface QueuedCaptureFile {\n field: string;\n name: string;\n mime_type: string;\n size_bytes: number;\n duration_ms?: number | null | undefined;\n /** The bytes. Dropped once `uploaded` is set, so the queue does not hold them twice. */\n blob?: Blob | null | undefined;\n /** Set once the platform's byte store has them. */\n uploaded?: { file_id?: string | null | undefined; url?: string | null | undefined } | null | undefined;\n}\n\n/** `waiting` → `sending` → `landed`, or `refused` when the door has decided. */\nexport type QueuedCaptureState = \"waiting\" | \"sending\" | \"landed\" | \"refused\";\n\nexport interface QueuedCapture {\n /** Minted on the phone when the capture was taken. The row's key AND the door's. */\n client_key: string;\n organization_id: string;\n sheet_id: string;\n sheet_title?: string | undefined;\n answers: Record<string, unknown>;\n files: QueuedCaptureFile[];\n device: string | null;\n /** The moment the PHONE took it — never the moment the signal came back. */\n captured_at: string;\n location: Record<string, unknown> | null;\n state: QueuedCaptureState;\n attempts: number;\n /** The door's own words, or the network's. Always something a person can act on. */\n last_error: string | null;\n record_id: string | null;\n replayed: boolean;\n queued_at: string;\n landed_at: string | null;\n}\n\nexport interface CaptureQueueCounts {\n waiting: number;\n sending: number;\n refused: number;\n landed: number;\n}\n\n/** What one pass of `sync` did, item by item. Never a single boolean. */\nexport interface CaptureSyncReport {\n attempted: number;\n landed: number;\n replayed: number;\n refused: number;\n deferred: number;\n outcomes: Array<{\n client_key: string;\n state: QueuedCaptureState;\n record_id: string | null;\n replay: boolean;\n says: string | null;\n }>;\n /** Set when the pass stopped early because the network went away again. */\n stopped_because?: string;\n}\n\n/** The two calls the queue makes on the outside world. Injected, so this file is headless. */\nexport interface CaptureQueuePorts {\n /** Put the bytes in the platform's ONE byte store and answer with the reference. */\n uploadFile(\n file: QueuedCaptureFile,\n item: QueuedCapture,\n ): Promise<{ file_id?: string | null; url?: string | null }>;\n /** `client.captureSubmit`. */\n submit(args: {\n sheet_id: string;\n client_key: string;\n answers: Record<string, unknown>;\n files: CaptureFileRef[];\n device?: string | null;\n captured_at?: string | null;\n location?: Record<string, unknown> | null;\n }): Promise<{ ok: boolean; data?: CaptureOutcome | null; error?: { message?: string; code?: string } | null }>;\n}\n\n/** The smallest store the queue needs. IndexedDB in a browser, a Map in a test. */\nexport interface CaptureQueueStore {\n all(): Promise<QueuedCapture[]>;\n put(item: QueuedCapture): Promise<void>;\n remove(clientKey: string): Promise<void>;\n meta(key: string): Promise<string | null>;\n setMeta(key: string, value: string): Promise<void>;\n}\n\nconst DB_NAME = \"matrx-capture\";\nconst DB_VERSION = 1;\nconst ITEMS = \"captures\";\nconst META = \"meta\";\n\n/**\n * THE TWO REFUSALS WORTH REPEATING, and they are the package's own list, not a guess.\n * `results.ts` says it in as many words: `stale_read` (40001) and `timed_out` (57014) are\n * \"the only two refusals in this list worth repeating\"; `store_limit` (53400) is the third\n * — the store ran out of something and the same call works in a quieter moment.\n *\n * EVERYTHING ELSE THE DOOR NAMES IS A DECISION. This was the other way round until a real\n * browser ran it (2026-09-20): the check listed SQLSTATEs, and `RecordsClient` hands back\n * its own WORD — `invalid_argument`, `door` — with the sqlstate beside it. So a capture the\n * store had refused by name was filed as a hiccup and queued again forever, which is the\n * exact silent hole this file's decision 4 exists to prevent. The unit suite passed because\n * it fed the check SQLSTATEs: it was testing the assumption, not the client.\n */\nexport const REFUSALS_WORTH_REPEATING: ReadonlySet<string> = new Set([\n \"stale_read\", \"timed_out\", \"store_limit\",\n]);\nconst SQLSTATES_WORTH_REPEATING: ReadonlySet<string> = new Set([\"40001\", \"57014\", \"53400\"]);\n\n/**\n * Did the door DECIDE, or did the attempt merely fail? A failure with no code at all is a\n * network failure and waits; a refusal the store named is a decision and stays.\n */\nexport function isDecided(\n error: { code?: string | null; sqlstate?: string | null } | null | undefined,\n): boolean {\n if (!error) return false;\n const { code, sqlstate } = error;\n if (code && REFUSALS_WORTH_REPEATING.has(code)) return false;\n if (sqlstate && SQLSTATES_WORTH_REPEATING.has(sqlstate)) return false;\n return !!(code || sqlstate);\n}\n\n/**\n * A key that is unique on a phone that has been offline for a day and has never spoken to\n * a server. `crypto.randomUUID` where it exists; otherwise random bytes, and only then the\n * clock — because two captures in the same millisecond on two phones is exactly the case\n * that must not collide.\n */\nexport function mintClientKey(): string {\n const c: Crypto | undefined = typeof crypto !== \"undefined\" ? crypto : undefined;\n if (c && typeof c.randomUUID === \"function\") return `cap-${c.randomUUID()}`;\n if (c && typeof c.getRandomValues === \"function\") {\n const b = c.getRandomValues(new Uint8Array(16));\n return `cap-${Array.from(b, (x) => x.toString(16).padStart(2, \"0\")).join(\"\")}`;\n }\n return `cap-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 12)}`;\n}\n\n/** The IndexedDB store. Returns null where there is no IndexedDB at all. */\nexport function indexedDbStore(name = DB_NAME): CaptureQueueStore | null {\n const idb: IDBFactory | undefined =\n typeof globalThis !== \"undefined\" ? (globalThis as { indexedDB?: IDBFactory }).indexedDB : undefined;\n if (!idb) return null;\n\n const open = (): Promise<IDBDatabase> =>\n new Promise((resolve, reject) => {\n const req = idb.open(name, DB_VERSION);\n req.onupgradeneeded = () => {\n const db = req.result;\n if (!db.objectStoreNames.contains(ITEMS)) db.createObjectStore(ITEMS, { keyPath: \"client_key\" });\n if (!db.objectStoreNames.contains(META)) db.createObjectStore(META);\n };\n req.onsuccess = () => resolve(req.result);\n req.onerror = () => reject(req.error);\n });\n\n const run = <T>(store: string, mode: IDBTransactionMode, fn: (s: IDBObjectStore) => IDBRequest<T>): Promise<T> =>\n open().then(\n (db) =>\n new Promise<T>((resolve, reject) => {\n const tx = db.transaction(store, mode);\n const req = fn(tx.objectStore(store));\n req.onsuccess = () => resolve(req.result);\n req.onerror = () => reject(req.error);\n tx.oncomplete = () => db.close();\n }),\n );\n\n return {\n all: () => run<QueuedCapture[]>(ITEMS, \"readonly\", (s) => s.getAll() as IDBRequest<QueuedCapture[]>),\n put: (item) => run<IDBValidKey>(ITEMS, \"readwrite\", (s) => s.put(item)).then(() => undefined),\n remove: (key) => run<undefined>(ITEMS, \"readwrite\", (s) => s.delete(key)).then(() => undefined),\n meta: (key) => run<string | undefined>(META, \"readonly\", (s) => s.get(key) as IDBRequest<string | undefined>)\n .then((v) => v ?? null),\n setMeta: (key, value) =>\n run<IDBValidKey>(META, \"readwrite\", (s) => s.put(value, key)).then(() => undefined),\n };\n}\n\n/** The in-memory store — for a test, and for a browser with storage switched off. */\nexport function memoryStore(): CaptureQueueStore {\n const rows = new Map<string, QueuedCapture>();\n const meta = new Map<string, string>();\n return {\n all: async () => Array.from(rows.values()),\n put: async (item) => void rows.set(item.client_key, item),\n remove: async (key) => void rows.delete(key),\n meta: async (key) => meta.get(key) ?? null,\n setMeta: async (key, value) => void meta.set(key, value),\n };\n}\n\nexport interface CaptureQueueOptions {\n ports: CaptureQueuePorts;\n store?: CaptureQueueStore | null;\n /** Watch `online` and drain when the signal comes back. Default true in a browser. */\n autoSync?: boolean;\n /** Told when anything changes, so a badge can say how many are waiting. */\n onChange?: (counts: CaptureQueueCounts, items: QueuedCapture[]) => void;\n now?: () => Date;\n}\n\nexport interface CaptureQueue {\n /** Write one capture to disk. Returns its client key; the network is not asked here. */\n enqueue(input: {\n organization_id: string;\n sheet_id: string;\n sheet_title?: string;\n answers: Record<string, unknown>;\n files?: Array<Omit<QueuedCaptureFile, \"uploaded\">>;\n device?: string | null;\n captured_at?: string | null;\n location?: Record<string, unknown> | null;\n client_key?: string;\n }): Promise<string>;\n list(): Promise<QueuedCapture[]>;\n counts(): Promise<CaptureQueueCounts>;\n /** Send everything waiting, oldest first, one at a time. Safe to call at any moment. */\n sync(): Promise<CaptureSyncReport>;\n /** Try one refused item again — after the person has fixed what the door named. */\n retry(clientKey: string, patch?: { answers?: Record<string, unknown> }): Promise<void>;\n /** Throw one away. The only thing that ever removes a capture nobody sent. */\n discard(clientKey: string): Promise<void>;\n /** Forget what has already landed. Never touches anything still waiting. */\n clearLanded(): Promise<number>;\n lastSyncedAt(): Promise<string | null>;\n isOnline(): boolean;\n dispose(): void;\n}\n\nfunction countOf(items: QueuedCapture[]): CaptureQueueCounts {\n const c: CaptureQueueCounts = { waiting: 0, sending: 0, refused: 0, landed: 0 };\n for (const i of items) c[i.state] += 1;\n return c;\n}\n\nexport function openCaptureQueue(opts: CaptureQueueOptions): CaptureQueue {\n const now = opts.now ?? (() => new Date());\n const store = opts.store ?? indexedDbStore() ?? memoryStore();\n let syncing: Promise<CaptureSyncReport> | null = null;\n let disposed = false;\n\n const online = (): boolean => {\n const nav = typeof navigator !== \"undefined\" ? navigator : undefined;\n return nav ? nav.onLine !== false : true;\n };\n\n const announce = async () => {\n if (!opts.onChange) return;\n const items = await store.all();\n opts.onChange(countOf(items), items);\n };\n\n const oldestFirst = (items: QueuedCapture[]) =>\n items.slice().sort((a, b) => a.captured_at.localeCompare(b.captured_at));\n\n const queue: CaptureQueue = {\n async enqueue(input) {\n const key = input.client_key ?? mintClientKey();\n const item: QueuedCapture = {\n client_key: key,\n organization_id: input.organization_id,\n sheet_id: input.sheet_id,\n sheet_title: input.sheet_title,\n answers: input.answers ?? {},\n files: (input.files ?? []).map((f) => ({ ...f, uploaded: null })),\n device: input.device ?? null,\n captured_at: input.captured_at ?? now().toISOString(),\n location: input.location ?? null,\n state: \"waiting\",\n attempts: 0,\n last_error: null,\n record_id: null,\n replayed: false,\n queued_at: now().toISOString(),\n landed_at: null,\n };\n await store.put(item);\n await announce();\n return key;\n },\n\n list: () => store.all().then(oldestFirst),\n counts: () => store.all().then(countOf),\n\n async sync() {\n if (syncing) return syncing;\n syncing = (async (): Promise<CaptureSyncReport> => {\n const report: CaptureSyncReport = {\n attempted: 0, landed: 0, replayed: 0, refused: 0, deferred: 0, outcomes: [],\n };\n const pending = oldestFirst(await store.all()).filter((i) => i.state === \"waiting\" || i.state === \"sending\");\n if (!online()) {\n report.deferred = pending.length;\n report.stopped_because = \"There is no signal, so nothing was sent. Everything is still here.\";\n return report;\n }\n\n for (const item of pending) {\n report.attempted += 1;\n item.state = \"sending\";\n item.attempts += 1;\n await store.put(item);\n await announce();\n\n try {\n // THE BYTES FIRST, AND ONLY ONCE. A file whose reference is already written\n // back is not uploaded again, so a failure at the SUBMIT step does not send\n // the photograph twice.\n for (const f of item.files) {\n if (f.uploaded) continue;\n f.uploaded = await opts.ports.uploadFile(f, item);\n f.blob = null;\n await store.put(item);\n }\n\n const refs: CaptureFileRef[] = item.files.map((f) => ({\n field: f.field,\n name: f.name,\n mime_type: f.mime_type,\n size_bytes: f.size_bytes,\n duration_ms: f.duration_ms ?? null,\n file_id: f.uploaded?.file_id ?? null,\n url: f.uploaded?.url ?? null,\n }));\n\n const res = await opts.ports.submit({\n sheet_id: item.sheet_id,\n client_key: item.client_key,\n answers: item.answers,\n files: refs,\n device: item.device,\n captured_at: item.captured_at,\n location: item.location,\n });\n\n if (res.ok && res.data && res.data.record_id) {\n item.state = \"landed\";\n item.record_id = res.data.record_id;\n item.replayed = !!res.data.replay;\n item.landed_at = now().toISOString();\n item.last_error = null;\n report.landed += 1;\n if (item.replayed) report.replayed += 1;\n report.outcomes.push({\n client_key: item.client_key, state: item.state,\n record_id: item.record_id, replay: item.replayed,\n says: res.data.message ?? null,\n });\n } else if (res.ok && res.data && !res.data.record_id) {\n // The door answered in words — closed, not open yet. It is not a failure of\n // this phone and it is not something a retry loop can fix.\n item.state = \"refused\";\n item.last_error = res.data.message ?? `This sheet is ${res.data.state}.`;\n report.refused += 1;\n report.outcomes.push({\n client_key: item.client_key, state: item.state, record_id: null,\n replay: false, says: item.last_error,\n });\n } else if (isDecided(res.error)) {\n item.state = \"refused\";\n item.last_error = res.error?.message ?? \"The store refused this capture.\";\n report.refused += 1;\n report.outcomes.push({\n client_key: item.client_key, state: item.state, record_id: null,\n replay: false, says: item.last_error,\n });\n } else {\n item.state = \"waiting\";\n item.last_error = res.error?.message ?? \"It could not be sent just now.\";\n report.deferred += 1;\n report.outcomes.push({\n client_key: item.client_key, state: item.state, record_id: null,\n replay: false, says: item.last_error,\n });\n }\n } catch (err) {\n // A thrown error is the NETWORK, not a decision: it waits.\n item.state = \"waiting\";\n item.last_error =\n err instanceof Error ? err.message : \"It could not be sent just now.\";\n report.deferred += 1;\n report.outcomes.push({\n client_key: item.client_key, state: item.state, record_id: null,\n replay: false, says: item.last_error,\n });\n }\n\n await store.put(item);\n await announce();\n\n if (!online()) {\n report.stopped_because =\n \"The signal went away again. Everything still on the phone is still here.\";\n break;\n }\n }\n\n await store.setMeta(\"last_synced_at\", now().toISOString());\n return report;\n })();\n try {\n return await syncing;\n } finally {\n syncing = null;\n }\n },\n\n async retry(clientKey, patch) {\n const items = await store.all();\n const item = items.find((i) => i.client_key === clientKey);\n if (!item) return;\n if (patch?.answers) item.answers = { ...item.answers, ...patch.answers };\n item.state = \"waiting\";\n item.last_error = null;\n await store.put(item);\n await announce();\n },\n\n async discard(clientKey) {\n await store.remove(clientKey);\n await announce();\n },\n\n async clearLanded() {\n const items = await store.all();\n const landed = items.filter((i) => i.state === \"landed\");\n for (const i of landed) await store.remove(i.client_key);\n await announce();\n return landed.length;\n },\n\n lastSyncedAt: () => store.meta(\"last_synced_at\"),\n isOnline: online,\n\n dispose() {\n disposed = true;\n if (typeof window !== \"undefined\" && handler) window.removeEventListener(\"online\", handler);\n },\n };\n\n let handler: (() => void) | null = null;\n const auto = opts.autoSync ?? typeof window !== \"undefined\";\n if (auto && typeof window !== \"undefined\") {\n handler = () => {\n if (!disposed) void queue.sync();\n };\n window.addEventListener(\"online\", handler);\n }\n\n return queue;\n}\n","// src/results.ts — @ai-matrx/records\n//\n// THE NEVER-THROW RESULT ENVELOPE, and the refusal vocabulary behind it.\n//\n// This package's whole posture toward the store is in one sentence: THE CLIENT\n// MIRRORS THE STORE'S CONTRACT AND NEVER RE-IMPLEMENTS A RULE THE STORE\n// ENFORCES. When the store refuses, the client hands back the store's OWN\n// message, the store's OWN hint and the store's OWN SQLSTATE, under a code a\n// screen can branch on. It never rewrites the sentence, never swallows it, and\n// never invents a friendlier one — the store's refusals were written to be read\n// by a person, and a client that paraphrases them is lying about what happened.\n\nimport type { PerValueAccessWord } from \"./vocabulary\";\nimport type { Uuid } from \"./record\";\n\n/**\n * What KIND of refusal it was. The mapping from SQLSTATE to code lives in\n * `/core`, and it is checked against `STORE_REFUSAL_CODES` — the list of every\n * SQLSTATE the store's own bodies raise, generated from the live catalogue. A\n * code the store can raise and this union cannot name is a hole, and the\n * real-door suite fails on it.\n */\nexport type RecordsErrorCode =\n /** `PT409` — somebody else's write won. The record clock moved under you. */\n | \"stale_write\"\n /** `42501` — a door. Either the schema is revoked, or the store is switched off, or this principal may not pass. */\n | \"door\"\n /** `23514` — a Rule, a shape guard, or a validation the store enforces refused it. */\n | \"refused_by_rule\"\n /**\n * `22004` / `22023` / `22P02` — the call itself was malformed: a missing id, a\n * patch that is not an object, or a value that does not fit the type the\n * store holds for that Field. The store's own message names the value and the\n * type it could not be read as.\n */\n | \"invalid_argument\"\n /** `02000` — the record is not here (deleted, never existed, or another organization's). */\n | \"not_found\"\n /** `23503` — something it points at is not there. */\n | \"missing_reference\"\n /** `23505` — that thing is already here. */\n | \"already_exists\"\n /** `0A000` — the store does not do this yet, and says which part. */\n | \"not_supported\"\n /** `53400` / `22012` — the store ran out of something, or the arithmetic could not be done. */\n | \"store_limit\"\n /**\n * `40001` — the visibility snapshot this connection carries is older than a\n * write the reader has already observed, so the store refused to answer at\n * all rather than hand back something they just lost. Retry on a fresh\n * connection; it is the one refusal in this list that is worth repeating.\n */\n | \"stale_read\"\n /**\n * `57014` — the store cancelled the statement at its own timeout. Nothing was\n * refused on its merits and nothing was written; the same call can succeed on\n * a smaller page or a quieter moment. With `stale_read`, one of the only two\n * refusals in this list worth repeating.\n */\n | \"timed_out\"\n /**\n * THE DOOR THAT DOES NOT EXIST YET. Not an error condition in the database —\n * this package asked for a door that is not in the live catalogue, so it\n * refused to guess. `door_absent` always names the door and the lane that\n * owns it; it is never a silent no-op and never an empty list.\n */\n | \"door_absent\"\n /**\n * `PGRST202` / `PGRST205` — PostgREST could not find the function or the\n * schema. The database this client is pointed at is not serving the record\n * store: the schema is not exposed, or the grants are not there.\n */\n | \"store_not_served\"\n /**\n * `PT428` — the move was not refused and it did not happen: a stage gate whose\n * `on_fail` is `require_approval` filed a request with the people who can\n * answer it, and left the record exactly where it was. The store's own\n * sentence is the gate's own sentence, and the DETAIL carries the approval.\n *\n * It is the one code in this list that is not a failure. A screen that drew it\n * as one would tell somebody their work was rejected when it is being\n * considered; a screen that drew it as success would move the card while\n * somebody is still deciding. `custom.pipeline_move` answers an object on this\n * path rather than raising, so a caller only meets PT428 when the move went\n * through the ORDINARY write door — which is most of them.\n */\n | \"needs_approval\"\n /**\n * THE CALL NEVER REACHED THE STORE. Not a refusal — a transport failure: the\n * browser lost the network, the gateway answered with an HTTP status and no\n * body, the request was cancelled. supabase-js hands these back with an EMPTY\n * `code` (a `FetchError`) or with the HTTP status in it (`\"404\"`, `\"502\"`),\n * neither of which is a SQLSTATE, and until 2026-09-22 they all landed in\n * `internal` — which is the one classification that tells a screen nothing,\n * and which made the package print a sentence about ITSELF to the person\n * (lane TAILS-6). Nothing was written, and the same call can simply be made\n * again, which is what separates it from `internal`.\n */\n | \"unreachable\"\n /** Anything the mapper could not place. It still carries the store's own words. */\n | \"internal\";\n\n/** A refusal, in the store's own words. */\nexport interface RecordsError {\n code: RecordsErrorCode;\n /** THE STORE'S message, verbatim. Never paraphrased. */\n message: string;\n /** THE STORE'S hint, verbatim — this is where the remedy is written. */\n hint?: string;\n /** The SQLSTATE, so a caller can be exact when a code is not exact enough. */\n sqlstate?: string;\n /** Whatever the store put in DETAIL, parsed when it was json. */\n detail?: unknown;\n /**\n * TRUE when this package did not recognise the class it was handed, so a\n * caller can say so instead of reading the silence as \"handled\".\n *\n * 🚨 IT IS A FLAG AND A SEPARATE SENTENCE, NEVER AN APPENDIX TO `hint`\n * (lane TAILS-6, 2026-09-22). `mapPgError` used to append \"@ai-matrx/records\n * did not recognise SQLSTATE … from checklistTemplates\" ONTO `hint`, and\n * `hint` is the field every screen treats as THE REMEDY — the sentence a\n * person is told to act on. So a dropped connection on the Checklists tab\n * showed a plumbing company \"Something went wrong at our end\" over a line\n * about a TypeScript package and a SQLSTATE. A note this package writes about\n * ITSELF is for whoever debugs it and belongs nowhere a person reads.\n */\n unmapped?: boolean;\n /**\n * THIS PACKAGE'S OWN NOTE, for an engineer. Never the store's words and never\n * a person's: screens render it out of sight (a `title` attribute, a\n * screen-reader line) or not at all.\n */\n diagnostic?: string;\n}\n\nexport type RecordsResult<T> = { ok: true; data: T } | { ok: false; error: RecordsError };\n\n/** Narrowing helper for hosts compiled without `strictNullChecks`. */\nexport function isRecordsErr<T>(\n result: RecordsResult<T>,\n): result is { ok: false; error: RecordsError } {\n return result.ok === false;\n}\n\nexport const ok = <T>(data: T): RecordsResult<T> => ({ ok: true, data });\nexport const err = <T>(error: RecordsError): RecordsResult<T> => ({ ok: false, error });\n\n/**\n * A `stale_write` carries everything the screen needs to show the conflict\n * rather than a toast: which version you wrote against, which one won, and the\n * value of every field you touched as it stands now. The store builds this and\n * this type is its shape — nothing is reconstructed on the client.\n */\nexport interface StaleWriteDetail {\n expected_version: number;\n current_version: number;\n contested_fields: Record<string, unknown>;\n}\n\n/** The parsed form of a `stale_write`, for `useRecordMutation`'s conflict state. */\nexport interface WriteConflict extends StaleWriteDetail {\n record_id: Uuid;\n /** The store's own sentence — what the screen shows. */\n message: string;\n /** The store's own remedy. */\n hint: string;\n}\n\n/**\n * The structural shape of a PostgREST failure as supabase-js resolves it: a\n * PLAIN OBJECT parsed from the response body, NOT an `Error`. Reading\n * `.message` off `instanceof Error` discards the real database message on every\n * genuine failure.\n */\nexport interface PgError {\n code?: string | null;\n message: string;\n details?: string | null;\n hint?: string | null;\n}\n\n/** What the validation mirror answers: the same sentence the trigger would raise. */\nexport interface PredictedRefusal {\n /** The field key the store would name, when it names one. */\n field_key?: string;\n /** The message the store's own body would raise, word for word. */\n message: string;\n hint?: string;\n sqlstate: string;\n /**\n * Which of the store's bodies would raise it, so a reader can go and check\n * that this mirror still tells the truth.\n */\n predicted_by: string;\n}\n\n/** VAL-5 / VAL-6, named so a caller can say which word was the problem. */\nexport interface ForbiddenEnvelopeWord {\n field_key: string;\n word: PerValueAccessWord;\n}\n","/**\n * THE CLIENT OPERATION LEDGER — how a browser recognises the echo of its own write.\n *\n * Every private-channel notice the record store broadcasts reaches EVERY browser watching that\n * Table, including the one that caused it. Until now the writer had no way to tell its own\n * change from a colleague's: the notice carried ids and nothing about who moved them, so\n * `recordsRealtimePort.ts` declared `acceptEchoFromSelf: true` and the writer re-read a page it\n * had already updated. It was named honestly rather than faked, and this is the other half.\n *\n * THE SHAPE. Every write through `RecordsClient` mints a uuid, sends it to the store as the\n * platform envelope key `_op_id`, and remembers it here. The store lifts that key out before\n * storage — it is never written onto the record — carries it on the change-feed row, and puts\n * it in the notice as `op_id`. A notice whose `op_id` is in this ledger is this browser's own\n * echo and is dropped.\n *\n * WHY A TIME WINDOW RATHER THAN A DELETE-ON-MATCH. One write can produce MORE THAN ONE notice:\n * a record write that also moves a column produces a `record` notice and a `field` notice, and\n * a statement touching two Tables produces one per Table. Forgetting an op the first time it\n * came back would make the second notice look like somebody else's and cost the re-read this\n * exists to avoid. So an op is remembered for a window and expires on its own.\n *\n * 🚨 THE WINDOW IS A CORRECTNESS BOUNDARY, NOT A TUNING KNOB, AND IT FAILS IN THE SAFE\n * DIRECTION BY CONSTRUCTION. Too SHORT and a late echo is treated as a stranger's change: one\n * extra read of a page that is already correct — invisible. Too LONG and a stranger's change\n * that happened to reuse our uuid would be dropped — which cannot happen, because it is a v4\n * uuid nobody else has ever seen. The only real cost of a long window is memory, so it is\n * bounded by COUNT as well as by time.\n *\n * WHAT THIS IS NOT. It is not a replacement for the store's optimistic concurrency, and it\n * never decides what is true — a dropped echo means \"I already know about this\", and every\n * path that could be wrong about that (a reconnect, a tab wake, a notice with no `op_id` at\n * all) re-reads through the door as it always did.\n */\nimport type { Uuid } from \"./core/index\";\n\n/** How long an operation stays recognisable as ours. See the header: it fails safe both ways. */\nconst REMEMBER_MS = 30_000;\n\n/** A ceiling so a long-lived tab that writes constantly cannot grow this without bound. */\nconst REMEMBER_MAX = 500;\n\n/** op id → the moment it was minted. Insertion-ordered, which is what makes the trim cheap. */\nconst ours = new Map<string, number>();\n\nfunction trim(now: number): void {\n // A Map iterates in insertion order and ids are minted in time order, so the first entry\n // that is still inside the window means every entry after it is too.\n for (const [id, at] of ours) {\n if (now - at <= REMEMBER_MS) break;\n ours.delete(id);\n }\n // Then the ceiling, oldest first, for a tab that writes faster than the window expires.\n while (ours.size > REMEMBER_MAX) {\n const oldest = ours.keys().next();\n if (oldest.done === true) break;\n ours.delete(oldest.value);\n }\n}\n\n/**\n * Mint the id for one client operation and remember it as ours.\n *\n * ONE CALL IS ONE OPERATION. A fifty-row paste through `recordWriteMany` is ONE op id, because\n * the store announces one statement once — and it REFUSES a batch carrying two different ones\n * by name, for exactly that reason.\n */\nexport function mintOpId(): Uuid {\n const id = crypto.randomUUID();\n const now = Date.now();\n ours.set(id, now);\n trim(now);\n return id as Uuid;\n}\n\n/**\n * Is this notice the echo of a write this browser made?\n *\n * `undefined`/`null` is NOT ours and never has been: a notice with no `op_id` came from a\n * server-side write, an agent tool, another client, or a store older than this mechanism —\n * all of which are changes this browser has not seen and must read.\n */\nexport function isOwnOp(opId: string | null | undefined): boolean {\n if (!opId) return false;\n const at = ours.get(opId);\n if (at === undefined) return false;\n if (Date.now() - at > REMEMBER_MS) {\n ours.delete(opId);\n return false;\n }\n return true;\n}\n\n/** Test seam: forget everything. Never called by product code. */\nexport function forgetAllOps(): void {\n ours.clear();\n}\n\n/** Test seam: how many operations are currently remembered. */\nexport function rememberedOpCount(): number {\n return ours.size;\n}\n","// src/store.generated.ts — @ai-matrx/records\n//\n// GENERATED. Do not edit by hand: `pnpm records:generate` rewrites it from the\n// live record store, and `pnpm check:store-registry` fails the build when this\n// file and the store disagree. Every literal below was read from the database's\n// own catalogue — the vocabularies from the store's vocabulary functions, the\n// parity types from `custom.parity_field_types()`, the doors from `pg_proc`,\n// the kernel ids from the kernel rows themselves, the tokens from\n// `platform.entity_types`.\n//\n// Counts at generation: 3 actor words, 4 absence\n// reasons, 14 parity field types, 25 rule node kinds,\n// 9 kernel Tables, 559 doors, 48 knobs,\n// 1024 entity tokens.\n\nexport const ACTOR_VOCABULARY = [\"user\", \"agent\", \"system\"] as const;\n\n/** The three words the store still accepts and rewrites, and what each becomes. */\nexport const RETIRED_ACTOR_WORDS = {\"ai\": \"agent\", \"code\": \"system\", \"human\": \"user\"} as const;\n\nexport const ABSENCE_REASONS = [\"never asked\", \"none\", \"refused\", \"conflicting\"] as const;\n\nexport const VALUE_ENVELOPE_KEYS = [\"ver\", \"src\", \"actor\", \"on_behalf_of\", \"at\", \"absent\", \"alternates\", \"dated\", \"pinned\"] as const;\n\nexport const VALUE_ALTERNATE_KEYS = [\"value\", \"src\", \"rank\"] as const;\n\nexport const STORAGE_MODES = [\"light\", \"heavy\"] as const;\n\nexport const RULE_USES = [\"validate\", \"compute\", \"membership\", \"applicability\"] as const;\n\nexport const PER_VALUE_ACCESS_WORDS = [\"visibility\", \"access\", \"share\", \"acl\", \"permission\", \"permissions\", \"secret\"] as const;\n\n/** FLD-11's parity floor, each with the behaviour it is MADE OF (FLD-1). */\nexport const PARITY_FIELD_TYPES = [\n { parity_type: \"attachment\", behavior: \"relation\", made_of: \"REC-31: a File record reached through a relation, target the kernel `File` Table\" },\n { parity_type: \"checkbox\", behavior: \"boolean\", made_of: \"a ticked or unticked answer, stored as a REAL boolean — and a record that never answered holds neither, so filters and group-by see three states, not two\" },\n { parity_type: \"currency\", behavior: \"range\", made_of: \"FLD-N-1: a number whose UNIT is the currency and whose format is currency — on the Field, never in presentation\" },\n { parity_type: \"datetime\", behavior: \"range\", made_of: \"a range of kind date or datetime — the dated modifier says the VALUES are dated, which is a different question\" },\n { parity_type: \"email\", behavior: \"text\", made_of: \"text whose format is email\" },\n { parity_type: \"formula\", behavior: \"formula\", made_of: \"FLD-9: a declared computation, on read or on write, evaluated by custom.rule_eval\" },\n { parity_type: \"lookup\", behavior: \"formula\", made_of: \"a Value read THROUGH a relation — config.via names the relation field, config.pick the Value on the far side\" },\n { parity_type: \"member\", behavior: \"relation\", made_of: \"a person: a relation whose target is the kernel `Person` Table\" },\n { parity_type: \"multi_select\", behavior: \"list\", made_of: \"many choices from the same Table — the multi modifier, never a second behaviour\" },\n { parity_type: \"percent\", behavior: \"range\", made_of: \"a number whose unit is % and whose format is percent\" },\n { parity_type: \"phone\", behavior: \"text\", made_of: \"text whose format is phone\" },\n { parity_type: \"rollup\", behavior: \"formula\", made_of: \"an aggregate ALONG a relation — config.via, config.of, config.agg; far-side ids are taken DISTINCT, so nothing is counted twice\" },\n { parity_type: \"select\", behavior: \"list\", made_of: \"one choice from a Table shown as a list (FLD-5/FLD-6)\" },\n { parity_type: \"url\", behavior: \"text\", made_of: \"text whose format is url, with the pattern Rule that makes the format enforceable\" },\n] as const;\n\n/** The node kinds `custom.rule_eval` evaluates, and the lane that owns each. */\nexport const RULE_NODE_KINDS = [\n { node: \"actor_at_least\", evaluated_by: \"PIPELINES\" },\n { node: \"add\", evaluated_by: \"W1-RULE\" },\n { node: \"and\", evaluated_by: \"W1-RULE\" },\n { node: \"concat\", evaluated_by: \"W1-RULE\" },\n { node: \"const\", evaluated_by: \"W1-RULE\" },\n { node: \"div\", evaluated_by: \"W1-RULE\" },\n { node: \"eq\", evaluated_by: \"W1-RULE\" },\n { node: \"field\", evaluated_by: \"W1-RULE\" },\n { node: \"gt\", evaluated_by: \"W1-RULE\" },\n { node: \"gte\", evaluated_by: \"W1-RULE\" },\n { node: \"length\", evaluated_by: \"W1-RULE\" },\n { node: \"lt\", evaluated_by: \"W1-RULE\" },\n { node: \"lte\", evaluated_by: \"W1-RULE\" },\n { node: \"matches\", evaluated_by: \"W1-RULE\" },\n { node: \"merge_field\", evaluated_by: \"W5-MERGE-B\" },\n { node: \"mul\", evaluated_by: \"W1-RULE\" },\n { node: \"ne\", evaluated_by: \"W1-RULE\" },\n { node: \"not\", evaluated_by: \"W1-RULE\" },\n { node: \"or\", evaluated_by: \"W1-RULE\" },\n { node: \"parent_field\", evaluated_by: \"W1-RULE-APPLY\" },\n { node: \"present\", evaluated_by: \"W1-RULE\" },\n { node: \"previous\", evaluated_by: \"PIPELINES\" },\n { node: \"sibling_count\", evaluated_by: \"STAGE-RULES\" },\n { node: \"stage_count\", evaluated_by: \"PIPELINES\" },\n { node: \"sub\", evaluated_by: \"W1-RULE\" },\n] as const;\n\n/** REC-27. The kernel, by name and by id, as the store holds it. */\nexport const KERNEL_TABLES = [\n { id: \"11111111-0000-4000-8000-000000000002\", name: \"Field\" },\n { id: \"11111111-0000-4000-8000-000000000006\", name: \"File\" },\n { id: \"11111111-0000-4000-8000-000000000009\", name: \"Merge Field\" },\n { id: \"11111111-0000-4000-8000-000000000004\", name: \"Organization\" },\n { id: \"11111111-0000-4000-8000-000000000005\", name: \"Person\" },\n { id: \"11111111-0000-4000-8000-000000000007\", name: \"Presentation\" },\n { id: \"11111111-0000-4000-8000-000000000003\", name: \"Rule\" },\n { id: \"11111111-0000-4000-8000-000000000001\", name: \"Table\" },\n { id: \"11111111-0000-4000-8000-000000000008\", name: \"Widget\" },\n] as const;\n\n/**\n * Every door the store actually has, with the argument list and the result the\n * catalogue reports. A client call whose door is not in this list is answered\n * `door_absent` by name — never a guess, never a silent no-op.\n */\nexport const STORE_DOORS = [\n { name: \"absence_reasons\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"actor_vocabulary\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"actor_word\", args: \"p_declared text\", returns: \"text\", security: \"invoker\" },\n { name: \"addressed_cap\", args: \"p_user_id uuid, p_type text, p_id uuid, p_organization_id uuid DEFAULT NULL::uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"permission_level\", security: \"definer\" },\n { name: \"addressed_cap_specific\", args: \"p_user_id uuid, p_type text, p_id uuid, p_organization_id uuid DEFAULT NULL::uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"permission_level\", security: \"definer\" },\n { name: \"agent_change_approval\", args: \"p_organization uuid, p_conversation uuid DEFAULT NULL::uuid, p_table uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"agent_context\", args: \"p_organization_id uuid, p_table_id uuid, p_limit integer DEFAULT 50\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"agent_table_claim\", args: \"p_organization uuid, p_table uuid, p_conversation uuid DEFAULT NULL::uuid\", returns: \"void\", security: \"definer\" },\n { name: \"agg_assert_key\", args: \"p_key text\", returns: \"text\", security: \"invoker\" },\n { name: \"agg_buckets\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"agg_cadence_normalize\", args: \"p_cadence text\", returns: \"text\", security: \"invoker\" },\n { name: \"agg_deliver\", args: \"p_organization_id uuid, p_rule_id uuid, p_record_id uuid, p_channel text, p_recipient_user_id uuid, p_event_key text, p_subject text, p_body text, p_payload jsonb DEFAULT '{}'::jsonb, p_dedupe_suffix text DEFAULT NULL::text\", returns: \"uuid\", security: \"invoker\" },\n { name: \"agg_deliver_quietly\", args: \"p_organization_id uuid, p_rule_id uuid, p_subject_id uuid, p_channel text, p_recipient_user_id uuid, p_event_key text, p_subject text, p_body text, p_payload jsonb, p_quiet_hours jsonb, p_link text, p_dedupe_suffix text DEFAULT NULL::text\", returns: \"uuid\", security: \"invoker\" },\n { name: \"agg_digest_assemble\", args: \"p_organization_id uuid, p_rule_id uuid, p_since timestamp with time zone DEFAULT NULL::timestamp with time zone, p_until timestamp with time zone DEFAULT NULL::timestamp with time zone\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"agg_digest_due_at\", args: \"p_cadence text, p_schedule text, p_quiet jsonb, p_after timestamp with time zone\", returns: \"timestamp with time zone\", security: \"invoker\" },\n { name: \"agg_digest_run\", args: \"p_organization_id uuid, p_rule_id uuid DEFAULT NULL::uuid, p_since timestamp with time zone DEFAULT NULL::timestamp with time zone\", returns: \"integer\", security: \"invoker\" },\n { name: \"agg_digest_tick\", args: \"\", returns: \"integer\", security: \"invoker\" },\n { name: \"agg_explain\", args: \"p_organization_id uuid, p_table_id uuid, p_group_by jsonb DEFAULT '[]'::jsonb, p_measures jsonb DEFAULT '[]'::jsonb, p_bucket jsonb DEFAULT NULL::jsonb, p_filter jsonb DEFAULT '{}'::jsonb, p_required text DEFAULT 'viewer'::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"agg_last_digest_at\", args: \"p_organization_id uuid, p_rule_id uuid\", returns: \"timestamp with time zone\", security: \"invoker\" },\n { name: \"agg_operations\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"agg_quiet_until\", args: \"p_quiet jsonb, p_at timestamp with time zone\", returns: \"timestamp with time zone\", security: \"invoker\" },\n { name: \"agg_record_name\", args: \"p_organization_id uuid, p_record_id uuid, p_state jsonb DEFAULT NULL::jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"agg_sql\", args: \"p_organization_id uuid, p_table_id uuid, p_group_by jsonb DEFAULT '[]'::jsonb, p_measures jsonb DEFAULT '[]'::jsonb, p_bucket jsonb DEFAULT NULL::jsonb, p_filter jsonb DEFAULT '{}'::jsonb, p_limit integer DEFAULT 200, p_required text DEFAULT 'viewer'::text\", returns: \"text\", security: \"invoker\" },\n { name: \"agg_subscription_cadences\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"agg_subscription_fire\", args: \"p_organization_id uuid, p_record_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_changed_field_ids jsonb DEFAULT '[]'::jsonb\", returns: \"integer\", security: \"invoker\" },\n { name: \"agg_subscription_fire_entered\", args: \"p_organization_id uuid, p_record_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_since timestamp with time zone DEFAULT NULL::timestamp with time zone\", returns: \"integer\", security: \"invoker\" },\n { name: \"agg_subscription_tick\", args: \"p_window interval DEFAULT '00:15:00'::interval\", returns: \"integer\", security: \"invoker\" },\n { name: \"agg_subscriptions\", args: \"p_organization_id uuid, p_saved_view_id uuid DEFAULT NULL::uuid, p_cadence text DEFAULT NULL::text\", returns: \"TABLE(rule_id uuid, saved_view_id uuid, table_id uuid, cadence text, schedule text, quiet_hours jsonb, channel text, recipient_user_id uuid, event_key text, name text)\", security: \"invoker\" },\n { name: \"agg_value_sql\", args: \"p_key text\", returns: \"text\", security: \"invoker\" },\n { name: \"agg_view_admits\", args: \"p_organization_id uuid, p_saved_view_id uuid, p_record_id uuid\", returns: \"boolean\", security: \"invoker\" },\n { name: \"agg_view_admits_state\", args: \"p_definition jsonb, p_state jsonb\", returns: \"boolean\", security: \"invoker\" },\n { name: \"anon_capture\", args: \"p_organization_id uuid, p_client_key text, p_table_id uuid, p_payload jsonb, p_device text DEFAULT NULL::text, p_captured_at timestamp with time zone DEFAULT NULL::timestamp with time zone\", returns: \"uuid\", security: \"definer\" },\n { name: \"anon_clear\", args: \"p_organization_id uuid, p_submission_id uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"anon_inbound_land\", args: \"p_address text, p_secret text, p_payload jsonb, p_raw_payload jsonb DEFAULT '{}'::jsonb, p_client_key text DEFAULT NULL::text\", returns: \"uuid\", security: \"definer\" },\n { name: \"anon_publish\", args: \"p_organization_id uuid, p_form_id uuid, p_published boolean DEFAULT true\", returns: \"timestamp with time zone\", security: \"definer\" },\n { name: \"anon_rate_take\", args: \"p_organization_id uuid, p_form_id uuid, p_bucket text, p_token_id uuid DEFAULT NULL::uuid\", returns: \"integer\", security: \"definer\" },\n { name: \"anon_submissions\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_state text DEFAULT NULL::text, p_limit integer DEFAULT 100, p_offset integer DEFAULT 0\", returns: \"TABLE(id uuid, form_id uuid, inbound_id uuid, table_id uuid, source text, state text, payload jsonb, raw_payload jsonb, client_key text, record_id uuid, remote_origin text, rejection_reason text, created_at timestamp with time zone, cleared_at timestamp with time zone)\", security: \"definer\" },\n { name: \"anon_token_issue\", args: \"p_organization_id uuid, p_mode text, p_allowed_origins jsonb, p_form_id uuid DEFAULT NULL::uuid, p_saved_view_id uuid DEFAULT NULL::uuid, p_record_id uuid DEFAULT NULL::uuid, p_expires_at timestamp with time zone DEFAULT NULL::timestamp with time zone\", returns: \"TABLE(token_id uuid, secret text)\", security: \"definer\" },\n { name: \"anon_token_revoke\", args: \"p_organization_id uuid, p_token_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"anon_token_verify\", args: \"p_secret text, p_origin text, p_required_mode text\", returns: \"TABLE(token_id uuid, organization_id uuid, form_id uuid, saved_view_id uuid, record_id uuid, mode text)\", security: \"definer\" },\n { name: \"anon_write\", args: \"p_secret text, p_origin text, p_payload jsonb, p_client_key text DEFAULT NULL::text, p_raw_payload jsonb DEFAULT '{}'::jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"applicable_fields\", args: \"p_organization_id uuid, p_table_id uuid, p_record_type text DEFAULT NULL::text\", returns: \"SETOF custom.record\", security: \"definer\" },\n { name: \"assert_client_may_change\", args: \"p_organization_id uuid, p_subject_id uuid, p_door text, p_required permission_level DEFAULT 'editor'::permission_level, p_subject_word text DEFAULT 'record'::text\", returns: \"void\", security: \"invoker\" },\n { name: \"assert_client_may_open\", args: \"p_organization_id uuid, p_subject_id uuid, p_door text, p_required permission_level DEFAULT 'viewer'::permission_level, p_subject_word text DEFAULT 'record'::text\", returns: \"void\", security: \"invoker\" },\n { name: \"assert_client_may_reach\", args: \"p_organization_id uuid, p_door text\", returns: \"void\", security: \"invoker\" },\n { name: \"assert_columns_are_defined\", args: \"p_organization_id uuid, p_record_id uuid, p_patch jsonb\", returns: \"void\", security: \"definer\" },\n { name: \"assert_entity_door\", args: \"p_organization_id uuid, p_door text\", returns: \"void\", security: \"definer\" },\n { name: \"assert_entity_is_organization_scoped\", args: \"p_token text, p_label text, p_scoped boolean\", returns: \"void\", security: \"invoker\" },\n { name: \"assert_may_know_table\", args: \"p_organization_id uuid, p_table_id uuid, p_door text\", returns: \"void\", security: \"invoker\" },\n { name: \"assert_organization_admin\", args: \"p_organization_id uuid, p_door text, p_what text\", returns: \"void\", security: \"invoker\" },\n { name: \"assert_organization_wall\", args: \"p_kind text, p_organization_id uuid, p_row jsonb\", returns: \"void\", security: \"invoker\" },\n { name: \"assert_store_door\", args: \"p_organization_id uuid, p_door text\", returns: \"void\", security: \"invoker\" },\n { name: \"booking_cancel\", args: \"p_booking_ref text, p_origin text DEFAULT NULL::text\", returns: \"TABLE(booking_ref text, record_id uuid, slot_key text, state text, message text)\", security: \"definer\" },\n { name: \"booking_confirm\", args: \"p_form_id uuid, p_hold_id uuid, p_origin text, p_payload jsonb, p_bucket text, p_honeypot text DEFAULT NULL::text, p_client_key text DEFAULT NULL::text\", returns: \"TABLE(booking_ref text, record_id uuid, submission_id uuid, slot_key text, slot_at timestamp with time zone, state text, message text)\", security: \"definer\" },\n { name: \"booking_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_title text, p_questions jsonb, p_availability jsonb DEFAULT '{}'::jsonb, p_presentation jsonb DEFAULT '{}'::jsonb, p_submission_cap integer DEFAULT NULL::integer, p_quarantine_rule_id uuid DEFAULT NULL::uuid, p_notify_rule_id uuid DEFAULT NULL::uuid, p_form_id uuid DEFAULT NULL::uuid, p_slug text DEFAULT NULL::text, p_home_id uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"booking_hold\", args: \"p_form_id uuid, p_slot_key text, p_origin text, p_bucket text, p_client_key text DEFAULT NULL::text\", returns: \"TABLE(hold_id uuid, slot_key text, expires_at timestamp with time zone, member_user_id uuid, state text, message text)\", security: \"definer\" },\n { name: \"booking_manage\", args: \"p_booking_ref text, p_days integer DEFAULT NULL::integer\", returns: \"TABLE(booking_ref text, form_id uuid, title text, slot_key text, slot_at timestamp with time zone, status text, slots jsonb, availability jsonb, state text, message text)\", security: \"definer\" },\n { name: \"booking_notify\", args: \"p_organization_id uuid, p_form_id uuid, p_record_id uuid, p_submission_id uuid, p_event text, p_when text\", returns: \"uuid\", security: \"invoker\" },\n { name: \"booking_public\", args: \"p_form_id uuid, p_days integer DEFAULT NULL::integer\", returns: \"TABLE(form_id uuid, organization_id uuid, table_id uuid, title text, presentation jsonb, fields jsonb, honeypot_key text, availability jsonb, slots jsonb, state text, message text)\", security: \"definer\" },\n { name: \"booking_reschedule\", args: \"p_booking_ref text, p_slot_key text, p_origin text, p_bucket text DEFAULT NULL::text\", returns: \"TABLE(booking_ref text, record_id uuid, slot_key text, slot_at timestamp with time zone, state text, message text)\", security: \"definer\" },\n { name: \"bookings\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(form_id uuid, table_id uuid, title text, slug text, published_at timestamp with time zone, closed_at timestamp with time zone, slot_minutes integer, timezone text, slot_table_id uuid, booked bigint, cancelled bigint, upcoming bigint, held bigint, next_at timestamp with time zone, state text)\", security: \"definer\" },\n { name: \"bump_epoch\", args: \"p_entity_type text, p_entity_id uuid, p_organization_id uuid DEFAULT NULL::uuid\", returns: \"bigint\", security: \"definer\" },\n { name: \"cache_lookup\", args: \"p_container_type text, p_container_id uuid, p_item_type text, p_item_id uuid\", returns: \"permission_level\", security: \"definer\" },\n { name: \"caller_role\", args: \"\", returns: \"name\", security: \"invoker\" },\n { name: \"capture_open\", args: \"p_organization_id uuid, p_sheet_id uuid\", returns: \"TABLE(sheet_id uuid, organization_id uuid, table_id uuid, title text, presentation jsonb, fields jsonb, state text, may_capture boolean, message text)\", security: \"definer\" },\n { name: \"capture_publish\", args: \"p_organization_id uuid, p_sheet_id uuid, p_open boolean DEFAULT true\", returns: \"timestamp with time zone\", security: \"definer\" },\n { name: \"capture_sheet_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_title text, p_questions jsonb, p_presentation jsonb DEFAULT '{}'::jsonb, p_sheet_id uuid DEFAULT NULL::uuid, p_notify_rule_id uuid DEFAULT NULL::uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"capture_sheets\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(sheet_id uuid, table_id uuid, title text, slug text, state text, opened_at timestamp with time zone, captures bigint, replays bigint, last_capture_at timestamp with time zone, presentation jsonb)\", security: \"definer\" },\n { name: \"capture_submit\", args: \"p_organization_id uuid, p_sheet_id uuid, p_client_key text, p_payload jsonb, p_files jsonb DEFAULT '[]'::jsonb, p_device text DEFAULT NULL::text, p_captured_at timestamp with time zone DEFAULT NULL::timestamp with time zone, p_location jsonb DEFAULT NULL::jsonb\", returns: \"TABLE(record_id uuid, state text, message text, replay boolean, file_ids uuid[])\", security: \"definer\" },\n { name: \"carry_unchanged_value_stamps\", args: \"p_old jsonb, p_new jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"carrying_edges_in\", args: \"p_organization_id uuid\", returns: \"TABLE(container_type text, container_id uuid, item_type text, item_id uuid, conveys_max permission_level)\", security: \"definer\" },\n { name: \"carrying_edges_of\", args: \"p_item_type text, p_item_id uuid\", returns: \"TABLE(container_type text, container_id uuid, conveys_max permission_level)\", security: \"definer\" },\n { name: \"checklist_declare\", args: \"p_organization_id uuid, p_spec jsonb, p_template_id uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"checklist_refusal\", args: \"p_spec jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"checklist_run\", args: \"p_organization_id uuid, p_run_id uuid\", returns: \"TABLE(step_id uuid, step_order integer, ref text, title text, role text, assignee_name text, assignee_user_id uuid, due_on timestamp with time zone, due_state text, status text, finished boolean, requires text, requires_key text, requires_label text, requires_id uuid, evidence jsonb, blocked_by text[], may_complete boolean, refusal text)\", security: \"definer\" },\n { name: \"checklist_runs\", args: \"p_organization_id uuid, p_about_table_id uuid DEFAULT NULL::uuid, p_about_record_id uuid DEFAULT NULL::uuid, p_include_closed boolean DEFAULT true, p_limit integer DEFAULT 100\", returns: \"TABLE(run_id uuid, name text, template_id uuid, template text, about_record_id uuid, about text, about_table_id uuid, started_at timestamp with time zone, started_by uuid, origin text, step_count integer, done integer, overdue integer, next_step text, next_due timestamp with time zone, closed_at timestamp with time zone)\", security: \"definer\" },\n { name: \"checklist_start\", args: \"p_organization_id uuid, p_template_id uuid, p_about_record_id uuid DEFAULT NULL::uuid, p_roles jsonb DEFAULT '{}'::jsonb, p_starting_at timestamp with time zone DEFAULT NULL::timestamp with time zone\", returns: \"jsonb\", security: \"definer\" },\n { name: \"checklist_step_complete\", args: \"p_organization_id uuid, p_step_id uuid, p_evidence jsonb DEFAULT '{}'::jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"checklist_step_refusal\", args: \"p_organization_id uuid, p_step_id uuid\", returns: \"text\", security: \"definer\" },\n { name: \"checklist_steps_table\", args: \"p_organization_id uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"checklist_template_shape\", args: \"p_organization_id uuid, p_template_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"checklist_templates\", args: \"p_organization_id uuid, p_about_table_id uuid DEFAULT NULL::uuid, p_limit integer DEFAULT 100\", returns: \"TABLE(template_id uuid, name text, about_table_id uuid, about_table text, steps integer, roles integer, trigger_kind text, trigger_status text, open_runs integer, total_runs integer, updated_at timestamp with time zone)\", security: \"definer\" },\n { name: \"choice_census\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"choice_field_map\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"choice_filter_normalize\", args: \"p_map jsonb, p_filter jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"choice_key_for\", args: \"p_organization_id uuid, p_options_table_id uuid, p_title text, p_exclude uuid DEFAULT NULL::uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"choice_key_of\", args: \"p_field jsonb, p_token text\", returns: \"text\", security: \"invoker\" },\n { name: \"choice_options\", args: \"p_organization_id uuid, p_options_table_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"choice_render\", args: \"p_organization_id uuid, p_table_id uuid, p_doc jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"choice_render_groups\", args: \"p_map jsonb, p_groups jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"choice_render_note\", args: \"p_field jsonb, p_value jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"choice_render_value\", args: \"p_field jsonb, p_value jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"choice_slug\", args: \"p_word text\", returns: \"text\", security: \"invoker\" },\n { name: \"choice_synonyms\", args: \"p_organization_id uuid, p_table_id uuid, p_token text\", returns: \"text[]\", security: \"invoker\" },\n { name: \"choice_synonyms_in\", args: \"p_map jsonb, p_token text\", returns: \"text[]\", security: \"invoker\" },\n { name: \"choice_words\", args: \"p_field jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"client_write_grants\", args: \"\", returns: \"TABLE(role_name text, object_name text, privilege text)\", security: \"invoker\" },\n { name: \"comment_mention_deliver\", args: \"p_organization_id uuid, p_record_id uuid, p_table_id uuid, p_comment_id uuid, p_recipient uuid, p_author_name text, p_record_title text, p_body text\", returns: \"uuid\", security: \"definer\" },\n { name: \"comment_thread\", args: \"p_organization_id uuid, p_record_id uuid, p_include_resolved boolean DEFAULT false\", returns: \"jsonb\", security: \"definer\" },\n { name: \"comment_write\", args: \"p_organization_id uuid, p_record_id uuid, p_body text, p_anchor jsonb DEFAULT '{}'::jsonb, p_parent_comment_id uuid DEFAULT NULL::uuid, p_mentions uuid[] DEFAULT NULL::uuid[]\", returns: \"jsonb\", security: \"definer\" },\n { name: \"computed_block\", args: \"p_block jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"computed_provenance\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(field_key text, field_id uuid, value jsonb, rule_id uuid, rule_version integer, computed_at timestamp with time zone)\", security: \"definer\" },\n { name: \"containment_chain\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(ancestor_id uuid, depth integer)\", security: \"invoker\" },\n { name: \"containment_depth_ceiling\", args: \"p_organization_id uuid DEFAULT NULL::uuid\", returns: \"integer\", security: \"invoker\" },\n { name: \"containment_edges\", args: \"p_organization_id uuid\", returns: \"TABLE(parent_id uuid, child_id uuid, via text)\", security: \"invoker\" },\n { name: \"containment_parent\", args: \"p_data jsonb\", returns: \"uuid\", security: \"invoker\" },\n { name: \"context_resolve\", args: \"p_organization_id uuid, p_bindings jsonb, p_scope_slug text DEFAULT 'scopes'::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"conversation_scope\", args: \"p_organization_id uuid, p_conversation_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"conversation_scope_bind\", args: \"p_organization_id uuid, p_conversation_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"conversation_scope_context\", args: \"p_organization_id uuid, p_conversation_id uuid, p_relations integer DEFAULT 12, p_history integer DEFAULT 15, p_siblings integer DEFAULT 8\", returns: \"jsonb\", security: \"definer\" },\n { name: \"conversation_scope_unbind\", args: \"p_organization_id uuid, p_conversation_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"cross_organization_links_open\", args: \"p_source_organization_id uuid, p_target_organization_id uuid\", returns: \"boolean\", security: \"invoker\" },\n { name: \"custom_fields_tables\", args: \"\", returns: \"TABLE(token text, schema_name text, table_name text)\", security: \"invoker\" },\n { name: \"dashboard_block_normalize\", args: \"p_organization_id uuid, p_subject_table_id uuid, p_block jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"dashboard_class\", args: \"\", returns: \"text\", security: \"invoker\" },\n { name: \"dashboard_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_name text, p_blocks jsonb DEFAULT '[]'::jsonb, p_presentation jsonb DEFAULT '{}'::jsonb, p_dashboard_id uuid DEFAULT NULL::uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"dashboard_delete\", args: \"p_organization_id uuid, p_dashboard_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"dashboard_field_keys\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"text[]\", security: \"definer\" },\n { name: \"dashboard_kinds\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"dashboard_moment_sql\", args: \"p_key text\", returns: \"text\", security: \"invoker\" },\n { name: \"dashboard_run\", args: \"p_organization_id uuid, p_dashboard_id uuid, p_filter jsonb DEFAULT '{}'::jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"dashboard_stuck\", args: \"p_organization_id uuid, p_table_id uuid, p_state_key text, p_days integer DEFAULT 14, p_filter jsonb DEFAULT '{}'::jsonb, p_limit integer DEFAULT 50, p_required text DEFAULT 'viewer'::text\", returns: \"TABLE(record_id uuid, title text, state text, last_changed_at timestamp with time zone, days_unchanged numeric, measured_from text)\", security: \"definer\" },\n { name: \"dashboard_window_sql\", args: \"p_key text, p_window jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"dashboards\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(dashboard_id uuid, table_id uuid, name text, blocks jsonb, presentation jsonb, block_count integer, version integer, created_at timestamp with time zone, updated_at timestamp with time zone)\", security: \"definer\" },\n { name: \"delete_cascade_closure\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"uuid[]\", security: \"invoker\" },\n { name: \"delete_preview\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"delete_rule\", args: \"p_organization_id uuid, p_record_id uuid, p_apply boolean DEFAULT true\", returns: \"jsonb\", security: \"definer\" },\n { name: \"dependency_cycle\", args: \"p_organization_id uuid, p_row custom.record\", returns: \"text[]\", security: \"invoker\" },\n { name: \"dependency_label\", args: \"p_organization_id uuid, p_node text\", returns: \"text\", security: \"invoker\" },\n { name: \"derive_visibility\", args: \"p_container_type text, p_container_id uuid\", returns: \"TABLE(item_type text, item_id uuid, depth integer, max_level permission_level)\", security: \"definer\" },\n { name: \"derived_value\", args: \"p_organization_id uuid, p_record_id uuid, p_field_data jsonb, p_values jsonb DEFAULT NULL::jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"derived_values\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"derived_values_of\", args: \"v_rec custom.record\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"doc_content_hash\", args: \"p_body text\", returns: \"text\", security: \"invoker\" },\n { name: \"doc_format_value\", args: \"p_field_data jsonb, p_value jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"doc_letterhead\", args: \"p_organization_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"doc_name_token_pattern\", args: \"\", returns: \"text\", security: \"invoker\" },\n { name: \"doc_name_tokens\", args: \"p_body text\", returns: \"TABLE(ordinal integer, raw text)\", security: \"invoker\" },\n { name: \"doc_render_body\", args: \"p_organization_id uuid, p_template_id uuid, p_record_id uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"doc_render_document\", args: \"p_organization_id uuid, p_template_id uuid, p_record_id uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"doc_render_read\", args: \"p_organization_id uuid, p_render_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"doc_render_write\", args: \"p_organization_id uuid, p_template_id uuid, p_record_id uuid, p_table_id uuid, p_template_version integer, p_body text, p_content_hash text\", returns: \"uuid\", security: \"definer\" },\n { name: \"doc_renders\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(render_id uuid, template_id uuid, record_id uuid, table_id uuid, template_version integer, body text, content_hash text, rendered_at timestamp with time zone)\", security: \"definer\" },\n { name: \"doc_sign\", args: \"p_organization_id uuid, p_render_id uuid, p_field_key text, p_signer_name text, p_signer_user_id uuid DEFAULT NULL::uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"doc_signature_field_ok\", args: \"p_field_data jsonb\", returns: \"boolean\", security: \"invoker\" },\n { name: \"doc_signature_intact\", args: \"p_organization_id uuid, p_signature_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"doc_signature_read\", args: \"p_organization_id uuid, p_signature_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"doc_signature_write\", args: \"p_organization_id uuid, p_render_id uuid, p_record_id uuid, p_field_key text, p_signer_name text, p_signer_user_id uuid, p_document_hash text, p_document_version integer\", returns: \"uuid\", security: \"definer\" },\n { name: \"doc_signatures\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(signature_id uuid, render_id uuid, record_id uuid, field_key text, signer_name text, signer_user_id uuid, signed_at timestamp with time zone, document_hash text, document_version integer)\", security: \"definer\" },\n { name: \"doc_template_delete\", args: \"p_organization_id uuid, p_template_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"doc_template_read\", args: \"p_organization_id uuid, p_template_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"doc_template_save\", args: \"p_organization_id uuid, p_table_id uuid, p_name text, p_body text, p_template_id uuid DEFAULT NULL::uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"doc_templates\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"TABLE(template_id uuid, renders_table_id uuid, name text, body text, template_version integer, token_count bigint, updated_at timestamp with time zone)\", security: \"definer\" },\n { name: \"doc_token_pattern\", args: \"\", returns: \"text\", security: \"invoker\" },\n { name: \"doc_tokens\", args: \"p_body text\", returns: \"TABLE(ordinal integer, raw text, field_id uuid)\", security: \"invoker\" },\n { name: \"doc_unresolved_tokens\", args: \"p_organization_id uuid, p_table_id uuid, p_body text\", returns: \"TABLE(raw text, field_id uuid, why text)\", security: \"invoker\" },\n { name: \"doors_not_deciding_the_caller\", args: \"\", returns: \"TABLE(function_name text, identity_args text)\", security: \"invoker\" },\n { name: \"doors_not_deciding_the_record\", args: \"\", returns: \"TABLE(function_name text, identity_args text, why text)\", security: \"invoker\" },\n { name: \"doors_not_masking_fields\", args: \"\", returns: \"TABLE(function_name text, identity_args text, why text)\", security: \"invoker\" },\n { name: \"doors_not_on_one_ladder\", args: \"\", returns: \"TABLE(function_name text, identity_args text, why text)\", security: \"invoker\" },\n { name: \"effective_level\", args: \"p_user_id uuid, p_organization_id uuid, p_id uuid, p_type text DEFAULT 'record'::text\", returns: \"permission_level\", security: \"definer\" },\n { name: \"enrich_cells\", args: \"p_organization_id uuid, p_table_id uuid, p_field_keys text[] DEFAULT NULL::text[], p_record_ids uuid[] DEFAULT NULL::uuid[]\", returns: \"TABLE(record_id uuid, field_key text, agent_owned boolean, value jsonb, value_version integer, actor text, on_behalf_of text, written_at timestamp with time zone, source jsonb, absent_reason text, alternates jsonb, pinned boolean, stale boolean, due_at timestamp with time zone)\", security: \"definer\" },\n { name: \"enrich_declare\", args: \"p_organization_id uuid, p_field_id uuid, p_spec jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"enrich_due\", args: \"p_organization_id uuid, p_field_id uuid, p_limit integer DEFAULT 50, p_include_fresh boolean DEFAULT false\", returns: \"TABLE(record_id uuid, title text, inputs jsonb, current_value jsonb, written_at timestamp with time zone, reason text, trimmed_to integer)\", security: \"definer\" },\n { name: \"enrich_land\", args: \"p_organization_id uuid, p_field_id uuid, p_results jsonb, p_run jsonb DEFAULT '{}'::jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"enrich_normalize\", args: \"p_organization_id uuid, p_table_id uuid, p_field_key text, p_spec jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"enrich_pin\", args: \"p_organization_id uuid, p_record_id uuid, p_field_key text, p_pinned boolean DEFAULT true\", returns: \"jsonb\", security: \"definer\" },\n { name: \"enrich_run_class\", args: \"\", returns: \"text\", security: \"invoker\" },\n { name: \"enrich_runs\", args: \"p_organization_id uuid, p_field_id uuid DEFAULT NULL::uuid, p_limit integer DEFAULT 50\", returns: \"TABLE(run_id uuid, field_id uuid, field_key text, model text, trigger_word text, rows_seen integer, rows_written integer, rows_absent integer, rows_below_floor integer, rows_pinned integer, rows_refused integer, cost_cents numeric, cost_per_row_cents numeric, ran_at timestamp with time zone)\", security: \"definer\" },\n { name: \"enrich_sensitivity_rank\", args: \"p_word text\", returns: \"integer\", security: \"invoker\" },\n { name: \"enrich_triggers\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"enrichments\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(field_id uuid, table_id uuid, field_key text, label text, enrichment jsonb, enabled boolean, review_interval_days integer, rows_total integer, rows_filled integer, rows_stale integer, rows_pinned integer, rows_absent integer, runs integer, cost_cents numeric, cost_per_row_cents numeric, last_run_at timestamp with time zone, last_run jsonb)\", security: \"definer\" },\n { name: \"entity_field_declare\", args: \"p_organization_id uuid, p_token text, p_spec jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"entity_field_retire\", args: \"p_organization_id uuid, p_field_id uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"entity_field_rights\", args: \"p_organization_id uuid, p_token text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"entity_field_update\", args: \"p_organization_id uuid, p_field_id uuid, p_patch jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"entity_fields\", args: \"p_organization_id uuid, p_token text\", returns: \"SETOF custom.record\", security: \"definer\" },\n { name: \"entity_record_read\", args: \"p_organization_id uuid, p_token text, p_record_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"entity_records_find\", args: \"p_organization_id uuid, p_token text, p_key text, p_value jsonb DEFAULT NULL::jsonb, p_limit integer DEFAULT 50, p_offset integer DEFAULT 0\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"entity_table\", args: \"p_token text\", returns: \"TABLE(token text, schema_name text, table_name text, type text, title_column text, label text, has_organization boolean, has_deleted_at boolean)\", security: \"invoker\" },\n { name: \"entity_value_write\", args: \"p_organization_id uuid, p_token text, p_record_id uuid, p_patch jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"export_ceiling\", args: \"p_organization_id uuid DEFAULT NULL::uuid\", returns: \"integer\", security: \"invoker\" },\n { name: \"export_records\", args: \"p_organization_id uuid, p_table_id uuid, p_limit integer DEFAULT 1000\", returns: \"TABLE(id uuid, document jsonb)\", security: \"invoker\" },\n { name: \"external_foreign_table_findings\", args: \"\", returns: \"SETOF text\", security: \"definer\" },\n { name: \"external_history_event\", args: \"p_organization_id uuid, p_link_id uuid, p_operation text\", returns: \"bigint\", security: \"definer\" },\n { name: \"external_rows\", args: \"p_organization_id uuid, p_source_id uuid\", returns: \"SETOF jsonb\", security: \"definer\" },\n { name: \"external_source_declare\", args: \"p_organization_id uuid, p_tier text, p_connection_token text, p_external_schema text, p_external_table text, p_link_template text\", returns: \"uuid\", security: \"definer\" },\n { name: \"external_stub_upsert\", args: \"p_organization_id uuid, p_source_id uuid, p_table_id uuid, p_external_key text, p_link_url text, p_cached_title text\", returns: \"uuid\", security: \"definer\" },\n { name: \"external_tier_contract\", args: \"\", returns: \"jsonb\", security: \"definer\" },\n { name: \"external_write_through\", args: \"p_organization_id uuid, p_record_id uuid, p_patch jsonb\", returns: \"void\", security: \"definer\" },\n { name: \"external_writes_set\", args: \"p_organization_id uuid, p_source_id uuid, p_enabled boolean\", returns: \"boolean\", security: \"definer\" },\n { name: \"field_behaviour\", args: \"p_field_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"field_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_spec jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"field_dependants\", args: \"p_organization_id uuid, p_field_id uuid\", returns: \"TABLE(kind text, dependant_id uuid, label text, how text)\", security: \"definer\" },\n { name: \"field_history\", args: \"p_organization_id uuid, p_table_id uuid, p_field_key text, p_limit integer DEFAULT 100, p_offset integer DEFAULT 0, p_record_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(record_id uuid, record_title text, version integer, occurred_at timestamp with time zone, operation_label text, actor jsonb, before jsonb, after jsonb)\", security: \"definer\" },\n { name: \"field_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"field_options\", args: \"p_organization_id uuid, p_field_id uuid\", returns: \"SETOF custom.record\", security: \"definer\" },\n { name: \"field_retire\", args: \"p_organization_id uuid, p_field_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"field_rules\", args: \"p_field_data jsonb\", returns: \"TABLE(kind text, spec jsonb)\", security: \"invoker\" },\n { name: \"field_update\", args: \"p_organization_id uuid, p_field_id uuid, p_patch jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"field_value_convert\", args: \"p_to jsonb, p_value jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"file_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"form_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_title text, p_questions jsonb, p_presentation jsonb DEFAULT '{}'::jsonb, p_submission_cap integer DEFAULT NULL::integer, p_quarantine_rule_id uuid DEFAULT NULL::uuid, p_notify_rule_id uuid DEFAULT NULL::uuid, p_form_id uuid DEFAULT NULL::uuid, p_slug text DEFAULT NULL::text\", returns: \"uuid\", security: \"definer\" },\n { name: \"form_notify\", args: \"p_organization_id uuid, p_form_id uuid, p_record_id uuid, p_submission_id uuid\", returns: \"uuid\", security: \"invoker\" },\n { name: \"form_public\", args: \"p_form_id uuid\", returns: \"TABLE(form_id uuid, organization_id uuid, table_id uuid, title text, presentation jsonb, fields jsonb, honeypot_key text, state text, message text)\", security: \"definer\" },\n { name: \"form_slug\", args: \"p_organization_id uuid, p_title text, p_form_id uuid DEFAULT NULL::uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"form_submit\", args: \"p_form_id uuid, p_origin text, p_payload jsonb, p_bucket text, p_honeypot text DEFAULT NULL::text, p_client_key text DEFAULT NULL::text\", returns: \"TABLE(submission_id uuid, record_id uuid, state text, message text)\", security: \"definer\" },\n { name: \"forms\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(form_id uuid, table_id uuid, title text, slug text, published_at timestamp with time zone, closed_at timestamp with time zone, submission_cap integer, responses bigint, in_table bigint, held bigint, rejected bigint, state text, quarantine_rule_id uuid, notify_rule_id uuid, presentation jsonb)\", security: \"definer\" },\n { name: \"formula_value\", args: \"p_organization_id uuid, p_record_id uuid, p_field_data jsonb, p_values jsonb DEFAULT NULL::jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"freshness_verdict\", args: \"p_written_at timestamp with time zone, p_ceiling_seconds numeric\", returns: \"jsonb\", security: \"definer\" },\n { name: \"guard_refusals_are_complete\", args: \"\", returns: \"TABLE(guard text, said text)\", security: \"invoker\" },\n { name: \"has_visibility\", args: \"p_user_id uuid, p_type text, p_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level\", returns: \"boolean\", security: \"definer\" },\n { name: \"has_visibility_at\", args: \"p_user_id uuid, p_type text, p_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level, p_organization_id uuid DEFAULT NULL::uuid, p_min_version bigint DEFAULT NULL::bigint\", returns: \"boolean\", security: \"definer\" },\n { name: \"hidden_field_notice\", args: \"p_field custom.record, p_action text DEFAULT 'read'::text\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"history_actor\", args: \"p_tier text, p_document jsonb, p_actor_id uuid, p_people jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"history_changes\", args: \"p_organization_id uuid, p_table_id uuid, p_old jsonb, p_new jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"history_people\", args: \"p_organization_id uuid, p_ids uuid[]\", returns: \"jsonb\", security: \"definer\" },\n { name: \"history_prune\", args: \"p_organization_id uuid, p_scope text DEFAULT 'values'::text, p_table_id uuid DEFAULT NULL::uuid, p_dry_run boolean DEFAULT true\", returns: \"jsonb\", security: \"definer\" },\n { name: \"history_restore_body\", args: \"p_current jsonb, p_target jsonb, p_field_key text DEFAULT NULL::text\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"history_restore_body\", args: \"p_current jsonb, p_target jsonb, p_field_key text, p_author jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"history_retention\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"history_retention_floor_raise\", args: \"p_organization_id uuid, p_days integer\", returns: \"integer\", security: \"definer\" },\n { name: \"history_retention_set\", args: \"p_organization_id uuid, p_table_id uuid, p_days integer\", returns: \"integer\", security: \"definer\" },\n { name: \"home_add\", args: \"p_organization_id uuid, p_table_id uuid, p_home_record_id uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"home_relations\", args: \"\", returns: \"TABLE(table_id uuid, home_record_id uuid, organization_id uuid, relation_id uuid)\", security: \"invoker\" },\n { name: \"inbound_addresses\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"inbound_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_label text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"inbound_domain\", args: \"p_organization_id uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"inbound_mail_land\", args: \"p_address text, p_mail jsonb, p_secret text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"inbound_mail_map\", args: \"p_organization_id uuid, p_table_id uuid, p_mail jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"inbound_set\", args: \"p_organization_id uuid, p_inbound_id uuid, p_enabled boolean\", returns: \"jsonb\", security: \"definer\" },\n { name: \"index_payload\", args: \"p_organization_id uuid, p_table_id uuid, p_limit integer DEFAULT 1000\", returns: \"TABLE(id uuid, searchable text)\", security: \"invoker\" },\n { name: \"intern_provenance\", args: \"p_data jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"io_cell\", args: \"p_organization_id uuid, p_field jsonb, p_word text, p_date_order text DEFAULT 'mdy'::text\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"io_changed_field_ids\", args: \"p_organization_id uuid, p_table_id uuid, p_old jsonb, p_new jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"io_changed_keys\", args: \"p_old jsonb, p_new jsonb\", returns: \"text[]\", security: \"invoker\" },\n { name: \"io_comment_resolve\", args: \"p_organization_id uuid, p_comment_id uuid, p_resolved boolean DEFAULT true\", returns: \"boolean\", security: \"definer\" },\n { name: \"io_comment_write\", args: \"p_organization_id uuid, p_record_id uuid, p_body text, p_anchor jsonb DEFAULT '{}'::jsonb, p_parent_comment_id uuid DEFAULT NULL::uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"io_comments\", args: \"p_organization_id uuid, p_record_id uuid, p_include_resolved boolean DEFAULT false\", returns: \"TABLE(id uuid, body text, anchor jsonb, parent_comment_id uuid, created_by uuid, created_at timestamp with time zone, resolved_at timestamp with time zone, resolved_by uuid)\", security: \"definer\" },\n { name: \"io_csv_escape\", args: \"p_value text, p_delimiter text DEFAULT ','::text\", returns: \"text\", security: \"invoker\" },\n { name: \"io_csv_parse\", args: \"p_text text, p_delimiter text DEFAULT NULL::text\", returns: \"TABLE(row_number integer, cells text[])\", security: \"invoker\" },\n { name: \"io_export\", args: \"p_organization_id uuid, p_table_id uuid, p_columns text[] DEFAULT NULL::text[], p_limit integer DEFAULT 10000, p_required text DEFAULT 'viewer'::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"io_export_csv\", args: \"p_organization_id uuid, p_table_id uuid, p_columns text[] DEFAULT NULL::text[], p_limit integer DEFAULT 10000, p_delimiter text DEFAULT chr(44), p_required text DEFAULT 'viewer'::text\", returns: \"text\", security: \"definer\" },\n { name: \"io_import_begin\", args: \"p_organization_id uuid, p_table_id uuid, p_format text DEFAULT 'csv'::text, p_source_name text DEFAULT NULL::text, p_source_columns jsonb DEFAULT '[]'::jsonb, p_file_hash text DEFAULT NULL::text, p_policy jsonb DEFAULT '{}'::jsonb, p_dedupe_key text DEFAULT NULL::text, p_file_bytes bigint DEFAULT NULL::bigint, p_force boolean DEFAULT false\", returns: \"jsonb\", security: \"definer\" },\n { name: \"io_import_finish\", args: \"p_organization_id uuid, p_import_id uuid, p_unmapped text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"io_import_forget\", args: \"p_organization_id uuid, p_import_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"io_import_open\", args: \"p_organization_id uuid, p_table_id uuid, p_format text DEFAULT 'csv'::text, p_source_name text DEFAULT NULL::text, p_source_columns jsonb DEFAULT '[]'::jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"io_import_plan\", args: \"p_organization_id uuid, p_table_id uuid, p_columns jsonb DEFAULT '[]'::jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"io_import_report\", args: \"p_organization_id uuid, p_import_id uuid, p_state text DEFAULT NULL::text, p_limit integer DEFAULT 100, p_offset integer DEFAULT 0\", returns: \"jsonb\", security: \"definer\" },\n { name: \"io_import_rows\", args: \"p_organization_id uuid, p_import_id uuid, p_rows jsonb, p_mapping jsonb DEFAULT '{}'::jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"io_imports\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_limit integer DEFAULT 25\", returns: \"jsonb\", security: \"definer\" },\n { name: \"io_infer_column\", args: \"p_organization_id uuid, p_table_id uuid, p_header text, p_samples jsonb DEFAULT '[]'::jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"io_infer_type\", args: \"p_samples jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"io_money_unit\", args: \"p_word text\", returns: \"text\", security: \"invoker\" },\n { name: \"io_outbox_announce\", args: \"\", returns: \"trigger\", security: \"definer\" },\n { name: \"io_outbox_broadcast_stmt\", args: \"\", returns: \"trigger\", security: \"definer\" },\n { name: \"io_outbox_drain\", args: \"p_organization_id uuid, p_consumer text, p_limit integer DEFAULT 100, p_event_key text DEFAULT 'records.changed'::text\", returns: \"TABLE(outbox_id uuid, record_id uuid, table_id uuid, operation text, changed_field_ids jsonb, actor jsonb, occurred_at timestamp with time zone)\", security: \"definer\" },\n { name: \"io_outbox_release\", args: \"p_organization_id uuid, p_consumer text, p_older_than interval DEFAULT '00:15:00'::interval\", returns: \"integer\", security: \"definer\" },\n { name: \"io_proposal_accept\", args: \"p_organization_id uuid, p_import_id uuid, p_column text, p_type text DEFAULT NULL::text, p_label text DEFAULT NULL::text\", returns: \"uuid\", security: \"definer\" },\n { name: \"io_proposal_reject\", args: \"p_organization_id uuid, p_import_id uuid, p_column text\", returns: \"boolean\", security: \"definer\" },\n { name: \"io_proposal_spec\", args: \"p_proposal jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"io_record_changed\", args: \"\", returns: \"trigger\", security: \"definer\" },\n { name: \"io_record_changed_stmt_delete\", args: \"\", returns: \"trigger\", security: \"definer\" },\n { name: \"io_record_changed_stmt_insert\", args: \"\", returns: \"trigger\", security: \"definer\" },\n { name: \"io_record_changed_stmt_update\", args: \"\", returns: \"trigger\", security: \"definer\" },\n { name: \"io_relation_candidate\", args: \"p_organization_id uuid, p_table_id uuid, p_words text[]\", returns: \"uuid\", security: \"invoker\" },\n { name: \"io_restore\", args: \"p_organization_id uuid, p_record_id uuid, p_version integer\", returns: \"integer\", security: \"definer\" },\n { name: \"io_restore\", args: \"p_organization_id uuid, p_record_id uuid, p_version integer, p_author jsonb\", returns: \"integer\", security: \"definer\" },\n { name: \"io_revisions\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(version integer, changed_at timestamp with time zone, changed_by uuid, summary text, operation text, changed_fields jsonb)\", security: \"definer\" },\n { name: \"io_sample_words\", args: \"p_samples jsonb\", returns: \"TABLE(word text)\", security: \"invoker\" },\n { name: \"io_value_shape\", args: \"p_envelope jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"is_a_retirement\", args: \"p_old_deleted timestamp with time zone, p_new_deleted timestamp with time zone, p_old_data jsonb, p_new_data jsonb, p_old_table uuid, p_new_table uuid, p_old_org uuid, p_new_org uuid, p_old_class text, p_new_class text\", returns: \"boolean\", security: \"invoker\" },\n { name: \"ladder_replanners\", args: \"p_roots text[] DEFAULT ARRAY['custom.has_visibility'::text, 'custom.effective_level'::text, 'custom.reaches_directly'::text, 'custom.visible_set'::text]\", returns: \"TABLE(fn text, lang text, why text, remedy text)\", security: \"definer\" },\n { name: \"level_floor\", args: \"\", returns: \"permission_level\", security: \"definer\" },\n { name: \"levels_raised_by_a_less_specific_rung\", args: \"\", returns: \"TABLE(organization_id uuid, organization_name text, member_id uuid, member_email text, record_id uuid, addressed_level permission_level, answered_level permission_level)\", security: \"definer\" },\n { name: \"list_door_disagreements\", args: \"p_pretend text DEFAULT NULL::text, p_only_organization uuid DEFAULT NULL::uuid, p_sample integer DEFAULT 200\", returns: \"TABLE(organization_id uuid, organization_name text, member_id uuid, table_id uuid, record_id uuid, door text, why text)\", security: \"invoker\" },\n { name: \"list_door_disagreements\", args: \"p_pretend text, p_only_organization uuid, p_sample integer, p_exhaustive boolean\", returns: \"TABLE(organization_id uuid, organization_name text, member_id uuid, table_id uuid, record_id uuid, door text, why text)\", security: \"invoker\" },\n { name: \"lookup_value\", args: \"p_organization_id uuid, p_record_id uuid, p_field_data jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"mask_document\", args: \"p_document jsonb, p_visible_keys text[], p_notices jsonb, p_by_id boolean DEFAULT false, p_key_ids jsonb DEFAULT '{}'::jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"mask_document\", args: \"p_document jsonb, p_visible_keys text[], p_notices jsonb, p_by_id boolean DEFAULT false, p_key_ids jsonb DEFAULT '{}'::jsonb, p_declared_keys text[] DEFAULT NULL::text[]\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"mask_says_withheld\", args: \"p_mask jsonb, p_key text\", returns: \"boolean\", security: \"invoker\" },\n { name: \"may_invite_outside\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"merge_field_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"migrate_choice_keys\", args: \"p_organization_id uuid, p_table_id uuid, p_dry_run boolean DEFAULT false\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_delete\", args: \"p_organization_id uuid, p_record_id uuid, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_demote\", args: \"p_organization_id uuid, p_table_id uuid, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_extract_parent\", args: \"p_organization_id uuid, p_id uuid, p_parent_table_id uuid, p_moved_keys text[], p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_merge\", args: \"p_organization_id uuid, p_winner_id uuid, p_loser_id uuid, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_promote\", args: \"p_organization_id uuid, p_table_id uuid, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_purge\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_dry_run boolean DEFAULT true\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_reclass\", args: \"p_organization_id uuid, p_id uuid, p_to text DEFAULT 'field'::text, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_rename\", args: \"p_organization_id uuid, p_id uuid, p_to text, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_reparent\", args: \"p_organization_id uuid, p_id uuid, p_parent_id uuid, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_retype\", args: \"p_organization_id uuid, p_id uuid, p_to text, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_split\", args: \"p_organization_id uuid, p_record_id uuid, p_moved_keys text[], p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrate_undo\", args: \"p_organization_id uuid, p_log_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"migrations\", args: \"p_organization_id uuid, p_target_id uuid DEFAULT NULL::uuid, p_limit integer DEFAULT 100\", returns: \"TABLE(id uuid, verb text, target_kind text, target_id uuid, note text, applied_at timestamp with time zone, applied_by uuid, undone_at timestamp with time zone)\", security: \"definer\" },\n { name: \"mirror_asks_the_whole_database\", args: \"\", returns: \"TABLE(schema_name text, table_name text, policy_name text, why text)\", security: \"invoker\" },\n { name: \"my_level\", args: \"p_organization_id uuid, p_id uuid, p_type text DEFAULT 'record'::text\", returns: \"permission_level\", security: \"definer\" },\n { name: \"my_levels\", args: \"p_organization_id uuid, p_ids jsonb, p_type text DEFAULT 'record'::text\", returns: \"TABLE(id uuid, level permission_level)\", security: \"definer\" },\n { name: \"organization_clear\", args: \"p_organization_id uuid, p_confirm text, p_and_destroy boolean DEFAULT false\", returns: \"jsonb\", security: \"definer\" },\n { name: \"organization_contents\", args: \"p_organization_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"organization_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"organization_references\", args: \"p_kind text, p_organization_id uuid, p_row jsonb\", returns: \"TABLE(site text, what text, ref_id uuid, openable boolean)\", security: \"invoker\" },\n { name: \"owning_table\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"uuid\", security: \"invoker\" },\n { name: \"owning_table_gone\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"boolean\", security: \"invoker\" },\n { name: \"page_ceiling\", args: \"p_organization_id uuid DEFAULT NULL::uuid\", returns: \"integer\", security: \"invoker\" },\n { name: \"page_contract\", args: \"p_organization_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"page_size\", args: \"p_organization_id uuid, p_door text, p_limit integer, p_default integer DEFAULT NULL::integer, p_ceiling integer DEFAULT NULL::integer\", returns: \"integer\", security: \"invoker\" },\n { name: \"parity_field_types\", args: \"\", returns: \"TABLE(parity_type text, behavior text, made_of text)\", security: \"invoker\" },\n { name: \"parity_type\", args: \"p_field_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"parity_values\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(field_key text, field_id uuid, parity_type text, behavior text, unit text, format text, value jsonb, value_version integer, actor text, written_at timestamp with time zone)\", security: \"invoker\" },\n { name: \"per_value_access_words\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"person_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"phone_canonical\", args: \"p_text text\", returns: \"text\", security: \"invoker\" },\n { name: \"phone_display\", args: \"p_text text\", returns: \"text\", security: \"invoker\" },\n { name: \"phone_pattern\", args: \"\", returns: \"text\", security: \"invoker\" },\n { name: \"pin_agent_cells\", args: \"p_new jsonb, p_old jsonb, p_agent_keys text[]\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"pipeline_board\", args: \"p_organization_id uuid, p_table_id uuid, p_measure text DEFAULT NULL::text\", returns: \"TABLE(stage_key text, stage_label text, stage_position integer, cards bigint, total numeric, wip_limit integer, over_limit boolean)\", security: \"definer\" },\n { name: \"pipeline_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_spec jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"pipeline_gate_preview\", args: \"p_organization_id uuid, p_table_id uuid, p_stage text, p_gate jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"pipeline_move\", args: \"p_organization_id uuid, p_record_id uuid, p_to text, p_also jsonb DEFAULT '{}'::jsonb, p_expected_version integer DEFAULT NULL::integer\", returns: \"jsonb\", security: \"definer\" },\n { name: \"pipeline_pending\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"pipeline_read\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"pipeline_transition_refusal\", args: \"p_organization_id uuid, p_record_id uuid, p_to text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"portal_admits\", args: \"p_organization_id uuid, p_user_id uuid DEFAULT NULL::uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"portal_card\", args: \"p_organization_id uuid, p_portal_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"portal_declare\", args: \"p_organization_id uuid, p_title text, p_client_table_id uuid, p_tables jsonb, p_portal_id uuid DEFAULT NULL::uuid, p_slug text DEFAULT NULL::text, p_sign_in_method text DEFAULT 'magic_link'::text\", returns: \"uuid\", security: \"definer\" },\n { name: \"portal_field_map\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"TABLE(field_id uuid, field_key text, field_type text, points_at uuid)\", security: \"definer\" },\n { name: \"portal_invitation\", args: \"p_slug text, p_email text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"portal_invite\", args: \"p_organization_id uuid, p_portal_id uuid, p_client_record_id uuid, p_email text, p_user_id uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"portal_me\", args: \"\", returns: \"jsonb\", security: \"definer\" },\n { name: \"portal_preview\", args: \"p_organization_id uuid, p_portal_id uuid, p_principal_id uuid, p_table_id uuid\", returns: \"TABLE(record_id uuid, title text)\", security: \"definer\" },\n { name: \"portal_principal_bind\", args: \"p_organization_id uuid, p_principal_id uuid, p_user_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"portal_public\", args: \"p_slug text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"portal_record_title\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"text\", security: \"definer\" },\n { name: \"portal_revoke\", args: \"p_organization_id uuid, p_portal_id uuid, p_principal_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"portal_slug\", args: \"p_organization_id uuid, p_title text, p_portal_id uuid DEFAULT NULL::uuid\", returns: \"text\", security: \"definer\" },\n { name: \"portal_tables\", args: \"p_organization_id uuid\", returns: \"TABLE(portal_id uuid, table_id uuid, name text)\", security: \"definer\" },\n { name: \"portals\", args: \"p_organization_id uuid\", returns: \"TABLE(portal_id uuid, title text, slug text, client_table_id uuid, client_table text, is_active boolean, tables integer, invited integer, signed_in integer, sign_in_method text, opened_at timestamp with time zone)\", security: \"definer\" },\n { name: \"presentation_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"promote_field\", args: \"p_organization_id uuid, p_table_id uuid, p_field_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"promote_table\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"promoted_field_cap\", args: \"\", returns: \"integer\", security: \"invoker\" },\n { name: \"promoted_fields\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"TABLE(field_id uuid, field_key text, parity_type text, is_unique boolean, value_path text, index_arm text, index_expr text, index_name text, indexable boolean, why_not text)\", security: \"invoker\" },\n { name: \"promoted_index_arm\", args: \"p_field_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"promoted_index_ddl\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"TABLE(step integer, purpose text, statement text)\", security: \"invoker\" },\n { name: \"promoted_index_expr\", args: \"p_field_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"promoted_index_name\", args: \"p_table_id uuid, p_field_key text, p_unique boolean\", returns: \"text\", security: \"invoker\" },\n { name: \"promoted_query_sql\", args: \"p_organization_id uuid, p_table_id uuid, p_field_key text\", returns: \"text\", security: \"invoker\" },\n { name: \"promoted_read\", args: \"p_organization_id uuid, p_table_id uuid, p_field_key text, p_value text\", returns: \"SETOF uuid\", security: \"invoker\" },\n { name: \"promoted_value_path\", args: \"p_field_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"promotion_inline_ceiling\", args: \"\", returns: \"integer\", security: \"invoker\" },\n { name: \"provenance_prune\", args: \"p_organization_id uuid DEFAULT NULL::uuid, p_dry_run boolean DEFAULT true, p_limit integer DEFAULT 200000\", returns: \"jsonb\", security: \"definer\" },\n { name: \"provenance_retention_days\", args: \"p_organization_id uuid\", returns: \"integer\", security: \"definer\" },\n { name: \"provenance_write\", args: \"p_organization_id uuid, p_conversation_id uuid, p_turn_id text, p_rows jsonb\", returns: \"integer\", security: \"definer\" },\n { name: \"query_access_ids\", args: \"p_organization_id uuid, p_required text DEFAULT 'viewer'::text\", returns: \"uuid[]\", security: \"invoker\" },\n { name: \"query_across_homes\", args: \"p_organization_id uuid, p_table_id uuid, p_limit integer DEFAULT 50, p_offset integer DEFAULT 0, p_required text DEFAULT 'viewer'::text\", returns: \"TABLE(record_id uuid, home_record_id uuid, data jsonb, created_at timestamp with time zone)\", security: \"definer\" },\n { name: \"query_by_coordinates\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_coordinates jsonb DEFAULT '[]'::jsonb, p_limit integer DEFAULT 50, p_offset integer DEFAULT 0, p_required text DEFAULT 'viewer'::text\", returns: \"TABLE(record_id uuid, table_id uuid, data jsonb, coordinates_matched integer)\", security: \"definer\" },\n { name: \"query_can_see\", args: \"p_organization_id uuid, p_record_id uuid, p_required text DEFAULT 'viewer'::text\", returns: \"boolean\", security: \"definer\" },\n { name: \"query_hot_paths\", args: \"\", returns: \"TABLE(name text, statement text)\", security: \"invoker\" },\n { name: \"query_hot_paths_prepared\", args: \"\", returns: \"TABLE(name text, prepared boolean, generic_plans bigint)\", security: \"invoker\" },\n { name: \"query_is_store_owner\", args: \"\", returns: \"boolean\", security: \"invoker\" },\n { name: \"query_prepare_hot\", args: \"\", returns: \"integer\", security: \"invoker\" },\n { name: \"query_principal\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"query_record_as_of\", args: \"p_organization_id uuid, p_record_id uuid, p_recorded_at timestamp with time zone DEFAULT NULL::timestamp with time zone, p_world_on date DEFAULT NULL::date, p_required text DEFAULT 'viewer'::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"query_relation_edges\", args: \"p_organization_id uuid, p_flavor text DEFAULT NULL::text, p_role text DEFAULT NULL::text\", returns: \"TABLE(parent_id uuid, child_id uuid, role text, flavor text)\", security: \"definer\" },\n { name: \"query_rollup\", args: \"p_organization_id uuid, p_roots uuid[], p_flavor text DEFAULT NULL::text, p_role text DEFAULT NULL::text, p_max_depth integer DEFAULT 33, p_required text DEFAULT 'viewer'::text\", returns: \"TABLE(record_id uuid, depth integer)\", security: \"definer\" },\n { name: \"query_rollup_sum\", args: \"p_organization_id uuid, p_roots uuid[], p_field_key text, p_flavor text DEFAULT NULL::text, p_role text DEFAULT NULL::text, p_max_depth integer DEFAULT 33, p_required text DEFAULT 'viewer'::text\", returns: \"numeric\", security: \"definer\" },\n { name: \"query_table_as_of\", args: \"p_organization_id uuid, p_table_id uuid, p_recorded_at timestamp with time zone DEFAULT NULL::timestamp with time zone, p_world_on date DEFAULT NULL::date, p_limit integer DEFAULT 50, p_offset integer DEFAULT 0, p_required text DEFAULT 'viewer'::text\", returns: \"TABLE(record_id uuid, data jsonb)\", security: \"definer\" },\n { name: \"query_table_homes\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"SETOF uuid\", security: \"definer\" },\n { name: \"query_visibility_parity\", args: \"p_organization_id uuid\", returns: \"TABLE(side text, container_type text, container_id uuid, item_type text, item_id uuid, stored_level permission_level, derived_level permission_level, reason text)\", security: \"definer\" },\n { name: \"query_visible_ids\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_required text DEFAULT 'viewer'::text\", returns: \"SETOF uuid\", security: \"definer\" },\n { name: \"reachable_from\", args: \"p_organization_id uuid, p_roots uuid[]\", returns: \"TABLE(record_id uuid, depth integer, via text)\", security: \"invoker\" },\n { name: \"reaches_directly\", args: \"p_user_id uuid, p_type text, p_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level\", returns: \"boolean\", security: \"definer\" },\n { name: \"read_door_carried_ids\", args: \"p_user uuid, p_organization_id uuid, p_table_id uuid, p_required permission_level, OUT o_ids uuid[], OUT o_containers integer\", returns: \"record\", security: \"definer\" },\n { name: \"read_door_granted_ids\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"uuid[]\", security: \"definer\" },\n { name: \"read_door_ladder_ceiling\", args: \"\", returns: \"integer\", security: \"invoker\" },\n { name: \"read_door_parity\", args: \"p_organization_id uuid, p_table_id uuid, p_user uuid, p_required permission_level, p_sample integer\", returns: \"TABLE(record_id uuid, set_based boolean, per_row boolean, verdict text)\", security: \"definer\" },\n { name: \"read_mask\", args: \"p_organization_id uuid, p_record_id uuid, p_action text DEFAULT 'read'::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"read_paths_outside_the_door\", args: \"\", returns: \"TABLE(object_name text, why text)\", security: \"invoker\" },\n { name: \"read_record\", args: \"p_organization_id uuid, p_record_id uuid, p_by_id boolean DEFAULT false\", returns: \"jsonb\", security: \"definer\" },\n { name: \"read_records\", args: \"p_organization_id uuid, p_table_id uuid, p_by_id boolean DEFAULT false, p_limit integer DEFAULT 200, p_offset integer DEFAULT 0\", returns: \"TABLE(id uuid, document jsonb, level permission_level)\", security: \"definer\" },\n { name: \"read_records_by_ids\", args: \"p_organization_id uuid, p_table_id uuid, p_record_ids uuid[], p_by_id boolean DEFAULT false\", returns: \"TABLE(id uuid, document jsonb, level permission_level)\", security: \"definer\" },\n { name: \"read_records_matching\", args: \"p_organization_id uuid, p_table_id uuid, p_filter jsonb DEFAULT '{}'::jsonb, p_by_id boolean DEFAULT false, p_limit integer DEFAULT 200, p_offset integer DEFAULT 0\", returns: \"TABLE(id uuid, document jsonb, level permission_level)\", security: \"definer\" },\n { name: \"realtime_topic_admits\", args: \"p_topic text\", returns: \"boolean\", security: \"definer\" },\n { name: \"record_aggregate\", args: \"p_organization_id uuid, p_table_id uuid, p_group_by jsonb DEFAULT '[]'::jsonb, p_measures jsonb DEFAULT '[]'::jsonb, p_bucket jsonb DEFAULT NULL::jsonb, p_filter jsonb DEFAULT '{}'::jsonb, p_limit integer DEFAULT 200, p_required text DEFAULT 'viewer'::text\", returns: \"TABLE(groups jsonb, measures jsonb, row_count bigint)\", security: \"definer\" },\n { name: \"record_applicability\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(rule_id uuid, rule_name text, rule_version integer, applies boolean, answer jsonb)\", security: \"invoker\" },\n { name: \"record_as_of\", args: \"p_organization_id uuid, p_record_id uuid, p_at timestamp with time zone\", returns: \"TABLE(state jsonb, replayed boolean)\", security: \"definer\" },\n { name: \"record_card\", args: \"p_viewer uuid, p_organization_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"record_carrying_edges\", args: \"p_id uuid, p_data_class text, p_data jsonb, p_deleted_at timestamp with time zone\", returns: \"TABLE(container_id uuid, item_id uuid, edge_role text)\", security: \"invoker\" },\n { name: \"record_delete\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"timestamp with time zone\", security: \"definer\" },\n { name: \"record_history\", args: \"p_organization_id uuid, p_record_id uuid, p_limit integer DEFAULT 200, p_offset integer DEFAULT 0\", returns: \"TABLE(version integer, occurred_at timestamp with time zone, operation text, operation_label text, actor jsonb, changes jsonb, migration_id uuid, undoable boolean)\", security: \"definer\" },\n { name: \"record_platform_keys\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"record_relation_edges\", args: \"p_organization_id uuid, p_id uuid, p_table_id uuid, p_data_class text, p_data jsonb, p_deleted_at timestamp with time zone\", returns: \"TABLE(target_id uuid, edge_role text, field_id uuid, ord integer)\", security: \"invoker\" },\n { name: \"record_reparent\", args: \"p_organization_id uuid, p_record_id uuid, p_parent_id uuid\", returns: \"void\", security: \"definer\" },\n { name: \"record_resolve\", args: \"p_organization_id uuid, p_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"record_restore\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"void\", security: \"definer\" },\n { name: \"record_restore_preview\", args: \"p_organization_id uuid, p_record_id uuid, p_version integer, p_field_key text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"record_restore_version\", args: \"p_organization_id uuid, p_record_id uuid, p_version integer\", returns: \"jsonb\", security: \"definer\" },\n { name: \"record_restore_version\", args: \"p_organization_id uuid, p_record_id uuid, p_version integer, p_author jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"record_scope_context\", args: \"p_organization_id uuid, p_record_id uuid, p_relations integer DEFAULT 12, p_history integer DEFAULT 15, p_siblings integer DEFAULT 8\", returns: \"jsonb\", security: \"definer\" },\n { name: \"record_stage_pending\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"record_state_as_of\", args: \"p_record_id uuid, p_at timestamp with time zone\", returns: \"TABLE(state jsonb, replayed boolean)\", security: \"definer\" },\n { name: \"record_table\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"record_update\", args: \"p_organization_id uuid, p_record_id uuid, p_patch jsonb, p_expected_version integer DEFAULT NULL::integer\", returns: \"integer\", security: \"definer\" },\n { name: \"record_values\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"record_values_of\", args: \"p_row custom.record\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"record_values_versioned\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(field_key text, field_id uuid, value jsonb, value_version integer, source jsonb, absent_reason text, actor text, on_behalf_of text, written_at timestamp with time zone, alternates jsonb)\", security: \"definer\" },\n { name: \"record_words\", args: \"p_organization_id uuid, p_record_id uuid, p_noun text DEFAULT NULL::text\", returns: \"text\", security: \"definer\" },\n { name: \"record_write\", args: \"p_organization_id uuid, p_table_id uuid, p_data jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"record_write_many\", args: \"p_organization_id uuid, p_table_id uuid, p_rows jsonb[], p_ids uuid[] DEFAULT NULL::uuid[]\", returns: \"uuid[]\", security: \"definer\" },\n { name: \"refusals_claiming_a_level_never_asked\", args: \"\", returns: \"TABLE(function_name text, identity_args text, why text)\", security: \"invoker\" },\n { name: \"relation_carry\", args: \"p_organization_id uuid, p_container_id uuid, p_item_id uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"relation_edges_withdraw\", args: \"p_organization_id uuid, p_field_ids uuid[], p_why text\", returns: \"integer\", security: \"definer\" },\n { name: \"relation_own\", args: \"p_organization_id uuid, p_owner_id uuid, p_target_id uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"relation_target_card\", args: \"p_organization_id uuid, p_record_id uuid, p_via_key text DEFAULT NULL::text\", returns: \"TABLE(target_id uuid, target_organization_id uuid, is_foreign boolean, masked boolean, reader_level permission_level, card jsonb, why text)\", security: \"definer\" },\n { name: \"relation_target_external\", args: \"p_connection_token text, p_external_table text, p_external_key text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"relation_target_ours\", args: \"p_entity_token text, p_row_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"relation_targets\", args: \"p_organization_id uuid, p_record_id uuid, p_via_key text\", returns: \"SETOF uuid\", security: \"definer\" },\n { name: \"relation_uncarry\", args: \"p_organization_id uuid, p_container_id uuid, p_item_id uuid\", returns: \"integer\", security: \"definer\" },\n { name: \"relation_words\", args: \"p_organization_id uuid, p_field_id uuid, p_value text\", returns: \"text\", security: \"definer\" },\n { name: \"relation_words_many\", args: \"p_organization_id uuid, p_field_id uuid, p_record_ids uuid[]\", returns: \"TABLE(record_id uuid, words text)\", security: \"definer\" },\n { name: \"reopen_declared_doors\", args: \"\", returns: \"TABLE(reopened text)\", security: \"definer\" },\n { name: \"required_epoch\", args: \"p_container_type text, p_container_id uuid, p_item_type text, p_item_id uuid\", returns: \"bigint\", security: \"definer\" },\n { name: \"resolve_first_match\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"resolve_id\", args: \"p_organization_id uuid, p_id uuid\", returns: \"uuid\", security: \"invoker\" },\n { name: \"retired_actor_words\", args: \"\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"rollup_value\", args: \"p_organization_id uuid, p_record_id uuid, p_field_data jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"rule_applies\", args: \"p_organization_id uuid, p_rule_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"rule_context\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"rule_declare\", args: \"p_organization_id uuid, p_spec jsonb, p_rule_id uuid DEFAULT NULL::uuid\", returns: \"uuid\", security: \"definer\" },\n { name: \"rule_dependency_edges\", args: \"p_organization_id uuid, p_row custom.record DEFAULT NULL::custom.record\", returns: \"TABLE(needs text, needed text)\", security: \"invoker\" },\n { name: \"rule_eval\", args: \"p_organization_id uuid, p_expr jsonb, p_values jsonb, p_context jsonb DEFAULT '{}'::jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"rule_field_key\", args: \"p_organization_id uuid, p_field_id uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"rule_field_label\", args: \"p_organization_id uuid, p_field_id uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"rule_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"rule_members\", args: \"p_organization_id uuid, p_rule_id uuid\", returns: \"SETOF custom.record\", security: \"invoker\" },\n { name: \"rule_membership\", args: \"p_organization_id uuid, p_rule_id uuid, p_record_id uuid\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"rule_node_kinds\", args: \"\", returns: \"TABLE(node text, evaluated_by text, note text)\", security: \"invoker\" },\n { name: \"rule_run\", args: \"p_organization_id uuid, p_rule_id uuid, p_values jsonb, p_context jsonb DEFAULT '{}'::jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"rule_truth\", args: \"p_answer jsonb\", returns: \"boolean\", security: \"invoker\" },\n { name: \"rule_uses\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"rule_version\", args: \"p_organization_id uuid, p_rule_id uuid\", returns: \"integer\", security: \"invoker\" },\n { name: \"said\", args: \"p_value text, p_when_there_is_none text\", returns: \"text\", security: \"invoker\" },\n { name: \"share_access\", args: \"p_organization_id uuid, p_subject_id uuid\", returns: \"TABLE(principal_kind text, principal_id uuid, principal_label text, level permission_level, reason text, reason_detail text, via_type text, via_id uuid, revocable boolean)\", security: \"definer\" },\n { name: \"share_grant\", args: \"p_organization_id uuid, p_subject_id uuid, p_principal_kind text, p_principal_id uuid, p_level permission_level DEFAULT 'viewer'::permission_level\", returns: \"jsonb\", security: \"definer\" },\n { name: \"share_lane_set\", args: \"p_organization_id uuid, p_subject_id uuid, p_choice text, p_level permission_level DEFAULT NULL::permission_level\", returns: \"jsonb\", security: \"definer\" },\n { name: \"share_lanes\", args: \"\", returns: \"TABLE(choice text, lane text, discoverable boolean, label text, means text)\", security: \"definer\" },\n { name: \"share_levels\", args: \"\", returns: \"TABLE(level permission_level, ordinal integer, label text, means text)\", security: \"definer\" },\n { name: \"share_people\", args: \"p_organization_id uuid, p_subject_id uuid DEFAULT NULL::uuid, p_query text DEFAULT NULL::text, p_limit integer DEFAULT 25\", returns: \"TABLE(user_id uuid, email text, display_name text, membership text, already_at permission_level, already_why text)\", security: \"definer\" },\n { name: \"share_revoke\", args: \"p_organization_id uuid, p_subject_id uuid, p_principal_kind text, p_principal_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"share_subject_name\", args: \"p_organization_id uuid, p_type text, p_id uuid\", returns: \"text\", security: \"definer\" },\n { name: \"shared_only_disagreements\", args: \"p_pretend text DEFAULT NULL::text\", returns: \"TABLE(organization_id uuid, organization_name text, member_id uuid, record_id uuid, table_id uuid, ladder boolean, read_door boolean, rls_mirror boolean, why text)\", security: \"invoker\" },\n { name: \"sign_request_cancel\", args: \"p_organization_id uuid, p_request_id uuid, p_reason text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"sign_request_create\", args: \"p_organization_id uuid, p_render_id uuid, p_field_key text, p_signer_email text, p_signer_name text, p_expires_in interval DEFAULT '14 days'::interval\", returns: \"jsonb\", security: \"definer\" },\n { name: \"sign_request_decline\", args: \"p_token text, p_reason text DEFAULT NULL::text, p_ip text DEFAULT NULL::text, p_user_agent text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"sign_request_public\", args: \"p_token text, p_origin text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"sign_request_remind\", args: \"p_organization_id uuid, p_request_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"sign_request_sentence\", args: \"p_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"sign_request_sign\", args: \"p_token text, p_signed_name text, p_mark text, p_image text DEFAULT NULL::text, p_ip text DEFAULT NULL::text, p_user_agent text DEFAULT NULL::text, p_origin text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"sign_request_state\", args: \"p_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"sign_request_unchanged\", args: \"p_organization_id uuid, p_request_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"sign_requests\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(request_id uuid, render_id uuid, record_id uuid, field_key text, document_title text, signer_name text, signer_email text, signer_has_account boolean, state text, sentence text, document_version integer, document_hash text, sent_at timestamp with time zone, expires_at timestamp with time zone, viewed_at timestamp with time zone, signed_at timestamp with time zone, declined_at timestamp with time zone, invalidated_at timestamp with time zone, signature_id uuid, signature_mark text, reminder_count integer)\", security: \"definer\" },\n { name: \"sign_token_decode\", args: \"p_token text\", returns: \"bytea\", security: \"invoker\" },\n { name: \"sign_token_encode\", args: \"p_bytes bytea\", returns: \"text\", security: \"invoker\" },\n { name: \"silent_page_doors\", args: \"\", returns: \"TABLE(door text, why text)\", security: \"definer\" },\n { name: \"size_refusal\", args: \"p_organization_id uuid, p_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"source_next_pointer\", args: \"p_sources jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"source_pointer\", args: \"p_sources jsonb, p_source jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"stage_rule_enforcement\", args: \"p_organization_id uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"stage_rule_on_fail_kinds\", args: \"\", returns: \"TABLE(behaviour text, note text)\", security: \"invoker\" },\n { name: \"stamp_value_envelopes\", args: \"p_data jsonb, p_actor text, p_on_behalf_of text, p_at timestamp with time zone\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"storage_modes\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"store_is_open\", args: \"p_organization_id uuid DEFAULT NULL::uuid\", returns: \"boolean\", security: \"invoker\" },\n { name: \"subscription_cadences\", args: \"p_organization_id uuid\", returns: \"text[]\", security: \"definer\" },\n { name: \"subscription_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_spec jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"subscription_mute\", args: \"p_organization_id uuid, p_rule_id uuid, p_muted boolean DEFAULT true\", returns: \"boolean\", security: \"definer\" },\n { name: \"subscription_preview\", args: \"p_organization_id uuid, p_rule_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"subscriptions\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(rule_id uuid, name text, table_id uuid, saved_view_id uuid, cadence text, schedule text, quiet_hours jsonb, channel text, recipient_user_id uuid, event_key text, muted boolean, mine boolean, i_may_mute boolean, last_sent_at timestamp with time zone, next_digest_at timestamp with time zone)\", security: \"definer\" },\n { name: \"table_capacity\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"table_carries_its_rows\", args: \"p_user_id uuid, p_table_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level\", returns: \"boolean\", security: \"definer\" },\n { name: \"table_column_source\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"table_contents\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"TABLE(record_id uuid, kind text, goes_at integer)\", security: \"invoker\" },\n { name: \"table_declare\", args: \"p_organization_id uuid, p_spec jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"table_has_a_visible_record\", args: \"p_user uuid, p_organization_id uuid, p_table_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"table_is_live\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"boolean\", security: \"invoker\" },\n { name: \"table_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"table_record_ceiling\", args: \"\", returns: \"integer\", security: \"invoker\" },\n { name: \"table_record_ceiling\", args: \"p_organization_id uuid\", returns: \"integer\", security: \"invoker\" },\n { name: \"table_rules\", args: \"p_organization_id uuid, p_table_id uuid, p_use text, p_record_type text DEFAULT NULL::text\", returns: \"SETOF custom.record\", security: \"invoker\" },\n { name: \"table_share_outside\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"table_share_outside_accept\", args: \"p_token text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"table_share_outside_for_me\", args: \"\", returns: \"TABLE(invitation_id uuid, organization_id uuid, organization text, table_id uuid, table_name text, level text, level_label text, token text, expires_at timestamp with time zone, say text)\", security: \"definer\" },\n { name: \"table_share_outside_invite\", args: \"p_organization_id uuid, p_table_id uuid, p_email text, p_level permission_level DEFAULT 'viewer'::permission_level\", returns: \"jsonb\", security: \"definer\" },\n { name: \"table_share_outside_resend\", args: \"p_organization_id uuid, p_invitation_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"table_share_outside_revoke\", args: \"p_organization_id uuid, p_invitation_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"table_stage_field\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"text\", security: \"definer\" },\n { name: \"table_storage\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"table_type_field\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"text\", security: \"definer\" },\n { name: \"tables_at_home\", args: \"p_organization_id uuid, p_home_ids uuid[]\", returns: \"TABLE(table_id uuid, home_record_id uuid, kind text)\", security: \"definer\" },\n { name: \"tables_described_without_asking\", args: \"\", returns: \"TABLE(function_name text, identity_args text, why text)\", security: \"invoker\" },\n { name: \"trg_associations_bump_visibility\", args: \"\", returns: \"trigger\", security: \"definer\" },\n { name: \"undeclared_keys\", args: \"p_organization_id uuid, p_table_id uuid, p_data jsonb\", returns: \"text[]\", security: \"invoker\" },\n { name: \"validate_custom_fields\", args: \"p_token text, p_organization_id uuid, p_values jsonb\", returns: \"void\", security: \"invoker\" },\n { name: \"validate_value_envelope\", args: \"p_organization_id uuid, p_fields custom.record[], p_data jsonb\", returns: \"void\", security: \"invoker\" },\n { name: \"validate_values\", args: \"p_organization_id uuid, p_fields custom.record[], p_values jsonb, p_record_type text DEFAULT NULL::text\", returns: \"void\", security: \"invoker\" },\n { name: \"value_alternate_keys\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"value_envelope_keys\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"value_envelope_ok\", args: \"p_data jsonb\", returns: \"boolean\", security: \"invoker\" },\n { name: \"value_envelope_refusal\", args: \"p_data jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"value_read\", args: \"p_organization_id uuid, p_record_id uuid, p_key text\", returns: \"TABLE(field_key text, field_id uuid, value jsonb, value_version integer, source jsonb, absent_reason text, actor text, on_behalf_of text, written_at timestamp with time zone, alternates jsonb)\", security: \"definer\" },\n { name: \"value_restore\", args: \"p_organization_id uuid, p_record_id uuid, p_field_key text, p_version integer\", returns: \"jsonb\", security: \"definer\" },\n { name: \"value_restore\", args: \"p_organization_id uuid, p_record_id uuid, p_field_key text, p_version integer, p_author jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"value_versions\", args: \"p_old jsonb, p_new jsonb\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"view_declare\", args: \"p_organization_id uuid, p_table_id uuid, p_spec jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"views\", args: \"p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(view_id uuid, name text, table_id uuid, filters jsonb, definition jsonb, created_at timestamp with time zone)\", security: \"definer\" },\n { name: \"visibility_ancestors\", args: \"p_item_type text, p_item_id uuid\", returns: \"TABLE(container_type text, container_id uuid, depth integer, max_level permission_level)\", security: \"definer\" },\n { name: \"visibility_as_of\", args: \"p_organization_id uuid, p_record_id uuid, p_at timestamp with time zone\", returns: \"TABLE(principal_kind text, principal_id uuid, level permission_level, through_kind text, through_id uuid, reason text, replayed boolean, held_from timestamp with time zone, held_to timestamp with time zone)\", security: \"definer\" },\n { name: \"visibility_cache_rebuild\", args: \"\", returns: \"integer\", security: \"definer\" },\n { name: \"visibility_parity\", args: \"\", returns: \"TABLE(side text, container_type text, container_id uuid, item_type text, item_id uuid, stored_level permission_level, derived_level permission_level, reason text)\", security: \"definer\" },\n { name: \"visibility_warm\", args: \"p_container_type text, p_container_id uuid\", returns: \"integer\", security: \"definer\" },\n { name: \"visible_predicate_sql\", args: \"p_user uuid, p_organization_id uuid, p_table_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level, p_alias text DEFAULT 'r'::text\", returns: \"text\", security: \"definer\" },\n { name: \"visible_record_ids\", args: \"p_user_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level\", returns: \"TABLE(id uuid)\", security: \"definer\" },\n { name: \"visible_set\", args: \"p_user uuid, p_organization_id uuid, p_table_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level, OUT o_all_visible boolean, OUT o_true_visibility platform.visibility[], OUT o_granted_all uuid[], OUT o_granted_visible uuid[], OUT o_carried_visible uuid[], OUT o_ladder_calls integer, OUT o_fallback boolean, OUT o_note text\", returns: \"record\", security: \"definer\" },\n { name: \"widget_kernel_id\", args: \"\", returns: \"uuid\", security: \"invoker\" },\n { name: \"withheld_marker\", args: \"p_mask jsonb, p_key text\", returns: \"jsonb\", security: \"invoker\" },\n { name: \"withheld_sentence\", args: \"p_mask jsonb, p_key text\", returns: \"text\", security: \"invoker\" },\n { name: \"work_approval_approvers\", args: \"p_organization_id uuid, p_subject_id uuid, p_approver_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(user_id uuid, name text, why text)\", security: \"definer\" },\n { name: \"work_approval_decide\", args: \"p_organization_id uuid, p_approval_id uuid, p_approve boolean, p_note text DEFAULT NULL::text\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_approval_kinds\", args: \"\", returns: \"text[]\", security: \"invoker\" },\n { name: \"work_approval_may_decide\", args: \"p_organization_id uuid, p_approval_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"work_approval_read\", args: \"p_organization_id uuid, p_approval_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_approval_request\", args: \"p_organization_id uuid, p_subject_id uuid, p_change jsonb, p_note text DEFAULT NULL::text, p_approver_id uuid DEFAULT NULL::uuid, p_origin text DEFAULT 'person'::text, p_conversation_id uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_assign\", args: \"p_organization_id uuid, p_record_id uuid, p_assignee_user_id uuid, p_due_date timestamp with time zone DEFAULT NULL::timestamp with time zone, p_clear_due boolean DEFAULT false\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_assignment_fields\", args: \"p_options_table_id uuid DEFAULT NULL::uuid\", returns: \"TABLE(key text, label text, spec jsonb)\", security: \"invoker\" },\n { name: \"work_has_assignment\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"work_inbox\", args: \"p_organization_id uuid, p_limit integer DEFAULT 50, p_offset integer DEFAULT 0, p_include_decided boolean DEFAULT false\", returns: \"TABLE(item_id uuid, kind text, origin text, title text, subject_id uuid, subject_kind text, summary text, state text, due_on timestamp with time zone, due_state text, actionable boolean, requested_by uuid, requested_by_name text, at timestamp with time zone)\", security: \"definer\" },\n { name: \"work_instantiation_shape\", args: \"p_organization_id uuid, p_instantiation_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_list\", args: \"p_organization_id uuid, p_flavour text DEFAULT 'mine'::text, p_include_finished boolean DEFAULT false, p_limit integer DEFAULT 100, p_offset integer DEFAULT 0\", returns: \"TABLE(record_id uuid, table_id uuid, table_name text, title text, assignee_id uuid, assignee_name text, assignee_user_id uuid, due_on timestamp with time zone, due_state text, status text, terminal boolean, assigned_by uuid, updated_at timestamp with time zone)\", security: \"definer\" },\n { name: \"work_person\", args: \"p_organization_id uuid, p_user_id uuid, p_create boolean DEFAULT true\", returns: \"uuid\", security: \"definer\" },\n { name: \"work_record_states\", args: \"p_organization_id uuid, p_record_id uuid\", returns: \"TABLE(state_id uuid, name text, sort integer, terminal boolean, is_current boolean, allowed boolean, refusal text)\", security: \"definer\" },\n { name: \"work_relation_kinds\", args: \"\", returns: \"TABLE(kind text, available boolean, why text)\", security: \"invoker\" },\n { name: \"work_set_state\", args: \"p_organization_id uuid, p_record_id uuid, p_state_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_slot_expire\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"integer\", security: \"definer\" },\n { name: \"work_slot_hold\", args: \"p_organization_id uuid, p_table_id uuid, p_slot_key text, p_holder text, p_ttl interval DEFAULT '00:15:00'::interval\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_slot_holds\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"TABLE(hold_id uuid, slot_key text, holder text, expires_at timestamp with time zone, expired boolean)\", security: \"definer\" },\n { name: \"work_slot_index_name\", args: \"p_table_id uuid\", returns: \"text\", security: \"invoker\" },\n { name: \"work_slot_release\", args: \"p_organization_id uuid, p_hold_id uuid\", returns: \"boolean\", security: \"definer\" },\n { name: \"work_slots_declare\", args: \"p_organization_id uuid, p_name text, p_slug text, p_home_id uuid DEFAULT NULL::uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_state_id\", args: \"p_organization_id uuid, p_table_id uuid, p_value text\", returns: \"uuid\", security: \"invoker\" },\n { name: \"work_states\", args: \"\", returns: \"TABLE(sort integer, name text, terminal boolean, next text[])\", security: \"invoker\" },\n { name: \"work_take_assignment\", args: \"p_organization_id uuid, p_table_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_template_declare\", args: \"p_organization_id uuid, p_name text, p_graph jsonb\", returns: \"uuid\", security: \"definer\" },\n { name: \"work_template_instantiate\", args: \"p_organization_id uuid, p_template_id uuid, p_overrides jsonb DEFAULT '{}'::jsonb\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_template_refusal\", args: \"p_graph jsonb\", returns: \"text\", security: \"invoker\" },\n { name: \"work_template_shape\", args: \"p_organization_id uuid, p_template_id uuid\", returns: \"jsonb\", security: \"definer\" },\n { name: \"work_templates\", args: \"p_organization_id uuid, p_limit integer DEFAULT 100\", returns: \"TABLE(template_id uuid, name text, nodes integer, relations integer, created_at timestamp with time zone)\", security: \"definer\" },\n { name: \"work_transition_refusal\", args: \"p_organization_id uuid, p_from_state_id uuid, p_to_state_id uuid\", returns: \"text\", security: \"definer\" },\n { name: \"work_whose_turn\", args: \"p_organization_id uuid, p_table_id uuid, p_include_finished boolean DEFAULT false\", returns: \"TABLE(record_id uuid, title text, assignee_id uuid, turn text, due_on timestamp with time zone, state text, status text, terminal boolean)\", security: \"definer\" },\n] as const;\n\n/** The campaign's own knobs, with the value the store resolves them to today. */\nexport const STORE_KNOBS = [\n { key: \"accessible_entity_ids_guard\", value: \"true\", type: \"boolean\" },\n { key: \"agent_schema_changes\", value: \"\\\"ask\\\"\", type: \"string\" },\n { key: \"associations_guard\", value: \"true\", type: \"boolean\" },\n { key: \"code_paths_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_chat_seeding_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_checkout_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_context_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_education_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_extension_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_grid_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_retirement_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_saved_ai_outputs_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"consumer_scopes_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"containment_depth_ceiling\", value: \"16\", type: \"integer\" },\n { key: \"cross_organization_links\", value: \"false\", type: \"boolean\" },\n { key: \"document_letterhead\", value: \"{}\", type: \"json\" },\n { key: \"document_max_bytes\", value: \"1048576\", type: \"integer\" },\n { key: \"emergency_door_guard\", value: \"false\", type: \"boolean\" },\n { key: \"emergency_door_sweep_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"enrichment_batch_ceiling\", value: \"200\", type: \"integer\" },\n { key: \"enrichment_confidence_floor\", value: \"0.6\", type: \"number\" },\n { key: \"enrichment_cost_cap_cents\", value: \"2000\", type: \"integer\" },\n { key: \"enrichment_model\", value: \"\\\"claude-fable-5-latest\\\"\", type: \"string\" },\n { key: \"enrichment_sensitivity_ceiling\", value: \"\\\"internal\\\"\", type: \"string\" },\n { key: \"entity_custom_fields_guard\", value: \"false\", type: \"boolean\" },\n { key: \"entity_types_guard\", value: \"false\", type: \"boolean\" },\n { key: \"export_rows_ceiling\", value: \"100000\", type: \"integer\" },\n { key: \"external_principal_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"field_index_guard\", value: \"false\", type: \"boolean\" },\n { key: \"field_sensitivity_levels\", value: \"{\\\"edit\\\": {\\\"public\\\": \\\"editor\\\", \\\"internal\\\": \\\"editor\\\", \\\"restricted\\\": \\\"admin\\\", \\\"confidential\\\": \\\"admin\\\"}, \\\"read\\\": {\\\"public\\\": \\\"viewer\\\", \\\"internal\\\": \\\"viewer\\\", \\\"restricted\\\": \\\"admin\\\", \\\"confidential\\\": \\\"editor\\\"}}\", type: \"json\" },\n { key: \"inbound_domain\", value: \"\\\"inbound.matrxserver.com\\\"\", type: \"string\" },\n { key: \"member_default_level\", value: \"\\\"viewer\\\"\", type: \"enum\" },\n { key: \"member_default_visibility\", value: \"\\\"all_records\\\"\", type: \"enum\" },\n { key: \"outside_invite_who\", value: \"\\\"org_admins_and_table_owners\\\"\", type: \"string\" },\n { key: \"page_size_ceiling\", value: \"1000\", type: \"integer\" },\n { key: \"provenance_retention_days\", value: \"30\", type: \"number\" },\n { key: \"records_tool_default\", value: \"true\", type: \"boolean\" },\n { key: \"row_versions_guard\", value: \"false\", type: \"boolean\" },\n { key: \"sandbox_expanded_frame_height_px\", value: \"20000\", type: \"integer\" },\n { key: \"sandbox_frame_height_px\", value: \"4000\", type: \"integer\" },\n { key: \"sandbox_message_bytes\", value: \"65536\", type: \"integer\" },\n { key: \"sandbox_org_components\", value: \"true\", type: \"boolean\" },\n { key: \"signup_provisioning_guard\", value: \"false\", type: \"boolean\" },\n { key: \"stage_rule_enforcement\", value: \"\\\"refuse\\\"\", type: \"enum\" },\n { key: \"system_enabled\", value: \"false\", type: \"boolean\" },\n { key: \"table_record_ceiling\", value: \"150000\", type: \"integer\" },\n { key: \"value_max_bytes\", value: \"100000\", type: \"integer\" },\n { key: \"world_publish_enabled\", value: \"false\", type: \"boolean\" },\n] as const;\n\n/**\n * Every SQLSTATE the store's own function bodies raise, with the functions that\n * raise it. This is the list the client's refusal mapper is checked against: a\n * code the store can raise and the package cannot name is a hole, and the\n * real-door suite says so by name.\n */\nexport const STORE_REFUSAL_CODES = [\n { code: \"02000\", raised_by: \"_checklist_instantiate,_table_share_invite_payload,checklist_declare,checklist_run,checklist_step_complete,checklist_step_refusal,checklist_template_shape,conversation_scope_bind,dashboard_delete,dashboard_run,doc_letterhead,doc_render_body,doc_render_document,doc_render_read,doc_sign,doc_signature_intact,doc_signature_read,doc_template_delete,doc_template_read,doc_template_save,enrich_pin,entity_field_retire,entity_field_update,entity_record_read,entity_value_write,external_history_event,external_rows,external_stub_upsert,external_writes_set,io_restore,migrate_delete,migrate_extract_parent,migrate_merge,migrate_reclass,migrate_rename,migrate_reparent,migrate_retype,migrate_split,migrate_undo,organization_clear,portal_card,portal_declare,portal_invite,portal_preview,portal_principal_bind,portal_revoke,read_record,record_delete,record_restore,record_restore_preview,record_table,record_update,relation_uncarry,share_access,share_grant,share_lane_set,share_people,share_revoke,sign_request_cancel,sign_request_create,sign_request_remind,sign_request_unchanged,table_share_outside_accept,table_share_outside_invite,table_share_outside_resend,table_share_outside_revoke,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_assign,work_record_states,work_set_state\" },\n { code: \"0A000\", raised_by: \"checklist_step_complete,external_rows,external_source_declare,external_write_through,promote_field,promoted_index_expr,promoted_query_sql,promoted_read,rule_eval,work_assign\" },\n { code: \"22003\", raised_by: \"context_resolve\" },\n { code: \"22004\", raised_by: \"_entity_custom_fields_guard,_value_envelope,actor_word,agg_assert_key,agg_sql,anon_capture,anon_token_issue,anon_write,assert_client_may_reach,booking_declare,capture_submit,checklist_declare,context_resolve,dashboard_block_normalize,dashboard_declare,dashboard_window_sql,doc_render_write,doc_sign,doc_signature_write,doc_template_save,enrich_land,enrich_normalize,external_history_event,external_rows,external_source_declare,external_stub_upsert,external_write_through,external_writes_set,field_history,form_declare,form_submit,home_add,io_comment_write,io_import_begin,io_infer_column,io_outbox_drain,io_restore,migrate_choice_keys,migrate_purge,migrate_reclass,migrate_split,migrate_undo,organization_clear,organization_contents,pipeline_declare,pipeline_gate_preview,portal_declare,portal_invite,portal_principal_bind,provenance_retention_days,provenance_write,query_across_homes,query_by_coordinates,query_rollup,record_delete,record_reparent,record_resolve,record_restore,record_update,record_write,record_write_many,relation_carry,relation_own,rule_declare,share_grant,sign_request_create,sign_request_sign,subscription_declare,table_declare,table_share_outside_invite,value_restore,view_declare,work_approval_decide,work_approval_request,work_template_declare\" },\n { code: \"22007\", raised_by: \"dashboard_window_sql\" },\n { code: \"22012\", raised_by: \"rule_eval\" },\n { code: \"22023\", raised_by: \"_booking_availability,_entity_custom_fields_guard,_take_op_id,_value_envelope,_work_shape_guard,actor_word,agg_assert_key,agg_sql,anon_token_issue,booking_declare,containment_parent,dashboard_block_normalize,dashboard_window_sql,doc_render_body,doc_render_write,doc_signature_write,enrich_declare,enrich_land,enrich_normalize,enrich_pin,entity_value_write,external_history_event,external_source_declare,external_stub_upsert,external_write_through,field_history,field_update,io_export,io_import_begin,io_import_finish,io_import_plan,io_import_report,io_proposal_accept,migrate_merge,migrate_reclass,my_levels,organization_clear,page_size,pin_agent_cells,pipeline_move,portal_declare,provenance_write,query_by_coordinates,query_rollup,record_update,record_write_many,relation_carry,rule_eval,rule_members,share_grant,share_lane_set,sign_request_create,sign_request_sign,subscription_declare,table_rules,visibility_as_of,work_approval_request,work_list,work_slot_hold\" },\n { code: \"23503\", raised_by: \"_booking_availability,_checklist_instantiate,_containment_guard,_display_spec_for,_field_document_for,_pipeline_stage_key,_record_rule_uses,agg_digest_assemble,anon_publish,anon_rate_take,anon_token_issue,anon_write,assert_organization_wall,booking_cancel,booking_confirm,booking_declare,booking_hold,booking_reschedule,capture_publish,checklist_declare,checklist_steps_table,comment_write,dashboard_declare,delete_rule,doc_sign,doc_template_save,enrich_declare,enrich_due,enrich_land,form_declare,form_submit,home_add,inbound_declare,inbound_mail_land,inbound_set,io_comment_write,io_import_begin,io_import_finish,io_import_report,io_import_rows,io_proposal_accept,migrate_demote,migrate_promote,pipeline_board,pipeline_declare,pipeline_move,pipeline_read,pipeline_transition_refusal,promote_field,promote_table,record_applicability,record_reparent,relation_carry,relation_own,resolve_first_match,rule_applies,rule_declare,rule_eval,rule_members,rule_run,sign_request_create,subscription_mute,subscription_preview,view_declare,work_set_state,work_take_assignment,work_template_instantiate\" },\n { code: \"23505\", raised_by: \"_unique_rule_holds,doc_sign,doc_signature_write,entity_field_declare,field_declare,home_add,inbound_declare,io_proposal_accept,relation_carry,relation_own,share_grant,sign_request_cancel,sign_request_create,table_share_outside_invite,table_share_outside_resend,work_approval_decide,work_slot_hold\" },\n { code: \"23514\", raised_by: \"_checklist_instantiate,_checklist_step_guard,_containment_guard,_dated_values_guard,_derived_fields,_display_spec_for,_entity_custom_fields_guard,_field_class_guard,_field_document_for,_field_shape_guard,_field_type_parity_guard,_merge_field_shape_guard,_merge_field_temporal_guard,_promoted_field_cap_guard,_record_rule_uses,_resolve_choice_words,_rule_shape_guard,_rule_topology_guard,_store_relation_edge_names_its_field,_table_columns_word_guard,_table_shape_guard,_undeclared_key_guard,_value_envelope,_with_display,_work_shape_guard,_workdoors_approval_guard,assert_columns_are_defined,assert_entity_is_organization_scoped,booking_declare,capture_publish,capture_sheet_declare,checklist_declare,checklist_step_complete,doc_sign,doc_signature_write,doc_template_save,entity_field_declare,entity_field_retire,entity_field_update,entity_records_find,entity_table,field_declare,field_retire,field_update,home_add,io_import_rows,migrate_merge,relation_carry,relation_own,sign_request_create,sign_request_sign,table_declare,validate_value_envelope,validate_values,work_set_state,work_slots_declare,work_take_assignment,work_template_instantiate\" },\n { code: \"40001\", raised_by: \"has_visibility_at\" },\n { code: \"42501\", raised_by: \"_doc_render_immutable,_doc_signature_immutable,_field_definition_write,_field_write_door,_rule_definition_write,_store_door,anon_capture,anon_inbound_land,anon_publish,anon_token_issue,anon_token_verify,anon_write,assert_client_may_change,assert_client_may_open,assert_client_may_reach,assert_may_know_table,assert_organization_admin,assert_store_door,booking_confirm,booking_declare,booking_hold,capture_submit,checklist_run,comment_write,conversation_scope_bind,conversation_scope_unbind,enrich_declare,enrich_due,enrich_land,enrich_normalize,entity_field_declare,entity_field_retire,entity_field_update,entity_value_write,external_write_through,form_declare,form_submit,inbound_mail_land,io_comment_resolve,io_comment_write,io_import_begin,io_import_finish,io_restore,migrate_purge,migrate_reclass,my_levels,organization_clear,portal_declare,portal_invitation,portal_invite,portal_principal_bind,promote_table,query_visibility_parity,read_record,read_records,read_records_by_ids,record_table,share_grant,subscription_mute,subscription_preview,table_share_outside_accept,table_share_outside_invite,table_share_outside_resend,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_person\" },\n { code: \"42703\", raised_by: \"entity_table,portal_declare\" },\n { code: \"53400\", raised_by: \"anon_rate_take,delete_cascade_closure,enrich_due,enrich_land,promote_field\" },\n { code: \"54001\", raised_by: \"record_delete\" },\n { code: \"PT409\", raised_by: \"record_update\" },\n { code: \"PT428\", raised_by: \"_record_rule_uses\" },\n] as const;\n\n/** `platform.entity_types` — the registered tokens a Table or relation may name. */\nexport const ENTITY_TOKENS = [\n \"access_delta_probe\",\n \"access_delta_run\",\n \"access_request\",\n \"account_addon\",\n \"acquisition_block\",\n \"activity\",\n \"admin_audit_log\",\n \"admin_email_log\",\n \"admin_markdown_sample\",\n \"admin_user\",\n \"admission_config\",\n \"agent\",\n \"agent_card\",\n \"agent_definition_version\",\n \"agent_drift_alert\",\n \"agent_exemplar\",\n \"agent_mandate_note\",\n \"agent_prompt_remediation\",\n \"agent_provision_legacy\",\n \"agent_run\",\n \"agent_run_stage\",\n \"agent_schedule\",\n \"agent_schedule_claim\",\n \"agent_shortcut\",\n \"agent_surface_binding\",\n \"agent_template\",\n \"agent_usage\",\n \"agent_user_kv\",\n \"ai_api\",\n \"ai_endpoint\",\n \"ai_model\",\n \"ai_model_alias\",\n \"ai_offering\",\n \"ai_provider\",\n \"ai_setting\",\n \"analysis_result\",\n \"anon_form\",\n \"anon_function_birth_grandfather\",\n \"anon_hit\",\n \"anon_inbound\",\n \"anon_replay\",\n \"anon_submission\",\n \"anon_token\",\n \"api_field_warning\",\n \"api_request_log\",\n \"app\",\n \"app_config\",\n \"app_config_history\",\n \"app_definition_version\",\n \"app_error\",\n \"app_execution\",\n \"app_instance\",\n \"app_log\",\n \"app_log_muted_pattern\",\n \"app_log_norm_exception\",\n \"app_rate_limit\",\n \"app_setting\",\n \"app_sync_status\",\n \"approach\",\n \"artifact\",\n \"assessment\",\n \"assessment_item\",\n \"assessment_result\",\n \"assignment_session\",\n \"assist\",\n \"assist_producer_policy\",\n \"assist_producer_policy_history\",\n \"association_type\",\n \"assurance_level\",\n \"attempt\",\n \"audit_broken_functions\",\n \"audit_canonical_findings\",\n \"audit_exemption\",\n \"audit_function_deps\",\n \"audit_function_runtime_probe\",\n \"audit_m2m_candidates\",\n \"audit_refresh_log\",\n \"audit_stale_registry\",\n \"audit_unregistered_candidates\",\n \"bak_assoc_file_processed_document_20260812\",\n \"bak_assoc_type_file_processed_document_20260812\",\n \"bak_organization_name_dd043\",\n \"base_entity_template\",\n \"batch_cost_event\",\n \"batch_provider_batch\",\n \"batch_work_item\",\n \"billing_capability\",\n \"billing_capability_limit\",\n \"billing_connect_account\",\n \"billing_customer\",\n \"billing_plan\",\n \"billing_plan_limit\",\n \"billing_price\",\n \"billing_product\",\n \"billing_spend_guardrail\",\n \"billing_stripe_event\",\n \"billing_subscription\",\n \"billing_usage_ledger\",\n \"billing_user_plan\",\n \"browser_account_binding\",\n \"browser_action_event\",\n \"browser_authenticator_window\",\n \"browser_capture\",\n \"browser_control_request\",\n \"browser_handoff\",\n \"browser_login_attempt\",\n \"browser_login_recipe\",\n \"browser_profile\",\n \"browser_profile_checkpoint\",\n \"browser_run\",\n \"browser_site_observation\",\n \"browser_site_policy\",\n \"browser_stream_ticket\",\n \"build_lock\",\n \"calendar_event\",\n \"canvas_comment\",\n \"canvas_comment_like\",\n \"canvas_item\",\n \"canvas_item_state\",\n \"canvas_like\",\n \"canvas_score\",\n \"canvas_view\",\n \"capture_window\",\n \"carrying_rule\",\n \"catalog_entries_history\",\n \"catalog_entry\",\n \"category\",\n \"change_type_default\",\n \"chat_user_usage_summary\",\n \"citations\",\n \"class_purchase\",\n \"classifier_revision_ledger\",\n \"client_callable_door\",\n \"client_callable_door_retirement\",\n \"client_excluded_column_unregistered\",\n \"cmp_entry\",\n \"cmp_feedback\",\n \"code_file\",\n \"code_folder\",\n \"code_repository\",\n \"coding_session\",\n \"coding_session_entry\",\n \"comment\",\n \"commerce_asset_allocation\",\n \"commerce_asset_grading\",\n \"commerce_asset_identifier\",\n \"commerce_asset_lot_event\",\n \"commerce_asset_mandate_result\",\n \"commerce_asset_price_factor\",\n \"commerce_asset_reshoot_request\",\n \"commerce_asset_review\",\n \"commerce_asset_unknown\",\n \"commerce_certified_printer\",\n \"commerce_cloud_sync_connection\",\n \"commerce_ebay_business_policy\",\n \"commerce_ebay_category\",\n \"commerce_ebay_category_aspect\",\n \"commerce_ebay_category_tree\",\n \"commerce_ebay_custom_policy\",\n \"commerce_ebay_inventory_item\",\n \"commerce_ebay_inventory_item_group\",\n \"commerce_ebay_inventory_item_group_member\",\n \"commerce_ebay_inventory_location\",\n \"commerce_ebay_listing\",\n \"commerce_ebay_marketplace_policy\",\n \"commerce_ebay_media_asset\",\n \"commerce_ebay_notification_destination\",\n \"commerce_ebay_notification_event\",\n \"commerce_ebay_notification_subscription\",\n \"commerce_ebay_notification_topic\",\n \"commerce_ebay_offer\",\n \"commerce_ebay_order\",\n \"commerce_ebay_order_line_item\",\n \"commerce_ebay_shipping_fulfillment\",\n \"commerce_ebay_store_category\",\n \"commerce_human_correction\",\n \"commerce_intake_artifact\",\n \"commerce_intake_asset\",\n \"commerce_intake_batch\",\n \"commerce_label_batch\",\n \"commerce_label_code\",\n \"commerce_marketplace_account\",\n \"commerce_marketplace_account_deletion_audit\",\n \"commerce_marketplace_api_call\",\n \"commerce_marketplace_rate_budget\",\n \"commerce_marketplace_site\",\n \"commerce_marketplace_sync_run\",\n \"commerce_prediction_outcome\",\n \"commerce_print_order\",\n \"commerce_product\",\n \"commerce_product_channel_ref\",\n \"commerce_product_media\",\n \"commerce_product_variant\",\n \"commerce_recall_audit\",\n \"comparison_set\",\n \"component_group\",\n \"contact_medium\",\n \"contact_submission\",\n \"content_certification\",\n \"content_ir_kind\",\n \"content_ir_kind_component\",\n \"content_ir_kind_component_incident\",\n \"content_ir_kind_conformance\",\n \"content_ir_kind_edge\",\n \"content_ir_kind_example\",\n \"content_ir_kind_instance\",\n \"content_ir_kind_surface\",\n \"content_lane\",\n \"context_access_log\",\n \"context_item\",\n \"context_item_suggestion\",\n \"context_item_value\",\n \"context_value_refs\",\n \"conversation\",\n \"conversation_value\",\n \"courts\",\n \"credential_attachment\",\n \"credential_item\",\n \"credential_mutation_receipt\",\n \"crm_address\",\n \"crm_affiliation\",\n \"crm_blocklist_entry\",\n \"crm_contact_candidate\",\n \"crm_deal\",\n \"crm_deal_stage_event\",\n \"crm_enrichment_call\",\n \"crm_interaction\",\n \"crm_merge_candidate\",\n \"crm_outreach_list\",\n \"crm_outreach_list_member\",\n \"crm_party_merge\",\n \"crm_registry_ingest_run\",\n \"crm_registry_source\",\n \"crm_saved_view\",\n \"crm_sending_event\",\n \"crm_sending_identity\",\n \"crm_sending_identity_check\",\n \"crm_sending_policy\",\n \"custom_entity_definition\",\n \"custom_field_definition\",\n \"custom_field_target\",\n \"custom_record\",\n \"cx_agent_memory\",\n \"cx_agent_plan\",\n \"cx_agent_task\",\n \"cx_code_edit\",\n \"cx_code_message_file\",\n \"cx_conversation_documents\",\n \"cx_media\",\n \"cx_observational_memory\",\n \"cx_observational_memory_event\",\n \"cx_pending_injection\",\n \"cx_request\",\n \"cx_request_snapshot\",\n \"cx_tool_trace\",\n \"cx_user_request\",\n \"cx_user_todo\",\n \"dashboard_saved_view\",\n \"data_rights_event\",\n \"data_store\",\n \"data_store_members\",\n \"dataset\",\n \"dd171_containment_baseline\",\n \"dd175_cast\",\n \"dd175_component_lane_baseline\",\n \"ddl_guard_log\",\n \"deck_suggestion\",\n \"definer_class_exemption\",\n \"definer_client_grant_grandfather\",\n \"definer_grant_baseline\",\n \"deprecated_relation\",\n \"derive_run\",\n \"dev_login_audit\",\n \"dict_entry\",\n \"dict_provider_publication\",\n \"dict_setting\",\n \"dm_conversation\",\n \"dm_message\",\n \"dm_participant\",\n \"doc_render\",\n \"doc_signature\",\n \"dockets\",\n \"domain_classification\",\n \"edge_payload_kind\",\n \"egress_device\",\n \"egress_pairing\",\n \"egress_ticket\",\n \"emails\",\n \"embedding_cache\",\n \"embeddings_google_gemini_2_1536\",\n \"embeddings_oai_3_small_1536\",\n \"embeddings_voyage_4_large_1024\",\n \"embeddings_voyage_code_3_1024\",\n \"endpoint_family_sweep_state\",\n \"engine_owner_task\",\n \"entity_grant\",\n \"entity_relationship\",\n \"entity_type\",\n \"esign_campaign\",\n \"esign_campaign_member\",\n \"esign_consent_disclosure\",\n \"esign_envelope\",\n \"esign_envelope_certificate\",\n \"esign_envelope_document\",\n \"esign_envelope_event\",\n \"esign_envelope_external_ref\",\n \"esign_envelope_signer\",\n \"esign_provider\",\n \"esign_provider_binding\",\n \"esign_signing_key\",\n \"execution_event_cursor\",\n \"extension_auth_code\",\n \"external_link\",\n \"external_source\",\n \"extract_sweep_state\",\n \"fc_card\",\n \"fc_detail\",\n \"fc_set\",\n \"feature_doc\",\n \"feature_knob\",\n \"feedback_comments\",\n \"feedback_user_messages\",\n \"field_component\",\n \"file\",\n \"file_analysis\",\n \"file_entities\",\n \"file_overrides\",\n \"file_page_annotations\",\n \"file_pages\",\n \"file_rag_job\",\n \"file_version\",\n \"files_account_tier\",\n \"files_machine_written_prefix\",\n \"files_sync_mapping\",\n \"files_user_account\",\n \"flashcard_data\",\n \"flashcard_history\",\n \"flashcard_review\",\n \"flashcard_set\",\n \"flashcard_sets\",\n \"flexible_data\",\n \"folder\",\n \"function_contract\",\n \"game_badge\",\n \"game_result\",\n \"game_room\",\n \"global_execution\",\n \"global_execution_checkpoint\",\n \"global_execution_control\",\n \"global_execution_event\",\n \"global_meter_entry\",\n \"global_origin\",\n \"global_request\",\n \"google_document\",\n \"growth_loop_event\",\n \"growth_loop_run\",\n \"growth_loop_stage_run\",\n \"guardian_link\",\n \"guest_conversion_audit\",\n \"guest_execution_log\",\n \"guest_executions\",\n \"guided_checklist_run\",\n \"heatmap_save\",\n \"hindsight_enrollment\",\n \"hindsight_finding\",\n \"hindsight_regression_case\",\n \"hindsight_replay\",\n \"hindsight_replay_step\",\n \"hindsight_review\",\n \"hr_access_audit\",\n \"hr_access_role\",\n \"hr_accommodation_request\",\n \"hr_ai_evidence\",\n \"hr_alert_routing_rule\",\n \"hr_application\",\n \"hr_approval_authority\",\n \"hr_approval_delegation\",\n \"hr_asset\",\n \"hr_asset_assignment\",\n \"hr_attendance_exception\",\n \"hr_auto_close_rule\",\n \"hr_availability\",\n \"hr_background_check\",\n \"hr_benefits_event\",\n \"hr_calculation_snapshot\",\n \"hr_candidate\",\n \"hr_candidate_conversion\",\n \"hr_candidate_message\",\n \"hr_careers_portal\",\n \"hr_checklist_item\",\n \"hr_checklist_run\",\n \"hr_checklist_template\",\n \"hr_checklist_template_item\",\n \"hr_compensation\",\n \"hr_corrective_action\",\n \"hr_course\",\n \"hr_course_version\",\n \"hr_credential\",\n \"hr_crew\",\n \"hr_deduction_code\",\n \"hr_department\",\n \"hr_derived_grant\",\n \"hr_disposition_event\",\n \"hr_earning_code\",\n \"hr_eeo_response\",\n \"hr_emergency_contact\",\n \"hr_employee\",\n \"hr_employee_private\",\n \"hr_employer_profile\",\n \"hr_employment\",\n \"hr_employment_pin\",\n \"hr_engagement\",\n \"hr_establishment\",\n \"hr_external_identity\",\n \"hr_field_policy\",\n \"hr_holiday\",\n \"hr_holiday_calendar\",\n \"hr_i9\",\n \"hr_i9_document\",\n \"hr_incident\",\n \"hr_incident_party\",\n \"hr_interview\",\n \"hr_interview_kit\",\n \"hr_job_title\",\n \"hr_jurisdiction\",\n \"hr_jurisdiction_rule\",\n \"hr_jurisdiction_rule_class\",\n \"hr_jurisdiction_rule_org_decision\",\n \"hr_jurisdiction_rule_test\",\n \"hr_kiosk_device\",\n \"hr_kiosk_session\",\n \"hr_labor_target\",\n \"hr_leave_case\",\n \"hr_leave_enrollment\",\n \"hr_leave_ledger\",\n \"hr_leave_policy\",\n \"hr_leave_request\",\n \"hr_legal_hold\",\n \"hr_legal_hold_item\",\n \"hr_location\",\n \"hr_new_hire_report\",\n \"hr_offer\",\n \"hr_opening\",\n \"hr_overtime_alert\",\n \"hr_overtime_alert_rule\",\n \"hr_overtime_preapproval\",\n \"hr_pay_group\",\n \"hr_pay_period\",\n \"hr_pay_period_employment\",\n \"hr_payroll_export\",\n \"hr_payroll_export_line\",\n \"hr_position_assignment\",\n \"hr_posting\",\n \"hr_posting_publication\",\n \"hr_provider_binding\",\n \"hr_provider_event\",\n \"hr_provisioning_result\",\n \"hr_punch\",\n \"hr_recalculation_batch\",\n \"hr_record_class\",\n \"hr_records_request\",\n \"hr_reference_check\",\n \"hr_reporting_line\",\n \"hr_requisition\",\n \"hr_restricted_note\",\n \"hr_retention_rule\",\n \"hr_role_assignment\",\n \"hr_schedule\",\n \"hr_schedule_change\",\n \"hr_schedule_guidance\",\n \"hr_schedule_template\",\n \"hr_schedule_template_shift\",\n \"hr_scorecard\",\n \"hr_separation\",\n \"hr_shift\",\n \"hr_shift_claim\",\n \"hr_staffing_requirement\",\n \"hr_survey\",\n \"hr_survey_invitation\",\n \"hr_survey_question\",\n \"hr_survey_response\",\n \"hr_tax_registration\",\n \"hr_tax_withholding\",\n \"hr_time_adjustment\",\n \"hr_training_assignment\",\n \"hr_training_attempt\",\n \"hr_transcript_entry\",\n \"hr_verification_letter_request\",\n \"hr_work_interval\",\n \"hr_workflow_binding\",\n \"hr_workflow_decision\",\n \"hr_workflow_definition\",\n \"hr_workflow_event\",\n \"hr_workflow_failure\",\n \"hr_workflow_flow_type\",\n \"hr_workflow_instance\",\n \"hr_workflow_step\",\n \"hr_workflow_step_definition\",\n \"hr_workweek\",\n \"html_extraction\",\n \"iam_access_audit\",\n \"iam_api_key\",\n \"iam_emergency_door_request\",\n \"idempotency\",\n \"industry\",\n \"industry_curator\",\n \"infra_status\",\n \"ingest_runs\",\n \"integration_connection\",\n \"integration_connection_resource\",\n \"interview_decision_interview\",\n \"interview_decision_question\",\n \"interview_document_revision\",\n \"interview_hole\",\n \"interview_question\",\n \"interview_session\",\n \"interview_turn\",\n \"invitation\",\n \"invitation_code\",\n \"invitation_request\",\n \"io_comment\",\n \"io_contract\",\n \"io_import\",\n \"io_outbox\",\n \"item\",\n \"item_mastery\",\n \"judge_verdict\",\n \"jurisdiction_policy\",\n \"keyword_classification_queue\",\n \"kg_alert\",\n \"kg_chunk_entities\",\n \"kg_chunks\",\n \"kg_clusters\",\n \"kg_edges\",\n \"kg_entities\",\n \"kg_entity_aliases\",\n \"kg_suggestion_ack\",\n \"kg_sweep_queue\",\n \"kg_sweep_run\",\n \"kg_sweep_state\",\n \"kg_value_match\",\n \"knob_override\",\n \"knob_override_audit\",\n \"knob_rung_lock\",\n \"knob_scope_kind\",\n \"knob_write_door\",\n \"league_membership\",\n \"learn_doc\",\n \"library_doc\",\n \"lifecycle_archive\",\n \"lifecycle_archive_row\",\n \"lifecycle_audit\",\n \"lifecycle_entity_plan\",\n \"lifecycle_map_build\",\n \"lifecycle_reference_map\",\n \"lifecycle_run\",\n \"lifecycle_tier_ledger\",\n \"location\",\n \"mandate\",\n \"mandate_advance_batch_row\",\n \"mandate_binding\",\n \"mandate_binding_legacy\",\n \"mandate_goal_clauses\",\n \"mandate_legacy\",\n \"mandate_observation\",\n \"mandate_reference\",\n \"mandate_scan\",\n \"mandate_treatment\",\n \"marketing_initiative\",\n \"masterwork_corpus_item\",\n \"masterwork_run\",\n \"masterwork_run_kind\",\n \"masterwork_source\",\n \"math_course_structure\",\n \"math_problem\",\n \"matrx_action_ledger\",\n \"mcp_config\",\n \"mcp_server\",\n \"mcp_user_conn\",\n \"media_capture_handoff\",\n \"media_catalog_setting\",\n \"media_library_item\",\n \"media_selection_item\",\n \"media_selection_job\",\n \"media_source_library\",\n \"meet_call_invite\",\n \"meet_meeting\",\n \"meet_note\",\n \"meet_participant\",\n \"meet_recording\",\n \"meet_transcript_segment\",\n \"membership\",\n \"membership_grant\",\n \"merge_field_provenance\",\n \"message\",\n \"message_template\",\n \"meta_excluded_schema\",\n \"meta_table_stats_history\",\n \"metadata_reserved_keys\",\n \"microservice_project\",\n \"migration_log\",\n \"mtx_media_heal_queue\",\n \"mtx_public_url_guard\",\n \"ner_shadow\",\n \"note\",\n \"note_folder\",\n \"notification\",\n \"notification_channel_preference\",\n \"notification_event_override\",\n \"notification_event_type\",\n \"notification_preference\",\n \"notification_submission\",\n \"notify_outsider_door_baseline\",\n \"oauth_handoff_claim\",\n \"opinion_clusters\",\n \"opinions\",\n \"ops_issue_class\",\n \"ops_issue_event\",\n \"ops_proof_check\",\n \"ops_proof_run\",\n \"ops_proof_scenario\",\n \"org_admin_audit\",\n \"org_change_policy\",\n \"org_context_ledger\",\n \"org_industries\",\n \"org_member_control\",\n \"org_module_config\",\n \"org_plan\",\n \"org_repair_0253_backup\",\n \"organization\",\n \"organization_preferences\",\n \"organization_visibility_version\",\n \"output_feedback\",\n \"outreach_acceptance\",\n \"page_extraction_job\",\n \"page_extraction_page_run\",\n \"page_extraction_results\",\n \"page_extraction_runs\",\n \"page_intent_queue\",\n \"page_mapping_queue\",\n \"part_config\",\n \"part_config_sub\",\n \"party\",\n \"party_contact_point\",\n \"passkey_credential\",\n \"path_drift_repair_2026_09\",\n \"pc_article\",\n \"pc_episode\",\n \"pc_show\",\n \"pc_studio_run\",\n \"pc_studio_run_asset\",\n \"pdf_consolidation_log\",\n \"pdf_redaction_audit\",\n \"pdf_redaction_key_escrow\",\n \"permission_grant\",\n \"plan_cms_fill_item\",\n \"plan_cms_fill_job\",\n \"plan_entity\",\n \"plan_node\",\n \"plan_node_artifact\",\n \"plan_node_step\",\n \"plan_profile\",\n \"platform_action_request\",\n \"platform_actor_session\",\n \"platform_actor_token\",\n \"platform_actor_token_event\",\n \"platform_continued_access\",\n \"platform_org_knob_override\",\n \"platform_outcome_event\",\n \"platform_outsider_consumer\",\n \"platform_reachability\",\n \"platform_reference_category\",\n \"platform_reference_declaration\",\n \"platform_repo\",\n \"platform_saved_view\",\n \"platform_schema\",\n \"platform_share_link\",\n \"platform_user_knob_override\",\n \"podcast_race\",\n \"policy_overlap_backup\",\n \"policy_overlap_probe\",\n \"processed_document\",\n \"processed_document_page\",\n \"product_capture_file\",\n \"product_capture_item\",\n \"product_capture_payload\",\n \"product_capture_product\",\n \"product_capture_question\",\n \"profile\",\n \"project\",\n \"prompt\",\n \"provider_account\",\n \"provider_account_credential\",\n \"provision\",\n \"provision_generate_target\",\n \"provision_grant\",\n \"provision_marker\",\n \"provision_rule_message\",\n \"provision_schema\",\n \"provision_shape_debt\",\n \"provision_spec\",\n \"provision_spec_grandfather\",\n \"provision_vocabulary\",\n \"purpose\",\n \"quiz_session\",\n \"rag_ingest_run\",\n \"rag_library_audit_log\",\n \"rate_limit_buckets\",\n \"recompute_queue\",\n \"record\",\n \"record_alias\",\n \"redaction_mapping\",\n \"research_analysis\",\n \"research_content\",\n \"research_context_bundle\",\n \"research_document\",\n \"research_intent\",\n \"research_keyword\",\n \"research_media\",\n \"research_source\",\n \"research_synthesis\",\n \"research_tag\",\n \"research_template\",\n \"research_topic\",\n \"retention_policy\",\n \"retrieval_audit\",\n \"review_queue\",\n \"route_manifest_entry\",\n \"row_version\",\n \"rulebook\",\n \"runtime_operation_stream\",\n \"runtime_operation_stream_batch\",\n \"sandbox_instance\",\n \"sch_agent_task\",\n \"sch_run\",\n \"sch_task\",\n \"sch_trigger\",\n \"schema_client_exposure\",\n \"schema_migration_ledger\",\n \"schema_migration_legacy\",\n \"schema_migration_slot_grandfather\",\n \"schema_templates\",\n \"scope\",\n \"scope_association_suggestion\",\n \"scope_dataset_instance\",\n \"scope_door_registry\",\n \"scope_item_value_suggestion\",\n \"scope_suggestion\",\n \"scope_type\",\n \"scrape_domain\",\n \"scrape_domain_settings\",\n \"scrape_failure_log\",\n \"scrape_parsed_page\",\n \"scrape_path_override\",\n \"scrape_path_pattern\",\n \"scrape_retry_queue\",\n \"seo_ai_capability\",\n \"seo_ai_visibility_citation\",\n \"seo_ai_visibility_claim\",\n \"seo_ai_visibility_panel\",\n \"seo_ai_visibility_response\",\n \"seo_ai_visibility_signal\",\n \"seo_backlink\",\n \"seo_backlink_change_event\",\n \"seo_backlink_dimension_snapshot\",\n \"seo_backlink_observation\",\n \"seo_backlink_snapshot\",\n \"seo_change_assessment\",\n \"seo_change_event\",\n \"seo_change_item\",\n \"seo_change_metric\",\n \"seo_change_set\",\n \"seo_change_theory\",\n \"seo_collection_run\",\n \"seo_competitor\",\n \"seo_competitor_observation\",\n \"seo_competitor_opportunity\",\n \"seo_coverage_mention\",\n \"seo_coverage_tracker\",\n \"seo_dimension_value_matcher\",\n \"seo_engine_schedule\",\n \"seo_geo_place\",\n \"seo_gsc_dig_rule\",\n \"seo_keyword\",\n \"seo_keyword_class_rule\",\n \"seo_keyword_edge\",\n \"seo_keyword_facet\",\n \"seo_keyword_market\",\n \"seo_keyword_market_observation\",\n \"seo_keyword_place\",\n \"seo_keyword_saved_view\",\n \"seo_keyword_topic\",\n \"seo_landscape_brief\",\n \"seo_link_gap_domain\",\n \"seo_link_gap_match\",\n \"seo_map_facet\",\n \"seo_map_facet_value\",\n \"seo_map_topic\",\n \"seo_page_measurement_health\",\n \"seo_page_performance\",\n \"seo_provider_call\",\n \"seo_provider_task\",\n \"seo_rank_observation\",\n \"seo_rank_target\",\n \"seo_raw_payload\",\n \"seo_referring_domain_profile\",\n \"seo_reputation_case\",\n \"seo_search_performance_daily\",\n \"seo_serp_mention\",\n \"seo_serp_opportunity\",\n \"seo_serp_result\",\n \"seo_serp_snapshot\",\n \"seo_site_geo_area\",\n \"seo_site_keyword_offering\",\n \"seo_site_keyword_value\",\n \"seo_site_offering_value\",\n \"seo_site_topic_value\",\n \"seo_site_value_combo\",\n \"seo_site_value_worth\",\n \"seo_site_vocabulary\",\n \"seo_source_request\",\n \"seo_starter_pack\",\n \"seo_starter_pack_item\",\n \"seo_story_angle\",\n \"seo_topic\",\n \"seo_topical_map\",\n \"seo_web_analytics_daily\",\n \"share_link\",\n \"shareable_resource_registry\",\n \"shared_canvas_item\",\n \"short_link\",\n \"shortcut_category\",\n \"skill\",\n \"skill_category\",\n \"skill_render_definition\",\n \"sms_consent\",\n \"sms_conversation\",\n \"sms_message\",\n \"sms_message_media\",\n \"sms_notification\",\n \"sms_notification_preference\",\n \"sms_phone_number\",\n \"sms_rate_limits\",\n \"sms_webhook_logs\",\n \"soft_delete_edge\",\n \"source_authority\",\n \"stage_dockets_966c18eca7\",\n \"stage_ref_kind\",\n \"stamped_write_table\",\n \"structure\",\n \"structured_list\",\n \"studio_cleaned_segments\",\n \"studio_concept_items\",\n \"studio_documents\",\n \"studio_module_segments\",\n \"studio_raw_segments\",\n \"studio_recording_chunks\",\n \"studio_recording_segments\",\n \"studio_run\",\n \"studio_session\",\n \"studio_session_settings\",\n \"study_attempt\",\n \"study_goal\",\n \"study_media\",\n \"study_plan\",\n \"study_plan_block\",\n \"study_plan_day\",\n \"study_reminder_context\",\n \"study_reminder_delivery\",\n \"study_session\",\n \"study_source_chunk\",\n \"study_streak\",\n \"study_structured_section\",\n \"superseded_policy\",\n \"surface\",\n \"system_announcement\",\n \"system_context_item\",\n \"system_error\",\n \"system_orgs\",\n \"system_personal_org_failure\",\n \"system_write_failure\",\n \"task\",\n \"task_user_state\",\n \"taxonomy_node\",\n \"template_context_items\",\n \"template_scope_types\",\n \"templates\",\n \"test_handset_inbox\",\n \"thread\",\n \"tool\",\n \"tool_binding\",\n \"tool_bundle\",\n \"tool_call\",\n \"tool_definition_version\",\n \"tool_executor\",\n \"tool_surface_defaults\",\n \"tool_test_sample\",\n \"tool_ui\",\n \"tool_ui_incident\",\n \"tool_ui_version\",\n \"topic_placement_queue\",\n \"transcript\",\n \"trigger_event\",\n \"udt_dataset_fields\",\n \"udt_dataset_row_versions\",\n \"udt_dataset_rows\",\n \"udt_dataset_template\",\n \"udt_dataset_template_fields\",\n \"udt_document\",\n \"udt_document_snapshot\",\n \"udt_structured_list_items\",\n \"udt_workbook_snapshot\",\n \"ui_client\",\n \"ui_surface_agent_pref\",\n \"ui_surface_agent_role\",\n \"ui_surface_client_tool\",\n \"ui_surface_config\",\n \"ui_surface_value\",\n \"ui_surface_write_target\",\n \"unsubscribe_token\",\n \"uploads_inflight\",\n \"user_achievement\",\n \"user_active_context\",\n \"user_analysis_preference\",\n \"user_bookmark\",\n \"user_email_preference\",\n \"user_entity_state\",\n \"user_feedback\",\n \"user_follows\",\n \"user_form_profile\",\n \"user_markdown_sample\",\n \"user_memory\",\n \"user_preference\",\n \"user_profile\",\n \"user_secret\",\n \"user_secret_audit\",\n \"user_secret_grant\",\n \"user_stat\",\n \"user_storage_usage\",\n \"user_surface_state\",\n \"visibility_cache\",\n \"visibility_epoch\",\n \"voice\",\n \"war_room\",\n \"wbx_capture\",\n \"wbx_demo\",\n \"wbx_guidance\",\n \"wbx_highlight\",\n \"wbx_pattern\",\n \"wbx_recipe\",\n \"wbx_screenshot\",\n \"wbx_seo_audit\",\n \"wc_claim\",\n \"wc_impairment_definition\",\n \"wc_injury\",\n \"wc_report\",\n \"web_analysis_item\",\n \"web_brand\",\n \"web_brand_asset\",\n \"web_brand_offering\",\n \"web_business_fact\",\n \"web_business_location\",\n \"web_channel_analytics_daily\",\n \"web_crawl_event\",\n \"web_crawl_preset\",\n \"web_crawl_schedule\",\n \"web_crawl_session\",\n \"web_crawl_url\",\n \"web_discovered_item\",\n \"web_finding\",\n \"web_gsc_page_stat\",\n \"web_link_edge\",\n \"web_listing_publisher\",\n \"web_location_listing\",\n \"web_offering_template\",\n \"web_page\",\n \"web_page_content\",\n \"web_page_evidence\",\n \"web_page_sitemap\",\n \"web_property\",\n \"web_provider\",\n \"web_result\",\n \"web_screenshot\",\n \"web_site\",\n \"web_site_endpoint_rule\",\n \"web_site_item_config\",\n \"web_site_offering\",\n \"web_sitemap\",\n \"web_snapshot\",\n \"web_tag_manager_snapshot\",\n \"web_youtube_video\",\n \"webhook_deliveries\",\n \"webhook_dispatch_state\",\n \"webhooks\",\n \"wf_node_data_slot\",\n \"work_claim\",\n \"work_item\",\n \"workbook\",\n \"worker_heartbeat\",\n \"workflow\",\n \"workflow_card\",\n \"workflow_checkpoint\",\n \"workflow_comparison\",\n \"workflow_definition_version\",\n \"workflow_idempotency\",\n \"workflow_job\",\n \"workflow_node_events\",\n \"workflow_node_outcome\",\n \"workflow_plan\",\n \"workflow_plan_event\",\n \"workflow_plan_sample\",\n \"workflow_recovery_audit\",\n \"workflow_run\",\n \"workflow_run_log\",\n \"workflow_runtime_surface\",\n \"workflow_template\",\n \"workflow_trigger\",\n \"workflow_trigger_fire\",\n \"workflow_work_item\",\n \"working_document\",\n \"write_guard_key\",\n \"youtube_quota_day\",\n \"youtube_search\",\n \"youtube_video\",\n] as const;\n\nexport type StoreRefusalCode = (typeof STORE_REFUSAL_CODES)[number][\"code\"];\nexport type StoreDoorName = (typeof STORE_DOORS)[number][\"name\"];\nexport type EntityToken = (typeof ENTITY_TOKENS)[number];\nexport type KernelTableName = (typeof KERNEL_TABLES)[number][\"name\"];\n","// src/record-scope.ts — @ai-matrx/records · AGT-N-9 · PRODUCTS row 11\n//\n// A CONVERSATION THAT IS ABOUT ONE RECORD.\n//\n// These are the shapes `custom.record_scope_context` and its three siblings answer. They\n// are types over ONE door, not a model of their own: the assembly happens inside the\n// database, through `custom.read_record`, under the operating person's own field-level\n// security, and this file only says what comes back.\n//\n// TWO ABSENCES, NEVER ONE. `withheld[].because` is `\"masked\"` when the STORE kept a Field\n// from this reader, and `\"policy\"` when the ORGANIZATION keeps it out of conversations.\n// A screen that collapsed them would tell somebody \"you may not see this\" about a field\n// they can read on the record two inches away.\n\nimport type { PermissionLevel } from \"./level\";\nimport type { Uuid } from \"./record\";\n\n/** One value the agent was given, with the triple that makes it citable. */\nexport interface RecordScopeField {\n key: string;\n label: string;\n type: string;\n value: unknown;\n /** DYN: a merge field resolves to a TRIPLE, not a string. */\n cite: {\n record_id: Uuid;\n field_id: Uuid;\n value_version: number;\n written_at: string | null;\n };\n}\n\n/** A Field the agent was NOT given, and which of the two reasons it is. */\nexport interface RecordScopeWithheld {\n key: string;\n label: string;\n because: \"masked\" | \"policy\";\n reason: string;\n needs?: string;\n /** The whole sentence, already written — a screen prints it rather than composing one. */\n says: string;\n}\n\nexport interface RecordScopeRelation {\n via: string;\n target_id: Uuid;\n foreign: boolean;\n masked: boolean;\n your_level: PermissionLevel | null;\n card: Record<string, unknown> | null;\n why: string | null;\n}\n\nexport interface RecordScopeHistoryEntry {\n version: number;\n at: string;\n what: string;\n who: string | null;\n changes: Array<Record<string, unknown>>;\n}\n\nexport interface RecordScopeComment {\n id: Uuid;\n body: string;\n created_at: string;\n created_by_name: string;\n field_key: string | null;\n}\n\nexport interface RecordScopeContext {\n record: {\n id: Uuid;\n title: string;\n table_id: Uuid;\n table_name: string | null;\n scope_type: string;\n plural: string;\n version: number;\n updated_at: string;\n your_level: PermissionLevel;\n };\n fields: RecordScopeField[];\n withheld: RecordScopeWithheld[];\n relations: RecordScopeRelation[];\n history: RecordScopeHistoryEntry[];\n comments: RecordScopeComment[];\n may_comment: boolean;\n siblings: {\n shown: Array<{ id: Uuid; title: string }>;\n more_than_shown: boolean;\n says: string;\n };\n /** Questions derived from THIS record's shape — never a fixed list. */\n suggested: string[];\n /** One sentence naming what is not in the conversation. Printed verbatim. */\n says: string;\n assembled_at: string;\n}\n\n/** What a conversation is about. `readable` false means the person lost access to it. */\nexport interface ConversationScope {\n bound: boolean;\n readable?: boolean;\n record_id?: Uuid;\n table_id?: Uuid;\n scope_type?: string;\n title?: string;\n bound_at?: string;\n bound_by?: Uuid;\n because?: string;\n}\n\nexport interface ConversationScopeContext {\n scope: ConversationScope;\n context: RecordScopeContext | null;\n}\n\n/** `About: Acme Industrial` — the chip a bound chat wears. */\nexport function scopeChip(scope: ConversationScope): string {\n return scope.title ? `About: ${scope.title}` : \"About: this record\";\n}\n"],"mappings":"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ACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AC9mDO,SAAS,UAAU,OAAkC;AAC1D,SAAO,MAAM,QAAQ,UAAU,MAAM,KAAK,KAAK;AACjD;","names":["window","err"]}
|