@ai-matrx/records 0.51.0 → 0.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -31,6 +31,7 @@ __export(react_exports, {
31
31
  CONTEXT_POLICIES: () => CONTEXT_POLICIES,
32
32
  DECLARABLE_FIELD_KINDS: () => DECLARABLE_FIELD_KINDS,
33
33
  DEFAULT_ARCHIVE_LANE: () => DEFAULT_ARCHIVE_LANE,
34
+ DEFAULT_PORTAL_ARCHIVE_FILTER: () => DEFAULT_PORTAL_ARCHIVE_FILTER,
34
35
  DELIVERIES: () => DELIVERIES,
35
36
  ENTITY_TOKENS: () => ENTITY_TOKENS,
36
37
  FIELD_KINDS: () => FIELD_KINDS,
@@ -47,6 +48,7 @@ __export(react_exports, {
47
48
  PERMISSION_LEVELS: () => PERMISSION_LEVELS,
48
49
  PER_VALUE_ACCESS_WORDS: () => PER_VALUE_ACCESS_WORDS,
49
50
  PIPELINE_RULE_KINDS: () => PIPELINE_RULE_KINDS,
51
+ PORTAL_ARCHIVE_FILTERS: () => PORTAL_ARCHIVE_FILTERS,
50
52
  REFUSALS_WORTH_REPEATING: () => REFUSALS_WORTH_REPEATING,
51
53
  RELATION_BINDINGS: () => RELATION_BINDINGS,
52
54
  RELATION_CARDINALITIES: () => RELATION_CARDINALITIES,
@@ -78,6 +80,7 @@ __export(react_exports, {
78
80
  coerceTypedAnswers: () => coerceTypedAnswers,
79
81
  coercionLabel: () => coercionLabel,
80
82
  emptyArchiveLine: () => emptyArchiveLine,
83
+ emptyPortalArchiveLine: () => emptyPortalArchiveLine,
81
84
  err: () => err,
82
85
  fieldKindFor: () => fieldKindFor,
83
86
  forgetAllOps: () => forgetAllOps,
@@ -87,6 +90,7 @@ __export(react_exports, {
87
90
  isArchiveLane: () => isArchiveLane,
88
91
  isDecided: () => isDecided,
89
92
  isOwnOp: () => isOwnOp,
93
+ isPortalArchiveFilter: () => isPortalArchiveFilter,
90
94
  isRecordsErr: () => isRecordsErr,
91
95
  isTheChosen: () => isTheChosen,
92
96
  looksLikeAnId: () => looksLikeAnId,
@@ -99,7 +103,10 @@ __export(react_exports, {
99
103
  openCaptureQueue: () => openCaptureQueue,
100
104
  optionKey: () => optionKey,
101
105
  optionLabel: () => optionLabel,
106
+ portalArchiveConsequence: () => portalArchiveConsequence,
107
+ portalConfirmLine: () => portalConfirmLine,
102
108
  portalPath: () => portalPath,
109
+ portalTitleTypedBack: () => portalTitleTypedBack,
103
110
  publicFormPath: () => publicFormPath,
104
111
  rememberedOpCount: () => rememberedOpCount,
105
112
  sameDocument: () => sameDocument,
@@ -573,6 +580,7 @@ var STORE_DOORS = [
573
580
  { name: "io_export", args: "p_organization_id uuid, p_table_id uuid, p_columns text[] DEFAULT NULL::text[], p_limit integer DEFAULT 10000, p_required text DEFAULT 'viewer'::text", returns: "jsonb", security: "definer" },
574
581
  { name: "io_export_csv", args: "p_organization_id uuid, p_table_id uuid, p_columns text[] DEFAULT NULL::text[], p_limit integer DEFAULT 10000, p_delimiter text DEFAULT chr(44), p_required text DEFAULT 'viewer'::text", returns: "text", security: "definer" },
575
582
  { name: "io_import_begin", args: "p_organization_id uuid, p_table_id uuid, p_format text DEFAULT 'csv'::text, p_source_name text DEFAULT NULL::text, p_source_columns jsonb DEFAULT '[]'::jsonb, p_file_hash text DEFAULT NULL::text, p_policy jsonb DEFAULT '{}'::jsonb, p_dedupe_key text DEFAULT NULL::text, p_file_bytes bigint DEFAULT NULL::bigint, p_force boolean DEFAULT false", returns: "jsonb", security: "definer" },
583
+ { name: "io_import_declare_columns", args: "p_organization_id uuid, p_table_id uuid, p_rows jsonb, p_mapping jsonb DEFAULT '{}'::jsonb", returns: "jsonb", security: "definer" },
576
584
  { name: "io_import_finish", args: "p_organization_id uuid, p_import_id uuid, p_unmapped text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
577
585
  { name: "io_import_forget", args: "p_organization_id uuid, p_import_id uuid", returns: "boolean", security: "definer" },
578
586
  { name: "io_import_open", args: "p_organization_id uuid, p_table_id uuid, p_format text DEFAULT 'csv'::text, p_source_name text DEFAULT NULL::text, p_source_columns jsonb DEFAULT '[]'::jsonb", returns: "uuid", security: "definer" },
@@ -606,6 +614,7 @@ var STORE_DOORS = [
606
614
  { name: "levels_raised_by_a_less_specific_rung", args: "", returns: "TABLE(organization_id uuid, organization_name text, member_id uuid, member_email text, record_id uuid, addressed_level permission_level, answered_level permission_level)", security: "definer" },
607
615
  { name: "list_door_disagreements", args: "p_pretend text DEFAULT NULL::text, p_only_organization uuid DEFAULT NULL::uuid, p_sample integer DEFAULT 200", returns: "TABLE(organization_id uuid, organization_name text, member_id uuid, table_id uuid, record_id uuid, door text, why text)", security: "invoker" },
608
616
  { name: "list_door_disagreements", args: "p_pretend text, p_only_organization uuid, p_sample integer, p_exhaustive boolean", returns: "TABLE(organization_id uuid, organization_name text, member_id uuid, table_id uuid, record_id uuid, door text, why text)", security: "invoker" },
617
+ { name: "list_portals", args: "p_organization_id uuid, p_archived text DEFAULT 'active'::text", returns: "TABLE(portal_id uuid, title text, slug text, client_table_id uuid, client_table text, is_active boolean, tables integer, invited integer, signed_in integer, sign_in_method text, opened_at timestamp with time zone)", security: "definer" },
609
618
  { name: "lookup_value", args: "p_organization_id uuid, p_record_id uuid, p_field_data jsonb", returns: "jsonb", security: "invoker" },
610
619
  { name: "mask_document", args: "p_document jsonb, p_visible_keys text[], p_notices jsonb, p_by_id boolean DEFAULT false, p_key_ids jsonb DEFAULT '{}'::jsonb", returns: "jsonb", security: "invoker" },
611
620
  { name: "mask_document", args: "p_document jsonb, p_visible_keys text[], p_notices jsonb, p_by_id boolean DEFAULT false, p_key_ids jsonb DEFAULT '{}'::jsonb, p_declared_keys text[] DEFAULT NULL::text[]", returns: "jsonb", security: "invoker" },
@@ -655,6 +664,7 @@ var STORE_DOORS = [
655
664
  { name: "pipeline_read", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
656
665
  { name: "pipeline_transition_refusal", args: "p_organization_id uuid, p_record_id uuid, p_to text", returns: "jsonb", security: "definer" },
657
666
  { name: "portal_admits", args: "p_organization_id uuid, p_user_id uuid DEFAULT NULL::uuid", returns: "boolean", security: "definer" },
667
+ { 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" },
658
668
  { name: "portal_card", args: "p_organization_id uuid, p_portal_id uuid", returns: "jsonb", security: "definer" },
659
669
  { name: "portal_declare", args: "p_organization_id uuid, p_title text, p_client_table_id uuid, p_tables jsonb, p_portal_id uuid DEFAULT NULL::uuid, p_slug text DEFAULT NULL::text, p_sign_in_method text DEFAULT 'magic_link'::text", returns: "uuid", security: "definer" },
660
670
  { name: "portal_field_map", args: "p_organization_id uuid, p_table_id uuid", returns: "TABLE(field_id uuid, field_key text, field_type text, points_at uuid)", security: "definer" },
@@ -666,6 +676,7 @@ var STORE_DOORS = [
666
676
  { name: "portal_principal_bind", args: "p_organization_id uuid, p_principal_id uuid, p_user_id uuid", returns: "jsonb", security: "definer" },
667
677
  { name: "portal_public", args: "p_slug text", returns: "jsonb", security: "definer" },
668
678
  { name: "portal_record_title", args: "p_organization_id uuid, p_record_id uuid", returns: "text", security: "definer" },
679
+ { name: "portal_restore", args: "p_organization_id uuid, p_portal_id uuid, p_confirm_title text", returns: "jsonb", security: "definer" },
669
680
  { name: "portal_revoke", args: "p_organization_id uuid, p_portal_id uuid, p_principal_id uuid", returns: "jsonb", security: "definer" },
670
681
  { name: "portal_slug", args: "p_organization_id uuid, p_title text, p_portal_id uuid DEFAULT NULL::uuid", returns: "text", security: "definer" },
671
682
  { name: "portal_tables", args: "p_organization_id uuid", returns: "TABLE(portal_id uuid, table_id uuid, name text)", security: "definer" },
@@ -946,16 +957,16 @@ var STORE_KNOBS = [
946
957
  { key: "world_publish_enabled", value: "false", type: "boolean" }
947
958
  ];
948
959
  var STORE_REFUSAL_CODES = [
949
- { 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_card,portal_declare,portal_invite,portal_invite_accept,portal_preview,portal_principal_bind,portal_revoke,read_record,record_delete,record_restore,record_restore_preview,record_table,record_update,relation_uncarry,share_access,share_grant,share_lane_set,share_people,share_revoke,sign_request_cancel,sign_request_create,sign_request_remind,sign_request_unchanged,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" },
960
+ { 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" },
950
961
  { 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" },
951
962
  { code: "22003", raised_by: "context_resolve" },
952
963
  { 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_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_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" },
953
964
  { code: "22007", raised_by: "dashboard_window_sql" },
954
965
  { code: "22012", raised_by: "rule_eval" },
955
- { 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,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_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" },
966
+ { 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_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" },
956
967
  { 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" },
957
968
  { 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" },
958
- { 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,_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,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" },
969
+ { 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,_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,portal_archive,portal_restore,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" },
959
970
  { code: "40001", raised_by: "has_visibility_at" },
960
971
  { 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_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,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" },
961
972
  { code: "42703", raised_by: "entity_table,portal_declare" },
@@ -2212,6 +2223,7 @@ var DOORS = {
2212
2223
  // ways to start an import from one client is how they drift.
2213
2224
  importPlan: "io_import_plan",
2214
2225
  importBegin: "io_import_begin",
2226
+ importDeclareColumns: "io_import_declare_columns",
2215
2227
  importRows: "io_import_rows",
2216
2228
  importFinish: "io_import_finish",
2217
2229
  importReport: "io_import_report",
@@ -2248,6 +2260,17 @@ var DOORS = {
2248
2260
  portalInvite: "portal_invite",
2249
2261
  portalRevoke: "portal_revoke",
2250
2262
  portalPreview: "portal_preview",
2263
+ // ORG-CLEANUP, 2026-09-22 — A PORTAL IS ARCHIVED, NEVER DELETED.
2264
+ // `portals` keeps its signature and HIDES archived portals (the law's default
2265
+ // is to hide); `list_portals(org, 'active'|'archived'|'all')` is the
2266
+ // archive-aware reader, taking the platform archive filter's own three values
2267
+ // so one door serves both lanes and no screen has to invent a second control.
2268
+ // `portal_archive` / `portal_restore` are the way out and the way back; both
2269
+ // take the portal's own title typed back, because ten portals can carry one
2270
+ // title and the title alone is not what picks this one.
2271
+ listPortals: "list_portals",
2272
+ portalArchive: "portal_archive",
2273
+ portalRestore: "portal_restore",
2251
2274
  // SCR-16 — the canvas. A dashboard is a record in the presentation kernel
2252
2275
  // whose blocks are saved SPECS for the eighth verb; `dashboardRun` walks them
2253
2276
  // under the CALLER'S principal, so nothing here is precomputed and nothing is
@@ -3281,6 +3304,18 @@ function createRecordsClient(config) {
3281
3304
  "importBegin"
3282
3305
  );
3283
3306
  },
3307
+ async importDeclareColumns(args) {
3308
+ return callDoor(
3309
+ DOORS.importDeclareColumns,
3310
+ {
3311
+ p_organization_id: org,
3312
+ p_table_id: args.table_id,
3313
+ p_rows: args.rows,
3314
+ p_mapping: args.mapping ?? {}
3315
+ },
3316
+ "importDeclareColumns"
3317
+ );
3318
+ },
3284
3319
  async importRows(args) {
3285
3320
  return callDoor(
3286
3321
  DOORS.importRows,
@@ -3351,6 +3386,36 @@ function createRecordsClient(config) {
3351
3386
  async portals() {
3352
3387
  return callDoor(DOORS.portals, { p_organization_id: org }, "portals");
3353
3388
  },
3389
+ async listPortals(args) {
3390
+ return callDoor(
3391
+ DOORS.listPortals,
3392
+ { p_organization_id: org, p_archived: args?.archived ?? "active" },
3393
+ "listPortals"
3394
+ );
3395
+ },
3396
+ async portalArchive(args) {
3397
+ return callDoor(
3398
+ DOORS.portalArchive,
3399
+ {
3400
+ p_organization_id: org,
3401
+ p_portal_id: args.portal_id,
3402
+ p_confirm_title: args.confirm_title,
3403
+ p_reason: args.reason ?? null
3404
+ },
3405
+ "portalArchive"
3406
+ );
3407
+ },
3408
+ async portalRestore(args) {
3409
+ return callDoor(
3410
+ DOORS.portalRestore,
3411
+ {
3412
+ p_organization_id: org,
3413
+ p_portal_id: args.portal_id,
3414
+ p_confirm_title: args.confirm_title
3415
+ },
3416
+ "portalRestore"
3417
+ );
3418
+ },
3354
3419
  async portalTables() {
3355
3420
  return callDoor(DOORS.portalTables, { p_organization_id: org }, "portalTables");
3356
3421
  },
@@ -5239,6 +5304,24 @@ function publicFormPath(formId) {
5239
5304
  function portalPath(slug) {
5240
5305
  return `/portal/c/${slug}`;
5241
5306
  }
5307
+ var PORTAL_ARCHIVE_FILTERS = ["active", "archived", "all"];
5308
+ var DEFAULT_PORTAL_ARCHIVE_FILTER = "active";
5309
+ function isPortalArchiveFilter(word) {
5310
+ return typeof word === "string" && PORTAL_ARCHIVE_FILTERS.includes(word);
5311
+ }
5312
+ function portalArchiveConsequence(title, signedIn, invited) {
5313
+ const people = invited === 0 ? "Nobody is invited to it" : signedIn === 0 ? `The ${invited} ${invited === 1 ? "person" : "people"} invited to it will not be able to sign in` : `The ${signedIn} ${signedIn === 1 ? "person" : "people"} signed in to it, and the ${invited - signedIn} still invited, will not be able to sign in`;
5314
+ return `\u201C${title}\u201D will leave your portal list. ${people}, and their invitation links will say this portal was archived and can be restored. Nothing is deleted \u2014 every Table it shows and everyone invited to it is kept exactly as it is, and you can restore it at any time.`;
5315
+ }
5316
+ function portalConfirmLine(title) {
5317
+ return `Type the portal\u2019s title \u2014 ${title} \u2014 to confirm you mean this one.`;
5318
+ }
5319
+ function portalTitleTypedBack(typed, title) {
5320
+ return typed.trim() === (title ?? "").trim();
5321
+ }
5322
+ function emptyPortalArchiveLine() {
5323
+ return "No portal of this organization has been archived. A portal you put away waits here until somebody restores it, and nothing is ever destroyed.";
5324
+ }
5242
5325
 
5243
5326
  // src/capture-queue.ts
5244
5327
  var DB_NAME = "matrx-capture";