@ai-matrx/records 0.16.0 → 0.17.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 +41 -0
- package/dist/core/index.cjs +84 -26
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +24 -3
- package/dist/core/index.d.ts +24 -3
- package/dist/core/index.js +84 -26
- package/dist/core/index.js.map +1 -1
- package/dist/index.cjs +23 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +94 -6
- package/dist/index.d.ts +94 -6
- package/dist/index.js +23 -5
- package/dist/index.js.map +1 -1
- package/dist/react/index.cjs +84 -26
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +113 -9
- package/dist/react/index.d.ts +113 -9
- package/dist/react/index.js +84 -26
- package/dist/react/index.js.map +1 -1
- package/package.json +1 -1
package/dist/core/index.d.cts
CHANGED
|
@@ -405,6 +405,14 @@ interface RecordsClient {
|
|
|
405
405
|
}): Promise<RecordsResult<Subscription[]>>;
|
|
406
406
|
/** The cadences the store itself offers. Asked, never hardcoded in a picker. */
|
|
407
407
|
aggSubscriptionCadences(): Promise<RecordsResult<string[]>>;
|
|
408
|
+
/**
|
|
409
|
+
* The same cadences, through the door a PERSON may call.
|
|
410
|
+
* `aggSubscriptionCadences` is the notifier's own and holds no client grant,
|
|
411
|
+
* so a screen that asked for it was refused and fell back to a list typed
|
|
412
|
+
* into the picker — which drifts from what the digest runner honours. This
|
|
413
|
+
* one delegates to the same array, so there is exactly one list.
|
|
414
|
+
*/
|
|
415
|
+
subscriptionCadences(): Promise<RecordsResult<string[]>>;
|
|
408
416
|
/**
|
|
409
417
|
* WHAT THIS PERSON IS BEING TOLD ABOUT, and what they may switch off.
|
|
410
418
|
*
|
|
@@ -459,15 +467,23 @@ interface RecordsClient {
|
|
|
459
467
|
docSignatureIntact(args: {
|
|
460
468
|
signature_id: Uuid;
|
|
461
469
|
}): Promise<RecordsResult<unknown>>;
|
|
462
|
-
/** Every template that renders one Table. */
|
|
470
|
+
/** Every template that renders one Table. Viewer on the Table. */
|
|
463
471
|
docTemplates(args: {
|
|
464
472
|
table_id: Uuid;
|
|
465
473
|
}): Promise<RecordsResult<DocTemplateRow[]>>;
|
|
466
|
-
/**
|
|
474
|
+
/**
|
|
475
|
+
* Retire one template. EDITOR on the Table it renders, because a template is
|
|
476
|
+
* that Table's wording. Documents already rendered keep their frozen bytes
|
|
477
|
+
* and their seals, so this can never invalidate a signature.
|
|
478
|
+
*/
|
|
479
|
+
docTemplateDelete(args: {
|
|
480
|
+
template_id: Uuid;
|
|
481
|
+
}): Promise<RecordsResult<boolean>>;
|
|
482
|
+
/** Every frozen render of one record, newest first. Viewer on the record. */
|
|
467
483
|
docRenders(args: {
|
|
468
484
|
record_id: Uuid;
|
|
469
485
|
}): Promise<RecordsResult<DocRenderRow[]>>;
|
|
470
|
-
/** Every signature on one record. */
|
|
486
|
+
/** Every signature on one record. Viewer on the record. */
|
|
471
487
|
docSignatures(args: {
|
|
472
488
|
record_id: Uuid;
|
|
473
489
|
}): Promise<RecordsResult<DocSignatureRow[]>>;
|
|
@@ -861,6 +877,7 @@ declare const DOORS: {
|
|
|
861
877
|
readonly aggSubscriptionCadences: "agg_subscription_cadences";
|
|
862
878
|
readonly subscriptions: "subscriptions";
|
|
863
879
|
readonly subscriptionMute: "subscription_mute";
|
|
880
|
+
readonly subscriptionCadences: "subscription_cadences";
|
|
864
881
|
readonly docTemplateSave: "doc_template_save";
|
|
865
882
|
readonly docRenderBody: "doc_render_body";
|
|
866
883
|
readonly docRenderDocument: "doc_render_document";
|
|
@@ -868,6 +885,10 @@ declare const DOORS: {
|
|
|
868
885
|
readonly docUnresolvedTokens: "doc_unresolved_tokens";
|
|
869
886
|
readonly docSign: "doc_sign";
|
|
870
887
|
readonly docSignatureIntact: "doc_signature_intact";
|
|
888
|
+
readonly docTemplates: "doc_templates";
|
|
889
|
+
readonly docTemplateDelete: "doc_template_delete";
|
|
890
|
+
readonly docRenders: "doc_renders";
|
|
891
|
+
readonly docSignatures: "doc_signatures";
|
|
871
892
|
readonly anonTokenIssue: "anon_token_issue";
|
|
872
893
|
readonly anonTokenVerify: "anon_token_verify";
|
|
873
894
|
readonly anonTokenRevoke: "anon_token_revoke";
|
package/dist/core/index.d.ts
CHANGED
|
@@ -405,6 +405,14 @@ interface RecordsClient {
|
|
|
405
405
|
}): Promise<RecordsResult<Subscription[]>>;
|
|
406
406
|
/** The cadences the store itself offers. Asked, never hardcoded in a picker. */
|
|
407
407
|
aggSubscriptionCadences(): Promise<RecordsResult<string[]>>;
|
|
408
|
+
/**
|
|
409
|
+
* The same cadences, through the door a PERSON may call.
|
|
410
|
+
* `aggSubscriptionCadences` is the notifier's own and holds no client grant,
|
|
411
|
+
* so a screen that asked for it was refused and fell back to a list typed
|
|
412
|
+
* into the picker — which drifts from what the digest runner honours. This
|
|
413
|
+
* one delegates to the same array, so there is exactly one list.
|
|
414
|
+
*/
|
|
415
|
+
subscriptionCadences(): Promise<RecordsResult<string[]>>;
|
|
408
416
|
/**
|
|
409
417
|
* WHAT THIS PERSON IS BEING TOLD ABOUT, and what they may switch off.
|
|
410
418
|
*
|
|
@@ -459,15 +467,23 @@ interface RecordsClient {
|
|
|
459
467
|
docSignatureIntact(args: {
|
|
460
468
|
signature_id: Uuid;
|
|
461
469
|
}): Promise<RecordsResult<unknown>>;
|
|
462
|
-
/** Every template that renders one Table. */
|
|
470
|
+
/** Every template that renders one Table. Viewer on the Table. */
|
|
463
471
|
docTemplates(args: {
|
|
464
472
|
table_id: Uuid;
|
|
465
473
|
}): Promise<RecordsResult<DocTemplateRow[]>>;
|
|
466
|
-
/**
|
|
474
|
+
/**
|
|
475
|
+
* Retire one template. EDITOR on the Table it renders, because a template is
|
|
476
|
+
* that Table's wording. Documents already rendered keep their frozen bytes
|
|
477
|
+
* and their seals, so this can never invalidate a signature.
|
|
478
|
+
*/
|
|
479
|
+
docTemplateDelete(args: {
|
|
480
|
+
template_id: Uuid;
|
|
481
|
+
}): Promise<RecordsResult<boolean>>;
|
|
482
|
+
/** Every frozen render of one record, newest first. Viewer on the record. */
|
|
467
483
|
docRenders(args: {
|
|
468
484
|
record_id: Uuid;
|
|
469
485
|
}): Promise<RecordsResult<DocRenderRow[]>>;
|
|
470
|
-
/** Every signature on one record. */
|
|
486
|
+
/** Every signature on one record. Viewer on the record. */
|
|
471
487
|
docSignatures(args: {
|
|
472
488
|
record_id: Uuid;
|
|
473
489
|
}): Promise<RecordsResult<DocSignatureRow[]>>;
|
|
@@ -861,6 +877,7 @@ declare const DOORS: {
|
|
|
861
877
|
readonly aggSubscriptionCadences: "agg_subscription_cadences";
|
|
862
878
|
readonly subscriptions: "subscriptions";
|
|
863
879
|
readonly subscriptionMute: "subscription_mute";
|
|
880
|
+
readonly subscriptionCadences: "subscription_cadences";
|
|
864
881
|
readonly docTemplateSave: "doc_template_save";
|
|
865
882
|
readonly docRenderBody: "doc_render_body";
|
|
866
883
|
readonly docRenderDocument: "doc_render_document";
|
|
@@ -868,6 +885,10 @@ declare const DOORS: {
|
|
|
868
885
|
readonly docUnresolvedTokens: "doc_unresolved_tokens";
|
|
869
886
|
readonly docSign: "doc_sign";
|
|
870
887
|
readonly docSignatureIntact: "doc_signature_intact";
|
|
888
|
+
readonly docTemplates: "doc_templates";
|
|
889
|
+
readonly docTemplateDelete: "doc_template_delete";
|
|
890
|
+
readonly docRenders: "doc_renders";
|
|
891
|
+
readonly docSignatures: "doc_signatures";
|
|
871
892
|
readonly anonTokenIssue: "anon_token_issue";
|
|
872
893
|
readonly anonTokenVerify: "anon_token_verify";
|
|
873
894
|
readonly anonTokenRevoke: "anon_token_revoke";
|
package/dist/core/index.js
CHANGED
|
@@ -263,6 +263,9 @@ var STORE_DOORS = [
|
|
|
263
263
|
{ name: "choice_synonyms_in", args: "p_map jsonb, p_token text", returns: "text[]", security: "invoker" },
|
|
264
264
|
{ name: "choice_words", args: "p_field jsonb", returns: "text", security: "invoker" },
|
|
265
265
|
{ name: "client_write_grants", args: "", returns: "TABLE(role_name text, object_name text, privilege text)", security: "invoker" },
|
|
266
|
+
{ name: "comment_mention_deliver", args: "p_organization_id uuid, p_record_id uuid, p_table_id uuid, p_comment_id uuid, p_recipient uuid, p_author_name text, p_record_title text, p_body text", returns: "uuid", security: "definer" },
|
|
267
|
+
{ name: "comment_thread", args: "p_organization_id uuid, p_record_id uuid, p_include_resolved boolean DEFAULT false", returns: "jsonb", security: "definer" },
|
|
268
|
+
{ name: "comment_write", args: "p_organization_id uuid, p_record_id uuid, p_body text, p_anchor jsonb DEFAULT '{}'::jsonb, p_parent_comment_id uuid DEFAULT NULL::uuid, p_mentions uuid[] DEFAULT NULL::uuid[]", returns: "jsonb", security: "definer" },
|
|
266
269
|
{ name: "computed_provenance", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(field_key text, field_id uuid, value jsonb, rule_id uuid, rule_version integer, computed_at timestamp with time zone)", security: "invoker" },
|
|
267
270
|
{ name: "containment_chain", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(ancestor_id uuid, depth integer)", security: "invoker" },
|
|
268
271
|
{ name: "containment_depth_ceiling", args: "p_organization_id uuid DEFAULT NULL::uuid", returns: "integer", security: "invoker" },
|
|
@@ -295,13 +298,17 @@ var STORE_DOORS = [
|
|
|
295
298
|
{ name: "doc_render_document", args: "p_organization_id uuid, p_template_id uuid, p_record_id uuid", returns: "uuid", security: "definer" },
|
|
296
299
|
{ name: "doc_render_read", args: "p_organization_id uuid, p_render_id uuid", returns: "jsonb", security: "definer" },
|
|
297
300
|
{ name: "doc_render_write", args: "p_organization_id uuid, p_template_id uuid, p_record_id uuid, p_table_id uuid, p_template_version integer, p_body text, p_content_hash text", returns: "uuid", security: "definer" },
|
|
301
|
+
{ name: "doc_renders", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(render_id uuid, template_id uuid, record_id uuid, table_id uuid, template_version integer, body text, content_hash text, rendered_at timestamp with time zone)", security: "definer" },
|
|
298
302
|
{ name: "doc_sign", args: "p_organization_id uuid, p_render_id uuid, p_field_key text, p_signer_name text, p_signer_user_id uuid DEFAULT NULL::uuid", returns: "uuid", security: "definer" },
|
|
299
303
|
{ name: "doc_signature_field_ok", args: "p_field_data jsonb", returns: "boolean", security: "invoker" },
|
|
300
304
|
{ name: "doc_signature_intact", args: "p_organization_id uuid, p_signature_id uuid", returns: "jsonb", security: "invoker" },
|
|
301
305
|
{ name: "doc_signature_read", args: "p_organization_id uuid, p_signature_id uuid", returns: "jsonb", security: "definer" },
|
|
302
306
|
{ name: "doc_signature_write", args: "p_organization_id uuid, p_render_id uuid, p_record_id uuid, p_field_key text, p_signer_name text, p_signer_user_id uuid, p_document_hash text, p_document_version integer", returns: "uuid", security: "definer" },
|
|
307
|
+
{ name: "doc_signatures", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(signature_id uuid, render_id uuid, record_id uuid, field_key text, signer_name text, signer_user_id uuid, signed_at timestamp with time zone, document_hash text, document_version integer)", security: "definer" },
|
|
308
|
+
{ name: "doc_template_delete", args: "p_organization_id uuid, p_template_id uuid", returns: "boolean", security: "definer" },
|
|
303
309
|
{ name: "doc_template_read", args: "p_organization_id uuid, p_template_id uuid", returns: "jsonb", security: "definer" },
|
|
304
310
|
{ name: "doc_template_save", args: "p_organization_id uuid, p_table_id uuid, p_name text, p_body text, p_template_id uuid DEFAULT NULL::uuid", returns: "uuid", security: "definer" },
|
|
311
|
+
{ name: "doc_templates", args: "p_organization_id uuid, p_table_id uuid", returns: "TABLE(template_id uuid, renders_table_id uuid, name text, body text, template_version integer, token_count bigint, updated_at timestamp with time zone)", security: "definer" },
|
|
305
312
|
{ name: "doc_token_pattern", args: "", returns: "text", security: "invoker" },
|
|
306
313
|
{ name: "doc_tokens", args: "p_body text", returns: "TABLE(ordinal integer, raw text, field_id uuid)", security: "invoker" },
|
|
307
314
|
{ name: "doc_unresolved_tokens", args: "p_organization_id uuid, p_table_id uuid, p_body text", returns: "TABLE(raw text, field_id uuid, why text)", security: "invoker" },
|
|
@@ -330,6 +337,7 @@ var STORE_DOORS = [
|
|
|
330
337
|
{ name: "field_behaviour", args: "p_field_data jsonb", returns: "text", security: "invoker" },
|
|
331
338
|
{ name: "field_declare", args: "p_organization_id uuid, p_table_id uuid, p_spec jsonb", returns: "uuid", security: "definer" },
|
|
332
339
|
{ name: "field_dependants", args: "p_organization_id uuid, p_field_id uuid", returns: "TABLE(kind text, dependant_id uuid, label text, how text)", security: "definer" },
|
|
340
|
+
{ name: "field_history", args: "p_organization_id uuid, p_table_id uuid, p_field_key text, p_limit integer DEFAULT 100, p_offset integer DEFAULT 0, p_record_id uuid DEFAULT NULL::uuid", returns: "TABLE(record_id uuid, record_title text, version integer, occurred_at timestamp with time zone, operation_label text, actor jsonb, before jsonb, after jsonb)", security: "definer" },
|
|
333
341
|
{ name: "field_kernel_id", args: "", returns: "uuid", security: "invoker" },
|
|
334
342
|
{ name: "field_options", args: "p_organization_id uuid, p_field_id uuid", returns: "SETOF custom.record", security: "definer" },
|
|
335
343
|
{ name: "field_retire", args: "p_organization_id uuid, p_field_id uuid", returns: "boolean", security: "definer" },
|
|
@@ -348,7 +356,11 @@ var STORE_DOORS = [
|
|
|
348
356
|
{ name: "has_visibility", args: "p_user_id uuid, p_type text, p_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level", returns: "boolean", security: "definer" },
|
|
349
357
|
{ name: "has_visibility_at", args: "p_user_id uuid, p_type text, p_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level, p_organization_id uuid DEFAULT NULL::uuid, p_min_version bigint DEFAULT NULL::bigint", returns: "boolean", security: "definer" },
|
|
350
358
|
{ name: "hidden_field_notice", args: "p_field custom.record, p_action text DEFAULT 'read'::text", returns: "jsonb", security: "invoker" },
|
|
359
|
+
{ name: "history_actor", args: "p_tier text, p_document jsonb, p_actor_id uuid, p_people jsonb", returns: "jsonb", security: "invoker" },
|
|
360
|
+
{ name: "history_changes", args: "p_organization_id uuid, p_table_id uuid, p_old jsonb, p_new jsonb", returns: "jsonb", security: "invoker" },
|
|
361
|
+
{ name: "history_people", args: "p_organization_id uuid, p_ids uuid[]", returns: "jsonb", security: "definer" },
|
|
351
362
|
{ name: "history_prune", args: "p_organization_id uuid, p_scope text DEFAULT 'values'::text, p_table_id uuid DEFAULT NULL::uuid, p_dry_run boolean DEFAULT true", returns: "jsonb", security: "definer" },
|
|
363
|
+
{ name: "history_restore_body", args: "p_current jsonb, p_target jsonb, p_field_key text DEFAULT NULL::text", returns: "jsonb", security: "invoker" },
|
|
352
364
|
{ name: "history_retention", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
|
|
353
365
|
{ name: "history_retention_floor_raise", args: "p_organization_id uuid, p_days integer", returns: "integer", security: "definer" },
|
|
354
366
|
{ name: "history_retention_set", args: "p_organization_id uuid, p_table_id uuid, p_days integer", returns: "integer", security: "definer" },
|
|
@@ -469,10 +481,13 @@ var STORE_DOORS = [
|
|
|
469
481
|
{ name: "record_card", args: "p_viewer uuid, p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "definer" },
|
|
470
482
|
{ name: "record_carrying_edges", args: "p_id uuid, p_data_class text, p_data jsonb, p_deleted_at timestamp with time zone", returns: "TABLE(container_id uuid, item_id uuid, edge_role text)", security: "invoker" },
|
|
471
483
|
{ name: "record_delete", args: "p_organization_id uuid, p_record_id uuid", returns: "timestamp with time zone", security: "definer" },
|
|
484
|
+
{ name: "record_history", args: "p_organization_id uuid, p_record_id uuid, p_limit integer DEFAULT 200, p_offset integer DEFAULT 0", returns: "TABLE(version integer, occurred_at timestamp with time zone, operation text, operation_label text, actor jsonb, changes jsonb, migration_id uuid, undoable boolean)", security: "definer" },
|
|
472
485
|
{ name: "record_relation_edges", args: "p_organization_id uuid, p_id uuid, p_table_id uuid, p_data_class text, p_data jsonb, p_deleted_at timestamp with time zone", returns: "TABLE(target_id uuid, edge_role text, field_id uuid, ord integer)", security: "invoker" },
|
|
473
486
|
{ name: "record_reparent", args: "p_organization_id uuid, p_record_id uuid, p_parent_id uuid", returns: "void", security: "definer" },
|
|
474
487
|
{ name: "record_resolve", args: "p_organization_id uuid, p_id uuid", returns: "jsonb", security: "definer" },
|
|
475
488
|
{ name: "record_restore", args: "p_organization_id uuid, p_record_id uuid", returns: "void", security: "definer" },
|
|
489
|
+
{ name: "record_restore_preview", args: "p_organization_id uuid, p_record_id uuid, p_version integer, p_field_key text DEFAULT NULL::text", returns: "jsonb", security: "definer" },
|
|
490
|
+
{ name: "record_restore_version", args: "p_organization_id uuid, p_record_id uuid, p_version integer", returns: "jsonb", security: "definer" },
|
|
476
491
|
{ name: "record_state_as_of", args: "p_record_id uuid, p_at timestamp with time zone", returns: "TABLE(state jsonb, replayed boolean)", security: "definer" },
|
|
477
492
|
{ name: "record_table", args: "p_organization_id uuid, p_record_id uuid", returns: "uuid", security: "definer" },
|
|
478
493
|
{ name: "record_update", args: "p_organization_id uuid, p_record_id uuid, p_patch jsonb, p_expected_version integer DEFAULT NULL::integer", returns: "integer", security: "definer" },
|
|
@@ -525,6 +540,7 @@ var STORE_DOORS = [
|
|
|
525
540
|
{ name: "stamp_value_envelopes", args: "p_data jsonb, p_actor text, p_on_behalf_of text, p_at timestamp with time zone", returns: "jsonb", security: "invoker" },
|
|
526
541
|
{ name: "storage_modes", args: "", returns: "text[]", security: "invoker" },
|
|
527
542
|
{ name: "store_is_open", args: "p_organization_id uuid DEFAULT NULL::uuid", returns: "boolean", security: "invoker" },
|
|
543
|
+
{ name: "subscription_cadences", args: "p_organization_id uuid", returns: "text[]", security: "definer" },
|
|
528
544
|
{ name: "subscription_mute", args: "p_organization_id uuid, p_rule_id uuid, p_muted boolean DEFAULT true", returns: "boolean", security: "definer" },
|
|
529
545
|
{ name: "subscriptions", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "TABLE(rule_id uuid, name text, table_id uuid, saved_view_id uuid, cadence text, schedule text, channel text, recipient_user_id uuid, event_key text, muted boolean, mine boolean, i_may_mute boolean)", security: "definer" },
|
|
530
546
|
{ name: "table_capacity", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
|
|
@@ -550,6 +566,7 @@ var STORE_DOORS = [
|
|
|
550
566
|
{ name: "value_envelope_ok", args: "p_data jsonb", returns: "boolean", security: "invoker" },
|
|
551
567
|
{ name: "value_envelope_refusal", args: "p_data jsonb", returns: "text", security: "invoker" },
|
|
552
568
|
{ name: "value_read", args: "p_organization_id uuid, p_record_id uuid, p_key text", returns: "TABLE(field_key text, field_id uuid, value jsonb, value_version integer, source jsonb, absent_reason text, actor text, on_behalf_of text, written_at timestamp with time zone, alternates jsonb)", security: "definer" },
|
|
569
|
+
{ name: "value_restore", args: "p_organization_id uuid, p_record_id uuid, p_field_key text, p_version integer", returns: "jsonb", security: "definer" },
|
|
553
570
|
{ name: "value_versions", args: "p_old jsonb, p_new jsonb", returns: "jsonb", security: "invoker" },
|
|
554
571
|
{ name: "visibility_ancestors", args: "p_item_type text, p_item_id uuid", returns: "TABLE(container_type text, container_id uuid, depth integer, max_level permission_level)", security: "definer" },
|
|
555
572
|
{ name: "visibility_as_of", args: "p_organization_id uuid, p_record_id uuid, p_at timestamp with time zone", returns: "TABLE(principal_kind text, principal_id uuid, level permission_level, through_kind text, through_id uuid, reason text, replayed boolean, held_from timestamp with time zone, held_to timestamp with time zone)", security: "definer" },
|
|
@@ -600,6 +617,7 @@ var STORE_KNOBS = [
|
|
|
600
617
|
{ key: "code_paths_enabled", value: "false", type: "boolean" },
|
|
601
618
|
{ key: "consumer_chat_seeding_enabled", value: "false", type: "boolean" },
|
|
602
619
|
{ key: "consumer_checkout_enabled", value: "false", type: "boolean" },
|
|
620
|
+
{ key: "consumer_context_enabled", value: "false", type: "boolean" },
|
|
603
621
|
{ key: "consumer_education_enabled", value: "false", type: "boolean" },
|
|
604
622
|
{ key: "consumer_extension_enabled", value: "false", type: "boolean" },
|
|
605
623
|
{ key: "consumer_grid_enabled", value: "false", type: "boolean" },
|
|
@@ -631,17 +649,17 @@ var STORE_KNOBS = [
|
|
|
631
649
|
{ key: "world_publish_enabled", value: "false", type: "boolean" }
|
|
632
650
|
];
|
|
633
651
|
var STORE_REFUSAL_CODES = [
|
|
634
|
-
{ code: "02000", raised_by: "dashboard_delete,dashboard_run,doc_render_body,doc_render_document,doc_render_read,doc_sign,doc_signature_intact,doc_signature_read,doc_template_read,doc_template_save,entity_field_retire,entity_field_update,entity_record_read,entity_value_write,external_history_event,external_rows,external_stub_upsert,external_writes_set,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_preview,portal_principal_bind,portal_revoke,read_record,record_delete,record_restore,record_table,record_update,relation_uncarry,share_access,share_grant,share_lane_set,share_people,share_revoke,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_assign,work_record_states,work_set_state" },
|
|
652
|
+
{ code: "02000", raised_by: "dashboard_delete,dashboard_run,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,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_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,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_assign,work_record_states,work_set_state" },
|
|
635
653
|
{ code: "0A000", raised_by: "external_rows,external_source_declare,external_write_through,promote_field,promoted_index_expr,promoted_query_sql,promoted_read,rule_eval,work_assign" },
|
|
636
|
-
{ code: "22004", raised_by: "_entity_custom_fields_guard,_value_envelope,actor_word,agg_assert_key,agg_sql,anon_capture,anon_token_issue,anon_write,assert_client_may_reach,dashboard_block_normalize,dashboard_declare,dashboard_window_sql,doc_render_write,doc_sign,doc_signature_write,doc_template_save,external_history_event,external_rows,external_source_declare,external_stub_upsert,external_write_through,external_writes_set,form_declare,form_submit,home_add,io_comment_write,io_import_open,io_outbox_drain,io_restore,migrate_choice_keys,migrate_purge,migrate_reclass,migrate_split,migrate_undo,organization_clear,organization_contents,portal_declare,portal_invite,portal_principal_bind,query_across_homes,query_by_coordinates,query_rollup,record_delete,record_reparent,record_resolve,record_restore,record_update,record_write,relation_carry,relation_own,rule_declare,share_grant,table_declare,work_approval_decide,work_approval_request,work_template_declare" },
|
|
654
|
+
{ code: "22004", raised_by: "_entity_custom_fields_guard,_value_envelope,actor_word,agg_assert_key,agg_sql,anon_capture,anon_token_issue,anon_write,assert_client_may_reach,dashboard_block_normalize,dashboard_declare,dashboard_window_sql,doc_render_write,doc_sign,doc_signature_write,doc_template_save,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_open,io_outbox_drain,io_restore,migrate_choice_keys,migrate_purge,migrate_reclass,migrate_split,migrate_undo,organization_clear,organization_contents,portal_declare,portal_invite,portal_principal_bind,query_across_homes,query_by_coordinates,query_rollup,record_delete,record_reparent,record_resolve,record_restore,record_update,record_write,relation_carry,relation_own,rule_declare,share_grant,table_declare,value_restore,work_approval_decide,work_approval_request,work_template_declare" },
|
|
637
655
|
{ code: "22007", raised_by: "dashboard_window_sql" },
|
|
638
656
|
{ code: "22012", raised_by: "rule_eval" },
|
|
639
|
-
{ code: "22023", raised_by: "_entity_custom_fields_guard,_value_envelope,_work_shape_guard,actor_word,agg_assert_key,agg_sql,anon_token_issue,containment_parent,dashboard_block_normalize,dashboard_window_sql,doc_render_body,doc_render_write,doc_signature_write,entity_value_write,external_history_event,external_source_declare,external_stub_upsert,external_write_through,io_import_open,io_proposal_accept,migrate_merge,migrate_reclass,my_levels,organization_clear,portal_declare,query_by_coordinates,query_rollup,record_update,relation_carry,rule_eval,rule_members,share_grant,share_lane_set,table_rules,visibility_as_of,work_approval_request,work_list,work_slot_hold" },
|
|
640
|
-
{ code: "23503", raised_by: "_containment_guard,_field_document_for,_record_rule_uses,anon_publish,anon_rate_take,anon_token_issue,anon_write,assert_organization_wall,dashboard_declare,delete_rule,doc_sign,doc_template_save,form_declare,form_submit,home_add,io_comment_write,io_import_rows,io_proposal_accept,migrate_demote,migrate_promote,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,subscription_mute,work_set_state,work_take_assignment,work_template_instantiate" },
|
|
657
|
+
{ code: "22023", raised_by: "_entity_custom_fields_guard,_value_envelope,_work_shape_guard,actor_word,agg_assert_key,agg_sql,anon_token_issue,containment_parent,dashboard_block_normalize,dashboard_window_sql,doc_render_body,doc_render_write,doc_signature_write,entity_value_write,external_history_event,external_source_declare,external_stub_upsert,external_write_through,field_history,io_import_open,io_proposal_accept,migrate_merge,migrate_reclass,my_levels,organization_clear,portal_declare,query_by_coordinates,query_rollup,record_update,relation_carry,rule_eval,rule_members,share_grant,share_lane_set,table_rules,visibility_as_of,work_approval_request,work_list,work_slot_hold" },
|
|
658
|
+
{ code: "23503", raised_by: "_containment_guard,_field_document_for,_record_rule_uses,anon_publish,anon_rate_take,anon_token_issue,anon_write,assert_organization_wall,comment_write,dashboard_declare,delete_rule,doc_sign,doc_template_save,form_declare,form_submit,home_add,io_comment_write,io_import_rows,io_proposal_accept,migrate_demote,migrate_promote,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,subscription_mute,work_set_state,work_take_assignment,work_template_instantiate" },
|
|
641
659
|
{ code: "23505", raised_by: "_unique_rule_holds,doc_sign,doc_signature_write,entity_field_declare,field_declare,home_add,io_proposal_accept,relation_carry,relation_own,share_grant,work_approval_decide,work_slot_hold" },
|
|
642
660
|
{ code: "23514", raised_by: "_containment_guard,_dated_values_guard,_derived_fields,_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_shape_guard,_value_envelope,_work_shape_guard,_workdoors_approval_guard,assert_entity_is_organization_scoped,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,migrate_merge,relation_carry,relation_own,validate_value_envelope,validate_values,work_set_state,work_slots_declare,work_take_assignment,work_template_instantiate" },
|
|
643
661
|
{ code: "40001", raised_by: "has_visibility_at" },
|
|
644
|
-
{ code: "42501", raised_by: "_doc_render_immutable,_doc_signature_immutable,_field_definition_write,_field_write_door,_rule_definition_write,_store_door,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,entity_field_declare,entity_field_retire,entity_field_update,entity_value_write,external_write_through,form_declare,form_submit,io_comment_resolve,io_comment_write,io_restore,migrate_purge,migrate_reclass,my_levels,organization_clear,portal_declare,portal_invitation,portal_invite,portal_principal_bind,promote_table,query_visibility_parity,read_record,read_records,share_grant,subscription_mute,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_person" },
|
|
662
|
+
{ code: "42501", raised_by: "_doc_render_immutable,_doc_signature_immutable,_field_definition_write,_field_write_door,_rule_definition_write,_store_door,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,comment_write,entity_field_declare,entity_field_retire,entity_field_update,entity_value_write,external_write_through,form_declare,form_submit,io_comment_resolve,io_comment_write,io_restore,migrate_purge,migrate_reclass,my_levels,organization_clear,portal_declare,portal_invitation,portal_invite,portal_principal_bind,promote_table,query_visibility_parity,read_record,read_records,record_table,share_grant,subscription_mute,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_person" },
|
|
645
663
|
{ code: "42703", raised_by: "entity_table,portal_declare" },
|
|
646
664
|
{ code: "53400", raised_by: "anon_rate_take,delete_cascade_closure,promote_field" },
|
|
647
665
|
{ code: "54001", raised_by: "record_delete" },
|
|
@@ -1860,6 +1878,10 @@ var DOORS = {
|
|
|
1860
1878
|
// these rows, so "tell me when a patient arrives" can also be un-told.
|
|
1861
1879
|
subscriptions: "subscriptions",
|
|
1862
1880
|
subscriptionMute: "subscription_mute",
|
|
1881
|
+
// The cadence CATALOGUE a person's screen may ask for. `agg_subscription_cadences`
|
|
1882
|
+
// above is the notifier's own and holds no client grant; this door delegates to
|
|
1883
|
+
// it, so a picker and the digest runner can never offer different words.
|
|
1884
|
+
subscriptionCadences: "subscription_cadences",
|
|
1863
1885
|
// The doc doors: a template is saved, a render is written once and frozen,
|
|
1864
1886
|
// and a signature is checked against the exact bytes that were signed.
|
|
1865
1887
|
docTemplateSave: "doc_template_save",
|
|
@@ -1869,6 +1891,15 @@ var DOORS = {
|
|
|
1869
1891
|
docUnresolvedTokens: "doc_unresolved_tokens",
|
|
1870
1892
|
docSign: "doc_sign",
|
|
1871
1893
|
docSignatureIntact: "doc_signature_intact",
|
|
1894
|
+
// THE PLURAL ACTS. Until 2026-09-20 this package read `custom.doc_template`,
|
|
1895
|
+
// `custom.doc_render` and `custom.doc_signature` with a direct PostgREST
|
|
1896
|
+
// `.from()`, and all three hold NO client SELECT — so every list in product #5
|
|
1897
|
+
// opened on "permission denied for view doc_template". A list is a DOOR, never
|
|
1898
|
+
// a grant on the thing behind it (DOORS-TWO).
|
|
1899
|
+
docTemplates: "doc_templates",
|
|
1900
|
+
docTemplateDelete: "doc_template_delete",
|
|
1901
|
+
docRenders: "doc_renders",
|
|
1902
|
+
docSignatures: "doc_signatures",
|
|
1872
1903
|
// THE ANONYMOUS LANE (W4-ANON). It landed, and it landed as SEVEN doors
|
|
1873
1904
|
// rather than the one this package had guessed at: a token is issued and
|
|
1874
1905
|
// verified separately from the write it authorises, a form is published
|
|
@@ -2686,6 +2717,13 @@ function createRecordsClient(config) {
|
|
|
2686
2717
|
async aggSubscriptionCadences() {
|
|
2687
2718
|
return callDoor(DOORS.aggSubscriptionCadences, {}, "aggSubscriptionCadences");
|
|
2688
2719
|
},
|
|
2720
|
+
async subscriptionCadences() {
|
|
2721
|
+
return callDoor(
|
|
2722
|
+
DOORS.subscriptionCadences,
|
|
2723
|
+
{ p_organization_id: org },
|
|
2724
|
+
"subscriptionCadences"
|
|
2725
|
+
);
|
|
2726
|
+
},
|
|
2689
2727
|
async subscriptions(args) {
|
|
2690
2728
|
return callDoor(
|
|
2691
2729
|
DOORS.subscriptions,
|
|
@@ -2750,32 +2788,52 @@ function createRecordsClient(config) {
|
|
|
2750
2788
|
"docSign"
|
|
2751
2789
|
);
|
|
2752
2790
|
},
|
|
2791
|
+
// A LIST IS A DOOR, NEVER A GRANT ON THE THING BEHIND IT. These three used to
|
|
2792
|
+
// read `custom.doc_template`, `custom.doc_render` and `custom.doc_signature`
|
|
2793
|
+
// with a direct PostgREST `.from()`, and none of the three holds a client
|
|
2794
|
+
// SELECT — so a person could save a template they could never list and
|
|
2795
|
+
// render a document they could never find again, and every document screen
|
|
2796
|
+
// opened on "permission denied for view doc_template". The doors below
|
|
2797
|
+
// narrow inside the definer, after the ladder has spoken (DOORS-TWO).
|
|
2753
2798
|
async docTemplates({ table_id }) {
|
|
2754
|
-
const
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
return ok(
|
|
2799
|
+
const answered = await callDoor(
|
|
2800
|
+
DOORS.docTemplates,
|
|
2801
|
+
{ p_organization_id: org, p_table_id: table_id },
|
|
2802
|
+
"docTemplates"
|
|
2803
|
+
);
|
|
2804
|
+
if (!answered.ok) return answered;
|
|
2805
|
+
return ok(
|
|
2806
|
+
answered.data.map((row) => ({ ...row, id: row["template_id"] }))
|
|
2807
|
+
);
|
|
2808
|
+
},
|
|
2809
|
+
async docTemplateDelete({ template_id }) {
|
|
2810
|
+
return callDoor(
|
|
2811
|
+
DOORS.docTemplateDelete,
|
|
2812
|
+
{ p_organization_id: org, p_template_id: template_id },
|
|
2813
|
+
"docTemplateDelete"
|
|
2814
|
+
);
|
|
2761
2815
|
},
|
|
2762
2816
|
async docRenders({ record_id }) {
|
|
2763
|
-
const
|
|
2764
|
-
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
return ok(
|
|
2817
|
+
const answered = await callDoor(
|
|
2818
|
+
DOORS.docRenders,
|
|
2819
|
+
{ p_organization_id: org, p_record_id: record_id },
|
|
2820
|
+
"docRenders"
|
|
2821
|
+
);
|
|
2822
|
+
if (!answered.ok) return answered;
|
|
2823
|
+
return ok(
|
|
2824
|
+
answered.data.map((row) => ({ ...row, id: row["render_id"] }))
|
|
2825
|
+
);
|
|
2770
2826
|
},
|
|
2771
2827
|
async docSignatures({ record_id }) {
|
|
2772
|
-
const
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
|
|
2778
|
-
return ok(
|
|
2828
|
+
const answered = await callDoor(
|
|
2829
|
+
DOORS.docSignatures,
|
|
2830
|
+
{ p_organization_id: org, p_record_id: record_id },
|
|
2831
|
+
"docSignatures"
|
|
2832
|
+
);
|
|
2833
|
+
if (!answered.ok) return answered;
|
|
2834
|
+
return ok(
|
|
2835
|
+
answered.data.map((row) => ({ ...row, id: row["signature_id"] }))
|
|
2836
|
+
);
|
|
2779
2837
|
},
|
|
2780
2838
|
async recordValuesVersioned({ record_id }) {
|
|
2781
2839
|
return readValues(record_id);
|