@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.
@@ -73,6 +73,7 @@ __export(react_exports, {
73
73
  optionLabel: () => optionLabel,
74
74
  portalPath: () => portalPath,
75
75
  publicFormPath: () => publicFormPath,
76
+ scopeChip: () => scopeChip,
76
77
  useEntityFieldMutation: () => useEntityFieldMutation,
77
78
  useEntityFieldRights: () => useEntityFieldRights,
78
79
  useEntityFields: () => useEntityFields,
@@ -135,7 +136,7 @@ var err = (error) => ({ ok: false, error });
135
136
  var ACTOR_VOCABULARY = ["user", "agent", "system"];
136
137
  var RETIRED_ACTOR_WORDS = { "ai": "agent", "code": "system", "human": "user" };
137
138
  var ABSENCE_REASONS = ["never asked", "none", "refused", "conflicting"];
138
- var VALUE_ENVELOPE_KEYS = ["ver", "src", "actor", "on_behalf_of", "at", "absent", "alternates", "dated"];
139
+ var VALUE_ENVELOPE_KEYS = ["ver", "src", "actor", "on_behalf_of", "at", "absent", "alternates", "dated", "pinned"];
139
140
  var VALUE_ALTERNATE_KEYS = ["value", "src", "rank"];
140
141
  var STORAGE_MODES = ["light", "heavy"];
141
142
  var RULE_USES = ["validate", "compute", "membership", "applicability"];
@@ -231,8 +232,19 @@ var STORE_DOORS = [
231
232
  { name: "bump_epoch", args: "p_entity_type text, p_entity_id uuid, p_organization_id uuid DEFAULT NULL::uuid", returns: "bigint", security: "definer" },
232
233
  { 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" },
233
234
  { name: "caller_role", args: "", returns: "name", security: "invoker" },
235
+ { name: "carry_unchanged_value_stamps", args: "p_old jsonb, p_new jsonb", returns: "jsonb", security: "invoker" },
234
236
  { 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" },
235
237
  { 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" },
238
+ { name: "checklist_declare", args: "p_organization_id uuid, p_spec jsonb, p_template_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
239
+ { name: "checklist_refusal", args: "p_spec jsonb", returns: "text", security: "invoker" },
240
+ { 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" },
241
+ { 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" },
242
+ { 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" },
243
+ { name: "checklist_step_complete", args: "p_organization_id uuid, p_step_id uuid, p_evidence jsonb DEFAULT '{}'::jsonb", returns: "jsonb", security: "definer" },
244
+ { name: "checklist_step_refusal", args: "p_organization_id uuid, p_step_id uuid", returns: "text", security: "definer" },
245
+ { name: "checklist_steps_table", args: "p_organization_id uuid", returns: "uuid", security: "definer" },
246
+ { name: "checklist_template_shape", args: "p_organization_id uuid, p_template_id uuid", returns: "jsonb", security: "definer" },
247
+ { 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" },
236
248
  { name: "choice_census", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
237
249
  { name: "choice_field_map", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "invoker" },
238
250
  { name: "choice_filter_normalize", args: "p_map jsonb, p_filter jsonb", returns: "jsonb", security: "invoker" },
@@ -248,11 +260,19 @@ var STORE_DOORS = [
248
260
  { name: "choice_synonyms_in", args: "p_map jsonb, p_token text", returns: "text[]", security: "invoker" },
249
261
  { name: "choice_words", args: "p_field jsonb", returns: "text", security: "invoker" },
250
262
  { name: "client_write_grants", args: "", returns: "TABLE(role_name text, object_name text, privilege text)", security: "invoker" },
263
+ { 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" },
264
+ { name: "comment_thread", args: "p_organization_id uuid, p_record_id uuid, p_include_resolved boolean DEFAULT false", returns: "jsonb", security: "definer" },
265
+ { 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" },
251
266
  { 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" },
252
267
  { name: "containment_chain", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(ancestor_id uuid, depth integer)", security: "invoker" },
253
268
  { name: "containment_depth_ceiling", args: "p_organization_id uuid DEFAULT NULL::uuid", returns: "integer", security: "invoker" },
254
269
  { name: "containment_edges", args: "p_organization_id uuid", returns: "TABLE(parent_id uuid, child_id uuid, via text)", security: "invoker" },
255
270
  { name: "containment_parent", args: "p_data jsonb", returns: "uuid", security: "invoker" },
271
+ { name: "context_resolve", args: "p_organization_id uuid, p_bindings jsonb, p_scope_slug text DEFAULT 'scopes'::text", returns: "jsonb", security: "definer" },
272
+ { name: "conversation_scope", args: "p_organization_id uuid, p_conversation_id uuid", returns: "jsonb", security: "definer" },
273
+ { name: "conversation_scope_bind", args: "p_organization_id uuid, p_conversation_id uuid, p_record_id uuid", returns: "jsonb", security: "definer" },
274
+ { 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" },
275
+ { name: "conversation_scope_unbind", args: "p_organization_id uuid, p_conversation_id uuid", returns: "jsonb", security: "definer" },
256
276
  { name: "cross_organization_links_open", args: "p_source_organization_id uuid, p_target_organization_id uuid", returns: "boolean", security: "invoker" },
257
277
  { name: "custom_fields_tables", args: "", returns: "TABLE(token text, schema_name text, table_name text)", security: "invoker" },
258
278
  { name: "dashboard_block_normalize", args: "p_organization_id uuid, p_subject_table_id uuid, p_block jsonb", returns: "jsonb", security: "definer" },
@@ -276,24 +296,43 @@ var STORE_DOORS = [
276
296
  { name: "derived_values", args: "p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "invoker" },
277
297
  { name: "doc_content_hash", args: "p_body text", returns: "text", security: "invoker" },
278
298
  { name: "doc_format_value", args: "p_field_data jsonb, p_value jsonb", returns: "text", security: "invoker" },
299
+ { name: "doc_letterhead", args: "p_organization_id uuid", returns: "jsonb", security: "definer" },
300
+ { name: "doc_name_token_pattern", args: "", returns: "text", security: "invoker" },
301
+ { name: "doc_name_tokens", args: "p_body text", returns: "TABLE(ordinal integer, raw text)", security: "invoker" },
279
302
  { name: "doc_render_body", args: "p_organization_id uuid, p_template_id uuid, p_record_id uuid", returns: "text", security: "invoker" },
280
303
  { name: "doc_render_document", args: "p_organization_id uuid, p_template_id uuid, p_record_id uuid", returns: "uuid", security: "definer" },
281
304
  { name: "doc_render_read", args: "p_organization_id uuid, p_render_id uuid", returns: "jsonb", security: "definer" },
282
305
  { 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" },
306
+ { 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" },
283
307
  { 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" },
284
308
  { name: "doc_signature_field_ok", args: "p_field_data jsonb", returns: "boolean", security: "invoker" },
285
309
  { name: "doc_signature_intact", args: "p_organization_id uuid, p_signature_id uuid", returns: "jsonb", security: "invoker" },
286
310
  { name: "doc_signature_read", args: "p_organization_id uuid, p_signature_id uuid", returns: "jsonb", security: "definer" },
287
311
  { 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" },
312
+ { 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" },
313
+ { name: "doc_template_delete", args: "p_organization_id uuid, p_template_id uuid", returns: "boolean", security: "definer" },
288
314
  { name: "doc_template_read", args: "p_organization_id uuid, p_template_id uuid", returns: "jsonb", security: "definer" },
289
315
  { 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" },
316
+ { 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" },
290
317
  { name: "doc_token_pattern", args: "", returns: "text", security: "invoker" },
291
318
  { name: "doc_tokens", args: "p_body text", returns: "TABLE(ordinal integer, raw text, field_id uuid)", security: "invoker" },
292
319
  { 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" },
293
320
  { name: "doors_not_deciding_the_caller", args: "", returns: "TABLE(function_name text, identity_args text)", security: "invoker" },
294
321
  { name: "doors_not_deciding_the_record", args: "", returns: "TABLE(function_name text, identity_args text, why text)", security: "invoker" },
322
+ { name: "doors_not_masking_fields", args: "", returns: "TABLE(function_name text, identity_args text, why text)", security: "invoker" },
295
323
  { name: "doors_not_on_one_ladder", args: "", returns: "TABLE(function_name text, identity_args text, why text)", security: "invoker" },
296
324
  { 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" },
325
+ { 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" },
326
+ { name: "enrich_declare", args: "p_organization_id uuid, p_field_id uuid, p_spec jsonb", returns: "jsonb", security: "definer" },
327
+ { 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" },
328
+ { name: "enrich_land", args: "p_organization_id uuid, p_field_id uuid, p_results jsonb, p_run jsonb DEFAULT '{}'::jsonb", returns: "jsonb", security: "definer" },
329
+ { name: "enrich_normalize", args: "p_organization_id uuid, p_table_id uuid, p_field_key text, p_spec jsonb", returns: "jsonb", security: "definer" },
330
+ { 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" },
331
+ { name: "enrich_run_class", args: "", returns: "text", security: "invoker" },
332
+ { 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" },
333
+ { name: "enrich_sensitivity_rank", args: "p_word text", returns: "integer", security: "invoker" },
334
+ { name: "enrich_triggers", args: "", returns: "text[]", security: "invoker" },
335
+ { 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" },
297
336
  { name: "entity_field_declare", args: "p_organization_id uuid, p_token text, p_spec jsonb", returns: "uuid", security: "definer" },
298
337
  { name: "entity_field_retire", args: "p_organization_id uuid, p_field_id uuid", returns: "uuid", security: "definer" },
299
338
  { name: "entity_field_rights", args: "p_organization_id uuid, p_token text", returns: "jsonb", security: "definer" },
@@ -315,6 +354,7 @@ var STORE_DOORS = [
315
354
  { name: "field_behaviour", args: "p_field_data jsonb", returns: "text", security: "invoker" },
316
355
  { name: "field_declare", args: "p_organization_id uuid, p_table_id uuid, p_spec jsonb", returns: "uuid", security: "definer" },
317
356
  { 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" },
357
+ { 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" },
318
358
  { name: "field_kernel_id", args: "", returns: "uuid", security: "invoker" },
319
359
  { name: "field_options", args: "p_organization_id uuid, p_field_id uuid", returns: "SETOF custom.record", security: "definer" },
320
360
  { name: "field_retire", args: "p_organization_id uuid, p_field_id uuid", returns: "boolean", security: "definer" },
@@ -333,14 +373,26 @@ var STORE_DOORS = [
333
373
  { 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" },
334
374
  { 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" },
335
375
  { name: "hidden_field_notice", args: "p_field custom.record, p_action text DEFAULT 'read'::text", returns: "jsonb", security: "invoker" },
376
+ { name: "history_actor", args: "p_tier text, p_document jsonb, p_actor_id uuid, p_people jsonb", returns: "jsonb", security: "invoker" },
377
+ { name: "history_changes", args: "p_organization_id uuid, p_table_id uuid, p_old jsonb, p_new jsonb", returns: "jsonb", security: "invoker" },
378
+ { name: "history_people", args: "p_organization_id uuid, p_ids uuid[]", returns: "jsonb", security: "definer" },
336
379
  { 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" },
380
+ { name: "history_restore_body", args: "p_current jsonb, p_target jsonb, p_field_key text DEFAULT NULL::text", returns: "jsonb", security: "invoker" },
381
+ { name: "history_restore_body", args: "p_current jsonb, p_target jsonb, p_field_key text, p_author jsonb", returns: "jsonb", security: "invoker" },
337
382
  { name: "history_retention", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
338
383
  { name: "history_retention_floor_raise", args: "p_organization_id uuid, p_days integer", returns: "integer", security: "definer" },
339
384
  { name: "history_retention_set", args: "p_organization_id uuid, p_table_id uuid, p_days integer", returns: "integer", security: "definer" },
340
385
  { name: "home_add", args: "p_organization_id uuid, p_table_id uuid, p_home_record_id uuid", returns: "uuid", security: "definer" },
341
386
  { name: "home_relations", args: "", returns: "TABLE(table_id uuid, home_record_id uuid, organization_id uuid, relation_id uuid)", security: "invoker" },
387
+ { name: "inbound_addresses", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
388
+ { name: "inbound_declare", args: "p_organization_id uuid, p_table_id uuid, p_label text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
389
+ { name: "inbound_domain", args: "p_organization_id uuid", returns: "text", security: "invoker" },
390
+ { name: "inbound_mail_land", args: "p_address text, p_mail jsonb, p_secret text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
391
+ { name: "inbound_mail_map", args: "p_organization_id uuid, p_table_id uuid, p_mail jsonb", returns: "jsonb", security: "invoker" },
392
+ { name: "inbound_set", args: "p_organization_id uuid, p_inbound_id uuid, p_enabled boolean", returns: "jsonb", security: "definer" },
342
393
  { 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" },
343
394
  { name: "intern_provenance", args: "p_data jsonb", returns: "jsonb", security: "invoker" },
395
+ { 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" },
344
396
  { name: "io_changed_field_ids", args: "p_organization_id uuid, p_table_id uuid, p_old jsonb, p_new jsonb", returns: "jsonb", security: "invoker" },
345
397
  { name: "io_changed_keys", args: "p_old jsonb, p_new jsonb", returns: "text[]", security: "invoker" },
346
398
  { name: "io_comment_resolve", args: "p_organization_id uuid, p_comment_id uuid, p_resolved boolean DEFAULT true", returns: "boolean", security: "definer" },
@@ -350,23 +402,38 @@ var STORE_DOORS = [
350
402
  { name: "io_csv_parse", args: "p_text text, p_delimiter text DEFAULT NULL::text", returns: "TABLE(row_number integer, cells text[])", security: "invoker" },
351
403
  { 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" },
352
404
  { 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" },
405
+ { 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" },
406
+ { name: "io_import_finish", args: "p_organization_id uuid, p_import_id uuid, p_unmapped text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
407
+ { name: "io_import_forget", args: "p_organization_id uuid, p_import_id uuid", returns: "boolean", security: "definer" },
353
408
  { 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" },
409
+ { name: "io_import_plan", args: "p_organization_id uuid, p_table_id uuid, p_columns jsonb DEFAULT '[]'::jsonb", returns: "jsonb", security: "definer" },
410
+ { 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" },
354
411
  { 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" },
412
+ { name: "io_imports", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_limit integer DEFAULT 25", returns: "jsonb", security: "definer" },
413
+ { 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" },
355
414
  { name: "io_infer_type", args: "p_samples jsonb", returns: "text", security: "invoker" },
415
+ { name: "io_money_unit", args: "p_word text", returns: "text", security: "invoker" },
356
416
  { name: "io_outbox_announce", args: "", returns: "trigger", security: "definer" },
357
417
  { 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" },
358
418
  { 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" },
359
419
  { 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" },
360
420
  { name: "io_proposal_reject", args: "p_organization_id uuid, p_import_id uuid, p_column text", returns: "boolean", security: "definer" },
421
+ { name: "io_proposal_spec", args: "p_proposal jsonb", returns: "jsonb", security: "invoker" },
361
422
  { name: "io_record_changed", args: "", returns: "trigger", security: "definer" },
423
+ { name: "io_relation_candidate", args: "p_organization_id uuid, p_table_id uuid, p_words text[]", returns: "uuid", security: "invoker" },
362
424
  { name: "io_restore", args: "p_organization_id uuid, p_record_id uuid, p_version integer", returns: "integer", security: "definer" },
425
+ { name: "io_restore", args: "p_organization_id uuid, p_record_id uuid, p_version integer, p_author jsonb", returns: "integer", security: "definer" },
363
426
  { 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" },
427
+ { name: "io_sample_words", args: "p_samples jsonb", returns: "TABLE(word text)", security: "invoker" },
428
+ { name: "io_value_shape", args: "p_envelope jsonb", returns: "jsonb", security: "invoker" },
364
429
  { 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" },
430
+ { 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" },
365
431
  { 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" },
366
432
  { 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" },
367
433
  { name: "lookup_value", args: "p_organization_id uuid, p_record_id uuid, p_field_data jsonb", returns: "jsonb", security: "invoker" },
368
434
  { 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" },
369
435
  { 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" },
436
+ { name: "mask_says_withheld", args: "p_mask jsonb, p_key text", returns: "boolean", security: "invoker" },
370
437
  { name: "merge_field_kernel_id", args: "", returns: "uuid", security: "invoker" },
371
438
  { name: "migrate_choice_keys", args: "p_organization_id uuid, p_table_id uuid, p_dry_run boolean DEFAULT false", returns: "jsonb", security: "definer" },
372
439
  { name: "migrate_delete", args: "p_organization_id uuid, p_record_id uuid, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
@@ -382,6 +449,7 @@ var STORE_DOORS = [
382
449
  { 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" },
383
450
  { name: "migrate_undo", args: "p_organization_id uuid, p_log_id uuid", returns: "jsonb", security: "definer" },
384
451
  { 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" },
452
+ { name: "mirror_asks_the_whole_database", args: "", returns: "TABLE(schema_name text, table_name text, policy_name text, why text)", security: "invoker" },
385
453
  { name: "my_level", args: "p_organization_id uuid, p_id uuid, p_type text DEFAULT 'record'::text", returns: "permission_level", security: "definer" },
386
454
  { 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" },
387
455
  { name: "organization_clear", args: "p_organization_id uuid, p_confirm text, p_and_destroy boolean DEFAULT false", returns: "jsonb", security: "definer" },
@@ -395,6 +463,7 @@ var STORE_DOORS = [
395
463
  { 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" },
396
464
  { name: "per_value_access_words", args: "", returns: "text[]", security: "invoker" },
397
465
  { name: "person_kernel_id", args: "", returns: "uuid", security: "invoker" },
466
+ { name: "pin_agent_cells", args: "p_new jsonb, p_old jsonb, p_agent_keys text[]", returns: "jsonb", security: "invoker" },
398
467
  { name: "portal_admits", args: "p_organization_id uuid, p_user_id uuid DEFAULT NULL::uuid", returns: "boolean", security: "definer" },
399
468
  { name: "portal_card", args: "p_organization_id uuid, p_portal_id uuid", returns: "jsonb", security: "definer" },
400
469
  { 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" },
@@ -445,6 +514,7 @@ var STORE_DOORS = [
445
514
  { name: "read_door_granted_ids", args: "p_organization_id uuid, p_table_id uuid", returns: "uuid[]", security: "definer" },
446
515
  { name: "read_door_ladder_ceiling", args: "", returns: "integer", security: "invoker" },
447
516
  { 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" },
517
+ { name: "read_mask", args: "p_organization_id uuid, p_record_id uuid, p_action text DEFAULT 'read'::text", returns: "jsonb", security: "definer" },
448
518
  { name: "read_paths_outside_the_door", args: "", returns: "TABLE(object_name text, why text)", security: "invoker" },
449
519
  { name: "read_record", args: "p_organization_id uuid, p_record_id uuid, p_by_id boolean DEFAULT false", returns: "jsonb", security: "definer" },
450
520
  { 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" },
@@ -454,10 +524,15 @@ var STORE_DOORS = [
454
524
  { name: "record_card", args: "p_viewer uuid, p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "definer" },
455
525
  { 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" },
456
526
  { name: "record_delete", args: "p_organization_id uuid, p_record_id uuid", returns: "timestamp with time zone", security: "definer" },
527
+ { 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" },
457
528
  { 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" },
458
529
  { name: "record_reparent", args: "p_organization_id uuid, p_record_id uuid, p_parent_id uuid", returns: "void", security: "definer" },
459
530
  { name: "record_resolve", args: "p_organization_id uuid, p_id uuid", returns: "jsonb", security: "definer" },
460
531
  { name: "record_restore", args: "p_organization_id uuid, p_record_id uuid", returns: "void", security: "definer" },
532
+ { 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" },
533
+ { name: "record_restore_version", args: "p_organization_id uuid, p_record_id uuid, p_version integer", returns: "jsonb", security: "definer" },
534
+ { name: "record_restore_version", args: "p_organization_id uuid, p_record_id uuid, p_version integer, p_author jsonb", returns: "jsonb", security: "definer" },
535
+ { 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" },
461
536
  { name: "record_state_as_of", args: "p_record_id uuid, p_at timestamp with time zone", returns: "TABLE(state jsonb, replayed boolean)", security: "definer" },
462
537
  { name: "record_table", args: "p_organization_id uuid, p_record_id uuid", returns: "uuid", security: "definer" },
463
538
  { 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" },
@@ -504,12 +579,25 @@ var STORE_DOORS = [
504
579
  { name: "share_revoke", args: "p_organization_id uuid, p_subject_id uuid, p_principal_kind text, p_principal_id uuid", returns: "jsonb", security: "definer" },
505
580
  { name: "share_subject_name", args: "p_organization_id uuid, p_type text, p_id uuid", returns: "text", security: "definer" },
506
581
  { 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" },
582
+ { name: "sign_request_cancel", args: "p_organization_id uuid, p_request_id uuid, p_reason text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
583
+ { 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" },
584
+ { 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" },
585
+ { name: "sign_request_public", args: "p_token text, p_origin text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
586
+ { name: "sign_request_remind", args: "p_organization_id uuid, p_request_id uuid", returns: "jsonb", security: "definer" },
587
+ { name: "sign_request_sentence", args: "p_data jsonb", returns: "text", security: "invoker" },
588
+ { 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" },
589
+ { name: "sign_request_state", args: "p_data jsonb", returns: "text", security: "invoker" },
590
+ { name: "sign_request_unchanged", args: "p_organization_id uuid, p_request_id uuid", returns: "boolean", security: "definer" },
591
+ { 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" },
592
+ { name: "sign_token_decode", args: "p_token text", returns: "bytea", security: "invoker" },
593
+ { name: "sign_token_encode", args: "p_bytes bytea", returns: "text", security: "invoker" },
507
594
  { name: "size_refusal", args: "p_organization_id uuid, p_data jsonb", returns: "text", security: "invoker" },
508
595
  { name: "source_next_pointer", args: "p_sources jsonb", returns: "text", security: "invoker" },
509
596
  { name: "source_pointer", args: "p_sources jsonb, p_source jsonb", returns: "text", security: "invoker" },
510
597
  { 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" },
511
598
  { name: "storage_modes", args: "", returns: "text[]", security: "invoker" },
512
599
  { name: "store_is_open", args: "p_organization_id uuid DEFAULT NULL::uuid", returns: "boolean", security: "invoker" },
600
+ { name: "subscription_cadences", args: "p_organization_id uuid", returns: "text[]", security: "definer" },
513
601
  { name: "subscription_mute", args: "p_organization_id uuid, p_rule_id uuid, p_muted boolean DEFAULT true", returns: "boolean", security: "definer" },
514
602
  { 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" },
515
603
  { name: "table_capacity", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
@@ -535,6 +623,8 @@ var STORE_DOORS = [
535
623
  { name: "value_envelope_ok", args: "p_data jsonb", returns: "boolean", security: "invoker" },
536
624
  { name: "value_envelope_refusal", args: "p_data jsonb", returns: "text", security: "invoker" },
537
625
  { 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" },
626
+ { name: "value_restore", args: "p_organization_id uuid, p_record_id uuid, p_field_key text, p_version integer", returns: "jsonb", security: "definer" },
627
+ { 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" },
538
628
  { name: "value_versions", args: "p_old jsonb, p_new jsonb", returns: "jsonb", security: "invoker" },
539
629
  { 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" },
540
630
  { 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" },
@@ -545,6 +635,8 @@ var STORE_DOORS = [
545
635
  { name: "visible_record_ids", args: "p_user_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level", returns: "TABLE(id uuid)", security: "definer" },
546
636
  { 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" },
547
637
  { name: "widget_kernel_id", args: "", returns: "uuid", security: "invoker" },
638
+ { name: "withheld_marker", args: "p_mask jsonb, p_key text", returns: "jsonb", security: "invoker" },
639
+ { name: "withheld_sentence", args: "p_mask jsonb, p_key text", returns: "text", security: "invoker" },
548
640
  { 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" },
549
641
  { 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" },
550
642
  { name: "work_approval_kinds", args: "", returns: "text[]", security: "invoker" },
@@ -585,6 +677,7 @@ var STORE_KNOBS = [
585
677
  { key: "code_paths_enabled", value: "false", type: "boolean" },
586
678
  { key: "consumer_chat_seeding_enabled", value: "false", type: "boolean" },
587
679
  { key: "consumer_checkout_enabled", value: "false", type: "boolean" },
680
+ { key: "consumer_context_enabled", value: "false", type: "boolean" },
588
681
  { key: "consumer_education_enabled", value: "false", type: "boolean" },
589
682
  { key: "consumer_extension_enabled", value: "false", type: "boolean" },
590
683
  { key: "consumer_grid_enabled", value: "false", type: "boolean" },
@@ -593,14 +686,21 @@ var STORE_KNOBS = [
593
686
  { key: "consumer_scopes_enabled", value: "false", type: "boolean" },
594
687
  { key: "containment_depth_ceiling", value: "16", type: "integer" },
595
688
  { key: "cross_organization_links", value: "false", type: "boolean" },
689
+ { key: "document_letterhead", value: "{}", type: "json" },
596
690
  { key: "document_max_bytes", value: "1048576", type: "integer" },
597
691
  { key: "emergency_door_guard", value: "false", type: "boolean" },
598
692
  { key: "emergency_door_sweep_enabled", value: "false", type: "boolean" },
693
+ { key: "enrichment_batch_ceiling", value: "200", type: "integer" },
694
+ { key: "enrichment_confidence_floor", value: "0.6", type: "number" },
695
+ { key: "enrichment_cost_cap_cents", value: "2000", type: "integer" },
696
+ { key: "enrichment_model", value: '"claude-fable-5-latest"', type: "string" },
697
+ { key: "enrichment_sensitivity_ceiling", value: '"internal"', type: "string" },
599
698
  { key: "entity_custom_fields_guard", value: "false", type: "boolean" },
600
699
  { key: "entity_types_guard", value: "false", type: "boolean" },
601
700
  { key: "external_principal_enabled", value: "false", type: "boolean" },
602
701
  { key: "field_index_guard", value: "false", type: "boolean" },
603
702
  { 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" },
703
+ { key: "inbound_domain", value: '"inbound.matrxserver.com"', type: "string" },
604
704
  { key: "member_default_level", value: '"viewer"', type: "enum" },
605
705
  { key: "member_default_visibility", value: '"all_records"', type: "enum" },
606
706
  { key: "records_tool_default", value: "true", type: "boolean" },
@@ -616,19 +716,20 @@ var STORE_KNOBS = [
616
716
  { key: "world_publish_enabled", value: "false", type: "boolean" }
617
717
  ];
618
718
  var STORE_REFUSAL_CODES = [
619
- { 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" },
620
- { 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" },
621
- { 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" },
719
+ { 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" },
720
+ { 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" },
721
+ { code: "22003", raised_by: "context_resolve" },
722
+ { 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" },
622
723
  { code: "22007", raised_by: "dashboard_window_sql" },
623
724
  { code: "22012", raised_by: "rule_eval" },
624
- { 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" },
625
- { 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" },
626
- { 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" },
627
- { 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" },
725
+ { 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" },
726
+ { 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" },
727
+ { 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" },
728
+ { 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" },
628
729
  { code: "40001", raised_by: "has_visibility_at" },
629
- { 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" },
730
+ { 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" },
630
731
  { code: "42703", raised_by: "entity_table,portal_declare" },
631
- { code: "53400", raised_by: "anon_rate_take,delete_cascade_closure,promote_field" },
732
+ { code: "53400", raised_by: "anon_rate_take,delete_cascade_closure,enrich_due,enrich_land,promote_field" },
632
733
  { code: "54001", raised_by: "record_delete" },
633
734
  { code: "PT409", raised_by: "record_update" }
634
735
  ];
@@ -1803,6 +1904,30 @@ var DOORS = {
1803
1904
  // are server-lane doors and a browser never calls them.
1804
1905
  forms: "forms",
1805
1906
  formDeclare: "form_declare",
1907
+ // PRODUCTS row 9 — "pull my spreadsheet in". W4-IO built `io_import_open` and
1908
+ // `io_import_rows`; lane IMPORT gave a run an IDENTITY (the file's sha-256, so
1909
+ // a re-import doubles nothing), a duplicate key, a policy, per-row outcomes
1910
+ // with the source row on them, and the type inference that reads THIS
1911
+ // organization — an address that belongs to a member is a person, a few
1912
+ // repeating words are a dropdown, a column of names that are all records of
1913
+ // another Table points at it. `importOpen` (the older, narrower way in) is
1914
+ // deliberately absent from this catalogue: `importBegin` is a superset and two
1915
+ // ways to start an import from one client is how they drift.
1916
+ importPlan: "io_import_plan",
1917
+ importBegin: "io_import_begin",
1918
+ importRows: "io_import_rows",
1919
+ importFinish: "io_import_finish",
1920
+ importReport: "io_import_report",
1921
+ imports: "io_imports",
1922
+ importForget: "io_import_forget",
1923
+ inferColumn: "io_infer_column",
1924
+ // DOOR-19 (P8) — the address a Table owns. `inboundMailLand` is deliberately
1925
+ // absent: it is the mail gateway's door, granted to `service_role` alone and
1926
+ // declared `non_client_lane`, and a browser that could land mail at an
1927
+ // arbitrary address would be writing into any table of any organization.
1928
+ inboundDeclare: "inbound_declare",
1929
+ inboundAddresses: "inbound_addresses",
1930
+ inboundSet: "inbound_set",
1806
1931
  // THE CLIENT PORTAL, OWNER'S SIDE (VIS-31 / PORTAL). A portal is how somebody
1807
1932
  // with NO membership is let in to see the records that name them. `portals`
1808
1933
  // lists them, `portalCard` opens one, `portalDeclare` states what it exposes,
@@ -1829,6 +1954,41 @@ var DOORS = {
1829
1954
  dashboardRun: "dashboard_run",
1830
1955
  dashboardStuck: "dashboard_stuck",
1831
1956
  dashboardDelete: "dashboard_delete",
1957
+ // PRODUCTS row 4 — "Who changed this price, and can I put it back?" The
1958
+ // history has been in the store since W3-HIST; until 2026-09-20 the only way
1959
+ // to ask for it was `io_revisions`, which answers a raw uuid for the author
1960
+ // and a list of KEYS for what moved. `recordHistory` answers the person (or
1961
+ // the agent AND the person it acted for), the operation in the word somebody
1962
+ // used, and every field with its before, its after, the Rule version that
1963
+ // produced it and its source. `fieldHistory` is the other half nobody ships:
1964
+ // one column's history across the whole Table.
1965
+ recordHistory: "record_history",
1966
+ fieldHistory: "field_history",
1967
+ // THE PUT-IT-BACK THREE. `restorePreview` names what will change BEFORE it
1968
+ // does; `restoreVersion` puts the whole record back and `valueRestore` puts
1969
+ // one column back (HIS-N-2). All three write a NEW version through the
1970
+ // record's own write path — no stored version is ever altered.
1971
+ restorePreview: "record_restore_preview",
1972
+ restoreVersion: "record_restore_version",
1973
+ valueRestore: "value_restore",
1974
+ // SCR-18. The store has had comment doors at the `commenter` rung all along;
1975
+ // these two add the people's NAMES and a mention that reaches somebody.
1976
+ // AGT-N-9 / PRODUCTS row 11 — "What's the history with this customer?" A
1977
+ // conversation can be ABOUT one record, and `recordScopeContext` is the ONE
1978
+ // door that answers everything such a chat is allowed to know in a single
1979
+ // round trip: the Fields with their (record, field, value version) triples,
1980
+ // the relations one hop out, the history, the comments and the Table's other
1981
+ // records — every piece assembled INSIDE the database through the read door
1982
+ // under this person's own field-level security. A Field the store masks is
1983
+ // named as withheld with the store's reason and never valued.
1984
+ recordScopeContext: "record_scope_context",
1985
+ conversationScope: "conversation_scope",
1986
+ conversationScopeBind: "conversation_scope_bind",
1987
+ conversationScopeUnbind: "conversation_scope_unbind",
1988
+ conversationScopeContext: "conversation_scope_context",
1989
+ commentThread: "comment_thread",
1990
+ commentWrite: "comment_write",
1991
+ commentResolve: "io_comment_resolve",
1832
1992
  // The eighth verb (AGT-N-8): a grouped, bucketed, filtered count/sum/avg/
1833
1993
  // min/max computed INSIDE the read door's own query, so a chart shows exactly
1834
1994
  // the rows this person may see and never fetches the ones they may not.
@@ -1845,6 +2005,10 @@ var DOORS = {
1845
2005
  // these rows, so "tell me when a patient arrives" can also be un-told.
1846
2006
  subscriptions: "subscriptions",
1847
2007
  subscriptionMute: "subscription_mute",
2008
+ // The cadence CATALOGUE a person's screen may ask for. `agg_subscription_cadences`
2009
+ // above is the notifier's own and holds no client grant; this door delegates to
2010
+ // it, so a picker and the digest runner can never offer different words.
2011
+ subscriptionCadences: "subscription_cadences",
1848
2012
  // The doc doors: a template is saved, a render is written once and frozen,
1849
2013
  // and a signature is checked against the exact bytes that were signed.
1850
2014
  docTemplateSave: "doc_template_save",
@@ -1854,6 +2018,15 @@ var DOORS = {
1854
2018
  docUnresolvedTokens: "doc_unresolved_tokens",
1855
2019
  docSign: "doc_sign",
1856
2020
  docSignatureIntact: "doc_signature_intact",
2021
+ // THE PLURAL ACTS. Until 2026-09-20 this package read `custom.doc_template`,
2022
+ // `custom.doc_render` and `custom.doc_signature` with a direct PostgREST
2023
+ // `.from()`, and all three hold NO client SELECT — so every list in product #5
2024
+ // opened on "permission denied for view doc_template". A list is a DOOR, never
2025
+ // a grant on the thing behind it (DOORS-TWO).
2026
+ docTemplates: "doc_templates",
2027
+ docTemplateDelete: "doc_template_delete",
2028
+ docRenders: "doc_renders",
2029
+ docSignatures: "doc_signatures",
1857
2030
  // THE ANONYMOUS LANE (W4-ANON). It landed, and it landed as SEVEN doors
1858
2031
  // rather than the one this package had guessed at: a token is issued and
1859
2032
  // verified separately from the write it authorises, a form is published
@@ -1949,6 +2122,15 @@ var BY_SQLSTATE = {
1949
2122
  // live-door census caught it — the same way 42703 arrived, which is the
1950
2123
  // census working rather than a guess.
1951
2124
  "22007": "invalid_argument",
2125
+ // 22003 — a number the store could not hold at the size it was handed. It is
2126
+ // raised by `custom.context_resolve`, which is given a window or a depth a
2127
+ // caller wrote, so the class is the same one 22P02, 42703 and 22007 already
2128
+ // are: the CALL named a value the shape does not accept, and the store's own
2129
+ // sentence names the number and the range. Added 2026-09-20 (lane GRID-TWO)
2130
+ // when the live-door census caught the release gate red on it — which is the
2131
+ // census working, and the fourth time it has been the thing that found a new
2132
+ // refusal class rather than a person guessing one.
2133
+ "22003": "invalid_argument",
1952
2134
  "02000": "not_found",
1953
2135
  "23503": "missing_reference",
1954
2136
  "23505": "already_exists",
@@ -2496,6 +2678,98 @@ function createRecordsClient(config) {
2496
2678
  "formDeclare"
2497
2679
  );
2498
2680
  },
2681
+ async importPlan(args) {
2682
+ return callDoor(
2683
+ DOORS.importPlan,
2684
+ { p_organization_id: org, p_table_id: args.table_id, p_columns: args.columns },
2685
+ "importPlan"
2686
+ );
2687
+ },
2688
+ async importBegin(args) {
2689
+ return callDoor(
2690
+ DOORS.importBegin,
2691
+ {
2692
+ p_organization_id: org,
2693
+ p_table_id: args.table_id,
2694
+ p_format: args.format ?? "csv",
2695
+ p_source_name: args.source_name ?? null,
2696
+ p_source_columns: args.source_columns ?? [],
2697
+ p_file_hash: args.file_hash ?? null,
2698
+ p_policy: args.policy ?? {},
2699
+ p_dedupe_key: args.dedupe_key ?? null,
2700
+ p_file_bytes: args.file_bytes ?? null,
2701
+ p_force: args.force ?? false
2702
+ },
2703
+ "importBegin"
2704
+ );
2705
+ },
2706
+ async importRows(args) {
2707
+ return callDoor(
2708
+ DOORS.importRows,
2709
+ {
2710
+ p_organization_id: org,
2711
+ p_import_id: args.import_id,
2712
+ p_rows: args.rows,
2713
+ p_mapping: args.mapping ?? {}
2714
+ },
2715
+ "importRows"
2716
+ );
2717
+ },
2718
+ async importFinish(args) {
2719
+ return callDoor(
2720
+ DOORS.importFinish,
2721
+ { p_organization_id: org, p_import_id: args.import_id, p_unmapped: args.unmapped ?? null },
2722
+ "importFinish"
2723
+ );
2724
+ },
2725
+ async importReport(args) {
2726
+ return callDoor(
2727
+ DOORS.importReport,
2728
+ {
2729
+ p_organization_id: org,
2730
+ p_import_id: args.import_id,
2731
+ p_state: args.state ?? "refused",
2732
+ p_limit: args.limit ?? 100,
2733
+ p_offset: args.offset ?? 0
2734
+ },
2735
+ "importReport"
2736
+ );
2737
+ },
2738
+ async imports(args) {
2739
+ return callDoor(
2740
+ DOORS.imports,
2741
+ { p_organization_id: org, p_table_id: args?.table_id ?? null, p_limit: args?.limit ?? 25 },
2742
+ "imports"
2743
+ );
2744
+ },
2745
+ async importForget(args) {
2746
+ return callDoor(
2747
+ DOORS.importForget,
2748
+ { p_organization_id: org, p_import_id: args.import_id },
2749
+ "importForget"
2750
+ );
2751
+ },
2752
+ async inboundDeclare(args) {
2753
+ return callDoor(
2754
+ DOORS.inboundDeclare,
2755
+ { p_organization_id: org, p_table_id: args.table_id, p_label: args.label ?? null },
2756
+ "inboundDeclare"
2757
+ );
2758
+ },
2759
+ async inboundAddresses(args) {
2760
+ return callDoor(
2761
+ DOORS.inboundAddresses,
2762
+ { p_organization_id: org, p_table_id: args?.table_id ?? null },
2763
+ "inboundAddresses"
2764
+ );
2765
+ },
2766
+ async inboundSet(args) {
2767
+ return callDoor(
2768
+ DOORS.inboundSet,
2769
+ { p_organization_id: org, p_inbound_id: args.inbound_id, p_enabled: args.enabled },
2770
+ "inboundSet"
2771
+ );
2772
+ },
2499
2773
  async portals() {
2500
2774
  return callDoor(DOORS.portals, { p_organization_id: org }, "portals");
2501
2775
  },
@@ -2663,6 +2937,13 @@ function createRecordsClient(config) {
2663
2937
  async aggSubscriptionCadences() {
2664
2938
  return callDoor(DOORS.aggSubscriptionCadences, {}, "aggSubscriptionCadences");
2665
2939
  },
2940
+ async subscriptionCadences() {
2941
+ return callDoor(
2942
+ DOORS.subscriptionCadences,
2943
+ { p_organization_id: org },
2944
+ "subscriptionCadences"
2945
+ );
2946
+ },
2666
2947
  async subscriptions(args) {
2667
2948
  return callDoor(
2668
2949
  DOORS.subscriptions,
@@ -2727,32 +3008,52 @@ function createRecordsClient(config) {
2727
3008
  "docSign"
2728
3009
  );
2729
3010
  },
3011
+ // A LIST IS A DOOR, NEVER A GRANT ON THE THING BEHIND IT. These three used to
3012
+ // read `custom.doc_template`, `custom.doc_render` and `custom.doc_signature`
3013
+ // with a direct PostgREST `.from()`, and none of the three holds a client
3014
+ // SELECT — so a person could save a template they could never list and
3015
+ // render a document they could never find again, and every document screen
3016
+ // opened on "permission denied for view doc_template". The doors below
3017
+ // narrow inside the definer, after the ladder has spoken (DOORS-TWO).
2730
3018
  async docTemplates({ table_id }) {
2731
- const response = await config.dataSource.schema(schema).from("doc_template").select("*").eq("organization_id", org).eq("renders_table_id", table_id).order("name");
2732
- if (response.error) {
2733
- const refusal = mapPgError(response.error, "docTemplates");
2734
- scream({ code: refusal.code, message: refusal.message, ...refusal.hint ? { hint: refusal.hint } : {}, where: "docTemplates" });
2735
- return err(refusal);
2736
- }
2737
- return ok(response.data ?? []);
3019
+ const answered = await callDoor(
3020
+ DOORS.docTemplates,
3021
+ { p_organization_id: org, p_table_id: table_id },
3022
+ "docTemplates"
3023
+ );
3024
+ if (!answered.ok) return answered;
3025
+ return ok(
3026
+ answered.data.map((row) => ({ ...row, id: row["template_id"] }))
3027
+ );
3028
+ },
3029
+ async docTemplateDelete({ template_id }) {
3030
+ return callDoor(
3031
+ DOORS.docTemplateDelete,
3032
+ { p_organization_id: org, p_template_id: template_id },
3033
+ "docTemplateDelete"
3034
+ );
2738
3035
  },
2739
3036
  async docRenders({ record_id }) {
2740
- 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 });
2741
- if (response.error) {
2742
- const refusal = mapPgError(response.error, "docRenders");
2743
- scream({ code: refusal.code, message: refusal.message, ...refusal.hint ? { hint: refusal.hint } : {}, where: "docRenders" });
2744
- return err(refusal);
2745
- }
2746
- return ok(response.data ?? []);
3037
+ const answered = await callDoor(
3038
+ DOORS.docRenders,
3039
+ { p_organization_id: org, p_record_id: record_id },
3040
+ "docRenders"
3041
+ );
3042
+ if (!answered.ok) return answered;
3043
+ return ok(
3044
+ answered.data.map((row) => ({ ...row, id: row["render_id"] }))
3045
+ );
2747
3046
  },
2748
3047
  async docSignatures({ record_id }) {
2749
- 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 });
2750
- if (response.error) {
2751
- const refusal = mapPgError(response.error, "docSignatures");
2752
- scream({ code: refusal.code, message: refusal.message, ...refusal.hint ? { hint: refusal.hint } : {}, where: "docSignatures" });
2753
- return err(refusal);
2754
- }
2755
- return ok(response.data ?? []);
3048
+ const answered = await callDoor(
3049
+ DOORS.docSignatures,
3050
+ { p_organization_id: org, p_record_id: record_id },
3051
+ "docSignatures"
3052
+ );
3053
+ if (!answered.ok) return answered;
3054
+ return ok(
3055
+ answered.data.map((row) => ({ ...row, id: row["signature_id"] }))
3056
+ );
2756
3057
  },
2757
3058
  async recordValuesVersioned({ record_id }) {
2758
3059
  return readValues(record_id);
@@ -2764,6 +3065,152 @@ function createRecordsClient(config) {
2764
3065
  "revisions"
2765
3066
  );
2766
3067
  },
3068
+ async recordScopeContext({ record_id, relations, history, siblings }) {
3069
+ return callDoor(
3070
+ DOORS.recordScopeContext,
3071
+ {
3072
+ p_organization_id: org,
3073
+ p_record_id: record_id,
3074
+ p_relations: relations ?? 12,
3075
+ p_history: history ?? 15,
3076
+ p_siblings: siblings ?? 8
3077
+ },
3078
+ "recordScopeContext"
3079
+ );
3080
+ },
3081
+ async conversationScope({ conversation_id }) {
3082
+ return callDoor(
3083
+ DOORS.conversationScope,
3084
+ { p_organization_id: org, p_conversation_id: conversation_id },
3085
+ "conversationScope"
3086
+ );
3087
+ },
3088
+ async conversationScopeBind({ conversation_id, record_id }) {
3089
+ return callDoor(
3090
+ DOORS.conversationScopeBind,
3091
+ {
3092
+ p_organization_id: org,
3093
+ p_conversation_id: conversation_id,
3094
+ p_record_id: record_id
3095
+ },
3096
+ "conversationScopeBind"
3097
+ );
3098
+ },
3099
+ async conversationScopeUnbind({ conversation_id }) {
3100
+ return callDoor(
3101
+ DOORS.conversationScopeUnbind,
3102
+ { p_organization_id: org, p_conversation_id: conversation_id },
3103
+ "conversationScopeUnbind"
3104
+ );
3105
+ },
3106
+ async conversationScopeContext({ conversation_id, relations, history, siblings }) {
3107
+ return callDoor(
3108
+ DOORS.conversationScopeContext,
3109
+ {
3110
+ p_organization_id: org,
3111
+ p_conversation_id: conversation_id,
3112
+ p_relations: relations ?? 12,
3113
+ p_history: history ?? 15,
3114
+ p_siblings: siblings ?? 8
3115
+ },
3116
+ "conversationScopeContext"
3117
+ );
3118
+ },
3119
+ async recordHistory({ record_id, limit, offset }) {
3120
+ return callDoor(
3121
+ DOORS.recordHistory,
3122
+ {
3123
+ p_organization_id: org,
3124
+ p_record_id: record_id,
3125
+ p_limit: limit ?? 200,
3126
+ p_offset: offset ?? 0
3127
+ },
3128
+ "recordHistory"
3129
+ );
3130
+ },
3131
+ async fieldHistory({ table_id, field_key, limit, offset, record_id }) {
3132
+ return callDoor(
3133
+ DOORS.fieldHistory,
3134
+ {
3135
+ p_organization_id: org,
3136
+ p_table_id: table_id,
3137
+ p_field_key: field_key,
3138
+ p_limit: limit ?? 100,
3139
+ p_offset: offset ?? 0,
3140
+ p_record_id: record_id ?? null
3141
+ },
3142
+ "fieldHistory"
3143
+ );
3144
+ },
3145
+ async restorePreview({ record_id, version, field_key }) {
3146
+ return callDoor(
3147
+ DOORS.restorePreview,
3148
+ {
3149
+ p_organization_id: org,
3150
+ p_record_id: record_id,
3151
+ p_version: version,
3152
+ p_field_key: field_key ?? null
3153
+ },
3154
+ "restorePreview"
3155
+ );
3156
+ },
3157
+ async restoreVersion({ record_id, version }) {
3158
+ return callDoor(
3159
+ DOORS.restoreVersion,
3160
+ { p_organization_id: org, p_record_id: record_id, p_version: version },
3161
+ "restoreVersion"
3162
+ );
3163
+ },
3164
+ async valueRestore({ record_id, field_key, version }) {
3165
+ return callDoor(
3166
+ DOORS.valueRestore,
3167
+ {
3168
+ p_organization_id: org,
3169
+ p_record_id: record_id,
3170
+ p_field_key: field_key,
3171
+ p_version: version
3172
+ },
3173
+ "valueRestore"
3174
+ );
3175
+ },
3176
+ async commentThread({ record_id, include_resolved }) {
3177
+ return callDoor(
3178
+ DOORS.commentThread,
3179
+ {
3180
+ p_organization_id: org,
3181
+ p_record_id: record_id,
3182
+ p_include_resolved: include_resolved ?? false
3183
+ },
3184
+ "commentThread"
3185
+ );
3186
+ },
3187
+ async commentWrite({ record_id, body, field_key, parent_comment_id, mentions }) {
3188
+ return callDoor(
3189
+ DOORS.commentWrite,
3190
+ {
3191
+ p_organization_id: org,
3192
+ p_record_id: record_id,
3193
+ p_body: body,
3194
+ // THE ANCHOR IS WHERE A FIELD COMMENT LIVES. `custom.io_comment` has
3195
+ // always carried it; nothing was ever putting a Field in it.
3196
+ p_anchor: field_key ? { field_key } : {},
3197
+ p_parent_comment_id: parent_comment_id ?? null,
3198
+ p_mentions: mentions && mentions.length > 0 ? mentions : null
3199
+ },
3200
+ "commentWrite"
3201
+ );
3202
+ },
3203
+ async commentResolve({ comment_id, resolved }) {
3204
+ return callDoor(
3205
+ DOORS.commentResolve,
3206
+ {
3207
+ p_organization_id: org,
3208
+ p_comment_id: comment_id,
3209
+ p_resolved: resolved ?? true
3210
+ },
3211
+ "commentResolve"
3212
+ );
3213
+ },
2767
3214
  async docSignatureIntact({ signature_id }) {
2768
3215
  return callDoor(
2769
3216
  DOORS.docSignatureIntact,
@@ -3665,4 +4112,9 @@ function portalPath(slug) {
3665
4112
  function measureKey(measure) {
3666
4113
  return measure.op === "count" ? "count" : `${measure.op}_${measure.key ?? ""}`;
3667
4114
  }
4115
+
4116
+ // src/record-scope.ts
4117
+ function scopeChip(scope) {
4118
+ return scope.title ? `About: ${scope.title}` : "About: this record";
4119
+ }
3668
4120
  //# sourceMappingURL=index.cjs.map