@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.
@@ -2365,6 +2365,15 @@ async function exportPageXlsx(page, labels = {}, sheetLabel = "Records") {
2365
2365
  }
2366
2366
  return XLSX.write(workbook, { type: "array", bookType: "xlsx", compression: true });
2367
2367
  }
2368
+ function recordChangeTrigger(tableId, options = {}) {
2369
+ return {
2370
+ type: "event",
2371
+ entity_type: `custom_record:${tableId}`,
2372
+ table_id: tableId,
2373
+ ...options.actions && options.actions.length > 0 ? { actions: options.actions } : {},
2374
+ ...options.changedFields && options.changedFields.length > 0 ? { changed_fields: options.changedFields } : {}
2375
+ };
2376
+ }
2368
2377
 
2369
2378
  // src/store.generated.ts
2370
2379
  var ACTOR_VOCABULARY = ["user", "agent", "system"];
@@ -2421,6 +2430,48 @@ var RULE_NODE_KINDS = [
2421
2430
  { node: "div", evaluated_by: "W1-RULE" },
2422
2431
  { node: "eq", evaluated_by: "W1-RULE" },
2423
2432
  { node: "field", evaluated_by: "W1-RULE" },
2433
+ { node: "fx.abs", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2434
+ { node: "fx.add", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2435
+ { node: "fx.and", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2436
+ { node: "fx.autonumber", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2437
+ { node: "fx.average", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2438
+ { node: "fx.blank", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2439
+ { node: "fx.concatenate", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2440
+ { node: "fx.contains", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2441
+ { node: "fx.created_time", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2442
+ { node: "fx.dateadd", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2443
+ { node: "fx.datediff", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2444
+ { node: "fx.day", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2445
+ { node: "fx.div", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2446
+ { node: "fx.eq", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2447
+ { node: "fx.gt", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2448
+ { node: "fx.gte", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2449
+ { node: "fx.if", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2450
+ { node: "fx.isblank", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2451
+ { node: "fx.left", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2452
+ { node: "fx.len", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2453
+ { node: "fx.lower", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2454
+ { node: "fx.lt", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2455
+ { node: "fx.lte", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2456
+ { node: "fx.max", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2457
+ { node: "fx.min", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2458
+ { node: "fx.mod", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2459
+ { node: "fx.modified_time", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2460
+ { node: "fx.month", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2461
+ { node: "fx.mul", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2462
+ { node: "fx.ne", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2463
+ { node: "fx.neg", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2464
+ { node: "fx.not", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2465
+ { node: "fx.now", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2466
+ { node: "fx.or", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2467
+ { node: "fx.right", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2468
+ { node: "fx.round", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2469
+ { node: "fx.sub", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2470
+ { node: "fx.sum", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2471
+ { node: "fx.today", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2472
+ { node: "fx.trim", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2473
+ { node: "fx.upper", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2474
+ { node: "fx.year", evaluated_by: "GRID-PRIMITIVES G3 (custom.formula_eval)" },
2424
2475
  { node: "gt", evaluated_by: "W1-RULE" },
2425
2476
  { node: "gte", evaluated_by: "W1-RULE" },
2426
2477
  { node: "length", evaluated_by: "W1-RULE" },
@@ -2452,6 +2503,8 @@ var KERNEL_TABLES = [
2452
2503
  ];
2453
2504
  var STORE_DOORS = [
2454
2505
  { name: "absence_reasons", args: "", returns: "text[]", security: "invoker" },
2506
+ { name: "action_declare", args: "p_organization_id uuid, p_table_id uuid, p_actions jsonb", returns: "jsonb", security: "definer" },
2507
+ { name: "action_run", args: "p_organization_id uuid, p_action_id uuid, p_record_ids uuid[]", returns: "jsonb", security: "definer" },
2455
2508
  { name: "actor_vocabulary", args: "", returns: "text[]", security: "invoker" },
2456
2509
  { name: "actor_word", args: "p_declared text", returns: "text", security: "invoker" },
2457
2510
  { 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" },
@@ -2503,6 +2556,7 @@ var STORE_DOORS = [
2503
2556
  { name: "assert_organization_admin", args: "p_organization_id uuid, p_door text, p_what text", returns: "void", security: "invoker" },
2504
2557
  { name: "assert_organization_wall", args: "p_kind text, p_organization_id uuid, p_row jsonb", returns: "void", security: "invoker" },
2505
2558
  { name: "assert_store_door", args: "p_organization_id uuid, p_door text", returns: "void", security: "invoker" },
2559
+ { name: "autonumber_backfill", args: "p_organization_id uuid, p_field_id uuid", returns: "jsonb", security: "definer" },
2506
2560
  { 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" },
2507
2561
  { 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" },
2508
2562
  { 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" },
@@ -2575,6 +2629,8 @@ var STORE_DOORS = [
2575
2629
  { 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" },
2576
2630
  { name: "dashboard_window_sql", args: "p_key text, p_window jsonb", returns: "text", security: "invoker" },
2577
2631
  { 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" },
2632
+ { name: "decoration_colors", args: "", returns: "text[]", security: "invoker" },
2633
+ { name: "decoration_rule_ops", args: "", returns: "TABLE(op text, takes_value boolean, label text)", security: "invoker" },
2578
2634
  { name: "delete_cascade_closure", args: "p_organization_id uuid, p_record_id uuid", returns: "uuid[]", security: "invoker" },
2579
2635
  { name: "delete_preview", args: "p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "definer" },
2580
2636
  { name: "delete_rule", args: "p_organization_id uuid, p_record_id uuid, p_apply boolean DEFAULT true", returns: "jsonb", security: "definer" },
@@ -2584,6 +2640,7 @@ var STORE_DOORS = [
2584
2640
  { 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" },
2585
2641
  { name: "derived_values", args: "p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "invoker" },
2586
2642
  { name: "derived_values_of", args: "v_rec custom.record", returns: "jsonb", security: "invoker" },
2643
+ { name: "display_format_ids", args: "", returns: "text[]", security: "invoker" },
2587
2644
  { name: "doc_content_hash", args: "p_body text", returns: "text", security: "invoker" },
2588
2645
  { name: "doc_format_value", args: "p_field_data jsonb, p_value jsonb", returns: "text", security: "invoker" },
2589
2646
  { name: "doc_letterhead", args: "p_organization_id uuid", returns: "jsonb", security: "definer" },
@@ -2662,8 +2719,13 @@ var STORE_DOORS = [
2662
2719
  { name: "form_slug", args: "p_organization_id uuid, p_title text, p_form_id uuid DEFAULT NULL::uuid", returns: "text", security: "invoker" },
2663
2720
  { 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" },
2664
2721
  { 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" },
2722
+ { name: "formula_eval", args: "p_organization_id uuid, p_expr jsonb, p_values jsonb, p_context jsonb DEFAULT '{}'::jsonb", returns: "jsonb", security: "invoker" },
2723
+ { name: "formula_node_kinds", args: "", returns: "TABLE(node text, min_args integer, max_args integer, result text, signature text, says text)", security: "invoker" },
2724
+ { name: "formula_parse", args: "p_organization_id uuid, p_table_id uuid, p_text text", returns: "jsonb", security: "definer" },
2665
2725
  { 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" },
2666
2726
  { name: "freshness_verdict", args: "p_written_at timestamp with time zone, p_ceiling_seconds numeric", returns: "jsonb", security: "definer" },
2727
+ { name: "grid_layout", args: "p_organization_id uuid, p_table_id uuid, p_view_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
2728
+ { name: "grid_layout_check", args: "p_layout jsonb, p_scope text DEFAULT 'view'::text", returns: "jsonb", security: "invoker" },
2667
2729
  { name: "guard_refusals_are_complete", args: "", returns: "TABLE(guard text, said text)", security: "invoker" },
2668
2730
  { 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" },
2669
2731
  { 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" },
@@ -2679,6 +2741,7 @@ var STORE_DOORS = [
2679
2741
  { name: "history_retention_set", args: "p_organization_id uuid, p_table_id uuid, p_days integer", returns: "integer", security: "definer" },
2680
2742
  { name: "home_add", args: "p_organization_id uuid, p_table_id uuid, p_home_record_id uuid", returns: "uuid", security: "definer" },
2681
2743
  { name: "home_relations", args: "", returns: "TABLE(table_id uuid, home_record_id uuid, organization_id uuid, relation_id uuid)", security: "invoker" },
2744
+ { 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" },
2682
2745
  { name: "inbound_addresses", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
2683
2746
  { name: "inbound_declare", args: "p_organization_id uuid, p_table_id uuid, p_label text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
2684
2747
  { name: "inbound_domain", args: "p_organization_id uuid", returns: "text", security: "invoker" },
@@ -2747,6 +2810,7 @@ var STORE_DOORS = [
2747
2810
  { name: "migrate_promote", args: "p_organization_id uuid, p_table_id uuid, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
2748
2811
  { 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" },
2749
2812
  { 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" },
2813
+ { name: "migrate_purge_hard_request", args: "p_organization_id uuid, p_table_id uuid, p_compliance_reason text", returns: "void", security: "definer" },
2750
2814
  { 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" },
2751
2815
  { name: "migrate_rename", args: "p_organization_id uuid, p_id uuid, p_to text, p_note text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
2752
2816
  { 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" },
@@ -2782,6 +2846,7 @@ var STORE_DOORS = [
2782
2846
  { name: "pipeline_pending", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
2783
2847
  { name: "pipeline_read", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
2784
2848
  { name: "pipeline_transition_refusal", args: "p_organization_id uuid, p_record_id uuid, p_to text", returns: "jsonb", security: "definer" },
2849
+ { 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" },
2785
2850
  { name: "portal_admits", args: "p_organization_id uuid, p_user_id uuid DEFAULT NULL::uuid", returns: "boolean", security: "definer" },
2786
2851
  { 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" },
2787
2852
  { name: "portal_card", args: "p_organization_id uuid, p_portal_id uuid", returns: "jsonb", security: "definer" },
@@ -2879,12 +2944,16 @@ var STORE_DOORS = [
2879
2944
  { name: "refusals_claiming_a_level_never_asked", args: "", returns: "TABLE(function_name text, identity_args text, why text)", security: "invoker" },
2880
2945
  { name: "relation_carry", args: "p_organization_id uuid, p_container_id uuid, p_item_id uuid", returns: "uuid", security: "definer" },
2881
2946
  { name: "relation_edges_withdraw", args: "p_organization_id uuid, p_field_ids uuid[], p_why text", returns: "integer", security: "definer" },
2947
+ { 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" },
2948
+ { name: "relation_halves_repair", args: "p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "definer" },
2949
+ { name: "relation_kernel_record", args: "p_organization_id uuid, p_kernel_table_id uuid, p_id uuid", returns: "uuid", security: "definer" },
2882
2950
  { name: "relation_own", args: "p_organization_id uuid, p_owner_id uuid, p_target_id uuid", returns: "uuid", security: "definer" },
2883
2951
  { 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" },
2884
2952
  { name: "relation_target_external", args: "p_connection_token text, p_external_table text, p_external_key text", returns: "jsonb", security: "definer" },
2885
2953
  { name: "relation_target_ours", args: "p_entity_token text, p_row_id uuid", returns: "jsonb", security: "definer" },
2886
2954
  { name: "relation_targets", args: "p_organization_id uuid, p_record_id uuid, p_via_key text", returns: "SETOF uuid", security: "definer" },
2887
2955
  { name: "relation_uncarry", args: "p_organization_id uuid, p_container_id uuid, p_item_id uuid", returns: "integer", security: "definer" },
2956
+ { 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" },
2888
2957
  { name: "relation_words", args: "p_organization_id uuid, p_field_id uuid, p_value text", returns: "text", security: "definer" },
2889
2958
  { 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" },
2890
2959
  { name: "reopen_declared_doors", args: "", returns: "TABLE(reopened text)", security: "definer" },
@@ -2893,6 +2962,7 @@ var STORE_DOORS = [
2893
2962
  { name: "resolve_id", args: "p_organization_id uuid, p_id uuid", returns: "uuid", security: "invoker" },
2894
2963
  { name: "retired_actor_words", args: "", returns: "jsonb", security: "invoker" },
2895
2964
  { name: "rollup_value", args: "p_organization_id uuid, p_record_id uuid, p_field_data jsonb", returns: "jsonb", security: "invoker" },
2965
+ { name: "row_actions", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
2896
2966
  { name: "rule_applies", args: "p_organization_id uuid, p_rule_id uuid, p_record_id uuid", returns: "jsonb", security: "invoker" },
2897
2967
  { name: "rule_context", args: "p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "invoker" },
2898
2968
  { name: "rule_declare", args: "p_organization_id uuid, p_spec jsonb, p_rule_id uuid DEFAULT NULL::uuid", returns: "uuid", security: "definer" },
@@ -2918,6 +2988,7 @@ var STORE_DOORS = [
2918
2988
  { name: "share_revoke", args: "p_organization_id uuid, p_subject_id uuid, p_principal_kind text, p_principal_id uuid", returns: "jsonb", security: "definer" },
2919
2989
  { name: "share_subject_name", args: "p_organization_id uuid, p_type text, p_id uuid", returns: "text", security: "definer" },
2920
2990
  { 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" },
2991
+ { 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" },
2921
2992
  { name: "sign_request_cancel", args: "p_organization_id uuid, p_request_id uuid, p_reason text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
2922
2993
  { 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" },
2923
2994
  { 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" },
@@ -2951,6 +3022,9 @@ var STORE_DOORS = [
2951
3022
  { name: "table_column_source", args: "p_organization_id uuid, p_table_id uuid", returns: "text", security: "invoker" },
2952
3023
  { name: "table_contents", args: "p_organization_id uuid, p_table_id uuid", returns: "TABLE(record_id uuid, kind text, goes_at integer)", security: "invoker" },
2953
3024
  { name: "table_declare", args: "p_organization_id uuid, p_spec jsonb", returns: "uuid", security: "definer" },
3025
+ { 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" },
3026
+ { name: "table_decorations", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
3027
+ { name: "table_from_example", args: "p_organization_id uuid, p_home_id uuid, p_example jsonb", returns: "jsonb", security: "definer" },
2954
3028
  { name: "table_has_a_visible_record", args: "p_user uuid, p_organization_id uuid, p_table_id uuid", returns: "boolean", security: "definer" },
2955
3029
  { name: "table_is_live", args: "p_organization_id uuid, p_table_id uuid", returns: "boolean", security: "invoker" },
2956
3030
  { name: "table_is_options_table", args: "p_organization_id uuid, p_table_id uuid", returns: "boolean", security: "invoker" },
@@ -2968,9 +3042,13 @@ var STORE_DOORS = [
2968
3042
  { name: "table_storage", args: "p_organization_id uuid, p_table_id uuid", returns: "text", security: "invoker" },
2969
3043
  { name: "table_type_field", args: "p_organization_id uuid, p_table_id uuid", returns: "text", security: "definer" },
2970
3044
  { name: "table_unique_rule_fields", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "invoker" },
3045
+ { name: "table_webhook_archive", args: "p_organization_id uuid, p_webhook_id uuid", returns: "boolean", security: "definer" },
3046
+ { 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" },
3047
+ { 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" },
2971
3048
  { name: "table_work_kind", args: "p_organization_id uuid, p_table_id uuid", returns: "text", security: "invoker" },
2972
3049
  { 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" },
2973
3050
  { name: "tables_described_without_asking", args: "", returns: "TABLE(function_name text, identity_args text, why text)", security: "invoker" },
3051
+ { 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" },
2974
3052
  { name: "trg_associations_bump_visibility", args: "", returns: "trigger", security: "definer" },
2975
3053
  { name: "undeclared_keys", args: "p_organization_id uuid, p_table_id uuid, p_data jsonb", returns: "text[]", security: "invoker" },
2976
3054
  { name: "validate_custom_fields", args: "p_token text, p_organization_id uuid, p_values jsonb", returns: "void", security: "invoker" },
@@ -3032,9 +3110,10 @@ var STORE_DOORS = [
3032
3110
  ];
3033
3111
  var STORE_KNOBS = [
3034
3112
  { key: "accessible_entity_ids_guard", value: "true", type: "boolean" },
3113
+ { key: "action_run_records_max", value: "5000", type: "integer" },
3035
3114
  { key: "agent_schema_changes", value: '"ask"', type: "string" },
3036
3115
  { key: "associations_guard", value: "true", type: "boolean" },
3037
- { key: "code_paths_enabled", value: "false", type: "boolean" },
3116
+ { key: "code_paths_enabled", value: "true", type: "boolean" },
3038
3117
  { key: "consumer_chat_seeding_enabled", value: "false", type: "boolean" },
3039
3118
  { key: "consumer_checkout_enabled", value: "false", type: "boolean" },
3040
3119
  { key: "consumer_context_enabled", value: "false", type: "boolean" },
@@ -3046,6 +3125,8 @@ var STORE_KNOBS = [
3046
3125
  { key: "consumer_scopes_enabled", value: "false", type: "boolean" },
3047
3126
  { key: "containment_depth_ceiling", value: "16", type: "integer" },
3048
3127
  { key: "cross_organization_links", value: "false", type: "boolean" },
3128
+ { key: "decoration_rules_max", value: "50", type: "integer" },
3129
+ { key: "decorations_max_bytes", value: "262144", type: "integer" },
3049
3130
  { key: "document_letterhead", value: "{}", type: "json" },
3050
3131
  { key: "document_max_bytes", value: "1048576", type: "integer" },
3051
3132
  { key: "emergency_door_guard", value: "false", type: "boolean" },
@@ -3057,10 +3138,12 @@ var STORE_KNOBS = [
3057
3138
  { key: "enrichment_sensitivity_ceiling", value: '"internal"', type: "string" },
3058
3139
  { key: "entity_custom_fields_guard", value: "false", type: "boolean" },
3059
3140
  { key: "entity_types_guard", value: "false", type: "boolean" },
3141
+ { key: "example_rows_max", value: "500", type: "integer" },
3060
3142
  { key: "export_rows_ceiling", value: "100000", type: "integer" },
3061
3143
  { key: "external_principal_enabled", value: "false", type: "boolean" },
3062
3144
  { key: "field_index_guard", value: "false", type: "boolean" },
3063
3145
  { 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" },
3146
+ { key: "grid_layout", value: '{"mode": "auto", "wrap": false, "row_height": "normal", "fit_max_columns": 8, "freeze_first_column": false}', type: "json" },
3064
3147
  { key: "inbound_domain", value: '"inbound.matrxserver.com"', type: "string" },
3065
3148
  { key: "member_default_level", value: '"viewer"', type: "enum" },
3066
3149
  { key: "member_default_visibility", value: '"all_records"', type: "enum" },
@@ -3068,6 +3151,8 @@ var STORE_KNOBS = [
3068
3151
  { key: "page_size_ceiling", value: "1000", type: "integer" },
3069
3152
  { key: "provenance_retention_days", value: "30", type: "number" },
3070
3153
  { key: "records_tool_default", value: "true", type: "boolean" },
3154
+ { key: "row_action_steps_max", value: "60", type: "integer" },
3155
+ { key: "row_actions_max", value: "24", type: "integer" },
3071
3156
  { key: "row_versions_guard", value: "false", type: "boolean" },
3072
3157
  { key: "sandbox_expanded_frame_height_px", value: "20000", type: "integer" },
3073
3158
  { key: "sandbox_frame_height_px", value: "4000", type: "integer" },
@@ -3075,27 +3160,30 @@ var STORE_KNOBS = [
3075
3160
  { key: "sandbox_org_components", value: "true", type: "boolean" },
3076
3161
  { key: "signup_provisioning_guard", value: "false", type: "boolean" },
3077
3162
  { key: "stage_rule_enforcement", value: '"refuse"', type: "enum" },
3078
- { key: "system_enabled", value: "false", type: "boolean" },
3163
+ { key: "system_enabled", value: "true", type: "boolean" },
3079
3164
  { key: "table_record_ceiling", value: "150000", type: "integer" },
3165
+ { key: "table_webhooks_max", value: "10", type: "integer" },
3080
3166
  { key: "value_max_bytes", value: "100000", type: "integer" },
3081
3167
  { key: "world_publish_enabled", value: "false", type: "boolean" }
3082
3168
  ];
3083
3169
  var STORE_REFUSAL_CODES = [
3084
- { 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" },
3170
+ { 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" },
3085
3171
  { 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" },
3086
3172
  { code: "22003", raised_by: "context_resolve" },
3087
- { 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" },
3173
+ { 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" },
3088
3174
  { code: "22007", raised_by: "dashboard_window_sql" },
3089
- { code: "22012", raised_by: "rule_eval" },
3090
- { 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" },
3091
- { 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" },
3175
+ { code: "22012", raised_by: "formula_eval,rule_eval" },
3176
+ { 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" },
3177
+ { 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" },
3092
3178
  { 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" },
3093
- { 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" },
3179
+ { 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" },
3094
3180
  { code: "40001", raised_by: "has_visibility_at" },
3095
- { 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" },
3181
+ { 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" },
3096
3182
  { code: "42703", raised_by: "entity_table,portal_declare" },
3097
3183
  { code: "53400", raised_by: "anon_rate_take,delete_cascade_closure,enrich_due,enrich_land,promote_field" },
3184
+ { code: "54000", raised_by: "action_run,hub_changed_by,table_decorate,table_from_example,table_webhook_declare" },
3098
3185
  { code: "54001", raised_by: "record_delete" },
3186
+ { code: "P0001", raised_by: "action_run" },
3099
3187
  { code: "PT409", raised_by: "record_update" },
3100
3188
  { code: "PT428", raised_by: "_record_rule_uses" }
3101
3189
  ];
@@ -3126,6 +3214,7 @@ var ENTITY_TOKENS = [
3126
3214
  "agent_shortcut",
3127
3215
  "agent_surface_binding",
3128
3216
  "agent_template",
3217
+ "agent_term_list",
3129
3218
  "agent_usage",
3130
3219
  "agent_user_kv",
3131
3220
  "ai_api",
@@ -4715,6 +4804,13 @@ var BY_SQLSTATE = {
4715
4804
  // stack. It is a LIMIT of the store, and the store's own sentence names what
4716
4805
  // to do about it, so it reads as one.
4717
4806
  "54001": "store_limit",
4807
+ // 54000 — the grid primitives' organization ceilings (GRID-PRIMITIVES, 2026-09-23):
4808
+ // `custom.action_run` on a selection past its knob, `custom.table_decorate` past the
4809
+ // rule count, `custom.table_from_example` past `custom/example_rows_max`,
4810
+ // `custom.table_webhook_declare` past `custom/table_webhooks_max`, and
4811
+ // `custom.hub_changed_by`. Each names its knob in the hint and writes nothing, so it
4812
+ // reads exactly like 54001: a limit of the store, in the store's own sentence.
4813
+ "54000": "store_limit",
4718
4814
  // VIS: `custom.has_visibility_at` refuses to answer from a snapshot older
4719
4815
  // than a write this reader has already seen, rather than returning something
4720
4816
  // they just lost access to. It is retryable on a fresher connection, which is
@@ -4799,6 +4895,22 @@ function staleWriteDetail(error) {
4799
4895
  };
4800
4896
  }
4801
4897
 
4898
+ // src/core/recordChanges.ts
4899
+ var listeners = /* @__PURE__ */ new Set();
4900
+ function announceRecordChanged(recordId) {
4901
+ for (const listener of [...listeners]) {
4902
+ try {
4903
+ listener(recordId);
4904
+ } catch (thrown) {
4905
+ console.error("[@ai-matrx/records] a record-change listener threw", thrown);
4906
+ }
4907
+ }
4908
+ }
4909
+ function onRecordChanged(listener) {
4910
+ listeners.add(listener);
4911
+ return () => listeners.delete(listener);
4912
+ }
4913
+
4802
4914
  // src/core/query.ts
4803
4915
  var DEFAULT_PAGE_SIZE = 50;
4804
4916
  function planQuery(query) {
@@ -4840,12 +4952,22 @@ function intersectIds(sets) {
4840
4952
 
4841
4953
  // src/core/client.ts
4842
4954
  var DEFAULT_SCHEMA = "custom";
4955
+ var A_PERSONS_REFUSAL = /* @__PURE__ */ new Set([
4956
+ "refused_by_rule",
4957
+ "stale_write",
4958
+ "invalid_argument",
4959
+ "already_exists",
4960
+ "missing_reference"
4961
+ ]);
4962
+ function isAPersonsRefusal(code) {
4963
+ return A_PERSONS_REFUSAL.has(code);
4964
+ }
4843
4965
  function sink(config) {
4844
- return config.onError ?? ((e) => (
4845
- // The defined degradation, stated: loud, with the store's own words, and
4846
- // naming where it happened. Never silence.
4847
- console.error(`[@ai-matrx/records] ${e.where}: ${e.code} \u2014 ${e.message}${e.hint ? ` (${e.hint})` : ""}`)
4848
- ));
4966
+ return config.onError ?? ((e) => {
4967
+ const line = `[@ai-matrx/records] ${e.where}: ${e.code} \u2014 ${e.message}${e.hint ? ` (${e.hint})` : ""}`;
4968
+ if (isAPersonsRefusal(e.code)) console.info(line);
4969
+ else console.error(line);
4970
+ });
4849
4971
  }
4850
4972
  function createRecordsClient(config) {
4851
4973
  const schema = config.schema ?? DEFAULT_SCHEMA;
@@ -4952,21 +5074,26 @@ function createRecordsClient(config) {
4952
5074
  },
4953
5075
  "recordUpdate"
4954
5076
  );
5077
+ if (result.ok) announceRecordChanged(record_id);
4955
5078
  return result;
4956
5079
  },
4957
5080
  async recordDelete({ record_id }) {
4958
- return callDoor(
5081
+ const result = await callDoor(
4959
5082
  DOORS.recordDelete,
4960
5083
  { p_organization_id: org, p_record_id: record_id },
4961
5084
  "recordDelete"
4962
5085
  );
5086
+ if (result.ok) announceRecordChanged(record_id);
5087
+ return result;
4963
5088
  },
4964
5089
  async recordRestore({ record_id }) {
4965
- return callDoor(
5090
+ const result = await callDoor(
4966
5091
  DOORS.recordRestore,
4967
5092
  { p_organization_id: org, p_record_id: record_id },
4968
5093
  "recordRestore"
4969
5094
  );
5095
+ if (result.ok) announceRecordChanged(record_id);
5096
+ return result;
4970
5097
  },
4971
5098
  async tableArchive({ table_id, chunk, includeTable }) {
4972
5099
  return callDoor(
@@ -5016,6 +5143,24 @@ function createRecordsClient(config) {
5016
5143
  })
5017
5144
  );
5018
5145
  },
5146
+ async tableArchived({ table_id }) {
5147
+ const kernel = await callDoor(DOORS.tableKernelId, {}, "tableArchived.kernel");
5148
+ if (!kernel.ok) return err(kernel.error);
5149
+ const PAGE = 200;
5150
+ for (let page = 0; page < 25; page += 1) {
5151
+ const answered = await this.listArchived({
5152
+ table_id: kernel.data,
5153
+ lane: "org",
5154
+ limit: PAGE,
5155
+ offset: page * PAGE
5156
+ });
5157
+ if (!answered.ok) return err(answered.error);
5158
+ const hit = answered.data.rows.find((row) => row.id === table_id);
5159
+ if (hit) return ok(hit);
5160
+ if (answered.data.total !== null) return ok(null);
5161
+ }
5162
+ return ok(null);
5163
+ },
5019
5164
  async listArchived({ table_id, lane = DEFAULT_ARCHIVE_LANE, limit = 50, offset = 0 }) {
5020
5165
  const door = await callDoor(
5021
5166
  DOORS.readRecordsArchived,
@@ -5217,9 +5362,11 @@ function createRecordsClient(config) {
5217
5362
  );
5218
5363
  },
5219
5364
  async fieldDeclare({ table_id, spec }) {
5365
+ const { allow_other, ...rest } = spec;
5366
+ const p_spec = allow_other === void 0 ? rest : { ...rest, config: { ...rest.config ?? {}, allow_other } };
5220
5367
  return callDoor(
5221
5368
  DOORS.fieldDeclare,
5222
- { p_organization_id: org, p_table_id: table_id, p_spec: spec },
5369
+ { p_organization_id: org, p_table_id: table_id, p_spec },
5223
5370
  "fieldDeclare"
5224
5371
  );
5225
5372
  },
@@ -6187,14 +6334,16 @@ function createRecordsClient(config) {
6187
6334
  );
6188
6335
  },
6189
6336
  async restoreVersion({ record_id, version }) {
6190
- return callDoor(
6337
+ const result = await callDoor(
6191
6338
  DOORS.restoreVersion,
6192
6339
  { p_organization_id: org, p_record_id: record_id, p_version: version },
6193
6340
  "restoreVersion"
6194
6341
  );
6342
+ if (result.ok) announceRecordChanged(record_id);
6343
+ return result;
6195
6344
  },
6196
6345
  async valueRestore({ record_id, field_key, version }) {
6197
- return callDoor(
6346
+ const answered = await callDoor(
6198
6347
  DOORS.valueRestore,
6199
6348
  {
6200
6349
  p_organization_id: org,
@@ -6204,6 +6353,8 @@ function createRecordsClient(config) {
6204
6353
  },
6205
6354
  "valueRestore"
6206
6355
  );
6356
+ if (answered.ok) announceRecordChanged(record_id);
6357
+ return answered;
6207
6358
  },
6208
6359
  async commentThread({ record_id, include_resolved }) {
6209
6360
  return callDoor(
@@ -7130,13 +7281,24 @@ function useRecords(tableId, options = {}) {
7130
7281
  const liveReason = realtime ? tableId ? "Live: changes to this table re-read through the read door." : "Not live: no table selected." : "Not live: this host bound no realtime port, so this list updates when you reload it.";
7131
7282
  return { ...base, live, liveReason };
7132
7283
  }
7284
+ function useRecordChangeRevision(recordId) {
7285
+ const [revision, setRevision] = useState(0);
7286
+ useEffect(() => {
7287
+ if (!recordId) return;
7288
+ return onRecordChanged((changed) => {
7289
+ if (changed === recordId) setRevision((n) => n + 1);
7290
+ });
7291
+ }, [recordId]);
7292
+ return revision;
7293
+ }
7133
7294
  function useRecord(recordId, withComputed = false) {
7295
+ const changed = useRecordChangeRevision(recordId);
7134
7296
  return useAsync(
7135
7297
  async (client) => {
7136
7298
  if (!recordId) return { ok: true, data: null };
7137
7299
  return client.recordRead({ record_id: recordId, withComputed });
7138
7300
  },
7139
- [recordId, withComputed]
7301
+ [recordId, withComputed, changed]
7140
7302
  );
7141
7303
  }
7142
7304
  function useRecordMutation() {
@@ -7482,6 +7644,11 @@ var OVERRIDE_POLICIES = [
7482
7644
  var FRESHNESS = ["live", "cached", "snapshot"];
7483
7645
  var TABLE_DISPLAYS = ["list", "grid", "board", "calendar", "timeline"];
7484
7646
 
7647
+ // src/field.ts
7648
+ function allowsOtherValues(field) {
7649
+ return field.type === "list" && field.config?.["allow_other"] === true;
7650
+ }
7651
+
7485
7652
  // src/choice.ts
7486
7653
  var UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
7487
7654
  function optionKey(option) {
@@ -8111,6 +8278,7 @@ export {
8111
8278
  VALUE_ALTERNATE_KEYS,
8112
8279
  VALUE_ENVELOPE_KEYS,
8113
8280
  actionRefusals,
8281
+ allowsOtherValues,
8114
8282
  archivedByLine,
8115
8283
  archivedWhen,
8116
8284
  asPermissionLevel,
@@ -8153,6 +8321,7 @@ export {
8153
8321
  portalPath,
8154
8322
  portalTitleTypedBack,
8155
8323
  publicFormPath,
8324
+ recordChangeTrigger,
8156
8325
  rememberedOpCount,
8157
8326
  sameDocument,
8158
8327
  scopeChip,
@@ -8170,6 +8339,7 @@ export {
8170
8339
  useMyLevels,
8171
8340
  useOptionalRecordsClient,
8172
8341
  useRecord,
8342
+ useRecordChangeRevision,
8173
8343
  useRecordMutation,
8174
8344
  useRecords,
8175
8345
  useRecordsActor,