@ai-matrx/records 0.54.0 → 0.56.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.
- package/CHANGELOG.md +78 -0
- package/dist/core/index.cjs +2485 -8
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +154 -9
- package/dist/core/index.d.ts +154 -9
- package/dist/core/index.js +2492 -8
- package/dist/core/index.js.map +1 -1
- package/dist/index.cjs +111 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +250 -4
- package/dist/index.d.ts +250 -4
- package/dist/index.js +101 -4
- package/dist/index.js.map +1 -1
- package/dist/react/index.cjs +2495 -8
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +767 -10
- package/dist/react/index.d.ts +767 -10
- package/dist/react/index.js +2491 -8
- package/dist/react/index.js.map +1 -1
- package/dist/{field-Ct7_iYEF.d.cts → types-RxnWzAWZ.d.cts} +395 -5
- package/dist/{field-Ct7_iYEF.d.ts → types-RxnWzAWZ.d.ts} +395 -5
- package/dist/use-cases/index.cjs +15 -0
- package/dist/use-cases/index.cjs.map +1 -1
- package/dist/use-cases/index.d.cts +3 -336
- package/dist/use-cases/index.d.ts +3 -336
- package/dist/use-cases/index.js +15 -0
- package/dist/use-cases/index.js.map +1 -1
- package/package.json +7 -7
package/dist/react/index.d.ts
CHANGED
|
@@ -1086,6 +1086,11 @@ declare const STORE_DOORS: readonly [{
|
|
|
1086
1086
|
readonly args: "";
|
|
1087
1087
|
readonly returns: "TABLE(function_name text, identity_args text, why text)";
|
|
1088
1088
|
readonly security: "invoker";
|
|
1089
|
+
}, {
|
|
1090
|
+
readonly name: "doors_refusing_in_another_doors_name";
|
|
1091
|
+
readonly args: "";
|
|
1092
|
+
readonly returns: "TABLE(function_name text, identity_args text, why text)";
|
|
1093
|
+
readonly security: "invoker";
|
|
1089
1094
|
}, {
|
|
1090
1095
|
readonly name: "effective_level";
|
|
1091
1096
|
readonly args: "p_user_id uuid, p_organization_id uuid, p_id uuid, p_type text DEFAULT 'record'::text";
|
|
@@ -1296,6 +1301,11 @@ declare const STORE_DOORS: readonly [{
|
|
|
1296
1301
|
readonly args: "p_to jsonb, p_value jsonb";
|
|
1297
1302
|
readonly returns: "jsonb";
|
|
1298
1303
|
readonly security: "invoker";
|
|
1304
|
+
}, {
|
|
1305
|
+
readonly name: "field_words";
|
|
1306
|
+
readonly args: "p_organization_id uuid, p_field_id uuid, p_value jsonb";
|
|
1307
|
+
readonly returns: "text";
|
|
1308
|
+
readonly security: "invoker";
|
|
1299
1309
|
}, {
|
|
1300
1310
|
readonly name: "file_kernel_id";
|
|
1301
1311
|
readonly args: "";
|
|
@@ -1751,6 +1761,11 @@ declare const STORE_DOORS: readonly [{
|
|
|
1751
1761
|
readonly args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_dry_run boolean DEFAULT true";
|
|
1752
1762
|
readonly returns: "jsonb";
|
|
1753
1763
|
readonly security: "definer";
|
|
1764
|
+
}, {
|
|
1765
|
+
readonly name: "migrate_purge_hard";
|
|
1766
|
+
readonly 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";
|
|
1767
|
+
readonly returns: "jsonb";
|
|
1768
|
+
readonly security: "definer";
|
|
1754
1769
|
}, {
|
|
1755
1770
|
readonly name: "migrate_reclass";
|
|
1756
1771
|
readonly args: "p_organization_id uuid, p_id uuid, p_to text DEFAULT 'field'::text, p_note text DEFAULT NULL::text";
|
|
@@ -2386,6 +2401,11 @@ declare const STORE_DOORS: readonly [{
|
|
|
2386
2401
|
readonly args: "p_organization_id uuid, p_table_id uuid, p_data jsonb";
|
|
2387
2402
|
readonly returns: "uuid";
|
|
2388
2403
|
readonly security: "definer";
|
|
2404
|
+
}, {
|
|
2405
|
+
readonly name: "record_write_graph";
|
|
2406
|
+
readonly args: "p_organization_id uuid, p_table_id uuid, p_parent jsonb, p_edges jsonb DEFAULT '[]'::jsonb, p_children jsonb DEFAULT '[]'::jsonb";
|
|
2407
|
+
readonly returns: "jsonb";
|
|
2408
|
+
readonly security: "definer";
|
|
2389
2409
|
}, {
|
|
2390
2410
|
readonly name: "record_write_many";
|
|
2391
2411
|
readonly args: "p_organization_id uuid, p_table_id uuid, p_rows jsonb[], p_ids uuid[] DEFAULT NULL::uuid[]";
|
|
@@ -2776,6 +2796,11 @@ declare const STORE_DOORS: readonly [{
|
|
|
2776
2796
|
readonly args: "p_organization_id uuid, p_table_id uuid";
|
|
2777
2797
|
readonly returns: "boolean";
|
|
2778
2798
|
readonly security: "invoker";
|
|
2799
|
+
}, {
|
|
2800
|
+
readonly name: "table_is_options_table";
|
|
2801
|
+
readonly args: "p_organization_id uuid, p_table_id uuid";
|
|
2802
|
+
readonly returns: "boolean";
|
|
2803
|
+
readonly security: "invoker";
|
|
2779
2804
|
}, {
|
|
2780
2805
|
readonly name: "table_kernel_id";
|
|
2781
2806
|
readonly args: "";
|
|
@@ -2841,6 +2866,16 @@ declare const STORE_DOORS: readonly [{
|
|
|
2841
2866
|
readonly args: "p_organization_id uuid, p_table_id uuid";
|
|
2842
2867
|
readonly returns: "text";
|
|
2843
2868
|
readonly security: "definer";
|
|
2869
|
+
}, {
|
|
2870
|
+
readonly name: "table_unique_rule_fields";
|
|
2871
|
+
readonly args: "p_organization_id uuid, p_table_id uuid";
|
|
2872
|
+
readonly returns: "jsonb";
|
|
2873
|
+
readonly security: "invoker";
|
|
2874
|
+
}, {
|
|
2875
|
+
readonly name: "table_work_kind";
|
|
2876
|
+
readonly args: "p_organization_id uuid, p_table_id uuid";
|
|
2877
|
+
readonly returns: "text";
|
|
2878
|
+
readonly security: "invoker";
|
|
2844
2879
|
}, {
|
|
2845
2880
|
readonly name: "tables_at_home";
|
|
2846
2881
|
readonly args: "p_organization_id uuid, p_home_ids uuid[]";
|
|
@@ -3353,7 +3388,7 @@ declare const STORE_REFUSAL_CODES: readonly [{
|
|
|
3353
3388
|
readonly raised_by: "context_resolve";
|
|
3354
3389
|
}, {
|
|
3355
3390
|
readonly code: "22004";
|
|
3356
|
-
readonly 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";
|
|
3391
|
+
readonly 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";
|
|
3357
3392
|
}, {
|
|
3358
3393
|
readonly code: "22007";
|
|
3359
3394
|
readonly raised_by: "dashboard_window_sql";
|
|
@@ -3362,7 +3397,7 @@ declare const STORE_REFUSAL_CODES: readonly [{
|
|
|
3362
3397
|
readonly raised_by: "rule_eval";
|
|
3363
3398
|
}, {
|
|
3364
3399
|
readonly code: "22023";
|
|
3365
|
-
readonly 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";
|
|
3400
|
+
readonly 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";
|
|
3366
3401
|
}, {
|
|
3367
3402
|
readonly code: "23503";
|
|
3368
3403
|
readonly 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";
|
|
@@ -3371,13 +3406,13 @@ declare const STORE_REFUSAL_CODES: readonly [{
|
|
|
3371
3406
|
readonly 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";
|
|
3372
3407
|
}, {
|
|
3373
3408
|
readonly code: "23514";
|
|
3374
|
-
readonly 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";
|
|
3409
|
+
readonly 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";
|
|
3375
3410
|
}, {
|
|
3376
3411
|
readonly code: "40001";
|
|
3377
3412
|
readonly raised_by: "has_visibility_at";
|
|
3378
3413
|
}, {
|
|
3379
3414
|
readonly code: "42501";
|
|
3380
|
-
readonly 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";
|
|
3415
|
+
readonly 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";
|
|
3381
3416
|
}, {
|
|
3382
3417
|
readonly code: "42703";
|
|
3383
3418
|
readonly raised_by: "entity_table,portal_declare";
|
|
@@ -3782,6 +3817,27 @@ interface RecordDocument {
|
|
|
3782
3817
|
[fieldKey: string]: unknown;
|
|
3783
3818
|
}
|
|
3784
3819
|
/** `custom.record` as the store holds it — the row around the document. */
|
|
3820
|
+
/**
|
|
3821
|
+
* What `custom.record_write_graph` wrote — a parent, the rows that belong to it, and the
|
|
3822
|
+
* edges it stands on, all in one transaction.
|
|
3823
|
+
*
|
|
3824
|
+
* `edges` counts BOTH writers: the edges written through `public.assoc_add` (whose ids are
|
|
3825
|
+
* in `edge_ids`) and the relation targets written through `platform.relation_set`, which
|
|
3826
|
+
* answers a count rather than ids because a relation is one field's worth of targets and
|
|
3827
|
+
* not a list of independent edges. `relations` is that second number on its own, so a
|
|
3828
|
+
* caller can tell them apart instead of subtracting.
|
|
3829
|
+
*/
|
|
3830
|
+
interface RecordGraphWritten {
|
|
3831
|
+
parent_id: Uuid;
|
|
3832
|
+
table_id: Uuid | null;
|
|
3833
|
+
child_ids: Uuid[];
|
|
3834
|
+
edge_ids: Uuid[];
|
|
3835
|
+
children: number;
|
|
3836
|
+
edges: number;
|
|
3837
|
+
relations: number;
|
|
3838
|
+
/** The door's own sentence about what it did. Shown, never re-worded. */
|
|
3839
|
+
how: string;
|
|
3840
|
+
}
|
|
3785
3841
|
interface StoredRecord {
|
|
3786
3842
|
id: Uuid;
|
|
3787
3843
|
organization_id: Uuid;
|
|
@@ -5602,7 +5658,9 @@ declare function portalTitleTypedBack(typed: string, title: string): boolean;
|
|
|
5602
5658
|
declare function emptyPortalArchiveLine(): string;
|
|
5603
5659
|
|
|
5604
5660
|
/** The measures the store offers. Asked of `custom.agg_operations()` at run time too. */
|
|
5605
|
-
type AggregateOperation = "count" | "sum" | "avg" | "min" | "max"
|
|
5661
|
+
type AggregateOperation = "count" | "sum" | "avg" | "min" | "max"
|
|
5662
|
+
/** GRID-PRIMITIVES G1: the summary bar's other four. Blank = no value, JSON null or "". */
|
|
5663
|
+
| "median" | "filled" | "empty" | "unique";
|
|
5606
5664
|
/** The periods a date Field can be bucketed into (`custom.agg_buckets()`). */
|
|
5607
5665
|
type AggregateBucket = "day" | "week" | "month" | "quarter" | "year";
|
|
5608
5666
|
/**
|
|
@@ -5673,6 +5731,543 @@ declare function measureKey(measure: AggregateMeasure): string;
|
|
|
5673
5731
|
*/
|
|
5674
5732
|
declare function stableFilterKey(filter: RecordFilter | null | undefined): string;
|
|
5675
5733
|
|
|
5734
|
+
/**
|
|
5735
|
+
* Who the data belongs to. A test organization is created under this name — the
|
|
5736
|
+
* owner's law #4: every organization, table, record, form, portal, dashboard,
|
|
5737
|
+
* document, checklist, booking page, capture sheet, subscription, pipeline and
|
|
5738
|
+
* enrichment created for a test carries the use case's own name. Cleanup finds
|
|
5739
|
+
* a test organization by `cleanupTag` in its settings, NEVER by a junk name.
|
|
5740
|
+
*/
|
|
5741
|
+
interface BusinessIdentity {
|
|
5742
|
+
/** "Harbor Dental Group" — what goes on the organization, the invoice, the screenshot. */
|
|
5743
|
+
name: string;
|
|
5744
|
+
/** "Harbor Dental Group, PLLC" — used on documents that need the legal entity. */
|
|
5745
|
+
legalName?: string;
|
|
5746
|
+
/** One line a stranger would understand: "A six-chair family dental practice." */
|
|
5747
|
+
describes: string;
|
|
5748
|
+
/** Plausible and synthesized. Never a real business's real address. */
|
|
5749
|
+
address: PostalAddress;
|
|
5750
|
+
/** Synthesized, E.164-shaped or the local convention the document uses. */
|
|
5751
|
+
phone: string;
|
|
5752
|
+
/**
|
|
5753
|
+
* Synthesized. NOT a `.example` domain — those read as fake on a screenshot.
|
|
5754
|
+
* Optional, because the law welcomes personal-life use cases and a household
|
|
5755
|
+
* renovation or a family recipe collection genuinely has no website.
|
|
5756
|
+
*/
|
|
5757
|
+
website?: string;
|
|
5758
|
+
/** Synthesized mailbox on the same domain: "frontdesk@harbordentalgroup.com". */
|
|
5759
|
+
email: string;
|
|
5760
|
+
/** IANA zone, so dates in the rows make sense together. */
|
|
5761
|
+
timezone: string;
|
|
5762
|
+
}
|
|
5763
|
+
interface PostalAddress {
|
|
5764
|
+
line1: string;
|
|
5765
|
+
line2?: string;
|
|
5766
|
+
city: string;
|
|
5767
|
+
/** State, province or region, in the country's own convention. */
|
|
5768
|
+
region: string;
|
|
5769
|
+
postalCode: string;
|
|
5770
|
+
/** ISO 3166-1 alpha-2. */
|
|
5771
|
+
country: string;
|
|
5772
|
+
}
|
|
5773
|
+
/**
|
|
5774
|
+
* One table of the business, in the words the practitioner uses. `token` is the
|
|
5775
|
+
* slug the store addresses it by; `name` is what a person reads.
|
|
5776
|
+
*/
|
|
5777
|
+
interface UseCaseTable {
|
|
5778
|
+
/** snake_case, singular, the practitioner's noun: "patient", "work_order". */
|
|
5779
|
+
token: string;
|
|
5780
|
+
/** "Patients", "Work orders". */
|
|
5781
|
+
name: string;
|
|
5782
|
+
labelSingular: string;
|
|
5783
|
+
labelPlural: string;
|
|
5784
|
+
/** REC-32. One of the seven, closed. Most business tables are `entity`. */
|
|
5785
|
+
type: TableType;
|
|
5786
|
+
display: TableDisplay;
|
|
5787
|
+
/** REC-4. `light` is the whole document; `heavy` is indexed on write. */
|
|
5788
|
+
weight: StorageMode;
|
|
5789
|
+
ordered: boolean;
|
|
5790
|
+
/** A lucide icon name, so the screen is not a wall of identical rows. */
|
|
5791
|
+
icon?: string;
|
|
5792
|
+
/** REC-2. The field key whose value titles a record. Must be a declared field. */
|
|
5793
|
+
titleField: string;
|
|
5794
|
+
/** What this table is FOR, in the practitioner's words. */
|
|
5795
|
+
describes: string;
|
|
5796
|
+
fields: UseCaseField[];
|
|
5797
|
+
/** The seed rows. Enough that the screen looks like a working business. */
|
|
5798
|
+
rows: UseCaseRow[];
|
|
5799
|
+
}
|
|
5800
|
+
/**
|
|
5801
|
+
* One field. `parityType` is the word a person picks in the UI and it must be
|
|
5802
|
+
* one the store resolves — any parity type the store ships, any behaviour they
|
|
5803
|
+
* are made of, or one of the plain synonyms (see `FieldTypeWord`). The set is
|
|
5804
|
+
* `RESOLVABLE_FIELD_TYPE_WORDS`, derived from the registry; never a count or a
|
|
5805
|
+
* list typed out here.
|
|
5806
|
+
*/
|
|
5807
|
+
interface UseCaseField {
|
|
5808
|
+
/** snake_case, the practitioner's own name for it: "date_of_birth", "po_number". */
|
|
5809
|
+
key: string;
|
|
5810
|
+
/** "Date of birth", "PO number". Sentence case, the way the form reads. */
|
|
5811
|
+
label: string;
|
|
5812
|
+
parityType: FieldTypeWord;
|
|
5813
|
+
/** FLD-2. The shape of the value, never a second behaviour. */
|
|
5814
|
+
multi?: boolean;
|
|
5815
|
+
/** FLD-2. The values carry their own dates. */
|
|
5816
|
+
dated?: boolean;
|
|
5817
|
+
required?: boolean;
|
|
5818
|
+
/** FLD-N-1. The unit CHANGES THE MEANING and lives on the field: "USD", "lb", "mi". */
|
|
5819
|
+
unit?: string | null;
|
|
5820
|
+
/** "currency", "percent", "email", "phone", "url", "date". Never decoration. */
|
|
5821
|
+
format?: string | null;
|
|
5822
|
+
/** FLD-7. Where the values come from. Defaults to `manual`. */
|
|
5823
|
+
source?: FieldSource;
|
|
5824
|
+
/** FLD-9. A formula says whether it computes on read or on write. */
|
|
5825
|
+
computeOn?: ComputeOn;
|
|
5826
|
+
/** FLD-3. Validation rules the store will enforce. */
|
|
5827
|
+
rules?: FieldRule[];
|
|
5828
|
+
/**
|
|
5829
|
+
* For `select` / `multi_select`: the REAL lifecycle words of this business,
|
|
5830
|
+
* in the order they actually happen. "Scheduled, Confirmed, Seen, No-show" —
|
|
5831
|
+
* never "Option A, Option B".
|
|
5832
|
+
*/
|
|
5833
|
+
choices?: string[];
|
|
5834
|
+
/** For a relation field: the `token` of the table it points at. */
|
|
5835
|
+
relationTarget?: string;
|
|
5836
|
+
relationMax?: number;
|
|
5837
|
+
/** AGT-7. The ceiling a merge field's delivery can never widen. */
|
|
5838
|
+
sensitivity: FieldSensitivity;
|
|
5839
|
+
/** FLD-12. Whether an agent may see this field's values at all. */
|
|
5840
|
+
contextPolicy: ContextPolicy;
|
|
5841
|
+
/** What the practitioner would be told about this field, if anything. */
|
|
5842
|
+
help?: string;
|
|
5843
|
+
}
|
|
5844
|
+
/**
|
|
5845
|
+
* One row of seed data.
|
|
5846
|
+
*
|
|
5847
|
+
* `key` is a stable LOCAL id (not a UUID): relationships across tables point at
|
|
5848
|
+
* it, so a template is readable and a seeder can resolve the graph in one pass
|
|
5849
|
+
* without inventing identifiers. Use a meaningful slug — "patient-rivera-m",
|
|
5850
|
+
* not "row-7".
|
|
5851
|
+
*/
|
|
5852
|
+
interface UseCaseRow {
|
|
5853
|
+
key: string;
|
|
5854
|
+
/**
|
|
5855
|
+
* Keyed by the table's field keys. A relation field's value is the `key` (or
|
|
5856
|
+
* an array of keys) of rows in the target table.
|
|
5857
|
+
*/
|
|
5858
|
+
values: Record<string, unknown>;
|
|
5859
|
+
}
|
|
5860
|
+
/**
|
|
5861
|
+
* REL-1…REL-9. The domain truth, stated once: "an invoice belongs to the job it
|
|
5862
|
+
* bills, and a job belongs to the client who asked for it."
|
|
5863
|
+
*
|
|
5864
|
+
* The field side carries `relationTarget`; this is the declaration a seeder
|
|
5865
|
+
* reads, because it also carries the flavour, the cardinality, what happens to
|
|
5866
|
+
* the far side on delete, and the reverse name.
|
|
5867
|
+
*/
|
|
5868
|
+
interface UseCaseRelationship {
|
|
5869
|
+
/** One sentence of domain truth. Not "links A to B". */
|
|
5870
|
+
describes: string;
|
|
5871
|
+
/** The table that HOLDS the relation field. */
|
|
5872
|
+
fromTable: string;
|
|
5873
|
+
/** The field key on `fromTable`. Must be declared and must be a relation. */
|
|
5874
|
+
fromField: string;
|
|
5875
|
+
/** The `token` of the table it points at. */
|
|
5876
|
+
toTable: string;
|
|
5877
|
+
/** REL-1. Ownership is one fact, stored once, read from the field's side. */
|
|
5878
|
+
flavor: RelationFlavor;
|
|
5879
|
+
/** REL-7. */
|
|
5880
|
+
cardinality: RelationCardinality;
|
|
5881
|
+
/** REL-2. What happens to the far side, separate from flavour. */
|
|
5882
|
+
onDelete: OnDelete;
|
|
5883
|
+
/** REL-9. The reverse, visible from both ends, and NOT a second field. */
|
|
5884
|
+
inverseKey: string;
|
|
5885
|
+
}
|
|
5886
|
+
/** Who is allowed to open a form. */
|
|
5887
|
+
type FormAudience = "public" | "member" | "staff";
|
|
5888
|
+
/**
|
|
5889
|
+
* A form a practitioner in this business would actually put in front of someone
|
|
5890
|
+
* — "the Harbor Dental new-patient intake", never "Test Form 1".
|
|
5891
|
+
*/
|
|
5892
|
+
interface UseCaseForm {
|
|
5893
|
+
token: string;
|
|
5894
|
+
name: string;
|
|
5895
|
+
/** What it is for, and who fills it in. */
|
|
5896
|
+
describes: string;
|
|
5897
|
+
audience: FormAudience;
|
|
5898
|
+
/** The table a submission becomes a record of. */
|
|
5899
|
+
table: string;
|
|
5900
|
+
fields: UseCaseFormField[];
|
|
5901
|
+
submitLabel: string;
|
|
5902
|
+
/** What the person sees after they submit. Real words, not "Success!". */
|
|
5903
|
+
confirmation: string;
|
|
5904
|
+
}
|
|
5905
|
+
interface UseCaseFormField {
|
|
5906
|
+
/** A field key on the form's table. */
|
|
5907
|
+
fieldKey: string;
|
|
5908
|
+
/** Override the field's own label when the form asks it differently. */
|
|
5909
|
+
label?: string;
|
|
5910
|
+
required?: boolean;
|
|
5911
|
+
/** The helper line under the input, if a practitioner would want one. */
|
|
5912
|
+
help?: string;
|
|
5913
|
+
}
|
|
5914
|
+
/**
|
|
5915
|
+
* The real lifecycle a record moves through in this business, in order. A
|
|
5916
|
+
* pipeline's stages are the words the staff say out loud.
|
|
5917
|
+
*/
|
|
5918
|
+
interface UseCasePipeline {
|
|
5919
|
+
token: string;
|
|
5920
|
+
name: string;
|
|
5921
|
+
describes: string;
|
|
5922
|
+
/** The table whose records move through it. */
|
|
5923
|
+
table: string;
|
|
5924
|
+
/** The `select` field that holds the current stage. */
|
|
5925
|
+
stageField: string;
|
|
5926
|
+
stages: UseCasePipelineStage[];
|
|
5927
|
+
}
|
|
5928
|
+
interface UseCasePipelineStage {
|
|
5929
|
+
/** Must appear in the stage field's `choices`. */
|
|
5930
|
+
key: string;
|
|
5931
|
+
label: string;
|
|
5932
|
+
/** What is true of a record sitting here, and what moves it on. */
|
|
5933
|
+
describes: string;
|
|
5934
|
+
/** Roughly how long a record sits here, so a board looks believable. */
|
|
5935
|
+
typicalDurationDays?: number;
|
|
5936
|
+
}
|
|
5937
|
+
/**
|
|
5938
|
+
* The question the owner of this business actually asks a dashboard on Monday
|
|
5939
|
+
* morning — "how much have we invoiced this month that hasn't been paid?" —
|
|
5940
|
+
* plus how it is answered from the tables above.
|
|
5941
|
+
*/
|
|
5942
|
+
interface UseCaseDashboardQuestion {
|
|
5943
|
+
/** The question in the practitioner's own words, ending in a question mark. */
|
|
5944
|
+
question: string;
|
|
5945
|
+
/** Why they care. What they DO differently depending on the answer. */
|
|
5946
|
+
whyItMatters: string;
|
|
5947
|
+
table: string;
|
|
5948
|
+
aggregate: "count" | "sum" | "avg" | "min" | "max";
|
|
5949
|
+
/** The field aggregated. Omitted only for `count`. */
|
|
5950
|
+
of?: string;
|
|
5951
|
+
groupBy?: string;
|
|
5952
|
+
/** A plain-language filter: "status is Unpaid and due_date is before today". */
|
|
5953
|
+
filter?: string;
|
|
5954
|
+
/** What the number IS: "USD", "days", "appointments". */
|
|
5955
|
+
answerUnit: string;
|
|
5956
|
+
}
|
|
5957
|
+
/**
|
|
5958
|
+
* A document this business really sends. The body carries merge fields in
|
|
5959
|
+
* `{{double_brace}}` form; every one of them is declared below and resolves to a
|
|
5960
|
+
* field on the document's table (or a stated literal).
|
|
5961
|
+
*/
|
|
5962
|
+
interface UseCaseDocumentTemplate {
|
|
5963
|
+
token: string;
|
|
5964
|
+
name: string;
|
|
5965
|
+
describes: string;
|
|
5966
|
+
table: string;
|
|
5967
|
+
/** The subject or title line, merge fields allowed. */
|
|
5968
|
+
title: string;
|
|
5969
|
+
/** The body. Real prose this business would send, merge fields inline. */
|
|
5970
|
+
body: string;
|
|
5971
|
+
mergeFields: UseCaseMergeField[];
|
|
5972
|
+
}
|
|
5973
|
+
interface UseCaseMergeField {
|
|
5974
|
+
/** The token inside `{{ }}` in the body. */
|
|
5975
|
+
key: string;
|
|
5976
|
+
/**
|
|
5977
|
+
* The field key it reads, on the document's table — or, when it is not a
|
|
5978
|
+
* field, the word `business` (from `BusinessIdentity`) or `today`.
|
|
5979
|
+
*/
|
|
5980
|
+
from: string;
|
|
5981
|
+
describes: string;
|
|
5982
|
+
}
|
|
5983
|
+
/** How a notification reaches someone. */
|
|
5984
|
+
type NotificationChannel = "email" | "sms" | "in_app";
|
|
5985
|
+
/**
|
|
5986
|
+
* The one automatic message this business would genuinely want — the thing a
|
|
5987
|
+
* practitioner sets up on day one and never turns off.
|
|
5988
|
+
*/
|
|
5989
|
+
interface UseCaseNotificationRule {
|
|
5990
|
+
token: string;
|
|
5991
|
+
name: string;
|
|
5992
|
+
describes: string;
|
|
5993
|
+
when: UseCaseNotificationTrigger;
|
|
5994
|
+
/** Who it goes to, in the business's own words: "the assigned hygienist". */
|
|
5995
|
+
audience: string;
|
|
5996
|
+
channel: NotificationChannel;
|
|
5997
|
+
/** The actual message. Merge fields allowed, same convention as documents. */
|
|
5998
|
+
message: string;
|
|
5999
|
+
}
|
|
6000
|
+
interface UseCaseNotificationTrigger {
|
|
6001
|
+
table: string;
|
|
6002
|
+
event: "created" | "updated" | "stage_entered" | "due" | "overdue";
|
|
6003
|
+
/** For `stage_entered`: the stage key. */
|
|
6004
|
+
stage?: string;
|
|
6005
|
+
/** For `due` / `overdue`: the date field watched. */
|
|
6006
|
+
field?: string;
|
|
6007
|
+
/** For `due`: how many days ahead it fires. */
|
|
6008
|
+
daysBefore?: number;
|
|
6009
|
+
}
|
|
6010
|
+
/**
|
|
6011
|
+
* Where the shape and the values came from. `synthesized` means a person wrote
|
|
6012
|
+
* plausible values out of domain knowledge; `public-data` means the numbers or
|
|
6013
|
+
* names were derived from a genuinely public dataset, which is named.
|
|
6014
|
+
*
|
|
6015
|
+
* Either way the law holds: no real person, no real customer, no production row.
|
|
6016
|
+
*/
|
|
6017
|
+
interface UseCaseProvenance {
|
|
6018
|
+
kind: "synthesized" | "public-data";
|
|
6019
|
+
/** Named when `kind` is `public-data`. */
|
|
6020
|
+
source?: string;
|
|
6021
|
+
/** Who or what wrote this file, and when. */
|
|
6022
|
+
authoredBy: string;
|
|
6023
|
+
authoredOn: string;
|
|
6024
|
+
/**
|
|
6025
|
+
* The affirmation, carried in the data so a reviewer can see it: every person,
|
|
6026
|
+
* address, phone and mailbox here is invented and belongs to nobody.
|
|
6027
|
+
*/
|
|
6028
|
+
noRealPeople: true;
|
|
6029
|
+
}
|
|
6030
|
+
/** One real business, and everything a test, seed, demo or screenshot needs of it. */
|
|
6031
|
+
interface UseCase {
|
|
6032
|
+
/** kebab-case and unique: "harbor-dental-new-patient-intake". */
|
|
6033
|
+
id: string;
|
|
6034
|
+
/**
|
|
6035
|
+
* THE SENTENCE. Who the user is, what business they run, and what job this
|
|
6036
|
+
* exact feature does for them — one sentence, at the top, before anything
|
|
6037
|
+
* else. This is the first thing the law asks for and the validator checks it.
|
|
6038
|
+
*/
|
|
6039
|
+
useCase: string;
|
|
6040
|
+
/** The industry, for rotation: "Dentistry", "Property management". */
|
|
6041
|
+
industry: string;
|
|
6042
|
+
business: BusinessIdentity;
|
|
6043
|
+
/**
|
|
6044
|
+
* The tag written into a test organization's settings so cleanup can find it.
|
|
6045
|
+
* Cleanup finds test data by THIS, never by a junk name.
|
|
6046
|
+
*/
|
|
6047
|
+
cleanupTag: string;
|
|
6048
|
+
tables: UseCaseTable[];
|
|
6049
|
+
relationships: UseCaseRelationship[];
|
|
6050
|
+
form: UseCaseForm;
|
|
6051
|
+
pipeline: UseCasePipeline;
|
|
6052
|
+
dashboardQuestion: UseCaseDashboardQuestion;
|
|
6053
|
+
documentTemplate: UseCaseDocumentTemplate;
|
|
6054
|
+
notificationRule: UseCaseNotificationRule;
|
|
6055
|
+
provenance: UseCaseProvenance;
|
|
6056
|
+
}
|
|
6057
|
+
|
|
6058
|
+
/** `custom.decoration_colors()` — the palette, in the order an uncolored choice takes. */
|
|
6059
|
+
type DecorationColor = "slate" | "green" | "amber" | "red" | "blue" | "violet" | "teal";
|
|
6060
|
+
/** `custom.decoration_rule_ops()` — the tests a color rule may ask. */
|
|
6061
|
+
type DecorationRuleOp = "is" | "is_not" | "contains" | "is_empty" | "not_empty" | "is_true" | "is_false" | "gt" | "gte" | "lt" | "lte";
|
|
6062
|
+
type DecorationTarget = "row" | "cell";
|
|
6063
|
+
interface DecorationRule {
|
|
6064
|
+
/** Given by the store when omitted; keep it to edit the rule in place. */
|
|
6065
|
+
id?: string;
|
|
6066
|
+
/** The Field id the rule reads. */
|
|
6067
|
+
field: Uuid;
|
|
6068
|
+
op: DecorationRuleOp;
|
|
6069
|
+
/** Compared as text for is / is_not / contains, as a number for gt / gte / lt / lte. */
|
|
6070
|
+
value?: string | number;
|
|
6071
|
+
color: DecorationColor;
|
|
6072
|
+
target: DecorationTarget;
|
|
6073
|
+
}
|
|
6074
|
+
interface TableDecorations {
|
|
6075
|
+
version: 1;
|
|
6076
|
+
colors: DecorationColor[];
|
|
6077
|
+
rule_ops: Array<{
|
|
6078
|
+
op: DecorationRuleOp;
|
|
6079
|
+
takes_value: boolean;
|
|
6080
|
+
label: string;
|
|
6081
|
+
}>;
|
|
6082
|
+
color_by?: {
|
|
6083
|
+
field: Uuid;
|
|
6084
|
+
target: DecorationTarget;
|
|
6085
|
+
};
|
|
6086
|
+
rules: DecorationRule[];
|
|
6087
|
+
/** Hand highlights: record id → color. */
|
|
6088
|
+
rows: Record<Uuid, DecorationColor>;
|
|
6089
|
+
/** Hand highlights: Field id → color. */
|
|
6090
|
+
columns: Record<Uuid, DecorationColor>;
|
|
6091
|
+
/** Hand highlights: record id → Field id → color. */
|
|
6092
|
+
cells: Record<Uuid, Record<Uuid, DecorationColor>>;
|
|
6093
|
+
/** What stopped painting because its column is gone — said, never silently dropped. */
|
|
6094
|
+
stale: Array<{
|
|
6095
|
+
part: string;
|
|
6096
|
+
field?: Uuid;
|
|
6097
|
+
rule_id?: string;
|
|
6098
|
+
record_id?: Uuid;
|
|
6099
|
+
says: string;
|
|
6100
|
+
}>;
|
|
6101
|
+
}
|
|
6102
|
+
/**
|
|
6103
|
+
* ONE LEAF of a Table's colors — the older door's own path shape
|
|
6104
|
+
* (`public.udt_set_table_style`), so two people highlighting two rows never overwrite each other.
|
|
6105
|
+
*/
|
|
6106
|
+
type DecorationPath = ["color_by"] | ["rules"] | ["rows", Uuid] | ["columns", Uuid] | ["cells", Uuid, Uuid];
|
|
6107
|
+
type GridLayoutMode = "auto" | "fit" | "scroll";
|
|
6108
|
+
type GridRowHeight = "compact" | "normal" | "tall";
|
|
6109
|
+
/** A saved view's own layout, kept at `definition.layout` (custom.view_declare judges it). */
|
|
6110
|
+
interface ViewLayout {
|
|
6111
|
+
mode?: GridLayoutMode;
|
|
6112
|
+
row_height?: GridRowHeight;
|
|
6113
|
+
freeze_first_column?: boolean;
|
|
6114
|
+
wrap?: boolean;
|
|
6115
|
+
/** Field id → pixels, 60–1200. */
|
|
6116
|
+
widths?: Record<Uuid, number>;
|
|
6117
|
+
}
|
|
6118
|
+
interface GridLayout {
|
|
6119
|
+
layout: Required<Omit<ViewLayout, "widths">> & {
|
|
6120
|
+
fit_max_columns: number;
|
|
6121
|
+
widths?: Record<Uuid, number>;
|
|
6122
|
+
};
|
|
6123
|
+
/** Where each choice came from. */
|
|
6124
|
+
source: Record<string, "platform" | "organization" | "view">;
|
|
6125
|
+
view_id: Uuid | null;
|
|
6126
|
+
/** A stored choice the grid cannot honour, named. */
|
|
6127
|
+
refused: Array<{
|
|
6128
|
+
from: "organization" | "view";
|
|
6129
|
+
choice: string;
|
|
6130
|
+
value: unknown;
|
|
6131
|
+
says: string;
|
|
6132
|
+
}>;
|
|
6133
|
+
}
|
|
6134
|
+
type RowActionStep = {
|
|
6135
|
+
field: Uuid;
|
|
6136
|
+
set: "value";
|
|
6137
|
+
value: unknown;
|
|
6138
|
+
} | {
|
|
6139
|
+
field: Uuid;
|
|
6140
|
+
set: "clear";
|
|
6141
|
+
}
|
|
6142
|
+
/** Worked out by the store on each record: the older grid's formula text, or an expression. */
|
|
6143
|
+
| {
|
|
6144
|
+
field: Uuid;
|
|
6145
|
+
set: "compute";
|
|
6146
|
+
formula_text?: string;
|
|
6147
|
+
expr?: Record<string, unknown>;
|
|
6148
|
+
};
|
|
6149
|
+
interface RowAction {
|
|
6150
|
+
/** Given by the store when omitted. */
|
|
6151
|
+
id?: Uuid;
|
|
6152
|
+
name: string;
|
|
6153
|
+
kind?: "update" | "agent";
|
|
6154
|
+
color?: DecorationColor | null;
|
|
6155
|
+
icon?: string;
|
|
6156
|
+
/** Ask before running. */
|
|
6157
|
+
confirm?: boolean;
|
|
6158
|
+
steps?: RowActionStep[];
|
|
6159
|
+
/** `agent` only: what the record chat opens with. */
|
|
6160
|
+
prompt?: string;
|
|
6161
|
+
/** On read: whether custom.action_run can run it. */
|
|
6162
|
+
runnable?: boolean;
|
|
6163
|
+
}
|
|
6164
|
+
interface ActionRunResult {
|
|
6165
|
+
action_id: Uuid;
|
|
6166
|
+
action: string;
|
|
6167
|
+
table_id: Uuid;
|
|
6168
|
+
ran: number;
|
|
6169
|
+
records: Array<{
|
|
6170
|
+
record_id: Uuid;
|
|
6171
|
+
version: number;
|
|
6172
|
+
}>;
|
|
6173
|
+
}
|
|
6174
|
+
/** One record (and, when it can be named, one field) that refused a row action. */
|
|
6175
|
+
interface ActionRefusal {
|
|
6176
|
+
record_id: Uuid;
|
|
6177
|
+
record: string | null;
|
|
6178
|
+
field_id: Uuid | null;
|
|
6179
|
+
field: string | null;
|
|
6180
|
+
code?: string;
|
|
6181
|
+
says: string;
|
|
6182
|
+
}
|
|
6183
|
+
/**
|
|
6184
|
+
* Every refusal of an action run, read off the store's refusal. A run that any record refused
|
|
6185
|
+
* changed NOTHING; this is the list a screen shows so the person can fix those and run again.
|
|
6186
|
+
*/
|
|
6187
|
+
declare function actionRefusals(error: RecordsError): ActionRefusal[];
|
|
6188
|
+
type FormulaParse = {
|
|
6189
|
+
ok: true;
|
|
6190
|
+
text: string;
|
|
6191
|
+
/** The store's expression shape — what `config.expr` holds. */
|
|
6192
|
+
expr: Record<string, unknown>;
|
|
6193
|
+
references: Array<{
|
|
6194
|
+
name: string;
|
|
6195
|
+
field_id: Uuid;
|
|
6196
|
+
}>;
|
|
6197
|
+
result_type: "number" | "text" | "boolean" | "date" | "unknown";
|
|
6198
|
+
} | {
|
|
6199
|
+
ok: false;
|
|
6200
|
+
text: string;
|
|
6201
|
+
error: string;
|
|
6202
|
+
position: number;
|
|
6203
|
+
};
|
|
6204
|
+
type RecordEvent = "record.created" | "record.updated" | "record.archived" | "record.restored" | "record.purged";
|
|
6205
|
+
interface TableWebhookDeclared {
|
|
6206
|
+
webhook_id: Uuid;
|
|
6207
|
+
table_id: Uuid;
|
|
6208
|
+
target_url: string;
|
|
6209
|
+
events: RecordEvent[];
|
|
6210
|
+
/** Shown this once: X-Matrx-Signature is sha256=HMAC-SHA256(secret, body). */
|
|
6211
|
+
secret: string;
|
|
6212
|
+
says: string;
|
|
6213
|
+
}
|
|
6214
|
+
interface TableWebhook {
|
|
6215
|
+
webhook_id: Uuid;
|
|
6216
|
+
target_url: string;
|
|
6217
|
+
description: string | null;
|
|
6218
|
+
events: RecordEvent[] | null;
|
|
6219
|
+
is_active: boolean;
|
|
6220
|
+
last_attempt_at: string | null;
|
|
6221
|
+
last_success_at: string | null;
|
|
6222
|
+
consecutive_failures: number;
|
|
6223
|
+
owner_id: Uuid;
|
|
6224
|
+
created_at: string;
|
|
6225
|
+
}
|
|
6226
|
+
/** What `custom.table_from_example` builds from. */
|
|
6227
|
+
interface ExampleSpec {
|
|
6228
|
+
business: string;
|
|
6229
|
+
tables: Array<Record<string, unknown>>;
|
|
6230
|
+
}
|
|
6231
|
+
interface ExampleBuilt {
|
|
6232
|
+
business: string;
|
|
6233
|
+
tables: Array<{
|
|
6234
|
+
token: string;
|
|
6235
|
+
table_id: Uuid;
|
|
6236
|
+
name: string;
|
|
6237
|
+
records?: number;
|
|
6238
|
+
note?: string;
|
|
6239
|
+
}>;
|
|
6240
|
+
says: string;
|
|
6241
|
+
}
|
|
6242
|
+
/**
|
|
6243
|
+
* ONE REAL USE CASE → the example door's spec. The use case is validated by this package's own
|
|
6244
|
+
* suite (`use-cases/validate.ts`); the door refuses placeholder names again as a second line.
|
|
6245
|
+
*/
|
|
6246
|
+
declare function exampleSpec(useCase: UseCase): ExampleSpec;
|
|
6247
|
+
/** One page of `custom.io_export`: exactly what the read door serves this person. */
|
|
6248
|
+
interface IoExportPage {
|
|
6249
|
+
table_id: Uuid;
|
|
6250
|
+
token: string;
|
|
6251
|
+
columns: string[];
|
|
6252
|
+
rows: Array<Record<string, unknown>>;
|
|
6253
|
+
/** A column the store withheld from this reader, with the store's reason. */
|
|
6254
|
+
withheld: Record<string, unknown>;
|
|
6255
|
+
page: {
|
|
6256
|
+
requested: number;
|
|
6257
|
+
returned: number;
|
|
6258
|
+
ceiling: number;
|
|
6259
|
+
next: number | null;
|
|
6260
|
+
};
|
|
6261
|
+
choices: unknown;
|
|
6262
|
+
}
|
|
6263
|
+
/**
|
|
6264
|
+
* THE .XLSX OF AN EXPORT PAGE. Numbers stay numbers and booleans stay booleans in the sheet; a
|
|
6265
|
+
* column the store withheld is NAMED on a second sheet with the store's reason, so a person
|
|
6266
|
+
* never mistakes a withheld column for an empty one. `labels` maps a column key to its header
|
|
6267
|
+
* (the Field's label); a key with no label is its own header.
|
|
6268
|
+
*/
|
|
6269
|
+
declare function exportPageXlsx(page: IoExportPage, labels?: Record<string, string>, sheetLabel?: string): Promise<Uint8Array>;
|
|
6270
|
+
|
|
5676
6271
|
/** The seven shapes a block can take, exactly as `custom.dashboard_kinds()` answers. */
|
|
5677
6272
|
type DashboardBlockKind = "number" | "bar" | "column" | "line" | "donut" | "table" | "stuck";
|
|
5678
6273
|
/**
|
|
@@ -6612,6 +7207,37 @@ interface RelationCoordinate {
|
|
|
6612
7207
|
/** Which way to walk. `out` is this record's own relation fields. */
|
|
6613
7208
|
direction?: "out" | "in" | "either";
|
|
6614
7209
|
}
|
|
7210
|
+
/** Which store a relation cell's target lives in. Absent means the unified store. */
|
|
7211
|
+
type RelationStore = "record" | "older";
|
|
7212
|
+
/**
|
|
7213
|
+
* Which of the target's columns a relation column shows, and how they join.
|
|
7214
|
+
* A bare name and a list are both shorthand for the object with a single space
|
|
7215
|
+
* as the separator. Null/absent means the target table's own reference column.
|
|
7216
|
+
*/
|
|
7217
|
+
type RelationDisplaySpec = string | readonly string[] | {
|
|
7218
|
+
columns: readonly string[];
|
|
7219
|
+
separator?: string;
|
|
7220
|
+
};
|
|
7221
|
+
/**
|
|
7222
|
+
* The arguments of the ONE resolver, discriminated by store.
|
|
7223
|
+
*
|
|
7224
|
+
* The unified arm takes the FIELD, because that is where its display spec is
|
|
7225
|
+
* declared and judged — `custom._display_of_field` reads it server-side and the
|
|
7226
|
+
* caller never carries it. The older store has no declare-time judge for a
|
|
7227
|
+
* column's format, so its arm carries the spec it read out of the column's own
|
|
7228
|
+
* `metadata.format.options.display`. That asymmetry is real and is not papered
|
|
7229
|
+
* over here: it is the difference between a store that judges a spec when it is
|
|
7230
|
+
* SET and one that has only ever judged a cell when it is READ.
|
|
7231
|
+
*/
|
|
7232
|
+
type RelationWordsManyArgs = {
|
|
7233
|
+
store?: "record";
|
|
7234
|
+
field_id: Uuid;
|
|
7235
|
+
record_ids: Uuid[];
|
|
7236
|
+
} | {
|
|
7237
|
+
store: "older";
|
|
7238
|
+
display?: RelationDisplaySpec | null;
|
|
7239
|
+
record_ids: Uuid[];
|
|
7240
|
+
};
|
|
6615
7241
|
|
|
6616
7242
|
/**
|
|
6617
7243
|
* DYN-14 / DYN-15. An ordered list of merge fields ENDING IN A LITERAL, or the
|
|
@@ -7490,6 +8116,55 @@ interface RecordsClient {
|
|
|
7490
8116
|
rows: RecordDocument[];
|
|
7491
8117
|
ids?: Uuid[];
|
|
7492
8118
|
}): Promise<RecordsResult<Uuid[]>>;
|
|
8119
|
+
/**
|
|
8120
|
+
* A PARENT, THE EDGES IT STANDS ON AND THE ROWS THAT BELONG TO IT — ALL OR NOTHING.
|
|
8121
|
+
*
|
|
8122
|
+
* `recordWrite` and `recordWriteMany` are each ONE statement. A screen or a
|
|
8123
|
+
* server path whose unit of work is a GRAPH — an AI artifact and the lines
|
|
8124
|
+
* it produced, an order and its items, a research note and its citations —
|
|
8125
|
+
* could therefore not save it as one thing: a loop is N transactions, and a
|
|
8126
|
+
* failure on row nineteen leaves a parent standing without the lines it
|
|
8127
|
+
* promised.
|
|
8128
|
+
*
|
|
8129
|
+
* `custom.record_write_graph` is one statement, so it is one transaction. It
|
|
8130
|
+
* is NOT a second write path: it calls `custom.record_write_many` for the
|
|
8131
|
+
* rows, `public.assoc_add` for an edge that points OUT of the store (the
|
|
8132
|
+
* message a record was produced by), and `platform.relation_set` for the
|
|
8133
|
+
* parent's own declared relation to its children. Same store switch, same
|
|
8134
|
+
* editor rung on the Table, same value envelope, same undeclared-key guard,
|
|
8135
|
+
* same history rows, same realtime notice.
|
|
8136
|
+
*
|
|
8137
|
+
* ONE REFUSAL REFUSES THE WHOLE GRAPH, BY NAME — the answer says which member
|
|
8138
|
+
* failed and carries the store's own sentence about it, and nothing is
|
|
8139
|
+
* written.
|
|
8140
|
+
*
|
|
8141
|
+
* Every child MUST name a `role`: it is the key of a declared RELATION field
|
|
8142
|
+
* on the parent's Table, and an edge out of a record that names no field is
|
|
8143
|
+
* refused by the store (REL-10 / T7) because without it nothing can read the
|
|
8144
|
+
* relation's delete rule, its cardinality or its organization wall. The order
|
|
8145
|
+
* children are handed in IS the order of the relation.
|
|
8146
|
+
*/
|
|
8147
|
+
recordWriteGraph(args: {
|
|
8148
|
+
table_id: Uuid;
|
|
8149
|
+
parent: RecordDocument;
|
|
8150
|
+
/** Each child: its document, the parent FIELD it fills, and optionally its own Table. */
|
|
8151
|
+
children?: Array<{
|
|
8152
|
+
data: RecordDocument;
|
|
8153
|
+
role: string;
|
|
8154
|
+
table_id?: Uuid;
|
|
8155
|
+
position?: number;
|
|
8156
|
+
}>;
|
|
8157
|
+
/** Edges to things OUTSIDE the store. `direction` defaults to `"in"` — that thing produced this record. */
|
|
8158
|
+
edges?: Array<{
|
|
8159
|
+
entity: string;
|
|
8160
|
+
id: Uuid;
|
|
8161
|
+
direction?: "in" | "out";
|
|
8162
|
+
label?: string;
|
|
8163
|
+
role?: string;
|
|
8164
|
+
position?: number;
|
|
8165
|
+
metadata?: Record<string, unknown>;
|
|
8166
|
+
}>;
|
|
8167
|
+
}): Promise<RecordsResult<RecordGraphWritten>>;
|
|
7493
8168
|
recordUpdate(args: {
|
|
7494
8169
|
record_id: Uuid;
|
|
7495
8170
|
patch: Record<string, unknown>;
|
|
@@ -7682,10 +8357,7 @@ interface RecordsClient {
|
|
|
7682
8357
|
* wherever a grid, board, list or picker resolves more than one chip: the
|
|
7683
8358
|
* per-id lane is what made a page of relation cells a page of requests.
|
|
7684
8359
|
*/
|
|
7685
|
-
relationWordsMany(args:
|
|
7686
|
-
field_id: Uuid;
|
|
7687
|
-
record_ids: Uuid[];
|
|
7688
|
-
}): Promise<RecordsResult<Record<string, string>>>;
|
|
8360
|
+
relationWordsMany(args: RelationWordsManyArgs): Promise<RecordsResult<Record<string, string>>>;
|
|
7689
8361
|
/** Take a field off a table. Refuses the title field, the last field, and one another field reads through. */
|
|
7690
8362
|
fieldRetire(args: {
|
|
7691
8363
|
field_id: Uuid;
|
|
@@ -8849,6 +9521,91 @@ interface RecordsClient {
|
|
|
8849
9521
|
ids: Uuid[];
|
|
8850
9522
|
subject?: "record";
|
|
8851
9523
|
}): Promise<RecordsResult<MyLevel[]>>;
|
|
9524
|
+
/** G1. Write ONE leaf of a Table's colors, or clear it with `null`. Editor on the Table. */
|
|
9525
|
+
tableDecorate(args: {
|
|
9526
|
+
table_id: Uuid;
|
|
9527
|
+
path: DecorationPath;
|
|
9528
|
+
value: unknown;
|
|
9529
|
+
}): Promise<RecordsResult<TableDecorations>>;
|
|
9530
|
+
/** G1. A Table's colors as a screen paints them, with what went stale named. */
|
|
9531
|
+
tableDecorations(args: {
|
|
9532
|
+
table_id: Uuid;
|
|
9533
|
+
}): Promise<RecordsResult<TableDecorations>>;
|
|
9534
|
+
/** G1. The layout a grid opens with: platform → organization knob → the view's own. */
|
|
9535
|
+
gridLayout(args: {
|
|
9536
|
+
table_id: Uuid;
|
|
9537
|
+
view_id?: Uuid | null;
|
|
9538
|
+
}): Promise<RecordsResult<GridLayout>>;
|
|
9539
|
+
/** G3. The older grid's formula text → the store's expression. Never refuses a typo: answers ok:false. */
|
|
9540
|
+
formulaParse(args: {
|
|
9541
|
+
table_id: Uuid;
|
|
9542
|
+
text: string;
|
|
9543
|
+
}): Promise<RecordsResult<FormulaParse>>;
|
|
9544
|
+
/** G2. Declare a Table's row actions — the whole list. Editor on the Table. */
|
|
9545
|
+
actionDeclare(args: {
|
|
9546
|
+
table_id: Uuid;
|
|
9547
|
+
actions: RowAction[];
|
|
9548
|
+
}): Promise<RecordsResult<RowAction[]>>;
|
|
9549
|
+
/** G2. A Table's row actions, each saying whether it can run here. */
|
|
9550
|
+
rowActions(args: {
|
|
9551
|
+
table_id: Uuid;
|
|
9552
|
+
}): Promise<RecordsResult<{
|
|
9553
|
+
actions: RowAction[];
|
|
9554
|
+
stale: unknown[];
|
|
9555
|
+
}>>;
|
|
9556
|
+
/**
|
|
9557
|
+
* G2. Run one action on a selection, in ONE transaction. A refusal changed NOTHING; read
|
|
9558
|
+
* every record and field that refused with `actionRefusals(result.error)`.
|
|
9559
|
+
*/
|
|
9560
|
+
actionRun(args: {
|
|
9561
|
+
action_id: Uuid;
|
|
9562
|
+
record_ids: Uuid[];
|
|
9563
|
+
}): Promise<RecordsResult<ActionRunResult>>;
|
|
9564
|
+
/** G4. Send every change to this Table's records to an https webhook. Admin. The secret is shown once. */
|
|
9565
|
+
tableWebhookDeclare(args: {
|
|
9566
|
+
table_id: Uuid;
|
|
9567
|
+
target_url: string;
|
|
9568
|
+
events?: RecordEvent[] | null;
|
|
9569
|
+
description?: string | null;
|
|
9570
|
+
}): Promise<RecordsResult<TableWebhookDeclared>>;
|
|
9571
|
+
/** G4. The webhooks a Table sends to, with their delivery health — never the secret. */
|
|
9572
|
+
tableWebhooks(args: {
|
|
9573
|
+
table_id: Uuid;
|
|
9574
|
+
}): Promise<RecordsResult<TableWebhook[]>>;
|
|
9575
|
+
/** G4. Switch one off. It is never deleted. */
|
|
9576
|
+
tableWebhookArchive(args: {
|
|
9577
|
+
webhook_id: Uuid;
|
|
9578
|
+
}): Promise<RecordsResult<boolean>>;
|
|
9579
|
+
/**
|
|
9580
|
+
* G5. Build one real use case's tables here, rows and relations included, in one
|
|
9581
|
+
* transaction. `useCaseId` is one of `useCaseIds()` from `@ai-matrx/records/use-cases`.
|
|
9582
|
+
*/
|
|
9583
|
+
tableFromExample(args: {
|
|
9584
|
+
home_id: Uuid;
|
|
9585
|
+
useCaseId: string;
|
|
9586
|
+
}): Promise<RecordsResult<ExampleBuilt>>;
|
|
9587
|
+
/** G5. Number the records an autonumber column found already there, in creation order. */
|
|
9588
|
+
autonumberBackfill(args: {
|
|
9589
|
+
field_id: Uuid;
|
|
9590
|
+
}): Promise<RecordsResult<{
|
|
9591
|
+
numbered: number;
|
|
9592
|
+
highest: number | null;
|
|
9593
|
+
says: string;
|
|
9594
|
+
}>>;
|
|
9595
|
+
/** G5. One page of the export door — exactly the rows and columns the read door serves this person. */
|
|
9596
|
+
ioExport(args: {
|
|
9597
|
+
table_id: Uuid;
|
|
9598
|
+
columns?: string[] | null;
|
|
9599
|
+
limit?: number;
|
|
9600
|
+
}): Promise<RecordsResult<IoExportPage>>;
|
|
9601
|
+
/** G5. That page as an .xlsx; a withheld column is named on its own sheet. */
|
|
9602
|
+
exportXlsx(args: {
|
|
9603
|
+
table_id: Uuid;
|
|
9604
|
+
columns?: string[] | null;
|
|
9605
|
+
limit?: number;
|
|
9606
|
+
labels?: Record<string, string>;
|
|
9607
|
+
sheetLabel?: string;
|
|
9608
|
+
}): Promise<RecordsResult<Uint8Array>>;
|
|
8852
9609
|
}
|
|
8853
9610
|
|
|
8854
9611
|
/**
|
|
@@ -9186,4 +9943,4 @@ declare function useFieldMutation(): UseFieldMutation;
|
|
|
9186
9943
|
*/
|
|
9187
9944
|
declare function useMergeField(key: string | null, state?: Record<string, unknown>): MergeFieldResolution | null;
|
|
9188
9945
|
|
|
9189
|
-
export { ABSENCE_REASONS, ACTOR_VOCABULARY, ARCHIVE_LANES, ARCHIVE_LANE_LABEL, ARCHIVE_LANE_MEANS, type AbsenceReason, type Actor, type AggregateBucket, type AggregateFilter, type AggregateMeasure, type AggregateOperation, type AggregateRow, type AggregateWindow, type AnonTokenBinding, type ArchiveLane, type ArchivedDoorRow, type ArchivedRow, type BookingAvailability, type BookingDeclared, type BookingSummary, type BookingWindow, COMPUTE_ON, CONTEXT_POLICIES, type CaptureField, type CaptureFileRef, type CaptureOutcome, type CaptureQuestion, type CaptureQueue, type CaptureQueueCounts, type CaptureQueueOptions, type CaptureQueuePorts, type CaptureQueueStore, type CaptureSheetFace, type CaptureSheetSummary, type CaptureSyncReport, type ChecklistDeclared, type ChecklistRequirement, type ChecklistRequirementKind, type ChecklistRoleSpec, type ChecklistRunStarted, type ChecklistRunStep, type ChecklistRunSummary, type ChecklistSpec, type ChecklistStepCompleted, type ChecklistStepSpec, type ChecklistTemplateShape, type ChecklistTemplateSummary, type ChecklistTrigger, type ChecklistTriggerKind, type ChoiceOption, type ChoiceOptions, type CoerceOptions, type Coerced, type CoercedAnswers, type CoercibleField, type CommentThreadRead, type CommentWritten, type ComputeOn, type ContextPolicy, type ConversationScope, type ConversationScopeContext, type CustomFieldTableType, DECLARABLE_FIELD_KINDS, DEFAULT_ARCHIVE_LANE, DEFAULT_PORTAL_ARCHIVE_FILTER, DELIVERIES, type DashboardBlock, type DashboardBlockKind, type DashboardBlockResult, type DashboardRunResult, type DashboardSummary, type DeclarableFieldKind, type Delivery, type DigestPreview, type DocRenderRow, type DocSignatureCheck, type DocSignatureRow, type DocTemplateRow, type DocToken, type DocUnresolvedToken, ENTITY_TOKENS, type EnrichAlternate, type EnrichCell, type EnrichDeclared, type EnrichDueRow, type EnrichRun, type EnrichSource, type Enrichment, type EnrichmentSummary, type EntityFieldRights, type EntityFieldValue, type EntityRecordMatch, type EntityRecordRead, type EntityRecordsFound, type EntityTableFacts, type EntityToken, type ExternalPrincipalCard, FIELD_KINDS, FIELD_SENSITIVITIES, FIELD_SOURCES, FRESHNESS, type Field, type FieldBehavior, type FieldHistoryEntry, type FieldKind, type FieldPatch, type FieldProposal, type FieldRule, type FieldSensitivity, type FieldSource, type FieldTypeWord, type ForbiddenEnvelopeWord, type FormSummary, type Freshness, type HiddenFieldNotice, type HistoryActor, type HistoryActorKind, type HistoryChange, type Home, type ImportBatchResult, type ImportColumnPlan, type ImportColumnsDeclared, type ImportFinished, type ImportOpened, type ImportOutcome, type ImportPlan, type ImportPolicy, type ImportProposal, type ImportReport, type ImportRun, type InboundAddress, type InboundDeclared, KERNEL_TABLES, type KernelTableName, type KernelTargets, MERGE_FIELD_MODIFIERS, MERGE_FIELD_SEMANTIC_TYPES, MERGE_FIELD_SOURCES, type MergeField, type MergeFieldModifier, type MergeFieldProvenance, type MergeFieldResolution, type MergeFieldSemanticType, type MergeFieldSource, type MergeFieldTransform, type MissingBehavior, type MyLevel, type MySubscription, type NewEntityFieldDeclaration, type NewFieldDeclaration, ON_DELETE, OVERRIDE_POLICIES, type OnDelete, type OverridePolicy, PARITY_FIELD_TYPES, PERMISSION_LEVELS, PER_VALUE_ACCESS_WORDS, PIPELINE_RULE_KINDS, PORTAL_ARCHIVE_FILTERS, type ParityFieldType, type ParityFieldTypeDescriptor, type PerValueAccessWord, type PermissionLevel, type PgError, type Pipeline, type PipelineColumn, type PipelineDeclared, type PipelineGate, type PipelineGatePreview, type PipelineMissingField, type PipelineMoveResult, type PipelineRule, type PipelineRuleKind, type PipelineSpec, type PipelineStage, type PipelineVerdict, type PortalArchiveAnswer, type PortalArchiveFilter, type PortalCard, type PortalInvitation, type PortalPreviewRow, type PortalPrincipal, type PortalRevocation, type PortalSummary, type PortalTableExposure, type PortalTableRef, type PredictedRefusal, type ProvenancePointer, type PublishBinding, type QueuedCapture, type QueuedCaptureFile, type QueuedCaptureState, type QuietHours, REFUSALS_WORTH_REPEATING, RELATION_BINDINGS, RELATION_CARDINALITIES, RELATION_FLAVORS, RETIRED_ACTOR_WORDS, RULE_NODE_KINDS, RULE_USES, type ReadRow, type ReadValue, type RecordComment, type RecordDocument, type RecordFilter, type RecordHistoryEntry, type RecordRead, type RecordRevision, type RecordScopeComment, type RecordScopeContext, type RecordScopeField, type RecordScopeHistoryEntry, type RecordScopeRelation, type RecordScopeWithheld, type RecordsActor, type RecordsChangeSink, type RecordsConfig, type RecordsDataSource, type RecordsError, type RecordsErrorCode, type RecordsErrorSink, type RecordsFilter, RecordsProvider, type RecordsProviderProps, type RecordsRealtimePort, type RecordsResolverPort, type RecordsResponse, type RecordsResult, type RecordsTableQuery, type RegisteredTable, type Relation, type RelationBinding, type RelationCardinality, type RelationCarries, type RelationCoordinate, type RelationDisplay, type RelationFlavor, type RelationProperties, type RelationTarget, type ResolutionTriple, type ResolvedPublishBinding, type RestorePreview, type RestoreResult, type RetiredActorWord, type Rule, type RuleAnswer, type RuleExpression, type RuleNodeKind, type RuleUse, STAGE_RULE_ENFORCEMENT, STAGE_RULE_ON_FAIL, STORAGE_MODES, STORE_DOORS, STORE_KNOBS, STORE_REFUSAL_CODES, type SavedViewRow, type SavedViewSpecIn, type StagePending, type StagePendingOnBoard, type StageRuleEnforcement, type StageRuleOnFail, type StageRuleWarning, type StaleWriteDetail, type StorageMode, type StoreDoorName, type StoreRefusalCode, type StoredRecord, type StuckRow, type Subscription, type SubscriptionBlock, type SubscriptionCadence, type SubscriptionSpec, TABLE_DISPLAYS, TABLE_ORIGINS, TABLE_TYPES, type Table, type TableArchiveProgress, type TableCapacity, type TableDisplay, type TableOrigin, type TableProposal, type TableType, type Timestamp, type UseEntityFieldMutation, type UseFieldMutation, type UseRecordMutation, type UseRecordsOptions, type UseRecordsState, type UseTableArchive, type Uuid, VALUE_ALTERNATE_KEYS, VALUE_ENVELOPE_KEYS, type ValueAlternate, type ValueAlternateKey, type ValueEnvelope, type ValueEnvelopeKey, type ValueSource, type WorkApprovalDecision, type WorkApprovalFiled, type WorkApprover, type WorkAssignment, type WorkAssignmentField, type WorkChange, type WorkDueState, type WorkGraph, type WorkInboxItem, type WorkInboxKind, type WorkInstantiation, type WorkListFlavour, type WorkListItem, type WorkOrigin, type WorkRecordState, type WorkSlotHold, type WorkState, type WorkTemplateNode, type WorkTemplateRelation, type WorkTurn, type WriteConflict, archivedByLine, archivedWhen, asPermissionLevel, atLeast, bookingPath, choiceSlug, choiceValuesOf, choicesOf, coerceTypedAnswer, coerceTypedAnswers, coercionLabel, emptyArchiveLine, emptyPortalArchiveLine, err, fieldKindFor, forgetAllOps, highestLevel, holdsARetiredChoice, indexedDbStore, isArchiveLane, isDecided, isOwnOp, isPortalArchiveFilter, isRecordsErr, isTheChosen, looksLikeAnId, mayDrag, measureKey, memoryStore, mintClientKey, mintOpId, ok, openCaptureQueue, optionKey, optionLabel, portalArchiveConsequence, portalConfirmLine, portalPath, portalTitleTypedBack, publicFormPath, rememberedOpCount, sameDocument, scopeChip, stableFilterKey, tableShapeChanged, useEntityFieldMutation, useEntityFieldRights, useEntityFields, useEntityRecord, useEntityTable, useFieldMutation, useFields, useMergeField, useMyLevel, useMyLevels, useOptionalRecordsClient, useRecord, useRecordMutation, useRecords, useRecordsActor, useRecordsClient, useTable, useTableArchive, useTables };
|
|
9946
|
+
export { ABSENCE_REASONS, ACTOR_VOCABULARY, ARCHIVE_LANES, ARCHIVE_LANE_LABEL, ARCHIVE_LANE_MEANS, type AbsenceReason, type ActionRefusal, type ActionRunResult, type Actor, type AggregateBucket, type AggregateFilter, type AggregateMeasure, type AggregateOperation, type AggregateRow, type AggregateWindow, type AnonTokenBinding, type ArchiveLane, type ArchivedDoorRow, type ArchivedRow, type BookingAvailability, type BookingDeclared, type BookingSummary, type BookingWindow, COMPUTE_ON, CONTEXT_POLICIES, type CaptureField, type CaptureFileRef, type CaptureOutcome, type CaptureQuestion, type CaptureQueue, type CaptureQueueCounts, type CaptureQueueOptions, type CaptureQueuePorts, type CaptureQueueStore, type CaptureSheetFace, type CaptureSheetSummary, type CaptureSyncReport, type ChecklistDeclared, type ChecklistRequirement, type ChecklistRequirementKind, type ChecklistRoleSpec, type ChecklistRunStarted, type ChecklistRunStep, type ChecklistRunSummary, type ChecklistSpec, type ChecklistStepCompleted, type ChecklistStepSpec, type ChecklistTemplateShape, type ChecklistTemplateSummary, type ChecklistTrigger, type ChecklistTriggerKind, type ChoiceOption, type ChoiceOptions, type CoerceOptions, type Coerced, type CoercedAnswers, type CoercibleField, type CommentThreadRead, type CommentWritten, type ComputeOn, type ContextPolicy, type ConversationScope, type ConversationScopeContext, type CustomFieldTableType, DECLARABLE_FIELD_KINDS, DEFAULT_ARCHIVE_LANE, DEFAULT_PORTAL_ARCHIVE_FILTER, DELIVERIES, type DashboardBlock, type DashboardBlockKind, type DashboardBlockResult, type DashboardRunResult, type DashboardSummary, type DeclarableFieldKind, type DecorationColor, type DecorationPath, type DecorationRule, type DecorationRuleOp, type DecorationTarget, type Delivery, type DigestPreview, type DocRenderRow, type DocSignatureCheck, type DocSignatureRow, type DocTemplateRow, type DocToken, type DocUnresolvedToken, ENTITY_TOKENS, type EnrichAlternate, type EnrichCell, type EnrichDeclared, type EnrichDueRow, type EnrichRun, type EnrichSource, type Enrichment, type EnrichmentSummary, type EntityFieldRights, type EntityFieldValue, type EntityRecordMatch, type EntityRecordRead, type EntityRecordsFound, type EntityTableFacts, type EntityToken, type ExampleBuilt, type ExampleSpec, type ExternalPrincipalCard, FIELD_KINDS, FIELD_SENSITIVITIES, FIELD_SOURCES, FRESHNESS, type Field, type FieldBehavior, type FieldHistoryEntry, type FieldKind, type FieldPatch, type FieldProposal, type FieldRule, type FieldSensitivity, type FieldSource, type FieldTypeWord, type ForbiddenEnvelopeWord, type FormSummary, type FormulaParse, type Freshness, type GridLayout, type GridLayoutMode, type GridRowHeight, type HiddenFieldNotice, type HistoryActor, type HistoryActorKind, type HistoryChange, type Home, type ImportBatchResult, type ImportColumnPlan, type ImportColumnsDeclared, type ImportFinished, type ImportOpened, type ImportOutcome, type ImportPlan, type ImportPolicy, type ImportProposal, type ImportReport, type ImportRun, type InboundAddress, type InboundDeclared, type IoExportPage, KERNEL_TABLES, type KernelTableName, type KernelTargets, MERGE_FIELD_MODIFIERS, MERGE_FIELD_SEMANTIC_TYPES, MERGE_FIELD_SOURCES, type MergeField, type MergeFieldModifier, type MergeFieldProvenance, type MergeFieldResolution, type MergeFieldSemanticType, type MergeFieldSource, type MergeFieldTransform, type MissingBehavior, type MyLevel, type MySubscription, type NewEntityFieldDeclaration, type NewFieldDeclaration, ON_DELETE, OVERRIDE_POLICIES, type OnDelete, type OverridePolicy, PARITY_FIELD_TYPES, PERMISSION_LEVELS, PER_VALUE_ACCESS_WORDS, PIPELINE_RULE_KINDS, PORTAL_ARCHIVE_FILTERS, type ParityFieldType, type ParityFieldTypeDescriptor, type PerValueAccessWord, type PermissionLevel, type PgError, type Pipeline, type PipelineColumn, type PipelineDeclared, type PipelineGate, type PipelineGatePreview, type PipelineMissingField, type PipelineMoveResult, type PipelineRule, type PipelineRuleKind, type PipelineSpec, type PipelineStage, type PipelineVerdict, type PortalArchiveAnswer, type PortalArchiveFilter, type PortalCard, type PortalInvitation, type PortalPreviewRow, type PortalPrincipal, type PortalRevocation, type PortalSummary, type PortalTableExposure, type PortalTableRef, type PredictedRefusal, type ProvenancePointer, type PublishBinding, type QueuedCapture, type QueuedCaptureFile, type QueuedCaptureState, type QuietHours, REFUSALS_WORTH_REPEATING, RELATION_BINDINGS, RELATION_CARDINALITIES, RELATION_FLAVORS, RETIRED_ACTOR_WORDS, RULE_NODE_KINDS, RULE_USES, type ReadRow, type ReadValue, type RecordComment, type RecordDocument, type RecordEvent, type RecordFilter, type RecordGraphWritten, type RecordHistoryEntry, type RecordRead, type RecordRevision, type RecordScopeComment, type RecordScopeContext, type RecordScopeField, type RecordScopeHistoryEntry, type RecordScopeRelation, type RecordScopeWithheld, type RecordsActor, type RecordsChangeSink, type RecordsConfig, type RecordsDataSource, type RecordsError, type RecordsErrorCode, type RecordsErrorSink, type RecordsFilter, RecordsProvider, type RecordsProviderProps, type RecordsRealtimePort, type RecordsResolverPort, type RecordsResponse, type RecordsResult, type RecordsTableQuery, type RegisteredTable, type Relation, type RelationBinding, type RelationCardinality, type RelationCarries, type RelationCoordinate, type RelationDisplay, type RelationDisplaySpec, type RelationFlavor, type RelationProperties, type RelationStore, type RelationTarget, type RelationWordsManyArgs, type ResolutionTriple, type ResolvedPublishBinding, type RestorePreview, type RestoreResult, type RetiredActorWord, type RowAction, type RowActionStep, type Rule, type RuleAnswer, type RuleExpression, type RuleNodeKind, type RuleUse, STAGE_RULE_ENFORCEMENT, STAGE_RULE_ON_FAIL, STORAGE_MODES, STORE_DOORS, STORE_KNOBS, STORE_REFUSAL_CODES, type SavedViewRow, type SavedViewSpecIn, type StagePending, type StagePendingOnBoard, type StageRuleEnforcement, type StageRuleOnFail, type StageRuleWarning, type StaleWriteDetail, type StorageMode, type StoreDoorName, type StoreRefusalCode, type StoredRecord, type StuckRow, type Subscription, type SubscriptionBlock, type SubscriptionCadence, type SubscriptionSpec, TABLE_DISPLAYS, TABLE_ORIGINS, TABLE_TYPES, type Table, type TableArchiveProgress, type TableCapacity, type TableDecorations, type TableDisplay, type TableOrigin, type TableProposal, type TableType, type TableWebhook, type TableWebhookDeclared, type Timestamp, type UseEntityFieldMutation, type UseFieldMutation, type UseRecordMutation, type UseRecordsOptions, type UseRecordsState, type UseTableArchive, type Uuid, VALUE_ALTERNATE_KEYS, VALUE_ENVELOPE_KEYS, type ValueAlternate, type ValueAlternateKey, type ValueEnvelope, type ValueEnvelopeKey, type ValueSource, type ViewLayout, type WorkApprovalDecision, type WorkApprovalFiled, type WorkApprover, type WorkAssignment, type WorkAssignmentField, type WorkChange, type WorkDueState, type WorkGraph, type WorkInboxItem, type WorkInboxKind, type WorkInstantiation, type WorkListFlavour, type WorkListItem, type WorkOrigin, type WorkRecordState, type WorkSlotHold, type WorkState, type WorkTemplateNode, type WorkTemplateRelation, type WorkTurn, type WriteConflict, actionRefusals, archivedByLine, archivedWhen, asPermissionLevel, atLeast, bookingPath, choiceSlug, choiceValuesOf, choicesOf, coerceTypedAnswer, coerceTypedAnswers, coercionLabel, emptyArchiveLine, emptyPortalArchiveLine, err, exampleSpec, exportPageXlsx, fieldKindFor, forgetAllOps, highestLevel, holdsARetiredChoice, indexedDbStore, isArchiveLane, isDecided, isOwnOp, isPortalArchiveFilter, isRecordsErr, isTheChosen, looksLikeAnId, mayDrag, measureKey, memoryStore, mintClientKey, mintOpId, ok, openCaptureQueue, optionKey, optionLabel, portalArchiveConsequence, portalConfirmLine, portalPath, portalTitleTypedBack, publicFormPath, rememberedOpCount, sameDocument, scopeChip, stableFilterKey, tableShapeChanged, useEntityFieldMutation, useEntityFieldRights, useEntityFields, useEntityRecord, useEntityTable, useFieldMutation, useFields, useMergeField, useMyLevel, useMyLevels, useOptionalRecordsClient, useRecord, useRecordMutation, useRecords, useRecordsActor, useRecordsClient, useTable, useTableArchive, useTables };
|