@ai-matrx/records 0.16.0 → 0.20.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.
@@ -150,7 +150,7 @@ var err = (error) => ({ ok: false, error });
150
150
  var ACTOR_VOCABULARY = ["user", "agent", "system"];
151
151
  var RETIRED_ACTOR_WORDS = { "ai": "agent", "code": "system", "human": "user" };
152
152
  var ABSENCE_REASONS = ["never asked", "none", "refused", "conflicting"];
153
- var VALUE_ENVELOPE_KEYS = ["ver", "src", "actor", "on_behalf_of", "at", "absent", "alternates", "dated"];
153
+ var VALUE_ENVELOPE_KEYS = ["ver", "src", "actor", "on_behalf_of", "at", "absent", "alternates", "dated", "pinned"];
154
154
  var VALUE_ALTERNATE_KEYS = ["value", "src", "rank"];
155
155
  var STORAGE_MODES = ["light", "heavy"];
156
156
  var RULE_USES = ["validate", "compute", "membership", "applicability"];
@@ -246,8 +246,19 @@ var STORE_DOORS = [
246
246
  { name: "bump_epoch", args: "p_entity_type text, p_entity_id uuid, p_organization_id uuid DEFAULT NULL::uuid", returns: "bigint", security: "definer" },
247
247
  { 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" },
248
248
  { name: "caller_role", args: "", returns: "name", security: "invoker" },
249
+ { name: "carry_unchanged_value_stamps", args: "p_old jsonb, p_new jsonb", returns: "jsonb", security: "invoker" },
249
250
  { 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" },
250
251
  { 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" },
252
+ { name: "checklist_declare", args: "p_organization_id uuid, p_spec jsonb, p_template_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
253
+ { name: "checklist_refusal", args: "p_spec jsonb", returns: "text", security: "invoker" },
254
+ { 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" },
255
+ { 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" },
256
+ { 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" },
257
+ { name: "checklist_step_complete", args: "p_organization_id uuid, p_step_id uuid, p_evidence jsonb DEFAULT '{}'::jsonb", returns: "jsonb", security: "definer" },
258
+ { name: "checklist_step_refusal", args: "p_organization_id uuid, p_step_id uuid", returns: "text", security: "definer" },
259
+ { name: "checklist_steps_table", args: "p_organization_id uuid", returns: "uuid", security: "definer" },
260
+ { name: "checklist_template_shape", args: "p_organization_id uuid, p_template_id uuid", returns: "jsonb", security: "definer" },
261
+ { 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" },
251
262
  { name: "choice_census", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
252
263
  { name: "choice_field_map", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "invoker" },
253
264
  { name: "choice_filter_normalize", args: "p_map jsonb, p_filter jsonb", returns: "jsonb", security: "invoker" },
@@ -263,11 +274,19 @@ var STORE_DOORS = [
263
274
  { name: "choice_synonyms_in", args: "p_map jsonb, p_token text", returns: "text[]", security: "invoker" },
264
275
  { name: "choice_words", args: "p_field jsonb", returns: "text", security: "invoker" },
265
276
  { name: "client_write_grants", args: "", returns: "TABLE(role_name text, object_name text, privilege text)", security: "invoker" },
277
+ { 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" },
278
+ { name: "comment_thread", args: "p_organization_id uuid, p_record_id uuid, p_include_resolved boolean DEFAULT false", returns: "jsonb", security: "definer" },
279
+ { 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" },
266
280
  { 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: "invoker" },
267
281
  { name: "containment_chain", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(ancestor_id uuid, depth integer)", security: "invoker" },
268
282
  { name: "containment_depth_ceiling", args: "p_organization_id uuid DEFAULT NULL::uuid", returns: "integer", security: "invoker" },
269
283
  { name: "containment_edges", args: "p_organization_id uuid", returns: "TABLE(parent_id uuid, child_id uuid, via text)", security: "invoker" },
270
284
  { name: "containment_parent", args: "p_data jsonb", returns: "uuid", security: "invoker" },
285
+ { name: "context_resolve", args: "p_organization_id uuid, p_bindings jsonb, p_scope_slug text DEFAULT 'scopes'::text", returns: "jsonb", security: "definer" },
286
+ { name: "conversation_scope", args: "p_organization_id uuid, p_conversation_id uuid", returns: "jsonb", security: "definer" },
287
+ { name: "conversation_scope_bind", args: "p_organization_id uuid, p_conversation_id uuid, p_record_id uuid", returns: "jsonb", security: "definer" },
288
+ { 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" },
289
+ { name: "conversation_scope_unbind", args: "p_organization_id uuid, p_conversation_id uuid", returns: "jsonb", security: "definer" },
271
290
  { name: "cross_organization_links_open", args: "p_source_organization_id uuid, p_target_organization_id uuid", returns: "boolean", security: "invoker" },
272
291
  { name: "custom_fields_tables", args: "", returns: "TABLE(token text, schema_name text, table_name text)", security: "invoker" },
273
292
  { name: "dashboard_block_normalize", args: "p_organization_id uuid, p_subject_table_id uuid, p_block jsonb", returns: "jsonb", security: "definer" },
@@ -291,24 +310,43 @@ var STORE_DOORS = [
291
310
  { name: "derived_values", args: "p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "invoker" },
292
311
  { name: "doc_content_hash", args: "p_body text", returns: "text", security: "invoker" },
293
312
  { name: "doc_format_value", args: "p_field_data jsonb, p_value jsonb", returns: "text", security: "invoker" },
313
+ { name: "doc_letterhead", args: "p_organization_id uuid", returns: "jsonb", security: "definer" },
314
+ { name: "doc_name_token_pattern", args: "", returns: "text", security: "invoker" },
315
+ { name: "doc_name_tokens", args: "p_body text", returns: "TABLE(ordinal integer, raw text)", security: "invoker" },
294
316
  { name: "doc_render_body", args: "p_organization_id uuid, p_template_id uuid, p_record_id uuid", returns: "text", security: "invoker" },
295
317
  { name: "doc_render_document", args: "p_organization_id uuid, p_template_id uuid, p_record_id uuid", returns: "uuid", security: "definer" },
296
318
  { name: "doc_render_read", args: "p_organization_id uuid, p_render_id uuid", returns: "jsonb", security: "definer" },
297
319
  { 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" },
320
+ { 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" },
298
321
  { 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" },
299
322
  { name: "doc_signature_field_ok", args: "p_field_data jsonb", returns: "boolean", security: "invoker" },
300
323
  { name: "doc_signature_intact", args: "p_organization_id uuid, p_signature_id uuid", returns: "jsonb", security: "invoker" },
301
324
  { name: "doc_signature_read", args: "p_organization_id uuid, p_signature_id uuid", returns: "jsonb", security: "definer" },
302
325
  { 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" },
326
+ { 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" },
327
+ { name: "doc_template_delete", args: "p_organization_id uuid, p_template_id uuid", returns: "boolean", security: "definer" },
303
328
  { name: "doc_template_read", args: "p_organization_id uuid, p_template_id uuid", returns: "jsonb", security: "definer" },
304
329
  { 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" },
330
+ { 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" },
305
331
  { name: "doc_token_pattern", args: "", returns: "text", security: "invoker" },
306
332
  { name: "doc_tokens", args: "p_body text", returns: "TABLE(ordinal integer, raw text, field_id uuid)", security: "invoker" },
307
333
  { 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" },
308
334
  { name: "doors_not_deciding_the_caller", args: "", returns: "TABLE(function_name text, identity_args text)", security: "invoker" },
309
335
  { name: "doors_not_deciding_the_record", args: "", returns: "TABLE(function_name text, identity_args text, why text)", security: "invoker" },
336
+ { name: "doors_not_masking_fields", args: "", returns: "TABLE(function_name text, identity_args text, why text)", security: "invoker" },
310
337
  { name: "doors_not_on_one_ladder", args: "", returns: "TABLE(function_name text, identity_args text, why text)", security: "invoker" },
311
338
  { 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" },
339
+ { 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" },
340
+ { name: "enrich_declare", args: "p_organization_id uuid, p_field_id uuid, p_spec jsonb", returns: "jsonb", security: "definer" },
341
+ { 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" },
342
+ { name: "enrich_land", args: "p_organization_id uuid, p_field_id uuid, p_results jsonb, p_run jsonb DEFAULT '{}'::jsonb", returns: "jsonb", security: "definer" },
343
+ { name: "enrich_normalize", args: "p_organization_id uuid, p_table_id uuid, p_field_key text, p_spec jsonb", returns: "jsonb", security: "definer" },
344
+ { 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" },
345
+ { name: "enrich_run_class", args: "", returns: "text", security: "invoker" },
346
+ { 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" },
347
+ { name: "enrich_sensitivity_rank", args: "p_word text", returns: "integer", security: "invoker" },
348
+ { name: "enrich_triggers", args: "", returns: "text[]", security: "invoker" },
349
+ { 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" },
312
350
  { name: "entity_field_declare", args: "p_organization_id uuid, p_token text, p_spec jsonb", returns: "uuid", security: "definer" },
313
351
  { name: "entity_field_retire", args: "p_organization_id uuid, p_field_id uuid", returns: "uuid", security: "definer" },
314
352
  { name: "entity_field_rights", args: "p_organization_id uuid, p_token text", returns: "jsonb", security: "definer" },
@@ -330,6 +368,7 @@ var STORE_DOORS = [
330
368
  { name: "field_behaviour", args: "p_field_data jsonb", returns: "text", security: "invoker" },
331
369
  { name: "field_declare", args: "p_organization_id uuid, p_table_id uuid, p_spec jsonb", returns: "uuid", security: "definer" },
332
370
  { 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" },
371
+ { 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" },
333
372
  { name: "field_kernel_id", args: "", returns: "uuid", security: "invoker" },
334
373
  { name: "field_options", args: "p_organization_id uuid, p_field_id uuid", returns: "SETOF custom.record", security: "definer" },
335
374
  { name: "field_retire", args: "p_organization_id uuid, p_field_id uuid", returns: "boolean", security: "definer" },
@@ -348,14 +387,26 @@ var STORE_DOORS = [
348
387
  { 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" },
349
388
  { 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" },
350
389
  { name: "hidden_field_notice", args: "p_field custom.record, p_action text DEFAULT 'read'::text", returns: "jsonb", security: "invoker" },
390
+ { name: "history_actor", args: "p_tier text, p_document jsonb, p_actor_id uuid, p_people jsonb", returns: "jsonb", security: "invoker" },
391
+ { name: "history_changes", args: "p_organization_id uuid, p_table_id uuid, p_old jsonb, p_new jsonb", returns: "jsonb", security: "invoker" },
392
+ { name: "history_people", args: "p_organization_id uuid, p_ids uuid[]", returns: "jsonb", security: "definer" },
351
393
  { 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" },
394
+ { name: "history_restore_body", args: "p_current jsonb, p_target jsonb, p_field_key text DEFAULT NULL::text", returns: "jsonb", security: "invoker" },
395
+ { name: "history_restore_body", args: "p_current jsonb, p_target jsonb, p_field_key text, p_author jsonb", returns: "jsonb", security: "invoker" },
352
396
  { name: "history_retention", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
353
397
  { name: "history_retention_floor_raise", args: "p_organization_id uuid, p_days integer", returns: "integer", security: "definer" },
354
398
  { name: "history_retention_set", args: "p_organization_id uuid, p_table_id uuid, p_days integer", returns: "integer", security: "definer" },
355
399
  { name: "home_add", args: "p_organization_id uuid, p_table_id uuid, p_home_record_id uuid", returns: "uuid", security: "definer" },
356
400
  { name: "home_relations", args: "", returns: "TABLE(table_id uuid, home_record_id uuid, organization_id uuid, relation_id uuid)", security: "invoker" },
401
+ { name: "inbound_addresses", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
402
+ { name: "inbound_declare", args: "p_organization_id uuid, p_table_id uuid, p_label text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
403
+ { name: "inbound_domain", args: "p_organization_id uuid", returns: "text", security: "invoker" },
404
+ { name: "inbound_mail_land", args: "p_address text, p_mail jsonb, p_secret text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
405
+ { name: "inbound_mail_map", args: "p_organization_id uuid, p_table_id uuid, p_mail jsonb", returns: "jsonb", security: "invoker" },
406
+ { name: "inbound_set", args: "p_organization_id uuid, p_inbound_id uuid, p_enabled boolean", returns: "jsonb", security: "definer" },
357
407
  { 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" },
358
408
  { name: "intern_provenance", args: "p_data jsonb", returns: "jsonb", security: "invoker" },
409
+ { 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" },
359
410
  { name: "io_changed_field_ids", args: "p_organization_id uuid, p_table_id uuid, p_old jsonb, p_new jsonb", returns: "jsonb", security: "invoker" },
360
411
  { name: "io_changed_keys", args: "p_old jsonb, p_new jsonb", returns: "text[]", security: "invoker" },
361
412
  { name: "io_comment_resolve", args: "p_organization_id uuid, p_comment_id uuid, p_resolved boolean DEFAULT true", returns: "boolean", security: "definer" },
@@ -365,23 +416,38 @@ var STORE_DOORS = [
365
416
  { name: "io_csv_parse", args: "p_text text, p_delimiter text DEFAULT NULL::text", returns: "TABLE(row_number integer, cells text[])", security: "invoker" },
366
417
  { 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" },
367
418
  { 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" },
419
+ { 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" },
420
+ { name: "io_import_finish", args: "p_organization_id uuid, p_import_id uuid, p_unmapped text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
421
+ { name: "io_import_forget", args: "p_organization_id uuid, p_import_id uuid", returns: "boolean", security: "definer" },
368
422
  { 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" },
423
+ { name: "io_import_plan", args: "p_organization_id uuid, p_table_id uuid, p_columns jsonb DEFAULT '[]'::jsonb", returns: "jsonb", security: "definer" },
424
+ { 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" },
369
425
  { 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" },
426
+ { name: "io_imports", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_limit integer DEFAULT 25", returns: "jsonb", security: "definer" },
427
+ { 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" },
370
428
  { name: "io_infer_type", args: "p_samples jsonb", returns: "text", security: "invoker" },
429
+ { name: "io_money_unit", args: "p_word text", returns: "text", security: "invoker" },
371
430
  { name: "io_outbox_announce", args: "", returns: "trigger", security: "definer" },
372
431
  { 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" },
373
432
  { 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" },
374
433
  { 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" },
375
434
  { name: "io_proposal_reject", args: "p_organization_id uuid, p_import_id uuid, p_column text", returns: "boolean", security: "definer" },
435
+ { name: "io_proposal_spec", args: "p_proposal jsonb", returns: "jsonb", security: "invoker" },
376
436
  { name: "io_record_changed", args: "", returns: "trigger", security: "definer" },
437
+ { name: "io_relation_candidate", args: "p_organization_id uuid, p_table_id uuid, p_words text[]", returns: "uuid", security: "invoker" },
377
438
  { name: "io_restore", args: "p_organization_id uuid, p_record_id uuid, p_version integer", returns: "integer", security: "definer" },
439
+ { name: "io_restore", args: "p_organization_id uuid, p_record_id uuid, p_version integer, p_author jsonb", returns: "integer", security: "definer" },
378
440
  { 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" },
441
+ { name: "io_sample_words", args: "p_samples jsonb", returns: "TABLE(word text)", security: "invoker" },
442
+ { name: "io_value_shape", args: "p_envelope jsonb", returns: "jsonb", security: "invoker" },
379
443
  { 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" },
444
+ { 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" },
380
445
  { 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" },
381
446
  { 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" },
382
447
  { name: "lookup_value", args: "p_organization_id uuid, p_record_id uuid, p_field_data jsonb", returns: "jsonb", security: "invoker" },
383
448
  { 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" },
384
449
  { 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" },
450
+ { name: "mask_says_withheld", args: "p_mask jsonb, p_key text", returns: "boolean", security: "invoker" },
385
451
  { name: "merge_field_kernel_id", args: "", returns: "uuid", security: "invoker" },
386
452
  { name: "migrate_choice_keys", args: "p_organization_id uuid, p_table_id uuid, p_dry_run boolean DEFAULT false", returns: "jsonb", security: "definer" },
387
453
  { name: "migrate_delete", args: "p_organization_id uuid, p_record_id uuid, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
@@ -397,6 +463,7 @@ var STORE_DOORS = [
397
463
  { 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" },
398
464
  { name: "migrate_undo", args: "p_organization_id uuid, p_log_id uuid", returns: "jsonb", security: "definer" },
399
465
  { 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" },
466
+ { name: "mirror_asks_the_whole_database", args: "", returns: "TABLE(schema_name text, table_name text, policy_name text, why text)", security: "invoker" },
400
467
  { name: "my_level", args: "p_organization_id uuid, p_id uuid, p_type text DEFAULT 'record'::text", returns: "permission_level", security: "definer" },
401
468
  { 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" },
402
469
  { name: "organization_clear", args: "p_organization_id uuid, p_confirm text, p_and_destroy boolean DEFAULT false", returns: "jsonb", security: "definer" },
@@ -410,6 +477,7 @@ var STORE_DOORS = [
410
477
  { 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" },
411
478
  { name: "per_value_access_words", args: "", returns: "text[]", security: "invoker" },
412
479
  { name: "person_kernel_id", args: "", returns: "uuid", security: "invoker" },
480
+ { name: "pin_agent_cells", args: "p_new jsonb, p_old jsonb, p_agent_keys text[]", returns: "jsonb", security: "invoker" },
413
481
  { name: "portal_admits", args: "p_organization_id uuid, p_user_id uuid DEFAULT NULL::uuid", returns: "boolean", security: "definer" },
414
482
  { name: "portal_card", args: "p_organization_id uuid, p_portal_id uuid", returns: "jsonb", security: "definer" },
415
483
  { 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" },
@@ -460,6 +528,7 @@ var STORE_DOORS = [
460
528
  { name: "read_door_granted_ids", args: "p_organization_id uuid, p_table_id uuid", returns: "uuid[]", security: "definer" },
461
529
  { name: "read_door_ladder_ceiling", args: "", returns: "integer", security: "invoker" },
462
530
  { 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" },
531
+ { name: "read_mask", args: "p_organization_id uuid, p_record_id uuid, p_action text DEFAULT 'read'::text", returns: "jsonb", security: "definer" },
463
532
  { name: "read_paths_outside_the_door", args: "", returns: "TABLE(object_name text, why text)", security: "invoker" },
464
533
  { name: "read_record", args: "p_organization_id uuid, p_record_id uuid, p_by_id boolean DEFAULT false", returns: "jsonb", security: "definer" },
465
534
  { 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" },
@@ -469,10 +538,15 @@ var STORE_DOORS = [
469
538
  { name: "record_card", args: "p_viewer uuid, p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "definer" },
470
539
  { 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" },
471
540
  { name: "record_delete", args: "p_organization_id uuid, p_record_id uuid", returns: "timestamp with time zone", security: "definer" },
541
+ { 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" },
472
542
  { 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" },
473
543
  { name: "record_reparent", args: "p_organization_id uuid, p_record_id uuid, p_parent_id uuid", returns: "void", security: "definer" },
474
544
  { name: "record_resolve", args: "p_organization_id uuid, p_id uuid", returns: "jsonb", security: "definer" },
475
545
  { name: "record_restore", args: "p_organization_id uuid, p_record_id uuid", returns: "void", security: "definer" },
546
+ { 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" },
547
+ { name: "record_restore_version", args: "p_organization_id uuid, p_record_id uuid, p_version integer", returns: "jsonb", security: "definer" },
548
+ { name: "record_restore_version", args: "p_organization_id uuid, p_record_id uuid, p_version integer, p_author jsonb", returns: "jsonb", security: "definer" },
549
+ { 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" },
476
550
  { name: "record_state_as_of", args: "p_record_id uuid, p_at timestamp with time zone", returns: "TABLE(state jsonb, replayed boolean)", security: "definer" },
477
551
  { name: "record_table", args: "p_organization_id uuid, p_record_id uuid", returns: "uuid", security: "definer" },
478
552
  { 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" },
@@ -519,12 +593,25 @@ var STORE_DOORS = [
519
593
  { name: "share_revoke", args: "p_organization_id uuid, p_subject_id uuid, p_principal_kind text, p_principal_id uuid", returns: "jsonb", security: "definer" },
520
594
  { name: "share_subject_name", args: "p_organization_id uuid, p_type text, p_id uuid", returns: "text", security: "definer" },
521
595
  { 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" },
596
+ { name: "sign_request_cancel", args: "p_organization_id uuid, p_request_id uuid, p_reason text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
597
+ { 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" },
598
+ { 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" },
599
+ { name: "sign_request_public", args: "p_token text, p_origin text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
600
+ { name: "sign_request_remind", args: "p_organization_id uuid, p_request_id uuid", returns: "jsonb", security: "definer" },
601
+ { name: "sign_request_sentence", args: "p_data jsonb", returns: "text", security: "invoker" },
602
+ { 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" },
603
+ { name: "sign_request_state", args: "p_data jsonb", returns: "text", security: "invoker" },
604
+ { name: "sign_request_unchanged", args: "p_organization_id uuid, p_request_id uuid", returns: "boolean", security: "definer" },
605
+ { 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" },
606
+ { name: "sign_token_decode", args: "p_token text", returns: "bytea", security: "invoker" },
607
+ { name: "sign_token_encode", args: "p_bytes bytea", returns: "text", security: "invoker" },
522
608
  { name: "size_refusal", args: "p_organization_id uuid, p_data jsonb", returns: "text", security: "invoker" },
523
609
  { name: "source_next_pointer", args: "p_sources jsonb", returns: "text", security: "invoker" },
524
610
  { name: "source_pointer", args: "p_sources jsonb, p_source jsonb", returns: "text", security: "invoker" },
525
611
  { 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" },
526
612
  { name: "storage_modes", args: "", returns: "text[]", security: "invoker" },
527
613
  { name: "store_is_open", args: "p_organization_id uuid DEFAULT NULL::uuid", returns: "boolean", security: "invoker" },
614
+ { name: "subscription_cadences", args: "p_organization_id uuid", returns: "text[]", security: "definer" },
528
615
  { name: "subscription_mute", args: "p_organization_id uuid, p_rule_id uuid, p_muted boolean DEFAULT true", returns: "boolean", security: "definer" },
529
616
  { 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, channel text, recipient_user_id uuid, event_key text, muted boolean, mine boolean, i_may_mute boolean)", security: "definer" },
530
617
  { name: "table_capacity", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
@@ -550,6 +637,8 @@ var STORE_DOORS = [
550
637
  { name: "value_envelope_ok", args: "p_data jsonb", returns: "boolean", security: "invoker" },
551
638
  { name: "value_envelope_refusal", args: "p_data jsonb", returns: "text", security: "invoker" },
552
639
  { 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" },
640
+ { name: "value_restore", args: "p_organization_id uuid, p_record_id uuid, p_field_key text, p_version integer", returns: "jsonb", security: "definer" },
641
+ { 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" },
553
642
  { name: "value_versions", args: "p_old jsonb, p_new jsonb", returns: "jsonb", security: "invoker" },
554
643
  { 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" },
555
644
  { 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" },
@@ -560,6 +649,8 @@ var STORE_DOORS = [
560
649
  { name: "visible_record_ids", args: "p_user_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level", returns: "TABLE(id uuid)", security: "definer" },
561
650
  { 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" },
562
651
  { name: "widget_kernel_id", args: "", returns: "uuid", security: "invoker" },
652
+ { name: "withheld_marker", args: "p_mask jsonb, p_key text", returns: "jsonb", security: "invoker" },
653
+ { name: "withheld_sentence", args: "p_mask jsonb, p_key text", returns: "text", security: "invoker" },
563
654
  { 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" },
564
655
  { 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" },
565
656
  { name: "work_approval_kinds", args: "", returns: "text[]", security: "invoker" },
@@ -600,6 +691,7 @@ var STORE_KNOBS = [
600
691
  { key: "code_paths_enabled", value: "false", type: "boolean" },
601
692
  { key: "consumer_chat_seeding_enabled", value: "false", type: "boolean" },
602
693
  { key: "consumer_checkout_enabled", value: "false", type: "boolean" },
694
+ { key: "consumer_context_enabled", value: "false", type: "boolean" },
603
695
  { key: "consumer_education_enabled", value: "false", type: "boolean" },
604
696
  { key: "consumer_extension_enabled", value: "false", type: "boolean" },
605
697
  { key: "consumer_grid_enabled", value: "false", type: "boolean" },
@@ -608,14 +700,21 @@ var STORE_KNOBS = [
608
700
  { key: "consumer_scopes_enabled", value: "false", type: "boolean" },
609
701
  { key: "containment_depth_ceiling", value: "16", type: "integer" },
610
702
  { key: "cross_organization_links", value: "false", type: "boolean" },
703
+ { key: "document_letterhead", value: "{}", type: "json" },
611
704
  { key: "document_max_bytes", value: "1048576", type: "integer" },
612
705
  { key: "emergency_door_guard", value: "false", type: "boolean" },
613
706
  { key: "emergency_door_sweep_enabled", value: "false", type: "boolean" },
707
+ { key: "enrichment_batch_ceiling", value: "200", type: "integer" },
708
+ { key: "enrichment_confidence_floor", value: "0.6", type: "number" },
709
+ { key: "enrichment_cost_cap_cents", value: "2000", type: "integer" },
710
+ { key: "enrichment_model", value: '"claude-fable-5-latest"', type: "string" },
711
+ { key: "enrichment_sensitivity_ceiling", value: '"internal"', type: "string" },
614
712
  { key: "entity_custom_fields_guard", value: "false", type: "boolean" },
615
713
  { key: "entity_types_guard", value: "false", type: "boolean" },
616
714
  { key: "external_principal_enabled", value: "false", type: "boolean" },
617
715
  { key: "field_index_guard", value: "false", type: "boolean" },
618
716
  { 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" },
717
+ { key: "inbound_domain", value: '"inbound.matrxserver.com"', type: "string" },
619
718
  { key: "member_default_level", value: '"viewer"', type: "enum" },
620
719
  { key: "member_default_visibility", value: '"all_records"', type: "enum" },
621
720
  { key: "records_tool_default", value: "true", type: "boolean" },
@@ -631,19 +730,20 @@ var STORE_KNOBS = [
631
730
  { key: "world_publish_enabled", value: "false", type: "boolean" }
632
731
  ];
633
732
  var STORE_REFUSAL_CODES = [
634
- { code: "02000", raised_by: "dashboard_delete,dashboard_run,doc_render_body,doc_render_document,doc_render_read,doc_sign,doc_signature_intact,doc_signature_read,doc_template_read,doc_template_save,entity_field_retire,entity_field_update,entity_record_read,entity_value_write,external_history_event,external_rows,external_stub_upsert,external_writes_set,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_table,record_update,relation_uncarry,share_access,share_grant,share_lane_set,share_people,share_revoke,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_assign,work_record_states,work_set_state" },
635
- { code: "0A000", raised_by: "external_rows,external_source_declare,external_write_through,promote_field,promoted_index_expr,promoted_query_sql,promoted_read,rule_eval,work_assign" },
636
- { 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,dashboard_block_normalize,dashboard_declare,dashboard_window_sql,doc_render_write,doc_sign,doc_signature_write,doc_template_save,external_history_event,external_rows,external_source_declare,external_stub_upsert,external_write_through,external_writes_set,form_declare,form_submit,home_add,io_comment_write,io_import_open,io_outbox_drain,io_restore,migrate_choice_keys,migrate_purge,migrate_reclass,migrate_split,migrate_undo,organization_clear,organization_contents,portal_declare,portal_invite,portal_principal_bind,query_across_homes,query_by_coordinates,query_rollup,record_delete,record_reparent,record_resolve,record_restore,record_update,record_write,relation_carry,relation_own,rule_declare,share_grant,table_declare,work_approval_decide,work_approval_request,work_template_declare" },
733
+ { code: "02000", raised_by: "_checklist_instantiate,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,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_assign,work_record_states,work_set_state" },
734
+ { 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" },
735
+ { code: "22003", raised_by: "context_resolve" },
736
+ { 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,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,portal_declare,portal_invite,portal_principal_bind,query_across_homes,query_by_coordinates,query_rollup,record_delete,record_reparent,record_resolve,record_restore,record_update,record_write,relation_carry,relation_own,rule_declare,share_grant,sign_request_create,sign_request_sign,table_declare,value_restore,work_approval_decide,work_approval_request,work_template_declare" },
637
737
  { code: "22007", raised_by: "dashboard_window_sql" },
638
738
  { code: "22012", raised_by: "rule_eval" },
639
- { code: "22023", raised_by: "_entity_custom_fields_guard,_value_envelope,_work_shape_guard,actor_word,agg_assert_key,agg_sql,anon_token_issue,containment_parent,dashboard_block_normalize,dashboard_window_sql,doc_render_body,doc_render_write,doc_signature_write,entity_value_write,external_history_event,external_source_declare,external_stub_upsert,external_write_through,io_import_open,io_proposal_accept,migrate_merge,migrate_reclass,my_levels,organization_clear,portal_declare,query_by_coordinates,query_rollup,record_update,relation_carry,rule_eval,rule_members,share_grant,share_lane_set,table_rules,visibility_as_of,work_approval_request,work_list,work_slot_hold" },
640
- { code: "23503", raised_by: "_containment_guard,_field_document_for,_record_rule_uses,anon_publish,anon_rate_take,anon_token_issue,anon_write,assert_organization_wall,dashboard_declare,delete_rule,doc_sign,doc_template_save,form_declare,form_submit,home_add,io_comment_write,io_import_rows,io_proposal_accept,migrate_demote,migrate_promote,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,subscription_mute,work_set_state,work_take_assignment,work_template_instantiate" },
641
- { code: "23505", raised_by: "_unique_rule_holds,doc_sign,doc_signature_write,entity_field_declare,field_declare,home_add,io_proposal_accept,relation_carry,relation_own,share_grant,work_approval_decide,work_slot_hold" },
642
- { code: "23514", raised_by: "_containment_guard,_dated_values_guard,_derived_fields,_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_shape_guard,_value_envelope,_work_shape_guard,_workdoors_approval_guard,assert_entity_is_organization_scoped,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,migrate_merge,relation_carry,relation_own,validate_value_envelope,validate_values,work_set_state,work_slots_declare,work_take_assignment,work_template_instantiate" },
739
+ { code: "22023", raised_by: "_entity_custom_fields_guard,_value_envelope,_work_shape_guard,actor_word,agg_assert_key,agg_sql,anon_token_issue,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,io_import_begin,io_import_finish,io_import_plan,io_import_report,io_proposal_accept,migrate_merge,migrate_reclass,my_levels,organization_clear,pin_agent_cells,portal_declare,query_by_coordinates,query_rollup,record_update,relation_carry,rule_eval,rule_members,share_grant,share_lane_set,sign_request_create,sign_request_sign,table_rules,visibility_as_of,work_approval_request,work_list,work_slot_hold" },
740
+ { code: "23503", raised_by: "_checklist_instantiate,_containment_guard,_field_document_for,_record_rule_uses,anon_publish,anon_rate_take,anon_token_issue,anon_write,assert_organization_wall,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,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,work_set_state,work_take_assignment,work_template_instantiate" },
741
+ { 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,work_approval_decide,work_slot_hold" },
742
+ { code: "23514", raised_by: "_checklist_instantiate,_checklist_step_guard,_containment_guard,_dated_values_guard,_derived_fields,_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_shape_guard,_value_envelope,_work_shape_guard,_workdoors_approval_guard,assert_entity_is_organization_scoped,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,validate_value_envelope,validate_values,work_set_state,work_slots_declare,work_take_assignment,work_template_instantiate" },
643
743
  { code: "40001", raised_by: "has_visibility_at" },
644
- { 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,entity_field_declare,entity_field_retire,entity_field_update,entity_value_write,external_write_through,form_declare,form_submit,io_comment_resolve,io_comment_write,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,share_grant,subscription_mute,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_person" },
744
+ { 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,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,record_table,share_grant,subscription_mute,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_person" },
645
745
  { code: "42703", raised_by: "entity_table,portal_declare" },
646
- { code: "53400", raised_by: "anon_rate_take,delete_cascade_closure,promote_field" },
746
+ { code: "53400", raised_by: "anon_rate_take,delete_cascade_closure,enrich_due,enrich_land,promote_field" },
647
747
  { code: "54001", raised_by: "record_delete" },
648
748
  { code: "PT409", raised_by: "record_update" }
649
749
  ];
@@ -1670,6 +1770,11 @@ var ENTITY_TOKENS = [
1670
1770
  "youtube_video"
1671
1771
  ];
1672
1772
 
1773
+ // src/record-scope.ts
1774
+ function scopeChip(scope) {
1775
+ return scope.title ? `About: ${scope.title}` : "About: this record";
1776
+ }
1777
+
1673
1778
  // src/core/doors.ts
1674
1779
  var OWED_BY = {
1675
1780
  metadata_search: "W5-SRV / W5-AGENT \u2014 the agent surface's eight verbs",
@@ -1818,6 +1923,30 @@ var DOORS = {
1818
1923
  // are server-lane doors and a browser never calls them.
1819
1924
  forms: "forms",
1820
1925
  formDeclare: "form_declare",
1926
+ // PRODUCTS row 9 — "pull my spreadsheet in". W4-IO built `io_import_open` and
1927
+ // `io_import_rows`; lane IMPORT gave a run an IDENTITY (the file's sha-256, so
1928
+ // a re-import doubles nothing), a duplicate key, a policy, per-row outcomes
1929
+ // with the source row on them, and the type inference that reads THIS
1930
+ // organization — an address that belongs to a member is a person, a few
1931
+ // repeating words are a dropdown, a column of names that are all records of
1932
+ // another Table points at it. `importOpen` (the older, narrower way in) is
1933
+ // deliberately absent from this catalogue: `importBegin` is a superset and two
1934
+ // ways to start an import from one client is how they drift.
1935
+ importPlan: "io_import_plan",
1936
+ importBegin: "io_import_begin",
1937
+ importRows: "io_import_rows",
1938
+ importFinish: "io_import_finish",
1939
+ importReport: "io_import_report",
1940
+ imports: "io_imports",
1941
+ importForget: "io_import_forget",
1942
+ inferColumn: "io_infer_column",
1943
+ // DOOR-19 (P8) — the address a Table owns. `inboundMailLand` is deliberately
1944
+ // absent: it is the mail gateway's door, granted to `service_role` alone and
1945
+ // declared `non_client_lane`, and a browser that could land mail at an
1946
+ // arbitrary address would be writing into any table of any organization.
1947
+ inboundDeclare: "inbound_declare",
1948
+ inboundAddresses: "inbound_addresses",
1949
+ inboundSet: "inbound_set",
1821
1950
  // THE CLIENT PORTAL, OWNER'S SIDE (VIS-31 / PORTAL). A portal is how somebody
1822
1951
  // with NO membership is let in to see the records that name them. `portals`
1823
1952
  // lists them, `portalCard` opens one, `portalDeclare` states what it exposes,
@@ -1844,6 +1973,41 @@ var DOORS = {
1844
1973
  dashboardRun: "dashboard_run",
1845
1974
  dashboardStuck: "dashboard_stuck",
1846
1975
  dashboardDelete: "dashboard_delete",
1976
+ // PRODUCTS row 4 — "Who changed this price, and can I put it back?" The
1977
+ // history has been in the store since W3-HIST; until 2026-09-20 the only way
1978
+ // to ask for it was `io_revisions`, which answers a raw uuid for the author
1979
+ // and a list of KEYS for what moved. `recordHistory` answers the person (or
1980
+ // the agent AND the person it acted for), the operation in the word somebody
1981
+ // used, and every field with its before, its after, the Rule version that
1982
+ // produced it and its source. `fieldHistory` is the other half nobody ships:
1983
+ // one column's history across the whole Table.
1984
+ recordHistory: "record_history",
1985
+ fieldHistory: "field_history",
1986
+ // THE PUT-IT-BACK THREE. `restorePreview` names what will change BEFORE it
1987
+ // does; `restoreVersion` puts the whole record back and `valueRestore` puts
1988
+ // one column back (HIS-N-2). All three write a NEW version through the
1989
+ // record's own write path — no stored version is ever altered.
1990
+ restorePreview: "record_restore_preview",
1991
+ restoreVersion: "record_restore_version",
1992
+ valueRestore: "value_restore",
1993
+ // SCR-18. The store has had comment doors at the `commenter` rung all along;
1994
+ // these two add the people's NAMES and a mention that reaches somebody.
1995
+ // AGT-N-9 / PRODUCTS row 11 — "What's the history with this customer?" A
1996
+ // conversation can be ABOUT one record, and `recordScopeContext` is the ONE
1997
+ // door that answers everything such a chat is allowed to know in a single
1998
+ // round trip: the Fields with their (record, field, value version) triples,
1999
+ // the relations one hop out, the history, the comments and the Table's other
2000
+ // records — every piece assembled INSIDE the database through the read door
2001
+ // under this person's own field-level security. A Field the store masks is
2002
+ // named as withheld with the store's reason and never valued.
2003
+ recordScopeContext: "record_scope_context",
2004
+ conversationScope: "conversation_scope",
2005
+ conversationScopeBind: "conversation_scope_bind",
2006
+ conversationScopeUnbind: "conversation_scope_unbind",
2007
+ conversationScopeContext: "conversation_scope_context",
2008
+ commentThread: "comment_thread",
2009
+ commentWrite: "comment_write",
2010
+ commentResolve: "io_comment_resolve",
1847
2011
  // The eighth verb (AGT-N-8): a grouped, bucketed, filtered count/sum/avg/
1848
2012
  // min/max computed INSIDE the read door's own query, so a chart shows exactly
1849
2013
  // the rows this person may see and never fetches the ones they may not.
@@ -1860,6 +2024,10 @@ var DOORS = {
1860
2024
  // these rows, so "tell me when a patient arrives" can also be un-told.
1861
2025
  subscriptions: "subscriptions",
1862
2026
  subscriptionMute: "subscription_mute",
2027
+ // The cadence CATALOGUE a person's screen may ask for. `agg_subscription_cadences`
2028
+ // above is the notifier's own and holds no client grant; this door delegates to
2029
+ // it, so a picker and the digest runner can never offer different words.
2030
+ subscriptionCadences: "subscription_cadences",
1863
2031
  // The doc doors: a template is saved, a render is written once and frozen,
1864
2032
  // and a signature is checked against the exact bytes that were signed.
1865
2033
  docTemplateSave: "doc_template_save",
@@ -1869,6 +2037,15 @@ var DOORS = {
1869
2037
  docUnresolvedTokens: "doc_unresolved_tokens",
1870
2038
  docSign: "doc_sign",
1871
2039
  docSignatureIntact: "doc_signature_intact",
2040
+ // THE PLURAL ACTS. Until 2026-09-20 this package read `custom.doc_template`,
2041
+ // `custom.doc_render` and `custom.doc_signature` with a direct PostgREST
2042
+ // `.from()`, and all three hold NO client SELECT — so every list in product #5
2043
+ // opened on "permission denied for view doc_template". A list is a DOOR, never
2044
+ // a grant on the thing behind it (DOORS-TWO).
2045
+ docTemplates: "doc_templates",
2046
+ docTemplateDelete: "doc_template_delete",
2047
+ docRenders: "doc_renders",
2048
+ docSignatures: "doc_signatures",
1872
2049
  // THE ANONYMOUS LANE (W4-ANON). It landed, and it landed as SEVEN doors
1873
2050
  // rather than the one this package had guessed at: a token is issued and
1874
2051
  // verified separately from the write it authorises, a form is published
@@ -1972,6 +2149,15 @@ var BY_SQLSTATE = {
1972
2149
  // live-door census caught it — the same way 42703 arrived, which is the
1973
2150
  // census working rather than a guess.
1974
2151
  "22007": "invalid_argument",
2152
+ // 22003 — a number the store could not hold at the size it was handed. It is
2153
+ // raised by `custom.context_resolve`, which is given a window or a depth a
2154
+ // caller wrote, so the class is the same one 22P02, 42703 and 22007 already
2155
+ // are: the CALL named a value the shape does not accept, and the store's own
2156
+ // sentence names the number and the range. Added 2026-09-20 (lane GRID-TWO)
2157
+ // when the live-door census caught the release gate red on it — which is the
2158
+ // census working, and the fourth time it has been the thing that found a new
2159
+ // refusal class rather than a person guessing one.
2160
+ "22003": "invalid_argument",
1975
2161
  "02000": "not_found",
1976
2162
  "23503": "missing_reference",
1977
2163
  "23505": "already_exists",
@@ -2519,6 +2705,98 @@ function createRecordsClient(config) {
2519
2705
  "formDeclare"
2520
2706
  );
2521
2707
  },
2708
+ async importPlan(args) {
2709
+ return callDoor(
2710
+ DOORS.importPlan,
2711
+ { p_organization_id: org, p_table_id: args.table_id, p_columns: args.columns },
2712
+ "importPlan"
2713
+ );
2714
+ },
2715
+ async importBegin(args) {
2716
+ return callDoor(
2717
+ DOORS.importBegin,
2718
+ {
2719
+ p_organization_id: org,
2720
+ p_table_id: args.table_id,
2721
+ p_format: args.format ?? "csv",
2722
+ p_source_name: args.source_name ?? null,
2723
+ p_source_columns: args.source_columns ?? [],
2724
+ p_file_hash: args.file_hash ?? null,
2725
+ p_policy: args.policy ?? {},
2726
+ p_dedupe_key: args.dedupe_key ?? null,
2727
+ p_file_bytes: args.file_bytes ?? null,
2728
+ p_force: args.force ?? false
2729
+ },
2730
+ "importBegin"
2731
+ );
2732
+ },
2733
+ async importRows(args) {
2734
+ return callDoor(
2735
+ DOORS.importRows,
2736
+ {
2737
+ p_organization_id: org,
2738
+ p_import_id: args.import_id,
2739
+ p_rows: args.rows,
2740
+ p_mapping: args.mapping ?? {}
2741
+ },
2742
+ "importRows"
2743
+ );
2744
+ },
2745
+ async importFinish(args) {
2746
+ return callDoor(
2747
+ DOORS.importFinish,
2748
+ { p_organization_id: org, p_import_id: args.import_id, p_unmapped: args.unmapped ?? null },
2749
+ "importFinish"
2750
+ );
2751
+ },
2752
+ async importReport(args) {
2753
+ return callDoor(
2754
+ DOORS.importReport,
2755
+ {
2756
+ p_organization_id: org,
2757
+ p_import_id: args.import_id,
2758
+ p_state: args.state ?? "refused",
2759
+ p_limit: args.limit ?? 100,
2760
+ p_offset: args.offset ?? 0
2761
+ },
2762
+ "importReport"
2763
+ );
2764
+ },
2765
+ async imports(args) {
2766
+ return callDoor(
2767
+ DOORS.imports,
2768
+ { p_organization_id: org, p_table_id: args?.table_id ?? null, p_limit: args?.limit ?? 25 },
2769
+ "imports"
2770
+ );
2771
+ },
2772
+ async importForget(args) {
2773
+ return callDoor(
2774
+ DOORS.importForget,
2775
+ { p_organization_id: org, p_import_id: args.import_id },
2776
+ "importForget"
2777
+ );
2778
+ },
2779
+ async inboundDeclare(args) {
2780
+ return callDoor(
2781
+ DOORS.inboundDeclare,
2782
+ { p_organization_id: org, p_table_id: args.table_id, p_label: args.label ?? null },
2783
+ "inboundDeclare"
2784
+ );
2785
+ },
2786
+ async inboundAddresses(args) {
2787
+ return callDoor(
2788
+ DOORS.inboundAddresses,
2789
+ { p_organization_id: org, p_table_id: args?.table_id ?? null },
2790
+ "inboundAddresses"
2791
+ );
2792
+ },
2793
+ async inboundSet(args) {
2794
+ return callDoor(
2795
+ DOORS.inboundSet,
2796
+ { p_organization_id: org, p_inbound_id: args.inbound_id, p_enabled: args.enabled },
2797
+ "inboundSet"
2798
+ );
2799
+ },
2522
2800
  async portals() {
2523
2801
  return callDoor(DOORS.portals, { p_organization_id: org }, "portals");
2524
2802
  },
@@ -2686,6 +2964,13 @@ function createRecordsClient(config) {
2686
2964
  async aggSubscriptionCadences() {
2687
2965
  return callDoor(DOORS.aggSubscriptionCadences, {}, "aggSubscriptionCadences");
2688
2966
  },
2967
+ async subscriptionCadences() {
2968
+ return callDoor(
2969
+ DOORS.subscriptionCadences,
2970
+ { p_organization_id: org },
2971
+ "subscriptionCadences"
2972
+ );
2973
+ },
2689
2974
  async subscriptions(args) {
2690
2975
  return callDoor(
2691
2976
  DOORS.subscriptions,
@@ -2750,32 +3035,52 @@ function createRecordsClient(config) {
2750
3035
  "docSign"
2751
3036
  );
2752
3037
  },
3038
+ // A LIST IS A DOOR, NEVER A GRANT ON THE THING BEHIND IT. These three used to
3039
+ // read `custom.doc_template`, `custom.doc_render` and `custom.doc_signature`
3040
+ // with a direct PostgREST `.from()`, and none of the three holds a client
3041
+ // SELECT — so a person could save a template they could never list and
3042
+ // render a document they could never find again, and every document screen
3043
+ // opened on "permission denied for view doc_template". The doors below
3044
+ // narrow inside the definer, after the ladder has spoken (DOORS-TWO).
2753
3045
  async docTemplates({ table_id }) {
2754
- const response = await config.dataSource.schema(schema).from("doc_template").select("*").eq("organization_id", org).eq("renders_table_id", table_id).order("name");
2755
- if (response.error) {
2756
- const refusal = mapPgError(response.error, "docTemplates");
2757
- scream({ code: refusal.code, message: refusal.message, ...refusal.hint ? { hint: refusal.hint } : {}, where: "docTemplates" });
2758
- return err(refusal);
2759
- }
2760
- return ok(response.data ?? []);
3046
+ const answered = await callDoor(
3047
+ DOORS.docTemplates,
3048
+ { p_organization_id: org, p_table_id: table_id },
3049
+ "docTemplates"
3050
+ );
3051
+ if (!answered.ok) return answered;
3052
+ return ok(
3053
+ answered.data.map((row) => ({ ...row, id: row["template_id"] }))
3054
+ );
3055
+ },
3056
+ async docTemplateDelete({ template_id }) {
3057
+ return callDoor(
3058
+ DOORS.docTemplateDelete,
3059
+ { p_organization_id: org, p_template_id: template_id },
3060
+ "docTemplateDelete"
3061
+ );
2761
3062
  },
2762
3063
  async docRenders({ record_id }) {
2763
- const response = await config.dataSource.schema(schema).from("doc_render").select("*").eq("organization_id", org).eq("record_id", record_id).is("deleted_at", null).order("rendered_at", { ascending: false });
2764
- if (response.error) {
2765
- const refusal = mapPgError(response.error, "docRenders");
2766
- scream({ code: refusal.code, message: refusal.message, ...refusal.hint ? { hint: refusal.hint } : {}, where: "docRenders" });
2767
- return err(refusal);
2768
- }
2769
- return ok(response.data ?? []);
3064
+ const answered = await callDoor(
3065
+ DOORS.docRenders,
3066
+ { p_organization_id: org, p_record_id: record_id },
3067
+ "docRenders"
3068
+ );
3069
+ if (!answered.ok) return answered;
3070
+ return ok(
3071
+ answered.data.map((row) => ({ ...row, id: row["render_id"] }))
3072
+ );
2770
3073
  },
2771
3074
  async docSignatures({ record_id }) {
2772
- const response = await config.dataSource.schema(schema).from("doc_signature").select("*").eq("organization_id", org).eq("record_id", record_id).is("deleted_at", null).order("signed_at", { ascending: false });
2773
- if (response.error) {
2774
- const refusal = mapPgError(response.error, "docSignatures");
2775
- scream({ code: refusal.code, message: refusal.message, ...refusal.hint ? { hint: refusal.hint } : {}, where: "docSignatures" });
2776
- return err(refusal);
2777
- }
2778
- return ok(response.data ?? []);
3075
+ const answered = await callDoor(
3076
+ DOORS.docSignatures,
3077
+ { p_organization_id: org, p_record_id: record_id },
3078
+ "docSignatures"
3079
+ );
3080
+ if (!answered.ok) return answered;
3081
+ return ok(
3082
+ answered.data.map((row) => ({ ...row, id: row["signature_id"] }))
3083
+ );
2779
3084
  },
2780
3085
  async recordValuesVersioned({ record_id }) {
2781
3086
  return readValues(record_id);
@@ -2787,6 +3092,152 @@ function createRecordsClient(config) {
2787
3092
  "revisions"
2788
3093
  );
2789
3094
  },
3095
+ async recordScopeContext({ record_id, relations, history, siblings }) {
3096
+ return callDoor(
3097
+ DOORS.recordScopeContext,
3098
+ {
3099
+ p_organization_id: org,
3100
+ p_record_id: record_id,
3101
+ p_relations: relations ?? 12,
3102
+ p_history: history ?? 15,
3103
+ p_siblings: siblings ?? 8
3104
+ },
3105
+ "recordScopeContext"
3106
+ );
3107
+ },
3108
+ async conversationScope({ conversation_id }) {
3109
+ return callDoor(
3110
+ DOORS.conversationScope,
3111
+ { p_organization_id: org, p_conversation_id: conversation_id },
3112
+ "conversationScope"
3113
+ );
3114
+ },
3115
+ async conversationScopeBind({ conversation_id, record_id }) {
3116
+ return callDoor(
3117
+ DOORS.conversationScopeBind,
3118
+ {
3119
+ p_organization_id: org,
3120
+ p_conversation_id: conversation_id,
3121
+ p_record_id: record_id
3122
+ },
3123
+ "conversationScopeBind"
3124
+ );
3125
+ },
3126
+ async conversationScopeUnbind({ conversation_id }) {
3127
+ return callDoor(
3128
+ DOORS.conversationScopeUnbind,
3129
+ { p_organization_id: org, p_conversation_id: conversation_id },
3130
+ "conversationScopeUnbind"
3131
+ );
3132
+ },
3133
+ async conversationScopeContext({ conversation_id, relations, history, siblings }) {
3134
+ return callDoor(
3135
+ DOORS.conversationScopeContext,
3136
+ {
3137
+ p_organization_id: org,
3138
+ p_conversation_id: conversation_id,
3139
+ p_relations: relations ?? 12,
3140
+ p_history: history ?? 15,
3141
+ p_siblings: siblings ?? 8
3142
+ },
3143
+ "conversationScopeContext"
3144
+ );
3145
+ },
3146
+ async recordHistory({ record_id, limit, offset }) {
3147
+ return callDoor(
3148
+ DOORS.recordHistory,
3149
+ {
3150
+ p_organization_id: org,
3151
+ p_record_id: record_id,
3152
+ p_limit: limit ?? 200,
3153
+ p_offset: offset ?? 0
3154
+ },
3155
+ "recordHistory"
3156
+ );
3157
+ },
3158
+ async fieldHistory({ table_id, field_key, limit, offset, record_id }) {
3159
+ return callDoor(
3160
+ DOORS.fieldHistory,
3161
+ {
3162
+ p_organization_id: org,
3163
+ p_table_id: table_id,
3164
+ p_field_key: field_key,
3165
+ p_limit: limit ?? 100,
3166
+ p_offset: offset ?? 0,
3167
+ p_record_id: record_id ?? null
3168
+ },
3169
+ "fieldHistory"
3170
+ );
3171
+ },
3172
+ async restorePreview({ record_id, version, field_key }) {
3173
+ return callDoor(
3174
+ DOORS.restorePreview,
3175
+ {
3176
+ p_organization_id: org,
3177
+ p_record_id: record_id,
3178
+ p_version: version,
3179
+ p_field_key: field_key ?? null
3180
+ },
3181
+ "restorePreview"
3182
+ );
3183
+ },
3184
+ async restoreVersion({ record_id, version }) {
3185
+ return callDoor(
3186
+ DOORS.restoreVersion,
3187
+ { p_organization_id: org, p_record_id: record_id, p_version: version },
3188
+ "restoreVersion"
3189
+ );
3190
+ },
3191
+ async valueRestore({ record_id, field_key, version }) {
3192
+ return callDoor(
3193
+ DOORS.valueRestore,
3194
+ {
3195
+ p_organization_id: org,
3196
+ p_record_id: record_id,
3197
+ p_field_key: field_key,
3198
+ p_version: version
3199
+ },
3200
+ "valueRestore"
3201
+ );
3202
+ },
3203
+ async commentThread({ record_id, include_resolved }) {
3204
+ return callDoor(
3205
+ DOORS.commentThread,
3206
+ {
3207
+ p_organization_id: org,
3208
+ p_record_id: record_id,
3209
+ p_include_resolved: include_resolved ?? false
3210
+ },
3211
+ "commentThread"
3212
+ );
3213
+ },
3214
+ async commentWrite({ record_id, body, field_key, parent_comment_id, mentions }) {
3215
+ return callDoor(
3216
+ DOORS.commentWrite,
3217
+ {
3218
+ p_organization_id: org,
3219
+ p_record_id: record_id,
3220
+ p_body: body,
3221
+ // THE ANCHOR IS WHERE A FIELD COMMENT LIVES. `custom.io_comment` has
3222
+ // always carried it; nothing was ever putting a Field in it.
3223
+ p_anchor: field_key ? { field_key } : {},
3224
+ p_parent_comment_id: parent_comment_id ?? null,
3225
+ p_mentions: mentions && mentions.length > 0 ? mentions : null
3226
+ },
3227
+ "commentWrite"
3228
+ );
3229
+ },
3230
+ async commentResolve({ comment_id, resolved }) {
3231
+ return callDoor(
3232
+ DOORS.commentResolve,
3233
+ {
3234
+ p_organization_id: org,
3235
+ p_comment_id: comment_id,
3236
+ p_resolved: resolved ?? true
3237
+ },
3238
+ "commentResolve"
3239
+ );
3240
+ },
2790
3241
  async docSignatureIntact({ signature_id }) {
2791
3242
  return callDoor(
2792
3243
  DOORS.docSignatureIntact,
@@ -3786,6 +4237,7 @@ export {
3786
4237
  predictValueRefusals,
3787
4238
  predictWriteRefusals,
3788
4239
  publicFormPath,
4240
+ scopeChip,
3789
4241
  staleWriteDetail,
3790
4242
  supabaseDataSource,
3791
4243
  toAoa