@ai-matrx/records 0.58.17 → 0.58.20

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.
@@ -2328,6 +2328,7 @@ __export(react_exports, {
2328
2328
  useRecord: () => useRecord,
2329
2329
  useRecordChangeRevision: () => useRecordChangeRevision,
2330
2330
  useRecordMutation: () => useRecordMutation,
2331
+ useRecordPage: () => useRecordPage,
2331
2332
  useRecords: () => useRecords,
2332
2333
  useRecordsActor: () => useRecordsActor,
2333
2334
  useRecordsClient: () => useRecordsClient,
@@ -3326,6 +3327,7 @@ var STORE_DOORS = [
3326
3327
  { name: "read_records_by_ids", args: "p_organization_id uuid, p_table_id uuid, p_record_ids uuid[], p_by_id boolean DEFAULT false", returns: "TABLE(id uuid, document jsonb, level permission_level)", security: "definer" },
3327
3328
  { name: "read_records_in_view_order", args: "p_organization_id uuid, p_view_id uuid, p_by_id boolean DEFAULT false, p_limit integer DEFAULT 200, p_offset integer DEFAULT 0, p_filter jsonb DEFAULT NULL::jsonb", returns: 'TABLE(id uuid, document jsonb, level permission_level, "position" numeric)', security: "definer" },
3328
3329
  { name: "read_records_matching", args: "p_organization_id uuid, p_table_id uuid, p_filter jsonb DEFAULT '{}'::jsonb, p_by_id boolean DEFAULT false, p_limit integer DEFAULT 200, p_offset integer DEFAULT 0", returns: "TABLE(id uuid, document jsonb, level permission_level)", security: "definer" },
3330
+ { name: "read_records_page", args: "p_organization_id uuid, p_table_id uuid, p_filter jsonb DEFAULT '{}'::jsonb, p_search text DEFAULT NULL::text, p_sort jsonb DEFAULT '[]'::jsonb, p_view_id uuid DEFAULT NULL::uuid, p_by_id boolean DEFAULT false, p_limit integer DEFAULT 50, p_offset integer DEFAULT 0", returns: "jsonb", security: "definer" },
3329
3331
  { name: "realtime_topic_admits", args: "p_topic text", returns: "boolean", security: "definer" },
3330
3332
  { name: "record_aggregate", args: "p_organization_id uuid, p_table_id uuid, p_group_by jsonb DEFAULT '[]'::jsonb, p_measures jsonb DEFAULT '[]'::jsonb, p_bucket jsonb DEFAULT NULL::jsonb, p_filter jsonb DEFAULT '{}'::jsonb, p_limit integer DEFAULT 200, p_required text DEFAULT 'viewer'::text, p_compare jsonb DEFAULT NULL::jsonb", returns: "TABLE(groups jsonb, measures jsonb, row_count bigint, prior_groups jsonb, prior_measures jsonb, prior_row_count bigint, delta jsonb, compare jsonb)", security: "definer" },
3331
3333
  { name: "record_applicability", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(rule_id uuid, rule_name text, rule_version integer, applies boolean, answer jsonb)", security: "invoker" },
@@ -3334,6 +3336,7 @@ var STORE_DOORS = [
3334
3336
  { name: "record_card", args: "p_viewer uuid, p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "definer" },
3335
3337
  { name: "record_carrying_edges", args: "p_id uuid, p_data_class text, p_data jsonb, p_deleted_at timestamp with time zone", returns: "TABLE(container_id uuid, item_id uuid, edge_role text)", security: "invoker" },
3336
3338
  { name: "record_change_actions", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
3339
+ { name: "record_change_many", args: "p_organization_id uuid, p_table_id uuid, p_changes jsonb", returns: "jsonb", security: "definer" },
3337
3340
  { name: "record_delete", args: "p_organization_id uuid, p_record_id uuid", returns: "timestamp with time zone", security: "definer" },
3338
3341
  { name: "record_entity_edges", args: "p_organization_id uuid, p_id uuid, p_table_id uuid, p_data_class text, p_data jsonb, p_deleted_at timestamp with time zone", returns: "TABLE(target_type text, target_id uuid, edge_role text, field_id uuid, ord integer)", security: "invoker" },
3339
3342
  { name: "record_filter_sql", args: "p_filter jsonb", returns: "text", security: "invoker" },
@@ -3453,6 +3456,7 @@ var STORE_DOORS = [
3453
3456
  { name: "table_carries_its_rows", args: "p_user_id uuid, p_table_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level", returns: "boolean", security: "definer" },
3454
3457
  { name: "table_column_source", args: "p_organization_id uuid, p_table_id uuid", returns: "text", security: "invoker" },
3455
3458
  { name: "table_contents", args: "p_organization_id uuid, p_table_id uuid", returns: "TABLE(record_id uuid, kind text, goes_at integer)", security: "invoker" },
3459
+ { name: "table_copy_evaluation_state", args: "p_table_id uuid", returns: "jsonb", security: "definer" },
3456
3460
  { name: "table_declare", args: "p_organization_id uuid, p_spec jsonb", returns: "uuid", security: "definer" },
3457
3461
  { 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" },
3458
3462
  { name: "table_decorations", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
@@ -3525,7 +3529,13 @@ var STORE_DOORS = [
3525
3529
  { name: "visible_set", args: "p_user uuid, p_organization_id uuid, p_table_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level, OUT o_all_visible boolean, OUT o_true_visibility platform.visibility[], OUT o_granted_all uuid[], OUT o_granted_visible uuid[], OUT o_carried_visible uuid[], OUT o_ladder_calls integer, OUT o_fallback boolean, OUT o_note text", returns: "record", security: "definer" },
3526
3530
  { name: "where_id_opens", args: "p_id uuid", returns: "jsonb", security: "definer" },
3527
3531
  { name: "where_tables_live", args: "p_table_ids uuid[]", returns: "TABLE(table_id uuid, lives_in text, why text)", security: "definer" },
3532
+ { name: "whole_value_ceiling", args: "p_organization_id uuid", returns: "bigint", security: "invoker" },
3533
+ { name: "whole_value_complete", args: "p_organization_id uuid, p_record_id uuid, p_field_key text, p_file_id uuid", returns: "jsonb", security: "definer" },
3534
+ { name: "whole_value_head", args: "p_text text", returns: "text", security: "invoker" },
3535
+ { name: "whole_value_park", args: "p_organization_id uuid, p_table_id uuid, p_record_id uuid, p_owner_id uuid, p_visibility platform.visibility, p_data jsonb, p_park jsonb", returns: "void", security: "invoker" },
3528
3536
  { name: "whole_value_pointer_of", args: "p_values jsonb, p_sources jsonb, p_key text", returns: "jsonb", security: "invoker" },
3537
+ { name: "whole_value_source", args: "p_text text, p_writer_src jsonb", returns: "jsonb", security: "invoker" },
3538
+ { name: "whole_values_waiting", args: "p_organization_id uuid, p_record_ids uuid[]", returns: "TABLE(record_id uuid, field_key text, pointer text, value_version integer, sha256 text, bytes bigint, chars bigint, owner_id uuid, record_visibility text, table_id uuid, table_name text)", security: "definer" },
3529
3539
  { name: "widget_kernel_id", args: "", returns: "uuid", security: "invoker" },
3530
3540
  { name: "with_whole_value_pointers", args: "p_document jsonb, p_values jsonb, p_sources jsonb, p_visible text[], p_by_id boolean DEFAULT false, p_key_ids jsonb DEFAULT '{}'::jsonb", returns: "jsonb", security: "invoker" },
3531
3541
  { name: "withheld_marker", args: "p_mask jsonb, p_key text", returns: "jsonb", security: "invoker" },
@@ -3639,27 +3649,27 @@ var STORE_KNOBS = [
3639
3649
  { key: "world_publish_enabled", value: "false", type: "boolean" }
3640
3650
  ];
3641
3651
  var STORE_REFUSAL_CODES = [
3642
- { code: "02000", raised_by: "_checklist_instantiate,_portal_config_judge,_portal_invite_payload,_read_record_with,_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_form,portal_form_submit,portal_invite,portal_invite_accept,portal_preview,portal_principal_bind,portal_restore,portal_revoke,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_grant,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" },
3643
- { 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,rule_filter_node_sql,work_assign" },
3652
+ { code: "02000", raised_by: "_checklist_instantiate,_portal_config_judge,_portal_invite_payload,_read_record_with,_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_form,portal_form_submit,portal_invite,portal_invite_accept,portal_preview,portal_principal_bind,portal_restore,portal_revoke,record_change_many,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_grant,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" },
3653
+ { 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,read_records_page,rule_eval,rule_filter_node_sql,work_assign" },
3644
3654
  { code: "22003", raised_by: "context_resolve" },
3645
- { code: "22004", raised_by: "_entity_custom_fields_guard,_portal_config_judge,_share_write_person,_value_envelope,actor_word,agg_assert_key,agg_compare_windows,agg_sql,anon_capture,anon_token_issue,anon_write,assert_client_may_reach,booking_declare,capture_submit,checklist_declare,context_resolve,context_tag_copy,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,inbox_snooze,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_form_submit,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_move,table_share_outside_grant,table_share_outside_invite,value_restore,view_declare,view_designate,view_look_read,view_look_set,work_approval_decide,work_approval_request,work_template_declare" },
3655
+ { code: "22004", raised_by: "_entity_custom_fields_guard,_portal_config_judge,_share_write_person,_value_envelope,actor_word,agg_assert_key,agg_compare_windows,agg_sql,anon_capture,anon_token_issue,anon_write,assert_client_may_reach,booking_declare,capture_submit,checklist_declare,context_resolve,context_tag_copy,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,inbox_snooze,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_form_submit,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_move,table_share_outside_grant,table_share_outside_invite,value_restore,view_declare,view_designate,view_look_read,view_look_set,whole_value_complete,work_approval_decide,work_approval_request,work_template_declare" },
3646
3656
  { code: "22007", raised_by: "agg_parse_moment,dashboard_window_sql" },
3647
3657
  { code: "22012", raised_by: "formula_eval,rule_eval,rule_sql_op" },
3648
- { 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,_portal_config_judge,_take_op_id,_value_envelope,_view_field_key,_view_key_value,_work_shape_guard,action_run,actor_word,agg_assert_key,agg_calendar,agg_compare_windows,agg_sql,anon_token_issue,booking_declare,containment_parent,dashboard_block_normalize,dashboard_run,dashboard_target_field_assert,dashboard_window_sql,doc_render_body,doc_render_write,doc_signature_write,enrich_declare,enrich_land,enrich_normalize,enrich_pin,entity_reference_rows,entity_reference_words,entity_value_write,external_history_event,external_source_declare,external_stub_upsert,external_write_through,field_history,field_update,form_declare,form_draft_save,formula_eval,formula_parse,grid_layout_check,hub_changed_by,inbox_snooze,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,pipeline_move_many,portal_declare,portal_form_submit,provenance_write,query_by_coordinates,query_rollup,read_records_archived,read_records_in_view_order,record_filter_sql,record_update,record_write_graph,record_write_many,relation_carry,rule_eval,rule_filter_node_sql,rule_members,rule_members_visible,rule_sql_op,scope_table_provision,share_grant,share_lane_set,sign_request_create,sign_request_sign,subscription_declare,table_from_example,table_move,table_rules,table_share_outside_grant,table_sync,table_transfer_owner,table_webhook_declare,view_declare,view_keys_check,view_look_set,view_record_order_set,visibility_as_of,where_tables_live,work_approval_request,work_decide_many,work_inbox,work_list,work_slot_hold" },
3649
- { 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_draft_save,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,read_records_in_view_order,record_applicability,record_reparent,relation_carry,relation_own,resolve_first_match,rule_applies,rule_declare,rule_eval,rule_filter_node_sql,rule_members,rule_members_visible,rule_run,sign_request_create,subscription_mute,subscription_preview,table_decorate,table_from_example,table_webhook_archive,table_webhook_declare,view_declare,view_designate,view_look_set,view_record_order_set,work_set_state,work_take_assignment,work_template_instantiate" },
3658
+ { 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,_portal_config_judge,_take_op_id,_value_envelope,_view_field_key,_view_key_value,_work_shape_guard,action_run,actor_word,agg_assert_key,agg_calendar,agg_compare_windows,agg_sql,anon_token_issue,booking_declare,containment_parent,dashboard_block_normalize,dashboard_run,dashboard_target_field_assert,dashboard_window_sql,doc_render_body,doc_render_write,doc_signature_write,enrich_declare,enrich_land,enrich_normalize,enrich_pin,entity_reference_rows,entity_reference_words,entity_value_write,external_history_event,external_source_declare,external_stub_upsert,external_write_through,field_history,field_update,form_declare,form_draft_save,formula_eval,formula_parse,grid_layout_check,hub_changed_by,inbox_snooze,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,pipeline_move_many,portal_declare,portal_form_submit,provenance_write,query_by_coordinates,query_rollup,read_records_archived,read_records_in_view_order,read_records_page,record_change_many,record_filter_sql,record_update,record_write_graph,record_write_many,relation_carry,rule_eval,rule_filter_node_sql,rule_members,rule_members_visible,rule_sql_op,scope_table_provision,share_grant,share_lane_set,sign_request_create,sign_request_sign,subscription_declare,table_from_example,table_move,table_rules,table_share_outside_grant,table_sync,table_transfer_owner,table_webhook_declare,view_declare,view_keys_check,view_look_set,view_record_order_set,visibility_as_of,where_tables_live,work_approval_request,work_decide_many,work_inbox,work_list,work_slot_hold" },
3659
+ { 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_draft_save,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,read_records_in_view_order,read_records_page,record_applicability,record_reparent,relation_carry,relation_own,resolve_first_match,rule_applies,rule_declare,rule_eval,rule_filter_node_sql,rule_members,rule_members_visible,rule_run,sign_request_create,subscription_mute,subscription_preview,table_decorate,table_from_example,table_webhook_archive,table_webhook_declare,view_declare,view_designate,view_look_set,view_record_order_set,whole_value_complete,work_set_state,work_take_assignment,work_template_instantiate" },
3650
3660
  { code: "23505", raised_by: "_portal_config_judge,_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" },
3651
- { 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,_record_source_key_is_record,_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_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" },
3652
- { code: "40001", raised_by: "has_visibility_at,table_move" },
3653
- { code: "42501", raised_by: "_context_copy_fence,_doc_render_immutable,_doc_signature_immutable,_field_definition_write,_field_write_door,_portal_config_judge,_portal_principal_here,_read_record_with,_rule_definition_write,_store_door,agent_table_claim,agg_fields_readable_assert,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,context_resolve,conversation_scope_bind,conversation_scope_unbind,dashboard_target_field_assert,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_draft_save,form_public_asks,form_submit,inbound_mail_land,inbox_clear,inbox_snooze,inbox_unclear,inbox_unsnooze,io_comment_resolve,io_comment_write,io_import_begin,io_import_finish,io_restore,member_personal_tables,migrate_purge,migrate_purge_hard,migrate_purge_hard_request,migrate_reclass,my_levels,organization_clear,organization_contents,portal_declare,portal_form,portal_form_submit,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,resolve_context,scope_table_provision,share_grant,subscription_mute,subscription_preview,table_move,table_share_outside_accept,table_share_outside_grant,table_share_outside_invite,table_share_outside_resend,table_transfer_owner,table_webhook_declare,view_declare,view_look_set,view_record_order_set,visibility_as_of,where_tables_live,work_approval_decide,work_approval_read,work_approval_request,work_person" },
3661
+ { 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,_record_source_key_is_record,_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_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,whole_value_complete,work_set_state,work_slots_declare,work_take_assignment,work_template_instantiate" },
3662
+ { code: "40001", raised_by: "has_visibility_at,table_move,whole_value_complete" },
3663
+ { code: "42501", raised_by: "_context_copy_fence,_copy_evaluation_note,_copy_evaluation_reimage,_doc_render_immutable,_doc_signature_immutable,_field_definition_write,_field_write_door,_portal_config_judge,_portal_principal_here,_read_record_with,_rule_definition_write,_store_door,agent_table_claim,agg_fields_readable_assert,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,context_resolve,conversation_scope_bind,conversation_scope_unbind,dashboard_target_field_assert,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_draft_save,form_public_asks,form_submit,inbound_mail_land,inbox_clear,inbox_snooze,inbox_unclear,inbox_unsnooze,io_comment_resolve,io_comment_write,io_import_begin,io_import_finish,io_restore,member_personal_tables,migrate_purge,migrate_purge_hard,migrate_purge_hard_request,migrate_reclass,my_levels,organization_clear,organization_contents,portal_declare,portal_form,portal_form_submit,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,read_records_page,record_table,record_write_graph,relation_halves_disagreements,relation_halves_repair,resolve_context,scope_table_provision,share_grant,subscription_mute,subscription_preview,table_copy_evaluation_state,table_move,table_share_outside_accept,table_share_outside_grant,table_share_outside_invite,table_share_outside_resend,table_transfer_owner,table_webhook_declare,view_declare,view_look_set,view_record_order_set,visibility_as_of,where_tables_live,whole_value_complete,work_approval_decide,work_approval_read,work_approval_request,work_person" },
3654
3664
  { code: "42703", raised_by: "entity_table,portal_declare" },
3655
3665
  { code: "42P17", raised_by: "_field_reads_what_it_reads,far_value" },
3656
3666
  { code: "53400", raised_by: "anon_rate_take,delete_cascade_closure,enrich_due,enrich_land,promote_field" },
3657
- { code: "54000", raised_by: "action_run,form_draft_save,hub_changed_by,pipeline_move_many,record_headers,table_decorate,table_from_example,table_row_counts,table_sync,table_webhook_declare,view_record_order_set,work_decide_many" },
3667
+ { code: "54000", raised_by: "action_run,form_draft_save,hub_changed_by,pipeline_move_many,record_change_many,record_headers,table_decorate,table_from_example,table_row_counts,table_sync,table_webhook_declare,view_record_order_set,work_decide_many" },
3658
3668
  { code: "54001", raised_by: "record_delete" },
3659
3669
  { code: "55000", raised_by: "inbox_clear,inbox_snooze,table_move,work_approval_decide,work_approval_request" },
3660
3670
  { code: "P0001", raised_by: "action_run" },
3661
- { code: "P0002", raised_by: "inbox_clear,inbox_snooze" },
3662
- { code: "PT409", raised_by: "record_update" },
3671
+ { code: "P0002", raised_by: "inbox_clear,inbox_snooze,whole_value_complete" },
3672
+ { code: "PT409", raised_by: "record_change_many,record_update" },
3663
3673
  { code: "PT428", raised_by: "_record_rule_uses" }
3664
3674
  ];
3665
3675
  var ENTITY_TOKENS = [
@@ -4313,6 +4323,8 @@ var ENTITY_TOKENS = [
4313
4323
  "party_contact_point",
4314
4324
  "passkey_credential",
4315
4325
  "path_drift_repair_2026_09",
4326
+ "pb_claim_appeals_fd31de",
4327
+ "pb_insurance_claims_fd31de",
4316
4328
  "pc_article",
4317
4329
  "pc_episode",
4318
4330
  "pc_show",
@@ -4614,7 +4626,6 @@ var ENTITY_TOKENS = [
4614
4626
  "visibility_epoch",
4615
4627
  "voice",
4616
4628
  "war_room",
4617
- "wbx_capture",
4618
4629
  "wbx_demo",
4619
4630
  "wbx_guidance",
4620
4631
  "wbx_highlight",
@@ -4805,6 +4816,13 @@ var DOORS = {
4805
4816
  // `custom.record_filter_sql`, the one body `custom.agg_sql` also calls, so the
4806
4817
  // rows it opens are the rows the number counted.
4807
4818
  readRecordsMatching: "read_records_matching",
4819
+ // THE SAME READ DOOR, ASKED FOR ONE PAGE THE STORE SORTED, SEARCHED AND COUNTED (DOOR-SPEED,
4820
+ // 2026-09-25). `custom.read_records_page` takes the same filter, adds a sort (by the words a
4821
+ // person sees on a choice column), a search over the columns this reader may see, a hand-ordered
4822
+ // view's order, and answers the TOTAL of the matching visible set — the record-store twin of the
4823
+ // older store's `get_user_table_data_paginated_v2`, so a grid never reads a whole table to draw
4824
+ // one page. Its documents are built by `read_records_by_ids`. A separate NAME for the reason above.
4825
+ readRecordsPage: "read_records_page",
4808
4826
  // THE SAME READ DOOR, ADDRESSED BY ABSENCE. Every door above answers LIVE rows
4809
4827
  // only — each of them hard-codes `and r.deleted_at is null` — so until this one
4810
4828
  // existed no screen could list an archived record however it was written, and
@@ -4820,6 +4838,11 @@ var DOORS = {
4820
4838
  queryTableAsOf: "query_table_as_of",
4821
4839
  recordWrite: "record_write",
4822
4840
  recordWriteMany: "record_write_many",
4841
+ // MANY CHANGES TO ONE TABLE, ONE TRANSACTION (DOOR-SPEED, 2026-09-25). `custom.record_change_many`
4842
+ // takes inserts, updates and archives: inserts through `record_write_many`, every update in ONE
4843
+ // UPDATE statement (each record asked its editor rung, CAS honoured), archives through
4844
+ // `record_delete`. One refused change refuses the batch and nothing is saved; the hint names it.
4845
+ recordChangeMany: "record_change_many",
4823
4846
  // A PARENT, THE EDGES IT STANDS ON AND THE ROWS THAT BELONG TO IT — ALL OR NOTHING.
4824
4847
  // `recordWrite` and `recordWriteMany` are each ONE statement, so a caller that needs a
4825
4848
  // parent, its provenance edge and its child rows to land together had no door at all: a
@@ -5563,6 +5586,14 @@ function createRecordsClient(config) {
5563
5586
  }
5564
5587
  return ok(response.data);
5565
5588
  }
5589
+ let kernelAsked = null;
5590
+ function tableKernel(where) {
5591
+ kernelAsked ??= callDoor(DOORS.tableKernelId, {}, where).then((answer) => {
5592
+ if (!answer.ok) kernelAsked = null;
5593
+ return answer;
5594
+ });
5595
+ return kernelAsked;
5596
+ }
5566
5597
  function unfold(document) {
5567
5598
  const raw = document ?? {};
5568
5599
  const hidden = raw._hidden ?? {};
@@ -5602,6 +5633,25 @@ function createRecordsClient(config) {
5602
5633
  "recordWriteMany"
5603
5634
  );
5604
5635
  },
5636
+ async recordChangeMany({ table_id, changes }) {
5637
+ const opId = mintOpId();
5638
+ return callDoor(
5639
+ DOORS.recordChangeMany,
5640
+ {
5641
+ p_organization_id: org,
5642
+ p_table_id: table_id,
5643
+ p_changes: changes.map(
5644
+ (change) => change.op === "insert" ? { op: "insert", data: { ...change.data, _op_id: opId } } : change.op === "update" ? {
5645
+ op: "update",
5646
+ record_id: change.record_id,
5647
+ patch: { ...change.patch, _op_id: opId },
5648
+ ...change.expected_version === void 0 || change.expected_version === null ? {} : { expected_version: change.expected_version }
5649
+ } : { op: "archive", record_id: change.record_id }
5650
+ )
5651
+ },
5652
+ "recordChangeMany"
5653
+ );
5654
+ },
5605
5655
  async recordWriteGraph({ table_id, parent, children, edges }) {
5606
5656
  const opId = mintOpId();
5607
5657
  return callDoor(
@@ -5830,6 +5880,34 @@ function createRecordsClient(config) {
5830
5880
  const total = rows.length < limit ? offset + rows.length : null;
5831
5881
  return ok({ rows, total });
5832
5882
  },
5883
+ async listPage({ table_id, filter, search, sort, view_id, limit = 50, offset = 0 }) {
5884
+ const door = await callDoor(
5885
+ DOORS.readRecordsPage,
5886
+ {
5887
+ p_organization_id: org,
5888
+ p_table_id: table_id,
5889
+ p_filter: filter ?? {},
5890
+ p_search: search ?? null,
5891
+ p_sort: sort ?? [],
5892
+ p_view_id: view_id ?? null,
5893
+ p_limit: limit,
5894
+ p_offset: offset
5895
+ },
5896
+ "listPage"
5897
+ );
5898
+ if (!door.ok) return err(door.error);
5899
+ const answer = door.data;
5900
+ const rows = (answer?.rows ?? []).map((row) => {
5901
+ const { document, hidden } = unfold(row.document);
5902
+ return { id: row.id, document, level: row.level, hidden };
5903
+ });
5904
+ return ok({
5905
+ rows,
5906
+ total: Number(answer?.total ?? 0),
5907
+ limit: Number(answer?.limit ?? limit),
5908
+ offset: Number(answer?.offset ?? offset)
5909
+ });
5910
+ },
5833
5911
  async query(input) {
5834
5912
  const plan = planQuery(input);
5835
5913
  const sets = [];
@@ -5934,8 +6012,22 @@ function createRecordsClient(config) {
5934
6012
  offset: plan.read.offset
5935
6013
  });
5936
6014
  },
6015
+ async tableRead({ table_id }) {
6016
+ const kernel = await tableKernel("tableRead.kernel");
6017
+ if (!kernel.ok) return err(kernel.error);
6018
+ const door = await callDoor(
6019
+ DOORS.readRecordsByIds,
6020
+ { p_organization_id: org, p_table_id: kernel.data, p_record_ids: [table_id] },
6021
+ "tableRead"
6022
+ );
6023
+ if (!door.ok) return err(door.error);
6024
+ const row = (door.data ?? []).find((r) => r.id === table_id);
6025
+ if (!row) return ok(null);
6026
+ const { document } = unfold(row.document);
6027
+ return ok({ ...document, id: row.id, organization_id: org });
6028
+ },
5937
6029
  async tableList() {
5938
- const kernel = await callDoor(DOORS.tableKernelId, {}, "tableList.kernel");
6030
+ const kernel = await tableKernel("tableList.kernel");
5939
6031
  if (!kernel.ok) return err(kernel.error);
5940
6032
  const door = await callDoor(
5941
6033
  DOORS.readRecords,
@@ -7902,7 +7994,29 @@ function useRecordsActor() {
7902
7994
 
7903
7995
  // src/react/hooks.ts
7904
7996
  var import_react2 = require("react");
7905
- function useAsync(run, deps) {
7997
+ var SHARED_ANSWER_MS = 2e3;
7998
+ var sharedAnswers = /* @__PURE__ */ new WeakMap();
7999
+ function askShared(client, key, fresh, run) {
8000
+ let held = sharedAnswers.get(client);
8001
+ if (!held) {
8002
+ held = /* @__PURE__ */ new Map();
8003
+ sharedAnswers.set(client, held);
8004
+ }
8005
+ const existing = held.get(key);
8006
+ if (!fresh && existing && (existing.at === null || Date.now() - existing.at < SHARED_ANSWER_MS)) {
8007
+ return existing.answer;
8008
+ }
8009
+ const answer = run(client);
8010
+ const entry = { at: null, answer };
8011
+ held.set(key, entry);
8012
+ void answer.then((result) => {
8013
+ if (held.get(key) !== entry) return;
8014
+ if (result.ok) entry.at = Date.now();
8015
+ else held.delete(key);
8016
+ });
8017
+ return answer;
8018
+ }
8019
+ function useAsync(run, deps, share) {
7906
8020
  const client = useRecordsClient();
7907
8021
  const [state, setState] = (0, import_react2.useState)(
7908
8022
  { data: null, loading: true, error: null }
@@ -7918,7 +8032,8 @@ function useAsync(run, deps) {
7918
8032
  (0, import_react2.useEffect)(() => {
7919
8033
  let cancelled = false;
7920
8034
  setState((s) => ({ ...s, loading: true }));
7921
- void run(client).then((result) => {
8035
+ const asked = share ? askShared(client, share, nonce > 0, run) : run(client);
8036
+ void asked.then((result) => {
7922
8037
  if (cancelled || !alive.current) return;
7923
8038
  setState(
7924
8039
  result.ok ? { data: result.data, loading: false, error: null } : { data: null, loading: false, error: result.error }
@@ -7927,7 +8042,7 @@ function useAsync(run, deps) {
7927
8042
  return () => {
7928
8043
  cancelled = true;
7929
8044
  };
7930
- }, [client, nonce, ...deps]);
8045
+ }, [client, nonce, share, ...deps]);
7931
8046
  const reload = (0, import_react2.useCallback)(() => setNonce((n) => n + 1), []);
7932
8047
  const setData = (0, import_react2.useCallback)((update) => {
7933
8048
  if (!alive.current) return;
@@ -7939,15 +8054,14 @@ function useTable(tableId) {
7939
8054
  return useAsync(
7940
8055
  async (client) => {
7941
8056
  if (!tableId) return { ok: true, data: null };
7942
- const result = await client.tableList();
7943
- if (!result.ok) return result;
7944
- return { ok: true, data: result.data.find((t) => t.id === tableId) ?? null };
8057
+ return client.tableRead({ table_id: tableId });
7945
8058
  },
7946
- [tableId]
8059
+ [tableId],
8060
+ tableId ? `table:${tableId}` : null
7947
8061
  );
7948
8062
  }
7949
8063
  function useTables() {
7950
- return useAsync((client) => client.tableList(), []);
8064
+ return useAsync((client) => client.tableList(), [], "tables");
7951
8065
  }
7952
8066
  function useMyLevels(ids) {
7953
8067
  const key = ids.join(",");
@@ -7960,7 +8074,8 @@ function useMyLevels(ids) {
7960
8074
  for (const row of answered.data) held[row.id] = row.level;
7961
8075
  return { ok: true, data: held };
7962
8076
  },
7963
- [key]
8077
+ [key],
8078
+ key === "" ? null : `levels:${key}`
7964
8079
  );
7965
8080
  }
7966
8081
  function useMyLevel(id) {
@@ -7971,7 +8086,8 @@ function useMyLevel(id) {
7971
8086
  if (!answered.ok) return answered;
7972
8087
  return { ok: true, data: answered.data[0]?.level ?? null };
7973
8088
  },
7974
- [id]
8089
+ [id],
8090
+ id ? `level:${id}` : null
7975
8091
  );
7976
8092
  }
7977
8093
  var shapeRevisions = /* @__PURE__ */ new Map();
@@ -8003,29 +8119,12 @@ function useFields(tableId, recordType) {
8003
8119
  if (!tableId) return { ok: true, data: [] };
8004
8120
  return client.fields({ table_id: tableId, ...recordType === void 0 ? {} : { recordType } });
8005
8121
  },
8006
- [tableId, recordType, revision]
8122
+ [tableId, recordType, revision],
8123
+ tableId ? `fields:${tableId}:${recordType ?? ""}:${revision}` : null
8007
8124
  );
8008
8125
  }
8009
- function useRecords(tableId, options = {}) {
8126
+ function useLiveRows(tableId, base) {
8010
8127
  const client = useRecordsClient();
8011
- const pageSize = options.pageSize ?? 50;
8012
- const page = options.page ?? 0;
8013
- const filterKey = stableFilterKey(options.filter);
8014
- const base = useAsync(
8015
- async (c) => {
8016
- if (!tableId) return { ok: true, data: { rows: [], total: null } };
8017
- return c.list({
8018
- table_id: tableId,
8019
- ...filterKey === "{}" ? {} : { filter: options.filter },
8020
- limit: pageSize,
8021
- offset: page * pageSize
8022
- });
8023
- },
8024
- // The QUESTION, not the object: a parent that rebuilds `{status: "Cancelled"}`
8025
- // on every render must not re-read the page on every render, and a parent
8026
- // that changes the question must re-read on the first one.
8027
- [tableId, pageSize, page, filterKey]
8028
- );
8029
8128
  const realtime = client.config.realtime;
8030
8129
  const { reload, setData } = base;
8031
8130
  (0, import_react2.useEffect)(() => {
@@ -8072,6 +8171,54 @@ function useRecords(tableId, options = {}) {
8072
8171
  }, [realtime, tableId, client, reload, setData, base.data]);
8073
8172
  const live = Boolean(realtime && tableId);
8074
8173
  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.";
8174
+ return { live, liveReason };
8175
+ }
8176
+ function useRecords(tableId, options = {}) {
8177
+ const pageSize = options.pageSize ?? 50;
8178
+ const page = options.page ?? 0;
8179
+ const filterKey = stableFilterKey(options.filter);
8180
+ const base = useAsync(
8181
+ async (c) => {
8182
+ if (!tableId) return { ok: true, data: { rows: [], total: null } };
8183
+ return c.list({
8184
+ table_id: tableId,
8185
+ ...filterKey === "{}" ? {} : { filter: options.filter },
8186
+ limit: pageSize,
8187
+ offset: page * pageSize
8188
+ });
8189
+ },
8190
+ // The QUESTION, not the object: a parent that rebuilds `{status: "Cancelled"}`
8191
+ // on every render must not re-read the page on every render, and a parent
8192
+ // that changes the question must re-read on the first one.
8193
+ [tableId, pageSize, page, filterKey]
8194
+ );
8195
+ const { live, liveReason } = useLiveRows(tableId, base);
8196
+ return { ...base, live, liveReason };
8197
+ }
8198
+ function useRecordPage(tableId, options = {}) {
8199
+ const pageSize = options.pageSize ?? 50;
8200
+ const page = options.page ?? 0;
8201
+ const filterKey = stableFilterKey(options.filter);
8202
+ const search = options.search && options.search.trim() !== "" ? options.search.trim() : null;
8203
+ const sortKey = JSON.stringify(options.sort ?? []);
8204
+ const viewId = options.viewId ?? null;
8205
+ const base = useAsync(
8206
+ async (c) => {
8207
+ if (!tableId) return { ok: true, data: { rows: [], total: null } };
8208
+ const answered = await c.listPage({
8209
+ table_id: tableId,
8210
+ ...filterKey === "{}" ? {} : { filter: options.filter },
8211
+ search,
8212
+ sort: JSON.parse(sortKey),
8213
+ view_id: viewId,
8214
+ limit: pageSize,
8215
+ offset: page * pageSize
8216
+ });
8217
+ return answered.ok ? { ok: true, data: { rows: answered.data.rows, total: answered.data.total } } : answered;
8218
+ },
8219
+ [tableId, pageSize, page, filterKey, search, sortKey, viewId]
8220
+ );
8221
+ const { live, liveReason } = useLiveRows(tableId, base);
8075
8222
  return { ...base, live, liveReason };
8076
8223
  }
8077
8224
  function useRecordChangeRevision(recordId) {