@ai-matrx/records 0.56.0 → 0.57.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2292,6 +2292,11 @@ function highestLevel(left, right) {
2292
2292
  return ORDINAL[left] >= ORDINAL[right] ? left : right;
2293
2293
  }
2294
2294
 
2295
+ // src/field.ts
2296
+ function allowsOtherValues(field) {
2297
+ return field.type === "list" && field.config?.["allow_other"] === true;
2298
+ }
2299
+
2295
2300
  // src/choice.ts
2296
2301
  var UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
2297
2302
  function optionKey(option) {
@@ -2682,6 +2687,15 @@ async function exportPageXlsx(page, labels = {}, sheetLabel = "Records") {
2682
2687
  }
2683
2688
  return XLSX.write(workbook, { type: "array", bookType: "xlsx", compression: true });
2684
2689
  }
2690
+ function recordChangeTrigger(tableId, options = {}) {
2691
+ return {
2692
+ type: "event",
2693
+ entity_type: `custom_record:${tableId}`,
2694
+ table_id: tableId,
2695
+ ...options.actions && options.actions.length > 0 ? { actions: options.actions } : {},
2696
+ ...options.changedFields && options.changedFields.length > 0 ? { changed_fields: options.changedFields } : {}
2697
+ };
2698
+ }
2685
2699
 
2686
2700
  // src/capture-queue.ts
2687
2701
  var DB_NAME = "matrx-capture";
@@ -3063,6 +3077,48 @@ var RULE_NODE_KINDS = [
3063
3077
  { node: "div", evaluated_by: "W1-RULE" },
3064
3078
  { node: "eq", evaluated_by: "W1-RULE" },
3065
3079
  { node: "field", evaluated_by: "W1-RULE" },
3080
+ { node: "fx.abs", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3081
+ { node: "fx.add", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3082
+ { node: "fx.and", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3083
+ { node: "fx.autonumber", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3084
+ { node: "fx.average", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3085
+ { node: "fx.blank", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3086
+ { node: "fx.concatenate", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3087
+ { node: "fx.contains", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3088
+ { node: "fx.created_time", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3089
+ { node: "fx.dateadd", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3090
+ { node: "fx.datediff", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3091
+ { node: "fx.day", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3092
+ { node: "fx.div", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3093
+ { node: "fx.eq", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3094
+ { node: "fx.gt", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3095
+ { node: "fx.gte", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3096
+ { node: "fx.if", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3097
+ { node: "fx.isblank", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3098
+ { node: "fx.left", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3099
+ { node: "fx.len", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3100
+ { node: "fx.lower", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3101
+ { node: "fx.lt", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3102
+ { node: "fx.lte", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3103
+ { node: "fx.max", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3104
+ { node: "fx.min", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3105
+ { node: "fx.mod", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3106
+ { node: "fx.modified_time", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3107
+ { node: "fx.month", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3108
+ { node: "fx.mul", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3109
+ { node: "fx.ne", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3110
+ { node: "fx.neg", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3111
+ { node: "fx.not", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3112
+ { node: "fx.now", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3113
+ { node: "fx.or", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3114
+ { node: "fx.right", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3115
+ { node: "fx.round", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3116
+ { node: "fx.sub", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3117
+ { node: "fx.sum", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3118
+ { node: "fx.today", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3119
+ { node: "fx.trim", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3120
+ { node: "fx.upper", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3121
+ { node: "fx.year", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
3066
3122
  { node: "gt", evaluated_by: "W1-RULE" },
3067
3123
  { node: "gte", evaluated_by: "W1-RULE" },
3068
3124
  { node: "length", evaluated_by: "W1-RULE" },
@@ -3094,6 +3150,8 @@ var KERNEL_TABLES = [
3094
3150
  ];
3095
3151
  var STORE_DOORS = [
3096
3152
  { name: "absence_reasons", args: "", returns: "text[]", security: "invoker" },
3153
+ { name: "action_declare", args: "p_organization_id uuid, p_table_id uuid, p_actions jsonb", returns: "jsonb", security: "definer" },
3154
+ { name: "action_run", args: "p_organization_id uuid, p_action_id uuid, p_record_ids uuid[]", returns: "jsonb", security: "definer" },
3097
3155
  { name: "actor_vocabulary", args: "", returns: "text[]", security: "invoker" },
3098
3156
  { name: "actor_word", args: "p_declared text", returns: "text", security: "invoker" },
3099
3157
  { name: "addressed_cap", args: "p_user_id uuid, p_type text, p_id uuid, p_organization_id uuid DEFAULT NULL::uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "permission_level", security: "definer" },
@@ -3145,6 +3203,7 @@ var STORE_DOORS = [
3145
3203
  { name: "assert_organization_admin", args: "p_organization_id uuid, p_door text, p_what text", returns: "void", security: "invoker" },
3146
3204
  { name: "assert_organization_wall", args: "p_kind text, p_organization_id uuid, p_row jsonb", returns: "void", security: "invoker" },
3147
3205
  { name: "assert_store_door", args: "p_organization_id uuid, p_door text", returns: "void", security: "invoker" },
3206
+ { name: "autonumber_backfill", args: "p_organization_id uuid, p_field_id uuid", returns: "jsonb", security: "definer" },
3148
3207
  { name: "booking_cancel", args: "p_booking_ref text, p_origin text DEFAULT NULL::text", returns: "TABLE(booking_ref text, record_id uuid, slot_key text, state text, message text)", security: "definer" },
3149
3208
  { name: "booking_confirm", args: "p_form_id uuid, p_hold_id uuid, p_origin text, p_payload jsonb, p_bucket text, p_honeypot text DEFAULT NULL::text, p_client_key text DEFAULT NULL::text", returns: "TABLE(booking_ref text, record_id uuid, submission_id uuid, slot_key text, slot_at timestamp with time zone, state text, message text)", security: "definer" },
3150
3209
  { name: "booking_declare", args: "p_organization_id uuid, p_table_id uuid, p_title text, p_questions jsonb, p_availability jsonb DEFAULT '{}'::jsonb, p_presentation jsonb DEFAULT '{}'::jsonb, p_submission_cap integer DEFAULT NULL::integer, p_quarantine_rule_id uuid DEFAULT NULL::uuid, p_notify_rule_id uuid DEFAULT NULL::uuid, p_form_id uuid DEFAULT NULL::uuid, p_slug text DEFAULT NULL::text, p_home_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
@@ -3217,6 +3276,8 @@ var STORE_DOORS = [
3217
3276
  { name: "dashboard_stuck", args: "p_organization_id uuid, p_table_id uuid, p_state_key text, p_days integer DEFAULT 14, p_filter jsonb DEFAULT '{}'::jsonb, p_limit integer DEFAULT 50, p_required text DEFAULT 'viewer'::text", returns: "TABLE(record_id uuid, title text, state text, last_changed_at timestamp with time zone, days_unchanged numeric, measured_from text)", security: "definer" },
3218
3277
  { name: "dashboard_window_sql", args: "p_key text, p_window jsonb", returns: "text", security: "invoker" },
3219
3278
  { name: "dashboards", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "TABLE(dashboard_id uuid, table_id uuid, name text, blocks jsonb, presentation jsonb, block_count integer, version integer, created_at timestamp with time zone, updated_at timestamp with time zone)", security: "definer" },
3279
+ { name: "decoration_colors", args: "", returns: "text[]", security: "invoker" },
3280
+ { name: "decoration_rule_ops", args: "", returns: "TABLE(op text, takes_value boolean, label text)", security: "invoker" },
3220
3281
  { name: "delete_cascade_closure", args: "p_organization_id uuid, p_record_id uuid", returns: "uuid[]", security: "invoker" },
3221
3282
  { name: "delete_preview", args: "p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "definer" },
3222
3283
  { name: "delete_rule", args: "p_organization_id uuid, p_record_id uuid, p_apply boolean DEFAULT true", returns: "jsonb", security: "definer" },
@@ -3226,6 +3287,7 @@ var STORE_DOORS = [
3226
3287
  { name: "derived_value", args: "p_organization_id uuid, p_record_id uuid, p_field_data jsonb, p_values jsonb DEFAULT NULL::jsonb", returns: "jsonb", security: "invoker" },
3227
3288
  { name: "derived_values", args: "p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "invoker" },
3228
3289
  { name: "derived_values_of", args: "v_rec custom.record", returns: "jsonb", security: "invoker" },
3290
+ { name: "display_format_ids", args: "", returns: "text[]", security: "invoker" },
3229
3291
  { name: "doc_content_hash", args: "p_body text", returns: "text", security: "invoker" },
3230
3292
  { name: "doc_format_value", args: "p_field_data jsonb, p_value jsonb", returns: "text", security: "invoker" },
3231
3293
  { name: "doc_letterhead", args: "p_organization_id uuid", returns: "jsonb", security: "definer" },
@@ -3304,8 +3366,13 @@ var STORE_DOORS = [
3304
3366
  { name: "form_slug", args: "p_organization_id uuid, p_title text, p_form_id uuid DEFAULT NULL::uuid", returns: "text", security: "invoker" },
3305
3367
  { name: "form_submit", args: "p_form_id uuid, p_origin text, p_payload jsonb, p_bucket text, p_honeypot text DEFAULT NULL::text, p_client_key text DEFAULT NULL::text", returns: "TABLE(submission_id uuid, record_id uuid, state text, message text)", security: "definer" },
3306
3368
  { name: "forms", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "TABLE(form_id uuid, table_id uuid, title text, slug text, published_at timestamp with time zone, closed_at timestamp with time zone, submission_cap integer, responses bigint, in_table bigint, held bigint, rejected bigint, state text, quarantine_rule_id uuid, notify_rule_id uuid, presentation jsonb)", security: "definer" },
3369
+ { name: "formula_eval", args: "p_organization_id uuid, p_expr jsonb, p_values jsonb, p_context jsonb DEFAULT '{}'::jsonb", returns: "jsonb", security: "invoker" },
3370
+ { name: "formula_node_kinds", args: "", returns: "TABLE(node text, min_args integer, max_args integer, result text, signature text, says text)", security: "invoker" },
3371
+ { name: "formula_parse", args: "p_organization_id uuid, p_table_id uuid, p_text text", returns: "jsonb", security: "definer" },
3307
3372
  { name: "formula_value", args: "p_organization_id uuid, p_record_id uuid, p_field_data jsonb, p_values jsonb DEFAULT NULL::jsonb", returns: "jsonb", security: "invoker" },
3308
3373
  { name: "freshness_verdict", args: "p_written_at timestamp with time zone, p_ceiling_seconds numeric", returns: "jsonb", security: "definer" },
3374
+ { name: "grid_layout", args: "p_organization_id uuid, p_table_id uuid, p_view_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
3375
+ { name: "grid_layout_check", args: "p_layout jsonb, p_scope text DEFAULT 'view'::text", returns: "jsonb", security: "invoker" },
3309
3376
  { name: "guard_refusals_are_complete", args: "", returns: "TABLE(guard text, said text)", security: "invoker" },
3310
3377
  { 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" },
3311
3378
  { 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" },
@@ -3321,6 +3388,7 @@ var STORE_DOORS = [
3321
3388
  { name: "history_retention_set", args: "p_organization_id uuid, p_table_id uuid, p_days integer", returns: "integer", security: "definer" },
3322
3389
  { name: "home_add", args: "p_organization_id uuid, p_table_id uuid, p_home_record_id uuid", returns: "uuid", security: "definer" },
3323
3390
  { name: "home_relations", args: "", returns: "TABLE(table_id uuid, home_record_id uuid, organization_id uuid, relation_id uuid)", security: "invoker" },
3391
+ { name: "hub_changed_by", args: "p_organization_id uuid, p_kind text, p_ids uuid[]", returns: "TABLE(id uuid, at timestamp with time zone, who text)", security: "definer" },
3324
3392
  { name: "inbound_addresses", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
3325
3393
  { name: "inbound_declare", args: "p_organization_id uuid, p_table_id uuid, p_label text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
3326
3394
  { name: "inbound_domain", args: "p_organization_id uuid", returns: "text", security: "invoker" },
@@ -3389,6 +3457,7 @@ var STORE_DOORS = [
3389
3457
  { name: "migrate_promote", args: "p_organization_id uuid, p_table_id uuid, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
3390
3458
  { name: "migrate_purge", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_dry_run boolean DEFAULT true", returns: "jsonb", security: "definer" },
3391
3459
  { name: "migrate_purge_hard", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_compliance_reason text DEFAULT NULL::text, p_chunk integer DEFAULT 200, p_dry_run boolean DEFAULT true", returns: "jsonb", security: "definer" },
3460
+ { name: "migrate_purge_hard_request", args: "p_organization_id uuid, p_table_id uuid, p_compliance_reason text", returns: "void", security: "definer" },
3392
3461
  { name: "migrate_reclass", args: "p_organization_id uuid, p_id uuid, p_to text DEFAULT 'field'::text, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
3393
3462
  { name: "migrate_rename", args: "p_organization_id uuid, p_id uuid, p_to text, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
3394
3463
  { name: "migrate_reparent", args: "p_organization_id uuid, p_id uuid, p_parent_id uuid, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
@@ -3424,6 +3493,7 @@ var STORE_DOORS = [
3424
3493
  { name: "pipeline_pending", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
3425
3494
  { name: "pipeline_read", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
3426
3495
  { name: "pipeline_transition_refusal", args: "p_organization_id uuid, p_record_id uuid, p_to text", returns: "jsonb", security: "definer" },
3496
+ { name: "pipelines", args: "p_organization_id uuid", returns: "TABLE(table_id uuid, table_name text, stage_field text, stage_label text, stages integer, rules integer, broken text, updated_at timestamp with time zone, updated_by uuid)", security: "definer" },
3427
3497
  { name: "portal_admits", args: "p_organization_id uuid, p_user_id uuid DEFAULT NULL::uuid", returns: "boolean", security: "definer" },
3428
3498
  { name: "portal_archive", args: "p_organization_id uuid, p_portal_id uuid, p_confirm_title text, p_reason text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
3429
3499
  { name: "portal_card", args: "p_organization_id uuid, p_portal_id uuid", returns: "jsonb", security: "definer" },
@@ -3521,12 +3591,16 @@ var STORE_DOORS = [
3521
3591
  { name: "refusals_claiming_a_level_never_asked", args: "", returns: "TABLE(function_name text, identity_args text, why text)", security: "invoker" },
3522
3592
  { name: "relation_carry", args: "p_organization_id uuid, p_container_id uuid, p_item_id uuid", returns: "uuid", security: "definer" },
3523
3593
  { name: "relation_edges_withdraw", args: "p_organization_id uuid, p_field_ids uuid[], p_why text", returns: "integer", security: "definer" },
3594
+ { name: "relation_halves_disagreements", args: "p_organization_id uuid DEFAULT NULL::uuid, p_record_id uuid DEFAULT NULL::uuid", returns: "TABLE(organization_id uuid, record_id uuid, field_key text, field_id uuid, target_id uuid, direction text, remedy text, why text)", security: "definer" },
3595
+ { name: "relation_halves_repair", args: "p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "definer" },
3596
+ { name: "relation_kernel_record", args: "p_organization_id uuid, p_kernel_table_id uuid, p_id uuid", returns: "uuid", security: "definer" },
3524
3597
  { name: "relation_own", args: "p_organization_id uuid, p_owner_id uuid, p_target_id uuid", returns: "uuid", security: "definer" },
3525
3598
  { name: "relation_target_card", args: "p_organization_id uuid, p_record_id uuid, p_via_key text DEFAULT NULL::text", returns: "TABLE(target_id uuid, target_organization_id uuid, is_foreign boolean, masked boolean, reader_level permission_level, card jsonb, why text)", security: "definer" },
3526
3599
  { name: "relation_target_external", args: "p_connection_token text, p_external_table text, p_external_key text", returns: "jsonb", security: "definer" },
3527
3600
  { name: "relation_target_ours", args: "p_entity_token text, p_row_id uuid", returns: "jsonb", security: "definer" },
3528
3601
  { name: "relation_targets", args: "p_organization_id uuid, p_record_id uuid, p_via_key text", returns: "SETOF uuid", security: "definer" },
3529
3602
  { name: "relation_uncarry", args: "p_organization_id uuid, p_container_id uuid, p_item_id uuid", returns: "integer", security: "definer" },
3603
+ { name: "relation_value_target_ok", args: "p_organization_id uuid, p_field_id uuid, p_field_data jsonb, p_target_id uuid", returns: "boolean", security: "invoker" },
3530
3604
  { name: "relation_words", args: "p_organization_id uuid, p_field_id uuid, p_value text", returns: "text", security: "definer" },
3531
3605
  { name: "relation_words_many", args: "p_organization_id uuid, p_field_id uuid, p_record_ids uuid[]", returns: "TABLE(record_id uuid, words text)", security: "definer" },
3532
3606
  { name: "reopen_declared_doors", args: "", returns: "TABLE(reopened text)", security: "definer" },
@@ -3535,6 +3609,7 @@ var STORE_DOORS = [
3535
3609
  { name: "resolve_id", args: "p_organization_id uuid, p_id uuid", returns: "uuid", security: "invoker" },
3536
3610
  { name: "retired_actor_words", args: "", returns: "jsonb", security: "invoker" },
3537
3611
  { name: "rollup_value", args: "p_organization_id uuid, p_record_id uuid, p_field_data jsonb", returns: "jsonb", security: "invoker" },
3612
+ { name: "row_actions", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
3538
3613
  { name: "rule_applies", args: "p_organization_id uuid, p_rule_id uuid, p_record_id uuid", returns: "jsonb", security: "invoker" },
3539
3614
  { name: "rule_context", args: "p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "invoker" },
3540
3615
  { name: "rule_declare", args: "p_organization_id uuid, p_spec jsonb, p_rule_id uuid DEFAULT NULL::uuid", returns: "uuid", security: "definer" },
@@ -3560,6 +3635,7 @@ var STORE_DOORS = [
3560
3635
  { name: "share_revoke", args: "p_organization_id uuid, p_subject_id uuid, p_principal_kind text, p_principal_id uuid", returns: "jsonb", security: "definer" },
3561
3636
  { name: "share_subject_name", args: "p_organization_id uuid, p_type text, p_id uuid", returns: "text", security: "definer" },
3562
3637
  { 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" },
3638
+ { name: "shares_outside", args: "p_organization_id uuid", returns: "TABLE(invitation_id uuid, table_id uuid, table_name text, email text, level text, level_label text, status text, joined boolean, expired boolean, invited_at timestamp with time zone, expires_at timestamp with time zone, say text)", security: "definer" },
3563
3639
  { name: "sign_request_cancel", args: "p_organization_id uuid, p_request_id uuid, p_reason text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
3564
3640
  { 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" },
3565
3641
  { 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" },
@@ -3593,6 +3669,9 @@ var STORE_DOORS = [
3593
3669
  { name: "table_column_source", args: "p_organization_id uuid, p_table_id uuid", returns: "text", security: "invoker" },
3594
3670
  { name: "table_contents", args: "p_organization_id uuid, p_table_id uuid", returns: "TABLE(record_id uuid, kind text, goes_at integer)", security: "invoker" },
3595
3671
  { name: "table_declare", args: "p_organization_id uuid, p_spec jsonb", returns: "uuid", security: "definer" },
3672
+ { name: "table_decorate", args: "p_organization_id uuid, p_table_id uuid, p_path text[], p_value jsonb DEFAULT NULL::jsonb", returns: "jsonb", security: "definer" },
3673
+ { name: "table_decorations", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
3674
+ { name: "table_from_example", args: "p_organization_id uuid, p_home_id uuid, p_example jsonb", returns: "jsonb", security: "definer" },
3596
3675
  { name: "table_has_a_visible_record", args: "p_user uuid, p_organization_id uuid, p_table_id uuid", returns: "boolean", security: "definer" },
3597
3676
  { name: "table_is_live", args: "p_organization_id uuid, p_table_id uuid", returns: "boolean", security: "invoker" },
3598
3677
  { name: "table_is_options_table", args: "p_organization_id uuid, p_table_id uuid", returns: "boolean", security: "invoker" },
@@ -3610,9 +3689,13 @@ var STORE_DOORS = [
3610
3689
  { name: "table_storage", args: "p_organization_id uuid, p_table_id uuid", returns: "text", security: "invoker" },
3611
3690
  { name: "table_type_field", args: "p_organization_id uuid, p_table_id uuid", returns: "text", security: "definer" },
3612
3691
  { name: "table_unique_rule_fields", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "invoker" },
3692
+ { name: "table_webhook_archive", args: "p_organization_id uuid, p_webhook_id uuid", returns: "boolean", security: "definer" },
3693
+ { name: "table_webhook_declare", args: "p_organization_id uuid, p_table_id uuid, p_target_url text, p_events text[] DEFAULT NULL::text[], p_description text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
3694
+ { name: "table_webhooks", args: "p_organization_id uuid, p_table_id uuid", returns: "TABLE(webhook_id uuid, target_url text, description text, events text[], is_active boolean, last_attempt_at timestamp with time zone, last_success_at timestamp with time zone, consecutive_failures integer, owner_id uuid, created_at timestamp with time zone)", security: "definer" },
3613
3695
  { name: "table_work_kind", args: "p_organization_id uuid, p_table_id uuid", returns: "text", security: "invoker" },
3614
3696
  { name: "tables_at_home", args: "p_organization_id uuid, p_home_ids uuid[]", returns: "TABLE(table_id uuid, home_record_id uuid, kind text)", security: "definer" },
3615
3697
  { name: "tables_described_without_asking", args: "", returns: "TABLE(function_name text, identity_args text, why text)", security: "invoker" },
3698
+ { name: "tables_shared_with_me", args: "", returns: "TABLE(table_id uuid, organization_id uuid, organization text, table_name text, level text, level_label text, shared_at timestamp with time zone, opens boolean, say text)", security: "definer" },
3616
3699
  { name: "trg_associations_bump_visibility", args: "", returns: "trigger", security: "definer" },
3617
3700
  { name: "undeclared_keys", args: "p_organization_id uuid, p_table_id uuid, p_data jsonb", returns: "text[]", security: "invoker" },
3618
3701
  { name: "validate_custom_fields", args: "p_token text, p_organization_id uuid, p_values jsonb", returns: "void", security: "invoker" },
@@ -3674,9 +3757,10 @@ var STORE_DOORS = [
3674
3757
  ];
3675
3758
  var STORE_KNOBS = [
3676
3759
  { key: "accessible_entity_ids_guard", value: "true", type: "boolean" },
3760
+ { key: "action_run_records_max", value: "5000", type: "integer" },
3677
3761
  { key: "agent_schema_changes", value: '"ask"', type: "string" },
3678
3762
  { key: "associations_guard", value: "true", type: "boolean" },
3679
- { key: "code_paths_enabled", value: "false", type: "boolean" },
3763
+ { key: "code_paths_enabled", value: "true", type: "boolean" },
3680
3764
  { key: "consumer_chat_seeding_enabled", value: "false", type: "boolean" },
3681
3765
  { key: "consumer_checkout_enabled", value: "false", type: "boolean" },
3682
3766
  { key: "consumer_context_enabled", value: "false", type: "boolean" },
@@ -3688,6 +3772,8 @@ var STORE_KNOBS = [
3688
3772
  { key: "consumer_scopes_enabled", value: "false", type: "boolean" },
3689
3773
  { key: "containment_depth_ceiling", value: "16", type: "integer" },
3690
3774
  { key: "cross_organization_links", value: "false", type: "boolean" },
3775
+ { key: "decoration_rules_max", value: "50", type: "integer" },
3776
+ { key: "decorations_max_bytes", value: "262144", type: "integer" },
3691
3777
  { key: "document_letterhead", value: "{}", type: "json" },
3692
3778
  { key: "document_max_bytes", value: "1048576", type: "integer" },
3693
3779
  { key: "emergency_door_guard", value: "false", type: "boolean" },
@@ -3699,10 +3785,12 @@ var STORE_KNOBS = [
3699
3785
  { key: "enrichment_sensitivity_ceiling", value: '"internal"', type: "string" },
3700
3786
  { key: "entity_custom_fields_guard", value: "false", type: "boolean" },
3701
3787
  { key: "entity_types_guard", value: "false", type: "boolean" },
3788
+ { key: "example_rows_max", value: "500", type: "integer" },
3702
3789
  { key: "export_rows_ceiling", value: "100000", type: "integer" },
3703
3790
  { key: "external_principal_enabled", value: "false", type: "boolean" },
3704
3791
  { key: "field_index_guard", value: "false", type: "boolean" },
3705
3792
  { 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" },
3793
+ { key: "grid_layout", value: '{"mode": "auto", "wrap": false, "row_height": "normal", "fit_max_columns": 8, "freeze_first_column": false}', type: "json" },
3706
3794
  { key: "inbound_domain", value: '"inbound.matrxserver.com"', type: "string" },
3707
3795
  { key: "member_default_level", value: '"viewer"', type: "enum" },
3708
3796
  { key: "member_default_visibility", value: '"all_records"', type: "enum" },
@@ -3710,6 +3798,8 @@ var STORE_KNOBS = [
3710
3798
  { key: "page_size_ceiling", value: "1000", type: "integer" },
3711
3799
  { key: "provenance_retention_days", value: "30", type: "number" },
3712
3800
  { key: "records_tool_default", value: "true", type: "boolean" },
3801
+ { key: "row_action_steps_max", value: "60", type: "integer" },
3802
+ { key: "row_actions_max", value: "24", type: "integer" },
3713
3803
  { key: "row_versions_guard", value: "false", type: "boolean" },
3714
3804
  { key: "sandbox_expanded_frame_height_px", value: "20000", type: "integer" },
3715
3805
  { key: "sandbox_frame_height_px", value: "4000", type: "integer" },
@@ -3717,27 +3807,30 @@ var STORE_KNOBS = [
3717
3807
  { key: "sandbox_org_components", value: "true", type: "boolean" },
3718
3808
  { key: "signup_provisioning_guard", value: "false", type: "boolean" },
3719
3809
  { key: "stage_rule_enforcement", value: '"refuse"', type: "enum" },
3720
- { key: "system_enabled", value: "false", type: "boolean" },
3810
+ { key: "system_enabled", value: "true", type: "boolean" },
3721
3811
  { key: "table_record_ceiling", value: "150000", type: "integer" },
3812
+ { key: "table_webhooks_max", value: "10", type: "integer" },
3722
3813
  { key: "value_max_bytes", value: "100000", type: "integer" },
3723
3814
  { key: "world_publish_enabled", value: "false", type: "boolean" }
3724
3815
  ];
3725
3816
  var STORE_REFUSAL_CODES = [
3726
- { code: "02000", raised_by: "_checklist_instantiate,_portal_invite_payload,_share_write_person,_table_share_invite_payload,checklist_declare,checklist_run,checklist_step_complete,checklist_step_refusal,checklist_template_shape,conversation_scope_bind,dashboard_delete,dashboard_run,doc_letterhead,doc_render_body,doc_render_document,doc_render_read,doc_sign,doc_signature_intact,doc_signature_read,doc_template_delete,doc_template_read,doc_template_save,enrich_pin,entity_field_retire,entity_field_update,entity_record_read,entity_value_write,external_history_event,external_rows,external_stub_upsert,external_writes_set,io_restore,migrate_delete,migrate_extract_parent,migrate_merge,migrate_reclass,migrate_rename,migrate_reparent,migrate_retype,migrate_split,migrate_undo,organization_clear,portal_archive,portal_card,portal_declare,portal_invite,portal_invite_accept,portal_preview,portal_principal_bind,portal_restore,portal_revoke,read_record,record_delete,record_restore,record_restore_preview,record_table,record_update,relation_uncarry,share_access,share_grant,share_lane_set,share_people,share_revoke,sign_request_cancel,sign_request_create,sign_request_remind,sign_request_unchanged,table_archive,table_share_outside_accept,table_share_outside_invite,table_share_outside_resend,table_share_outside_revoke,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_assign,work_record_states,work_set_state" },
3817
+ { code: "02000", raised_by: "_checklist_instantiate,_portal_invite_payload,_share_write_person,_table_share_invite_payload,checklist_declare,checklist_run,checklist_step_complete,checklist_step_refusal,checklist_template_shape,conversation_scope_bind,dashboard_delete,dashboard_run,doc_letterhead,doc_render_body,doc_render_document,doc_render_read,doc_sign,doc_signature_intact,doc_signature_read,doc_template_delete,doc_template_read,doc_template_save,enrich_pin,entity_field_retire,entity_field_update,entity_record_read,entity_value_write,external_history_event,external_rows,external_stub_upsert,external_writes_set,io_restore,migrate_delete,migrate_extract_parent,migrate_merge,migrate_reclass,migrate_rename,migrate_reparent,migrate_retype,migrate_split,migrate_undo,organization_clear,portal_archive,portal_card,portal_declare,portal_invite,portal_invite_accept,portal_preview,portal_principal_bind,portal_restore,portal_revoke,read_record,record_delete,record_restore,record_restore_preview,record_table,record_update,relation_halves_repair,relation_uncarry,share_access,share_grant,share_lane_set,share_people,share_revoke,sign_request_cancel,sign_request_create,sign_request_remind,sign_request_unchanged,table_archive,table_share_outside_accept,table_share_outside_invite,table_share_outside_resend,table_share_outside_revoke,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_assign,work_record_states,work_set_state" },
3727
3818
  { 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" },
3728
3819
  { code: "22003", raised_by: "context_resolve" },
3729
- { code: "22004", raised_by: "_entity_custom_fields_guard,_share_write_person,_value_envelope,actor_word,agg_assert_key,agg_sql,anon_capture,anon_token_issue,anon_write,assert_client_may_reach,booking_declare,capture_submit,checklist_declare,context_resolve,dashboard_block_normalize,dashboard_declare,dashboard_window_sql,doc_render_write,doc_sign,doc_signature_write,doc_template_save,enrich_land,enrich_normalize,external_history_event,external_rows,external_source_declare,external_stub_upsert,external_write_through,external_writes_set,field_history,form_declare,form_submit,home_add,io_comment_write,io_import_begin,io_infer_column,io_outbox_drain,io_restore,migrate_choice_keys,migrate_purge,migrate_purge_hard,migrate_reclass,migrate_split,migrate_undo,organization_clear,organization_contents,pipeline_declare,pipeline_gate_preview,portal_declare,portal_invite,portal_principal_bind,provenance_retention_days,provenance_write,query_across_homes,query_by_coordinates,query_rollup,record_delete,record_reparent,record_resolve,record_restore,record_update,record_write,record_write_graph,record_write_many,relation_carry,relation_own,rule_declare,share_grant,sign_request_create,sign_request_sign,subscription_declare,table_archive,table_declare,table_share_outside_invite,value_restore,view_declare,work_approval_decide,work_approval_request,work_template_declare" },
3820
+ { code: "22004", raised_by: "_entity_custom_fields_guard,_share_write_person,_value_envelope,actor_word,agg_assert_key,agg_sql,anon_capture,anon_token_issue,anon_write,assert_client_may_reach,booking_declare,capture_submit,checklist_declare,context_resolve,dashboard_block_normalize,dashboard_declare,dashboard_window_sql,doc_render_write,doc_sign,doc_signature_write,doc_template_save,enrich_land,enrich_normalize,external_history_event,external_rows,external_source_declare,external_stub_upsert,external_write_through,external_writes_set,field_history,form_declare,form_submit,home_add,io_comment_write,io_import_begin,io_infer_column,io_outbox_drain,io_restore,migrate_choice_keys,migrate_purge,migrate_purge_hard,migrate_reclass,migrate_split,migrate_undo,organization_clear,organization_contents,pipeline_declare,pipeline_gate_preview,portal_declare,portal_invite,portal_principal_bind,provenance_retention_days,provenance_write,query_across_homes,query_by_coordinates,query_rollup,record_delete,record_reparent,record_resolve,record_restore,record_update,record_write,record_write_graph,record_write_many,relation_carry,relation_halves_repair,relation_own,rule_declare,share_grant,sign_request_create,sign_request_sign,subscription_declare,table_archive,table_declare,table_share_outside_invite,value_restore,view_declare,work_approval_decide,work_approval_request,work_template_declare" },
3730
3821
  { code: "22007", raised_by: "dashboard_window_sql" },
3731
- { code: "22012", raised_by: "rule_eval" },
3732
- { code: "22023", raised_by: "_booking_availability,_entity_custom_fields_guard,_take_op_id,_value_envelope,_work_shape_guard,actor_word,agg_assert_key,agg_sql,anon_token_issue,booking_declare,containment_parent,dashboard_block_normalize,dashboard_window_sql,doc_render_body,doc_render_write,doc_signature_write,enrich_declare,enrich_land,enrich_normalize,enrich_pin,entity_value_write,external_history_event,external_source_declare,external_stub_upsert,external_write_through,field_history,field_update,io_export,io_import_begin,io_import_finish,io_import_plan,io_import_report,io_proposal_accept,list_portals,migrate_merge,migrate_reclass,my_levels,organization_clear,page_size,pin_agent_cells,pipeline_move,portal_declare,provenance_write,query_by_coordinates,query_rollup,read_records_archived,record_update,record_write_graph,record_write_many,relation_carry,rule_eval,rule_members,share_grant,share_lane_set,sign_request_create,sign_request_sign,subscription_declare,table_rules,visibility_as_of,work_approval_request,work_list,work_slot_hold" },
3733
- { code: "23503", raised_by: "_booking_availability,_checklist_instantiate,_containment_guard,_display_spec_for,_field_document_for,_field_type_parity_guard,_pipeline_stage_key,_record_rule_uses,agg_digest_assemble,anon_publish,anon_rate_take,anon_token_issue,anon_write,assert_organization_wall,booking_cancel,booking_confirm,booking_declare,booking_hold,booking_reschedule,capture_publish,checklist_declare,checklist_steps_table,comment_write,dashboard_declare,delete_rule,doc_sign,doc_template_save,enrich_declare,enrich_due,enrich_land,form_declare,form_submit,home_add,inbound_declare,inbound_mail_land,inbound_set,io_comment_write,io_import_begin,io_import_finish,io_import_report,io_import_rows,io_proposal_accept,migrate_demote,migrate_promote,pipeline_board,pipeline_declare,pipeline_move,pipeline_read,pipeline_transition_refusal,promote_field,promote_table,record_applicability,record_reparent,relation_carry,relation_own,resolve_first_match,rule_applies,rule_declare,rule_eval,rule_members,rule_run,sign_request_create,subscription_mute,subscription_preview,view_declare,work_set_state,work_take_assignment,work_template_instantiate" },
3822
+ { code: "22012", raised_by: "formula_eval,rule_eval" },
3823
+ { code: "22023", raised_by: "_action_check,_booking_availability,_decorations_check,_entity_custom_fields_guard,_fx_date,_fx_num,_fx_unit,_fxp_level,_fxp_resolve,_fxp_tokens,_take_op_id,_value_envelope,_work_shape_guard,action_run,actor_word,agg_assert_key,agg_sql,anon_token_issue,booking_declare,containment_parent,dashboard_block_normalize,dashboard_window_sql,doc_render_body,doc_render_write,doc_signature_write,enrich_declare,enrich_land,enrich_normalize,enrich_pin,entity_value_write,external_history_event,external_source_declare,external_stub_upsert,external_write_through,field_history,field_update,formula_eval,formula_parse,grid_layout_check,hub_changed_by,io_export,io_import_begin,io_import_finish,io_import_plan,io_import_report,io_proposal_accept,list_portals,migrate_merge,migrate_reclass,my_levels,organization_clear,page_size,pin_agent_cells,pipeline_move,portal_declare,provenance_write,query_by_coordinates,query_rollup,read_records_archived,record_update,record_write_graph,record_write_many,relation_carry,rule_eval,rule_members,share_grant,share_lane_set,sign_request_create,sign_request_sign,subscription_declare,table_from_example,table_rules,table_webhook_declare,visibility_as_of,work_approval_request,work_list,work_slot_hold" },
3824
+ { code: "23503", raised_by: "_action_check,_booking_availability,_checklist_instantiate,_containment_guard,_decorations_check,_display_spec_for,_field_document_for,_field_type_parity_guard,_pipeline_stage_key,_record_rule_uses,action_declare,action_run,agg_digest_assemble,anon_publish,anon_rate_take,anon_token_issue,anon_write,assert_organization_wall,autonumber_backfill,booking_cancel,booking_confirm,booking_declare,booking_hold,booking_reschedule,capture_publish,checklist_declare,checklist_steps_table,comment_write,dashboard_declare,delete_rule,doc_sign,doc_template_save,enrich_declare,enrich_due,enrich_land,form_declare,form_submit,grid_layout,home_add,inbound_declare,inbound_mail_land,inbound_set,io_comment_write,io_import_begin,io_import_finish,io_import_report,io_import_rows,io_proposal_accept,migrate_demote,migrate_promote,pipeline_board,pipeline_declare,pipeline_move,pipeline_read,pipeline_transition_refusal,promote_field,promote_table,record_applicability,record_reparent,relation_carry,relation_own,resolve_first_match,rule_applies,rule_declare,rule_eval,rule_members,rule_run,sign_request_create,subscription_mute,subscription_preview,table_decorate,table_from_example,table_webhook_archive,table_webhook_declare,view_declare,work_set_state,work_take_assignment,work_template_instantiate" },
3734
3825
  { code: "23505", raised_by: "_share_write_person,_unique_rule_holds,doc_sign,doc_signature_write,entity_field_declare,field_declare,home_add,inbound_declare,io_proposal_accept,relation_carry,relation_own,sign_request_cancel,sign_request_create,table_share_outside_resend,work_approval_decide,work_slot_hold" },
3735
- { code: "23514", raised_by: "_checklist_instantiate,_checklist_step_guard,_containment_guard,_dated_values_guard,_derived_fields,_display_spec_for,_entity_custom_fields_guard,_field_class_guard,_field_document_for,_field_shape_guard,_field_type_parity_guard,_merge_field_shape_guard,_merge_field_temporal_guard,_promoted_field_cap_guard,_record_rule_uses,_relation_halves_agree,_resolve_choice_words,_rule_shape_guard,_rule_topology_guard,_store_relation_edge_names_its_field,_table_columns_word_guard,_table_shape_guard,_undeclared_key_guard,_value_envelope,_with_display,_work_shape_guard,_workdoors_approval_guard,assert_columns_are_defined,assert_entity_is_organization_scoped,booking_declare,capture_publish,capture_sheet_declare,checklist_declare,checklist_step_complete,doc_sign,doc_signature_write,doc_template_save,entity_field_declare,entity_field_retire,entity_field_update,entity_records_find,entity_table,field_declare,field_retire,field_update,home_add,io_comment_write,io_import_rows,migrate_merge,migrate_purge_hard,portal_archive,portal_restore,record_write_graph,relation_carry,relation_own,sign_request_create,sign_request_sign,table_declare,validate_value_envelope,validate_values,work_set_state,work_slots_declare,work_take_assignment,work_template_instantiate" },
3826
+ { code: "23514", raised_by: "_checklist_instantiate,_checklist_step_guard,_containment_guard,_dated_values_guard,_derived_fields,_display_format_check,_display_spec_for,_entity_custom_fields_guard,_field_class_guard,_field_document_for,_field_shape_guard,_field_type_parity_guard,_merge_field_shape_guard,_merge_field_temporal_guard,_promoted_field_cap_guard,_record_rule_uses,_relation_halves_agree,_relation_kernel_targets,_resolve_choice_words,_rule_shape_guard,_rule_topology_guard,_store_relation_edge_names_its_field,_table_columns_word_guard,_table_shape_guard,_undeclared_key_guard,_value_envelope,_with_display,_work_shape_guard,_workdoors_approval_guard,action_run,assert_columns_are_defined,assert_entity_is_organization_scoped,booking_declare,capture_publish,capture_sheet_declare,checklist_declare,checklist_step_complete,doc_sign,doc_signature_write,doc_template_save,entity_field_declare,entity_field_retire,entity_field_update,entity_records_find,entity_table,field_declare,field_retire,field_update,home_add,io_comment_write,io_import_rows,migrate_merge,migrate_purge_hard,portal_archive,portal_restore,record_write_graph,relation_carry,relation_halves_repair,relation_own,sign_request_create,sign_request_sign,table_declare,table_from_example,validate_value_envelope,validate_values,work_set_state,work_slots_declare,work_take_assignment,work_template_instantiate" },
3736
3827
  { code: "40001", raised_by: "has_visibility_at" },
3737
- { code: "42501", raised_by: "_doc_render_immutable,_doc_signature_immutable,_field_definition_write,_field_write_door,_rule_definition_write,_store_door,agent_table_claim,anon_capture,anon_inbound_land,anon_publish,anon_token_issue,anon_token_verify,anon_write,assert_client_may_change,assert_client_may_open,assert_client_may_reach,assert_may_know_table,assert_organization_admin,assert_store_door,booking_confirm,booking_declare,booking_hold,capture_submit,checklist_run,comment_write,conversation_scope_bind,conversation_scope_unbind,doc_sign,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_purge_hard,migrate_reclass,my_levels,organization_clear,portal_declare,portal_invitation,portal_invite,portal_invite_accept,portal_principal_bind,promote_table,query_visibility_parity,read_record,read_records,read_records_archived,read_records_by_ids,read_records_matching,record_table,record_write_graph,share_grant,subscription_mute,subscription_preview,table_share_outside_accept,table_share_outside_invite,table_share_outside_resend,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_person" },
3828
+ { code: "42501", raised_by: "_doc_render_immutable,_doc_signature_immutable,_field_definition_write,_field_write_door,_rule_definition_write,_store_door,agent_table_claim,anon_capture,anon_inbound_land,anon_publish,anon_token_issue,anon_token_verify,anon_write,assert_client_may_change,assert_client_may_open,assert_client_may_reach,assert_may_know_table,assert_organization_admin,assert_store_door,booking_confirm,booking_declare,booking_hold,capture_submit,checklist_run,comment_write,conversation_scope_bind,conversation_scope_unbind,doc_sign,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_purge_hard,migrate_purge_hard_request,migrate_reclass,my_levels,organization_clear,portal_declare,portal_invitation,portal_invite,portal_invite_accept,portal_principal_bind,promote_table,query_visibility_parity,read_record,read_records,read_records_archived,read_records_by_ids,read_records_matching,record_table,record_write_graph,relation_halves_disagreements,relation_halves_repair,share_grant,subscription_mute,subscription_preview,table_share_outside_accept,table_share_outside_invite,table_share_outside_resend,table_webhook_declare,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_person" },
3738
3829
  { code: "42703", raised_by: "entity_table,portal_declare" },
3739
3830
  { code: "53400", raised_by: "anon_rate_take,delete_cascade_closure,enrich_due,enrich_land,promote_field" },
3831
+ { code: "54000", raised_by: "action_run,hub_changed_by,table_decorate,table_from_example,table_webhook_declare" },
3740
3832
  { code: "54001", raised_by: "record_delete" },
3833
+ { code: "P0001", raised_by: "action_run" },
3741
3834
  { code: "PT409", raised_by: "record_update" },
3742
3835
  { code: "PT428", raised_by: "_record_rule_uses" }
3743
3836
  ];
@@ -3768,6 +3861,7 @@ var ENTITY_TOKENS = [
3768
3861
  "agent_shortcut",
3769
3862
  "agent_surface_binding",
3770
3863
  "agent_template",
3864
+ "agent_term_list",
3771
3865
  "agent_usage",
3772
3866
  "agent_user_kv",
3773
3867
  "ai_api",
@@ -5370,6 +5464,13 @@ var BY_SQLSTATE = {
5370
5464
  // stack. It is a LIMIT of the store, and the store's own sentence names what
5371
5465
  // to do about it, so it reads as one.
5372
5466
  "54001": "store_limit",
5467
+ // 54000 — the grid primitives' organization ceilings (GRID-PRIMITIVES, 2026-09-23):
5468
+ // `custom.action_run` on a selection past its knob, `custom.table_decorate` past the
5469
+ // rule count, `custom.table_from_example` past `custom/example_rows_max`,
5470
+ // `custom.table_webhook_declare` past `custom/table_webhooks_max`, and
5471
+ // `custom.hub_changed_by`. Each names its knob in the hint and writes nothing, so it
5472
+ // reads exactly like 54001: a limit of the store, in the store's own sentence.
5473
+ "54000": "store_limit",
5373
5474
  // VIS: `custom.has_visibility_at` refuses to answer from a snapshot older
5374
5475
  // than a write this reader has already seen, rather than returning something
5375
5476
  // they just lost access to. It is retryable on a fresher connection, which is
@@ -5454,6 +5555,22 @@ function staleWriteDetail(error) {
5454
5555
  };
5455
5556
  }
5456
5557
 
5558
+ // src/core/recordChanges.ts
5559
+ var listeners = /* @__PURE__ */ new Set();
5560
+ function announceRecordChanged(recordId) {
5561
+ for (const listener of [...listeners]) {
5562
+ try {
5563
+ listener(recordId);
5564
+ } catch (thrown) {
5565
+ console.error("[@ai-matrx/records] a record-change listener threw", thrown);
5566
+ }
5567
+ }
5568
+ }
5569
+ function onRecordChanged(listener) {
5570
+ listeners.add(listener);
5571
+ return () => listeners.delete(listener);
5572
+ }
5573
+
5457
5574
  // src/core/query.ts
5458
5575
  var DEFAULT_PAGE_SIZE = 50;
5459
5576
  function planQuery(query) {
@@ -5495,12 +5612,22 @@ function intersectIds(sets) {
5495
5612
 
5496
5613
  // src/core/client.ts
5497
5614
  var DEFAULT_SCHEMA = "custom";
5615
+ var A_PERSONS_REFUSAL = /* @__PURE__ */ new Set([
5616
+ "refused_by_rule",
5617
+ "stale_write",
5618
+ "invalid_argument",
5619
+ "already_exists",
5620
+ "missing_reference"
5621
+ ]);
5622
+ function isAPersonsRefusal(code) {
5623
+ return A_PERSONS_REFUSAL.has(code);
5624
+ }
5498
5625
  function sink(config) {
5499
- return config.onError ?? ((e) => (
5500
- // The defined degradation, stated: loud, with the store's own words, and
5501
- // naming where it happened. Never silence.
5502
- console.error(`[@ai-matrx/records] ${e.where}: ${e.code} \u2014 ${e.message}${e.hint ? ` (${e.hint})` : ""}`)
5503
- ));
5626
+ return config.onError ?? ((e) => {
5627
+ const line = `[@ai-matrx/records] ${e.where}: ${e.code} \u2014 ${e.message}${e.hint ? ` (${e.hint})` : ""}`;
5628
+ if (isAPersonsRefusal(e.code)) console.info(line);
5629
+ else console.error(line);
5630
+ });
5504
5631
  }
5505
5632
  function createRecordsClient(config) {
5506
5633
  const schema = config.schema ?? DEFAULT_SCHEMA;
@@ -5607,21 +5734,26 @@ function createRecordsClient(config) {
5607
5734
  },
5608
5735
  "recordUpdate"
5609
5736
  );
5737
+ if (result.ok) announceRecordChanged(record_id);
5610
5738
  return result;
5611
5739
  },
5612
5740
  async recordDelete({ record_id }) {
5613
- return callDoor(
5741
+ const result = await callDoor(
5614
5742
  DOORS.recordDelete,
5615
5743
  { p_organization_id: org, p_record_id: record_id },
5616
5744
  "recordDelete"
5617
5745
  );
5746
+ if (result.ok) announceRecordChanged(record_id);
5747
+ return result;
5618
5748
  },
5619
5749
  async recordRestore({ record_id }) {
5620
- return callDoor(
5750
+ const result = await callDoor(
5621
5751
  DOORS.recordRestore,
5622
5752
  { p_organization_id: org, p_record_id: record_id },
5623
5753
  "recordRestore"
5624
5754
  );
5755
+ if (result.ok) announceRecordChanged(record_id);
5756
+ return result;
5625
5757
  },
5626
5758
  async tableArchive({ table_id, chunk, includeTable }) {
5627
5759
  return callDoor(
@@ -5671,6 +5803,24 @@ function createRecordsClient(config) {
5671
5803
  })
5672
5804
  );
5673
5805
  },
5806
+ async tableArchived({ table_id }) {
5807
+ const kernel = await callDoor(DOORS.tableKernelId, {}, "tableArchived.kernel");
5808
+ if (!kernel.ok) return err(kernel.error);
5809
+ const PAGE = 200;
5810
+ for (let page = 0; page < 25; page += 1) {
5811
+ const answered = await this.listArchived({
5812
+ table_id: kernel.data,
5813
+ lane: "org",
5814
+ limit: PAGE,
5815
+ offset: page * PAGE
5816
+ });
5817
+ if (!answered.ok) return err(answered.error);
5818
+ const hit = answered.data.rows.find((row) => row.id === table_id);
5819
+ if (hit) return ok(hit);
5820
+ if (answered.data.total !== null) return ok(null);
5821
+ }
5822
+ return ok(null);
5823
+ },
5674
5824
  async listArchived({ table_id, lane = DEFAULT_ARCHIVE_LANE, limit = 50, offset = 0 }) {
5675
5825
  const door = await callDoor(
5676
5826
  DOORS.readRecordsArchived,
@@ -5872,9 +6022,11 @@ function createRecordsClient(config) {
5872
6022
  );
5873
6023
  },
5874
6024
  async fieldDeclare({ table_id, spec }) {
6025
+ const { allow_other, ...rest } = spec;
6026
+ const p_spec = allow_other === void 0 ? rest : { ...rest, config: { ...rest.config ?? {}, allow_other } };
5875
6027
  return callDoor(
5876
6028
  DOORS.fieldDeclare,
5877
- { p_organization_id: org, p_table_id: table_id, p_spec: spec },
6029
+ { p_organization_id: org, p_table_id: table_id, p_spec },
5878
6030
  "fieldDeclare"
5879
6031
  );
5880
6032
  },
@@ -6842,14 +6994,16 @@ function createRecordsClient(config) {
6842
6994
  );
6843
6995
  },
6844
6996
  async restoreVersion({ record_id, version }) {
6845
- return callDoor(
6997
+ const result = await callDoor(
6846
6998
  DOORS.restoreVersion,
6847
6999
  { p_organization_id: org, p_record_id: record_id, p_version: version },
6848
7000
  "restoreVersion"
6849
7001
  );
7002
+ if (result.ok) announceRecordChanged(record_id);
7003
+ return result;
6850
7004
  },
6851
7005
  async valueRestore({ record_id, field_key, version }) {
6852
- return callDoor(
7006
+ const answered = await callDoor(
6853
7007
  DOORS.valueRestore,
6854
7008
  {
6855
7009
  p_organization_id: org,
@@ -6859,6 +7013,8 @@ function createRecordsClient(config) {
6859
7013
  },
6860
7014
  "valueRestore"
6861
7015
  );
7016
+ if (answered.ok) announceRecordChanged(record_id);
7017
+ return answered;
6862
7018
  },
6863
7019
  async commentThread({ record_id, include_resolved }) {
6864
7020
  return callDoor(
@@ -7640,12 +7796,30 @@ function ruleRefusal(field, rule, item, values) {
7640
7796
  }
7641
7797
  return null;
7642
7798
  case "length":
7643
- if (typeof item === "string" && item.length > Number(rule.value)) {
7799
+ if (typeof item !== "string") return null;
7800
+ if (rule.value !== void 0 && rule.value !== null && rule.value !== "" && item.length > Number(rule.value)) {
7644
7801
  return { ...base, message: `${label} is longer than ${rule.value} characters`, hint: "FLD-3." };
7645
7802
  }
7803
+ if (typeof rule.min === "number" && item !== "" && item.length < rule.min) {
7804
+ return {
7805
+ ...base,
7806
+ message: `${label} has to be at least ${rule.min} characters long`,
7807
+ hint: "FLD-3.",
7808
+ detail: { field_key: field.key, rule: "length", min: rule.min }
7809
+ };
7810
+ }
7646
7811
  return null;
7647
7812
  case "pattern":
7648
7813
  if (typeof item === "string" && !new RegExp(String(rule.value)).test(item)) {
7814
+ const example = typeof rule.example === "string" ? rule.example.trim() : "";
7815
+ if (example !== "") {
7816
+ return {
7817
+ ...base,
7818
+ message: `${label} is not written the way this field expects`,
7819
+ hint: `Enter it like ${example}.`,
7820
+ detail: { field_key: field.key, rule: "pattern", example }
7821
+ };
7822
+ }
7649
7823
  return { ...base, message: `${label} is not written the way this field expects`, hint: "FLD-3." };
7650
7824
  }
7651
7825
  return null;
@@ -7730,12 +7904,6 @@ function predictValueRefusals(fields, values, recordType) {
7730
7904
  message: `${label} takes one of its choices, and it was given a ${jsonType(item)}`,
7731
7905
  hint: "FLD-5 / FLD-6: a list field stores the id of the option RECORD, because every pick-list is already a Table."
7732
7906
  });
7733
- } else if (!UUID2.test(item)) {
7734
- found.push({
7735
- ...base,
7736
- message: `${label} was given a choice that is not one of its choices`,
7737
- hint: `REC-51: option membership. ${label} stores the id of an option record, and what it was given is not an id at all.`
7738
- });
7739
7907
  }
7740
7908
  } else if (field.type === "relation") {
7741
7909
  if (typeof item !== "string") {
@@ -8030,6 +8198,7 @@ export {
8030
8198
  ARCHIVE_LANES,
8031
8199
  ARCHIVE_LANE_LABEL,
8032
8200
  ARCHIVE_LANE_MEANS,
8201
+ A_PERSONS_REFUSAL,
8033
8202
  COMPUTE_ON,
8034
8203
  CONTEXT_POLICIES,
8035
8204
  DECLARABLE_FIELD_KINDS,
@@ -8076,6 +8245,8 @@ export {
8076
8245
  VALUE_ALTERNATE_KEYS,
8077
8246
  VALUE_ENVELOPE_KEYS,
8078
8247
  actionRefusals,
8248
+ allowsOtherValues,
8249
+ announceRecordChanged,
8079
8250
  archivedByLine,
8080
8251
  archivedWhen,
8081
8252
  asPermissionLevel,
@@ -8108,6 +8279,7 @@ export {
8108
8279
  importXlsx,
8109
8280
  indexedDbStore,
8110
8281
  intersectIds,
8282
+ isAPersonsRefusal,
8111
8283
  isArchiveLane,
8112
8284
  isDecided,
8113
8285
  isOwnOp,
@@ -8122,6 +8294,7 @@ export {
8122
8294
  mintClientKey,
8123
8295
  mintOpId,
8124
8296
  ok,
8297
+ onRecordChanged,
8125
8298
  openCaptureQueue,
8126
8299
  optionKey,
8127
8300
  optionLabel,
@@ -8136,6 +8309,7 @@ export {
8136
8309
  predictValueRefusals,
8137
8310
  predictWriteRefusals,
8138
8311
  publicFormPath,
8312
+ recordChangeTrigger,
8139
8313
  rememberedOpCount,
8140
8314
  sameDocument,
8141
8315
  scopeChip,