@ai-matrx/records 0.58.13 → 0.58.15
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 +54 -1
- package/dist/core/index.cjs +62 -6
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +51 -3
- package/dist/core/index.d.ts +51 -3
- package/dist/core/index.js +62 -6
- package/dist/core/index.js.map +1 -1
- package/dist/index.cjs +16 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +16 -6
- package/dist/index.js.map +1 -1
- package/dist/react/index.cjs +62 -6
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +101 -6
- package/dist/react/index.d.ts +101 -6
- package/dist/react/index.js +62 -6
- package/dist/react/index.js.map +1 -1
- package/dist/{types-DbILLKcZ.d.cts → types-D9-TAjtJ.d.cts} +56 -6
- package/dist/{types-DbILLKcZ.d.ts → types-D9-TAjtJ.d.ts} +56 -6
- package/dist/use-cases/index.cjs.map +1 -1
- package/dist/use-cases/index.d.cts +2 -2
- package/dist/use-cases/index.d.ts +2 -2
- package/dist/use-cases/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,65 @@
|
|
|
1
1
|
# Changelog — @ai-matrx/records
|
|
2
2
|
|
|
3
|
+
## Unreleased — lane RECORDS-ONE-DOOR (2026-09-25)
|
|
4
|
+
|
|
5
|
+
* **`client.tablesLiveWhere({ table_ids })`** — the typed `custom.where_tables_live` cutover
|
|
6
|
+
door. It answers which store currently receives writes for every supplied table id. It is not
|
|
7
|
+
`tableHome`: copied older/store tables share an id during COPY mode, and the organization's
|
|
8
|
+
switch decides their writable store. *Consumer action:* hosts that select an older versus record
|
|
9
|
+
write path must call this method instead of reaching the `custom` schema directly.
|
|
10
|
+
|
|
11
|
+
## Unreleased — lane CONTEXT-VALUES-NAMED-2 (2026-09-25)
|
|
12
|
+
|
|
13
|
+
* **`custom.resolve_context` takes `p_system_item_refs text[] DEFAULT NULL`** — the System items the
|
|
14
|
+
turn names (ids or keys); the door reads only those, and NULL or empty reads none (it used to hand
|
|
15
|
+
back every deliverable System item). `store.generated.ts` regenerated.
|
|
16
|
+
*Consumer action:* none for a browser — the door is the server's agent-context path; a caller that
|
|
17
|
+
wants the platform's default System items passes the list from the knob
|
|
18
|
+
`context/system_item_defaults`.
|
|
19
|
+
|
|
20
|
+
## Unreleased — lane VIEW-STATE-PERSONAL (2026-09-25)
|
|
21
|
+
|
|
22
|
+
* **`viewLookRead({ table_id })` / `viewLookSet({ table_id, view_id, look })`** — the caller's own
|
|
23
|
+
look at each saved view of a table (`custom.view_look_read` / `custom.view_look_set`, viewer): the
|
|
24
|
+
view settings one person chose while looking, kept for her alone. `look: null` is "Reset to view".
|
|
25
|
+
The shared view row is never written by these doors.
|
|
26
|
+
* **`viewDeclare` on an EXISTING view now needs editor on the table** (or the view is the caller's
|
|
27
|
+
own and is not the table's default) — "Save to view"; a viewer is refused by name (`42501`,
|
|
28
|
+
*"Only someone who can edit this table saves a change onto its view … for everyone"*). A NEW view
|
|
29
|
+
is unchanged (viewer). **`viewRecordOrderSet` needs editor** (a hand-set order is the view's sort).
|
|
30
|
+
*Consumer action:* send a person's picks through `viewLookSet`; call `viewDeclare` with a
|
|
31
|
+
`view_id` only on an explicit save. `store.generated.ts` regenerated (707 doors).
|
|
32
|
+
|
|
33
|
+
## Unreleased — lane STORE-READ-PERF-2 (2026-09-25)
|
|
34
|
+
|
|
35
|
+
* **The read doors ask the ladder once per class of records, not once per record.** No door's
|
|
36
|
+
name-keyed answer moved (proved byte-identical on the dev clone and on production); they are
|
|
37
|
+
faster. On production, server-side: the context lookup over AI Matrx → Feature (17 scopes)
|
|
38
|
+
199 → 142 ms, a 200-row grid page 356 → 96 ms, `listByIds` of 200 rows 879 → 134 ms.
|
|
39
|
+
* **`read_record(..., p_by_id: true)` and `listByIds` / `custom.read_records_by_ids` by id now key
|
|
40
|
+
EVERY declared Field by its id**, exactly as `list` / `read_records` / `read_records_matching`
|
|
41
|
+
always did (DOOR-N-5: "name-keyed by default, id-keyed on request"). They used to rename only
|
|
42
|
+
the Fields the reader could NOT see, so one record asked for by id came back keyed by name from
|
|
43
|
+
the single-record door and by id from the page door, and its keys changed with the reader's
|
|
44
|
+
rung. `_hidden`, `_choices`, `_alternates` and `_retired` keep the keys they had.
|
|
45
|
+
*Consumer action:* none for this package's own calls (they read name-keyed). A caller that asked
|
|
46
|
+
by id and then read values by NAME was depending on the defect and should ask by name.
|
|
47
|
+
|
|
48
|
+
## 0.58.14
|
|
49
|
+
|
|
50
|
+
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
|
51
|
+
`git diff npm/records/v0.58.13..npm/records/v0.58.14 -- apps/shared/records`).
|
|
52
|
+
No source changes intended and no consumer action required.
|
|
53
|
+
|
|
3
54
|
## 0.58.13
|
|
4
55
|
|
|
5
56
|
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
|
6
57
|
`git diff npm/records/v0.58.12..npm/records/v0.58.13 -- apps/shared/records`).
|
|
7
58
|
No source changes intended and no consumer action required.
|
|
8
59
|
|
|
9
|
-
|
|
60
|
+
### Shipped in 0.58.13 — lane VIEW-SWITCH-NOT-DESIGNATION (2026-09-25)
|
|
61
|
+
|
|
62
|
+
The 0.58.13 auto-republish carried this source (verified by tarball, PUBLISH-SWEEP-7).
|
|
10
63
|
|
|
11
64
|
* **`viewDesignate({ table_id, view_id, layout })`** — the one door that designates how a Table
|
|
12
65
|
opens (`custom.view_designate`, EDITOR on the table): the view becomes the table's only default
|
package/dist/core/index.cjs
CHANGED
|
@@ -3853,7 +3853,9 @@ var STORE_DOORS = [
|
|
|
3853
3853
|
{ name: "choice_render", args: "p_organization_id uuid, p_table_id uuid, p_doc jsonb", returns: "jsonb", security: "invoker" },
|
|
3854
3854
|
{ name: "choice_render_groups", args: "p_map jsonb, p_groups jsonb", returns: "jsonb", security: "invoker" },
|
|
3855
3855
|
{ name: "choice_render_note", args: "p_field jsonb, p_value jsonb", returns: "jsonb", security: "invoker" },
|
|
3856
|
+
{ name: "choice_render_plan", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "invoker" },
|
|
3856
3857
|
{ name: "choice_render_value", args: "p_field jsonb, p_value jsonb", returns: "jsonb", security: "invoker" },
|
|
3858
|
+
{ name: "choice_render_with", args: "p_organization_id uuid, p_table_id uuid, p_doc jsonb, p_plan jsonb", returns: "jsonb", security: "invoker" },
|
|
3857
3859
|
{ name: "choice_slug", args: "p_word text", returns: "text", security: "invoker" },
|
|
3858
3860
|
{ name: "choice_synonyms", args: "p_organization_id uuid, p_table_id uuid, p_token text", returns: "text[]", security: "invoker" },
|
|
3859
3861
|
{ name: "choice_synonyms_in", args: "p_map jsonb, p_token text", returns: "text[]", security: "invoker" },
|
|
@@ -3953,7 +3955,9 @@ var STORE_DOORS = [
|
|
|
3953
3955
|
{ name: "entity_reference_fields", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "invoker" },
|
|
3954
3956
|
{ name: "entity_reference_kinds", args: "", returns: "TABLE(token text, label text, category text)", security: "definer" },
|
|
3955
3957
|
{ name: "entity_reference_render", args: "p_organization_id uuid, p_table_id uuid, p_doc jsonb", returns: "jsonb", security: "invoker" },
|
|
3958
|
+
{ name: "entity_reference_render_with", args: "p_organization_id uuid, p_table_id uuid, p_doc jsonb, p_fields jsonb", returns: "jsonb", security: "invoker" },
|
|
3956
3959
|
{ name: "entity_reference_rows", args: "p_organization_id uuid, p_token text, p_ids uuid[]", returns: "jsonb", security: "invoker" },
|
|
3960
|
+
{ name: "entity_reference_target", args: "p_token text", returns: "jsonb", security: "definer" },
|
|
3957
3961
|
{ name: "entity_reference_words", args: "p_organization_id uuid, p_refs jsonb", returns: "jsonb", security: "definer" },
|
|
3958
3962
|
{ name: "entity_table", args: "p_token text", returns: "TABLE(token text, schema_name text, table_name text, type text, title_column text, label text, has_organization boolean, has_deleted_at boolean)", security: "invoker" },
|
|
3959
3963
|
{ name: "entity_value_write", args: "p_organization_id uuid, p_token text, p_record_id uuid, p_patch jsonb", returns: "jsonb", security: "invoker" },
|
|
@@ -4078,6 +4082,7 @@ var STORE_DOORS = [
|
|
|
4078
4082
|
{ name: "is_a_retirement", args: "p_old_deleted timestamp with time zone, p_new_deleted timestamp with time zone, p_old_data jsonb, p_new_data jsonb, p_old_table uuid, p_new_table uuid, p_old_org uuid, p_new_org uuid, p_old_class text, p_new_class text", returns: "boolean", security: "invoker" },
|
|
4079
4083
|
{ name: "ladder_replanners", args: "p_roots text[] DEFAULT ARRAY['custom.has_visibility'::text, 'custom.effective_level'::text, 'custom.reaches_directly'::text, 'custom.visible_set'::text]", returns: "TABLE(fn text, lang text, why text, remedy text)", security: "definer" },
|
|
4080
4084
|
{ name: "level_floor", args: "", returns: "permission_level", security: "definer" },
|
|
4085
|
+
{ name: "levels_of", args: "p_user_id uuid, p_ids uuid[]", returns: "jsonb", security: "definer" },
|
|
4081
4086
|
{ name: "levels_raised_by_a_less_specific_rung", args: "", returns: "TABLE(organization_id uuid, organization_name text, member_id uuid, member_email text, record_id uuid, addressed_level permission_level, answered_level permission_level)", security: "definer" },
|
|
4082
4087
|
{ name: "list_door_disagreements", args: "p_pretend text DEFAULT NULL::text, p_only_organization uuid DEFAULT NULL::uuid, p_sample integer DEFAULT 200", returns: "TABLE(organization_id uuid, organization_name text, member_id uuid, table_id uuid, record_id uuid, door text, why text)", security: "invoker" },
|
|
4083
4088
|
{ name: "list_door_disagreements", args: "p_pretend text, p_only_organization uuid, p_sample integer, p_exhaustive boolean", returns: "TABLE(organization_id uuid, organization_name text, member_id uuid, table_id uuid, record_id uuid, door text, why text)", security: "invoker" },
|
|
@@ -4198,6 +4203,8 @@ var STORE_DOORS = [
|
|
|
4198
4203
|
{ name: "read_door_ladder_ceiling", args: "", returns: "integer", security: "invoker" },
|
|
4199
4204
|
{ name: "read_door_parity", args: "p_organization_id uuid, p_table_id uuid, p_user uuid, p_required permission_level, p_sample integer", returns: "TABLE(record_id uuid, set_based boolean, per_row boolean, verdict text)", security: "definer" },
|
|
4200
4205
|
{ name: "read_mask", args: "p_organization_id uuid, p_record_id uuid, p_action text DEFAULT 'read'::text", returns: "jsonb", security: "definer" },
|
|
4206
|
+
{ name: "read_mask_at", args: "p_record_id uuid, p_level_given boolean, p_level permission_level, p_action text DEFAULT 'read'::text", returns: "jsonb", security: "definer" },
|
|
4207
|
+
{ name: "read_mask_for", args: "p_user_id uuid, p_organization_id uuid, p_table_id uuid, p_level permission_level, p_action text DEFAULT 'read'::text", returns: "jsonb", security: "definer" },
|
|
4201
4208
|
{ name: "read_paths_outside_the_door", args: "", returns: "TABLE(object_name text, why text)", security: "invoker" },
|
|
4202
4209
|
{ name: "read_record", args: "p_organization_id uuid, p_record_id uuid, p_by_id boolean DEFAULT false", returns: "jsonb", security: "definer" },
|
|
4203
4210
|
{ name: "read_records", args: "p_organization_id uuid, p_table_id uuid, p_by_id boolean DEFAULT false, p_limit integer DEFAULT 200, p_offset integer DEFAULT 0", returns: "TABLE(id uuid, document jsonb, level permission_level)", security: "definer" },
|
|
@@ -4238,6 +4245,7 @@ var STORE_DOORS = [
|
|
|
4238
4245
|
{ name: "record_value_one", args: "p_organization_id uuid, p_record_id uuid, p_key text", returns: "jsonb", security: "invoker" },
|
|
4239
4246
|
{ name: "record_values", args: "p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "invoker" },
|
|
4240
4247
|
{ name: "record_values_of", args: "p_row custom.record", returns: "jsonb", security: "invoker" },
|
|
4248
|
+
{ name: "record_values_step", args: "p_row custom.record, p_cache jsonb DEFAULT '{}'::jsonb, OUT o_doc jsonb, OUT o_cache jsonb", returns: "record", security: "invoker" },
|
|
4241
4249
|
{ name: "record_values_versioned", args: "p_organization_id uuid, p_record_id uuid", 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" },
|
|
4242
4250
|
{ name: "record_words", args: "p_organization_id uuid, p_record_id uuid, p_noun text DEFAULT NULL::text", returns: "text", security: "definer" },
|
|
4243
4251
|
{ name: "record_write", args: "p_organization_id uuid, p_table_id uuid, p_data jsonb", returns: "uuid", security: "definer" },
|
|
@@ -4260,7 +4268,7 @@ var STORE_DOORS = [
|
|
|
4260
4268
|
{ name: "relation_words_many", args: "p_organization_id uuid, p_field_id uuid, p_record_ids uuid[]", returns: "TABLE(record_id uuid, words text)", security: "definer" },
|
|
4261
4269
|
{ name: "reopen_declared_doors", args: "", returns: "TABLE(reopened text)", security: "definer" },
|
|
4262
4270
|
{ name: "required_epoch", args: "p_container_type text, p_container_id uuid, p_item_type text, p_item_id uuid", returns: "bigint", security: "definer" },
|
|
4263
|
-
{ name: "resolve_context", args: "p_entity_type text, p_entity_id uuid, p_record_ids uuid[] DEFAULT NULL::uuid[], p_table_ids uuid[] DEFAULT NULL::uuid[]", returns: "jsonb", security: "definer" },
|
|
4271
|
+
{ name: "resolve_context", args: "p_entity_type text, p_entity_id uuid, p_record_ids uuid[] DEFAULT NULL::uuid[], p_table_ids uuid[] DEFAULT NULL::uuid[], p_system_item_refs text[] DEFAULT NULL::text[]", returns: "jsonb", security: "definer" },
|
|
4264
4272
|
{ name: "resolve_first_match", args: "p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "invoker" },
|
|
4265
4273
|
{ name: "resolve_id", args: "p_organization_id uuid, p_id uuid", returns: "uuid", security: "invoker" },
|
|
4266
4274
|
{ name: "retired_actor_words", args: "", returns: "jsonb", security: "invoker" },
|
|
@@ -4387,6 +4395,8 @@ var STORE_DOORS = [
|
|
|
4387
4395
|
{ name: "view_designate", args: "p_organization_id uuid, p_table_id uuid, p_view_id uuid, p_layout text DEFAULT NULL::text", returns: "uuid", security: "definer" },
|
|
4388
4396
|
{ name: "view_keys", args: "", returns: "TABLE(path text, shape text, layouts text[], writer text, sentence text)", security: "invoker" },
|
|
4389
4397
|
{ name: "view_keys_check", args: "p_organization_id uuid, p_table_id uuid, p_set jsonb, p_old jsonb DEFAULT '{}'::jsonb", returns: "jsonb", security: "invoker" },
|
|
4398
|
+
{ name: "view_look_read", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
|
|
4399
|
+
{ name: "view_look_set", args: "p_organization_id uuid, p_table_id uuid, p_view_id uuid, p_look jsonb", returns: "jsonb", security: "definer" },
|
|
4390
4400
|
{ name: "view_record_order_set", args: "p_organization_id uuid, p_view_id uuid, p_record_ids uuid[]", returns: "jsonb", security: "definer" },
|
|
4391
4401
|
{ name: "views", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "TABLE(view_id uuid, name text, table_id uuid, filters jsonb, definition jsonb, created_at timestamp with time zone)", security: "definer" },
|
|
4392
4402
|
{ 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" },
|
|
@@ -4513,18 +4523,18 @@ var STORE_KNOBS = [
|
|
|
4513
4523
|
{ key: "world_publish_enabled", value: "false", type: "boolean" }
|
|
4514
4524
|
];
|
|
4515
4525
|
var STORE_REFUSAL_CODES = [
|
|
4516
|
-
{ code: "02000", raised_by: "_checklist_instantiate,_portal_config_judge,_portal_invite_payload,_share_write_person,_table_share_invite_payload,checklist_declare,checklist_run,checklist_step_complete,checklist_step_refusal,checklist_template_shape,conversation_scope_bind,dashboard_delete,dashboard_run,doc_letterhead,doc_render_body,doc_render_document,doc_render_read,doc_sign,doc_signature_intact,doc_signature_read,doc_template_delete,doc_template_read,doc_template_save,enrich_pin,entity_field_retire,entity_field_update,entity_record_read,entity_value_write,external_history_event,external_rows,external_stub_upsert,external_writes_set,io_restore,migrate_delete,migrate_extract_parent,migrate_merge,migrate_reclass,migrate_rename,migrate_reparent,migrate_retype,migrate_split,migrate_undo,organization_clear,portal_archive,portal_card,portal_declare,portal_form,portal_form_submit,portal_invite,portal_invite_accept,portal_preview,portal_principal_bind,portal_restore,portal_revoke,
|
|
4526
|
+
{ code: "02000", raised_by: "_checklist_instantiate,_portal_config_judge,_portal_invite_payload,_read_record_with,_share_write_person,_table_share_invite_payload,checklist_declare,checklist_run,checklist_step_complete,checklist_step_refusal,checklist_template_shape,conversation_scope_bind,dashboard_delete,dashboard_run,doc_letterhead,doc_render_body,doc_render_document,doc_render_read,doc_sign,doc_signature_intact,doc_signature_read,doc_template_delete,doc_template_read,doc_template_save,enrich_pin,entity_field_retire,entity_field_update,entity_record_read,entity_value_write,external_history_event,external_rows,external_stub_upsert,external_writes_set,io_restore,migrate_delete,migrate_extract_parent,migrate_merge,migrate_reclass,migrate_rename,migrate_reparent,migrate_retype,migrate_split,migrate_undo,organization_clear,portal_archive,portal_card,portal_declare,portal_form,portal_form_submit,portal_invite,portal_invite_accept,portal_preview,portal_principal_bind,portal_restore,portal_revoke,record_delete,record_restore,record_restore_preview,record_table,record_update,relation_halves_repair,relation_uncarry,share_access,share_grant,share_lane_set,share_people,share_revoke,sign_request_cancel,sign_request_create,sign_request_remind,sign_request_unchanged,table_archive,table_share_outside_accept,table_share_outside_grant,table_share_outside_invite,table_share_outside_resend,table_share_outside_revoke,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_assign,work_record_states,work_set_state" },
|
|
4517
4527
|
{ code: "0A000", raised_by: "checklist_step_complete,external_rows,external_source_declare,external_write_through,promote_field,promoted_index_expr,promoted_query_sql,promoted_read,rule_eval,rule_filter_node_sql,work_assign" },
|
|
4518
4528
|
{ code: "22003", raised_by: "context_resolve" },
|
|
4519
|
-
{ code: "22004", raised_by: "_entity_custom_fields_guard,_portal_config_judge,_share_write_person,_value_envelope,actor_word,agg_assert_key,agg_compare_windows,agg_sql,anon_capture,anon_token_issue,anon_write,assert_client_may_reach,booking_declare,capture_submit,checklist_declare,context_resolve,context_tag_copy,dashboard_block_normalize,dashboard_declare,dashboard_window_sql,doc_render_write,doc_sign,doc_signature_write,doc_template_save,enrich_land,enrich_normalize,external_history_event,external_rows,external_source_declare,external_stub_upsert,external_write_through,external_writes_set,field_history,form_declare,form_submit,home_add,inbox_snooze,io_comment_write,io_import_begin,io_infer_column,io_outbox_drain,io_restore,migrate_choice_keys,migrate_purge,migrate_purge_hard,migrate_reclass,migrate_split,migrate_undo,organization_clear,organization_contents,pipeline_declare,pipeline_gate_preview,portal_declare,portal_form_submit,portal_invite,portal_principal_bind,provenance_retention_days,provenance_write,query_across_homes,query_by_coordinates,query_rollup,record_delete,record_reparent,record_resolve,record_restore,record_update,record_write,record_write_graph,record_write_many,relation_carry,relation_halves_repair,relation_own,rule_declare,share_grant,sign_request_create,sign_request_sign,subscription_declare,table_archive,table_declare,table_move,table_share_outside_grant,table_share_outside_invite,value_restore,view_declare,view_designate,work_approval_decide,work_approval_request,work_template_declare" },
|
|
4529
|
+
{ code: "22004", raised_by: "_entity_custom_fields_guard,_portal_config_judge,_share_write_person,_value_envelope,actor_word,agg_assert_key,agg_compare_windows,agg_sql,anon_capture,anon_token_issue,anon_write,assert_client_may_reach,booking_declare,capture_submit,checklist_declare,context_resolve,context_tag_copy,dashboard_block_normalize,dashboard_declare,dashboard_window_sql,doc_render_write,doc_sign,doc_signature_write,doc_template_save,enrich_land,enrich_normalize,external_history_event,external_rows,external_source_declare,external_stub_upsert,external_write_through,external_writes_set,field_history,form_declare,form_submit,home_add,inbox_snooze,io_comment_write,io_import_begin,io_infer_column,io_outbox_drain,io_restore,migrate_choice_keys,migrate_purge,migrate_purge_hard,migrate_reclass,migrate_split,migrate_undo,organization_clear,organization_contents,pipeline_declare,pipeline_gate_preview,portal_declare,portal_form_submit,portal_invite,portal_principal_bind,provenance_retention_days,provenance_write,query_across_homes,query_by_coordinates,query_rollup,record_delete,record_reparent,record_resolve,record_restore,record_update,record_write,record_write_graph,record_write_many,relation_carry,relation_halves_repair,relation_own,rule_declare,share_grant,sign_request_create,sign_request_sign,subscription_declare,table_archive,table_declare,table_move,table_share_outside_grant,table_share_outside_invite,value_restore,view_declare,view_designate,view_look_read,view_look_set,work_approval_decide,work_approval_request,work_template_declare" },
|
|
4520
4530
|
{ code: "22007", raised_by: "agg_parse_moment,dashboard_window_sql" },
|
|
4521
4531
|
{ code: "22012", raised_by: "formula_eval,rule_eval,rule_sql_op" },
|
|
4522
|
-
{ code: "22023", raised_by: "_action_check,_booking_availability,_decorations_check,_entity_custom_fields_guard,_fx_date,_fx_num,_fx_unit,_fxp_level,_fxp_resolve,_fxp_tokens,_portal_config_judge,_take_op_id,_value_envelope,_view_field_key,_view_key_value,_work_shape_guard,action_run,actor_word,agg_assert_key,agg_calendar,agg_compare_windows,agg_sql,anon_token_issue,booking_declare,containment_parent,dashboard_block_normalize,dashboard_run,dashboard_target_field_assert,dashboard_window_sql,doc_render_body,doc_render_write,doc_signature_write,enrich_declare,enrich_land,enrich_normalize,enrich_pin,entity_reference_rows,entity_reference_words,entity_value_write,external_history_event,external_source_declare,external_stub_upsert,external_write_through,field_history,field_update,form_declare,form_draft_save,formula_eval,formula_parse,grid_layout_check,hub_changed_by,inbox_snooze,io_export,io_import_begin,io_import_finish,io_import_plan,io_import_report,io_proposal_accept,list_portals,migrate_merge,migrate_reclass,my_levels,organization_clear,page_size,pin_agent_cells,pipeline_move,pipeline_move_many,portal_declare,portal_form_submit,provenance_write,query_by_coordinates,query_rollup,read_records_archived,read_records_in_view_order,record_filter_sql,record_update,record_write_graph,record_write_many,relation_carry,rule_eval,rule_filter_node_sql,rule_members,rule_members_visible,rule_sql_op,scope_table_provision,share_grant,share_lane_set,sign_request_create,sign_request_sign,subscription_declare,table_from_example,table_move,table_rules,table_share_outside_grant,table_sync,table_webhook_declare,view_declare,view_keys_check,view_record_order_set,visibility_as_of,where_tables_live,work_approval_request,work_decide_many,work_inbox,work_list,work_slot_hold" },
|
|
4523
|
-
{ code: "23503", raised_by: "_action_check,_booking_availability,_checklist_instantiate,_containment_guard,_decorations_check,_display_spec_for,_field_document_for,_field_type_parity_guard,_pipeline_stage_key,_record_rule_uses,action_declare,action_run,agg_digest_assemble,anon_publish,anon_rate_take,anon_token_issue,anon_write,assert_organization_wall,autonumber_backfill,booking_cancel,booking_confirm,booking_declare,booking_hold,booking_reschedule,capture_publish,checklist_declare,checklist_steps_table,comment_write,dashboard_declare,delete_rule,doc_sign,doc_template_save,enrich_declare,enrich_due,enrich_land,form_declare,form_draft_save,form_submit,grid_layout,home_add,inbound_declare,inbound_mail_land,inbound_set,io_comment_write,io_import_begin,io_import_finish,io_import_report,io_import_rows,io_proposal_accept,migrate_demote,migrate_promote,pipeline_board,pipeline_declare,pipeline_move,pipeline_read,pipeline_transition_refusal,promote_field,promote_table,read_records_in_view_order,record_applicability,record_reparent,relation_carry,relation_own,resolve_first_match,rule_applies,rule_declare,rule_eval,rule_filter_node_sql,rule_members,rule_members_visible,rule_run,sign_request_create,subscription_mute,subscription_preview,table_decorate,table_from_example,table_webhook_archive,table_webhook_declare,view_declare,view_designate,view_record_order_set,work_set_state,work_take_assignment,work_template_instantiate" },
|
|
4532
|
+
{ code: "22023", raised_by: "_action_check,_booking_availability,_decorations_check,_entity_custom_fields_guard,_fx_date,_fx_num,_fx_unit,_fxp_level,_fxp_resolve,_fxp_tokens,_portal_config_judge,_take_op_id,_value_envelope,_view_field_key,_view_key_value,_work_shape_guard,action_run,actor_word,agg_assert_key,agg_calendar,agg_compare_windows,agg_sql,anon_token_issue,booking_declare,containment_parent,dashboard_block_normalize,dashboard_run,dashboard_target_field_assert,dashboard_window_sql,doc_render_body,doc_render_write,doc_signature_write,enrich_declare,enrich_land,enrich_normalize,enrich_pin,entity_reference_rows,entity_reference_words,entity_value_write,external_history_event,external_source_declare,external_stub_upsert,external_write_through,field_history,field_update,form_declare,form_draft_save,formula_eval,formula_parse,grid_layout_check,hub_changed_by,inbox_snooze,io_export,io_import_begin,io_import_finish,io_import_plan,io_import_report,io_proposal_accept,list_portals,migrate_merge,migrate_reclass,my_levels,organization_clear,page_size,pin_agent_cells,pipeline_move,pipeline_move_many,portal_declare,portal_form_submit,provenance_write,query_by_coordinates,query_rollup,read_records_archived,read_records_in_view_order,record_filter_sql,record_update,record_write_graph,record_write_many,relation_carry,rule_eval,rule_filter_node_sql,rule_members,rule_members_visible,rule_sql_op,scope_table_provision,share_grant,share_lane_set,sign_request_create,sign_request_sign,subscription_declare,table_from_example,table_move,table_rules,table_share_outside_grant,table_sync,table_webhook_declare,view_declare,view_keys_check,view_look_set,view_record_order_set,visibility_as_of,where_tables_live,work_approval_request,work_decide_many,work_inbox,work_list,work_slot_hold" },
|
|
4533
|
+
{ code: "23503", raised_by: "_action_check,_booking_availability,_checklist_instantiate,_containment_guard,_decorations_check,_display_spec_for,_field_document_for,_field_type_parity_guard,_pipeline_stage_key,_record_rule_uses,action_declare,action_run,agg_digest_assemble,anon_publish,anon_rate_take,anon_token_issue,anon_write,assert_organization_wall,autonumber_backfill,booking_cancel,booking_confirm,booking_declare,booking_hold,booking_reschedule,capture_publish,checklist_declare,checklist_steps_table,comment_write,dashboard_declare,delete_rule,doc_sign,doc_template_save,enrich_declare,enrich_due,enrich_land,form_declare,form_draft_save,form_submit,grid_layout,home_add,inbound_declare,inbound_mail_land,inbound_set,io_comment_write,io_import_begin,io_import_finish,io_import_report,io_import_rows,io_proposal_accept,migrate_demote,migrate_promote,pipeline_board,pipeline_declare,pipeline_move,pipeline_read,pipeline_transition_refusal,promote_field,promote_table,read_records_in_view_order,record_applicability,record_reparent,relation_carry,relation_own,resolve_first_match,rule_applies,rule_declare,rule_eval,rule_filter_node_sql,rule_members,rule_members_visible,rule_run,sign_request_create,subscription_mute,subscription_preview,table_decorate,table_from_example,table_webhook_archive,table_webhook_declare,view_declare,view_designate,view_look_set,view_record_order_set,work_set_state,work_take_assignment,work_template_instantiate" },
|
|
4524
4534
|
{ code: "23505", raised_by: "_portal_config_judge,_share_write_person,_unique_rule_holds,doc_sign,doc_signature_write,entity_field_declare,field_declare,home_add,inbound_declare,io_proposal_accept,relation_carry,relation_own,sign_request_cancel,sign_request_create,table_share_outside_resend,work_approval_decide,work_slot_hold" },
|
|
4525
4535
|
{ code: "23514", raised_by: "_checklist_instantiate,_checklist_step_guard,_containment_guard,_dated_values_guard,_derived_fields,_display_format_check,_display_spec_for,_entity_custom_fields_guard,_field_class_guard,_field_document_for,_field_shape_guard,_field_type_parity_guard,_merge_field_shape_guard,_merge_field_temporal_guard,_promoted_field_cap_guard,_record_rule_uses,_record_source_key_is_record,_relation_halves_agree,_relation_kernel_targets,_resolve_choice_words,_rule_shape_guard,_rule_topology_guard,_store_relation_edge_names_its_field,_table_columns_word_guard,_table_shape_guard,_undeclared_key_guard,_value_envelope,_with_display,_work_shape_guard,_workdoors_approval_guard,action_run,assert_columns_are_defined,assert_entity_is_organization_scoped,booking_declare,capture_publish,capture_sheet_declare,checklist_declare,checklist_step_complete,doc_sign,doc_signature_write,doc_template_save,entity_field_declare,entity_field_retire,entity_field_update,entity_records_find,entity_table,field_declare,field_retire,field_update,home_add,io_comment_write,io_import_rows,migrate_merge,migrate_purge_hard,portal_archive,portal_restore,record_restore,record_write_graph,relation_carry,relation_halves_repair,relation_own,sign_request_create,sign_request_sign,table_declare,table_from_example,validate_value_envelope,validate_values,work_set_state,work_slots_declare,work_take_assignment,work_template_instantiate" },
|
|
4526
4536
|
{ code: "40001", raised_by: "has_visibility_at,table_move" },
|
|
4527
|
-
{ code: "42501", raised_by: "_context_copy_fence,_doc_render_immutable,_doc_signature_immutable,_field_definition_write,_field_write_door,_portal_config_judge,_portal_principal_here,_rule_definition_write,_store_door,agent_table_claim,agg_fields_readable_assert,anon_capture,anon_inbound_land,anon_publish,anon_token_issue,anon_token_verify,anon_write,assert_client_may_change,assert_client_may_open,assert_client_may_reach,assert_may_know_table,assert_organization_admin,assert_store_door,booking_confirm,booking_declare,booking_hold,capture_submit,checklist_run,comment_write,context_resolve,conversation_scope_bind,conversation_scope_unbind,dashboard_target_field_assert,doc_sign,enrich_declare,enrich_due,enrich_land,enrich_normalize,entity_field_declare,entity_field_retire,entity_field_update,entity_value_write,external_write_through,form_declare,form_draft_save,form_public_asks,form_submit,inbound_mail_land,inbox_clear,inbox_snooze,inbox_unclear,inbox_unsnooze,io_comment_resolve,io_comment_write,io_import_begin,io_import_finish,io_restore,migrate_purge,migrate_purge_hard,migrate_purge_hard_request,migrate_reclass,my_levels,organization_clear,organization_contents,portal_declare,portal_form,portal_form_submit,portal_invitation,portal_invite,portal_invite_accept,portal_principal_bind,promote_table,query_visibility_parity,read_record,read_records,read_records_archived,read_records_by_ids,read_records_matching,record_table,record_write_graph,relation_halves_disagreements,relation_halves_repair,resolve_context,scope_table_provision,share_grant,subscription_mute,subscription_preview,table_move,table_share_outside_accept,table_share_outside_grant,table_share_outside_invite,table_share_outside_resend,table_webhook_declare,visibility_as_of,where_tables_live,work_approval_decide,work_approval_read,work_approval_request,work_person" },
|
|
4537
|
+
{ code: "42501", raised_by: "_context_copy_fence,_doc_render_immutable,_doc_signature_immutable,_field_definition_write,_field_write_door,_portal_config_judge,_portal_principal_here,_read_record_with,_rule_definition_write,_store_door,agent_table_claim,agg_fields_readable_assert,anon_capture,anon_inbound_land,anon_publish,anon_token_issue,anon_token_verify,anon_write,assert_client_may_change,assert_client_may_open,assert_client_may_reach,assert_may_know_table,assert_organization_admin,assert_store_door,booking_confirm,booking_declare,booking_hold,capture_submit,checklist_run,comment_write,context_resolve,conversation_scope_bind,conversation_scope_unbind,dashboard_target_field_assert,doc_sign,enrich_declare,enrich_due,enrich_land,enrich_normalize,entity_field_declare,entity_field_retire,entity_field_update,entity_value_write,external_write_through,form_declare,form_draft_save,form_public_asks,form_submit,inbound_mail_land,inbox_clear,inbox_snooze,inbox_unclear,inbox_unsnooze,io_comment_resolve,io_comment_write,io_import_begin,io_import_finish,io_restore,migrate_purge,migrate_purge_hard,migrate_purge_hard_request,migrate_reclass,my_levels,organization_clear,organization_contents,portal_declare,portal_form,portal_form_submit,portal_invitation,portal_invite,portal_invite_accept,portal_principal_bind,promote_table,query_visibility_parity,read_record,read_records,read_records_archived,read_records_by_ids,read_records_matching,record_table,record_write_graph,relation_halves_disagreements,relation_halves_repair,resolve_context,scope_table_provision,share_grant,subscription_mute,subscription_preview,table_move,table_share_outside_accept,table_share_outside_grant,table_share_outside_invite,table_share_outside_resend,table_webhook_declare,view_declare,view_look_set,view_record_order_set,visibility_as_of,where_tables_live,work_approval_decide,work_approval_read,work_approval_request,work_person" },
|
|
4528
4538
|
{ code: "42703", raised_by: "entity_table,portal_declare" },
|
|
4529
4539
|
{ code: "42P17", raised_by: "_field_reads_what_it_reads,far_value" },
|
|
4530
4540
|
{ code: "53400", raised_by: "anon_rate_take,delete_cascade_closure,enrich_due,enrich_land,promote_field" },
|
|
@@ -5904,6 +5914,7 @@ var DOORS = {
|
|
|
5904
5914
|
// ask, under the same wall and visibility gate as `portals` itself.
|
|
5905
5915
|
portalTables: "portal_tables",
|
|
5906
5916
|
tableFacts: "table_facts",
|
|
5917
|
+
tablesLiveWhere: "where_tables_live",
|
|
5907
5918
|
// WHERE A TABLE LIVES, AND MOVING IT (SC-1' / SC-1-TAILS). `table_home` answers only when the
|
|
5908
5919
|
// caller may open the Table (custom.where_id_opens) and names its organization FROM THE TABLE;
|
|
5909
5920
|
// `table_move` moves it into another organization the caller belongs to, with every Table
|
|
@@ -6034,6 +6045,11 @@ var DOORS = {
|
|
|
6034
6045
|
// VIEW-SWITCH-NOT-DESIGNATION (2026-09-25): how a Table opens is designated by an EDITOR through
|
|
6035
6046
|
// this one door; `view_declare` refuses the default view's layout and is_default by name.
|
|
6036
6047
|
viewDesignate: "view_designate",
|
|
6048
|
+
// VIEW-LOOK (lane VIEW-STATE-PERSONAL, VERIFIER-23 item 1, 2026-09-25): how ONE person is looking at
|
|
6049
|
+
// a shared view — its grouping, date field, sort, filter, hidden columns, widths, layout — is her
|
|
6050
|
+
// own look until an editor saves it onto the view (`view_declare`). Viewer on the Table.
|
|
6051
|
+
viewLookRead: "view_look_read",
|
|
6052
|
+
viewLookSet: "view_look_set",
|
|
6037
6053
|
// The cadence CATALOGUE a person's screen may ask for. `agg_subscription_cadences`
|
|
6038
6054
|
// above is the notifier's own and holds no client grant; this door delegates to
|
|
6039
6055
|
// it, so a picker and the digest runner can never offer different words.
|
|
@@ -6441,6 +6457,31 @@ function createRecordsClient(config) {
|
|
|
6441
6457
|
if (!doorExists(DOORS.tableFacts)) return ok(null);
|
|
6442
6458
|
return callDoor(DOORS.tableFacts, { p_organization_id: org }, "tableFacts");
|
|
6443
6459
|
},
|
|
6460
|
+
async tablesLiveWhere({ table_ids }) {
|
|
6461
|
+
if (table_ids.length === 0) return ok([]);
|
|
6462
|
+
const answered = await callDoor(DOORS.tablesLiveWhere, { p_table_ids: table_ids }, "tablesLiveWhere");
|
|
6463
|
+
if (!answered.ok) return answered;
|
|
6464
|
+
if (!Array.isArray(answered.data)) {
|
|
6465
|
+
const refusal = {
|
|
6466
|
+
code: "not_supported",
|
|
6467
|
+
message: "The record store answered where these tables are written in a shape this client cannot read, so no write location was assumed.",
|
|
6468
|
+
hint: "Regenerate @ai-matrx/records against the store (pnpm records:generate) \u2014 the door and this client disagree."
|
|
6469
|
+
};
|
|
6470
|
+
scream({ code: refusal.code, message: refusal.message, ...refusal.hint ? { hint: refusal.hint } : {}, where: "tablesLiveWhere" });
|
|
6471
|
+
return err(refusal);
|
|
6472
|
+
}
|
|
6473
|
+
const locations = [];
|
|
6474
|
+
for (const row of answered.data) {
|
|
6475
|
+
const value = row && typeof row === "object" ? row : null;
|
|
6476
|
+
if (!value || typeof value.table_id !== "string" || value.lives_in !== "record" && value.lives_in !== "older" || value.why !== null && value.why !== void 0 && typeof value.why !== "string") {
|
|
6477
|
+
const refusal = { code: "not_supported", message: "The record store returned an invalid table write location, so no write location was assumed." };
|
|
6478
|
+
scream({ code: refusal.code, message: refusal.message, where: "tablesLiveWhere" });
|
|
6479
|
+
return err(refusal);
|
|
6480
|
+
}
|
|
6481
|
+
locations.push({ table_id: value.table_id, lives_in: value.lives_in, why: typeof value.why === "string" ? value.why : null });
|
|
6482
|
+
}
|
|
6483
|
+
return ok(locations);
|
|
6484
|
+
},
|
|
6444
6485
|
async tableHome({ table_id }) {
|
|
6445
6486
|
const answered = await callDoor(DOORS.tableHome, { p_table_id: table_id }, "tableHome");
|
|
6446
6487
|
if (!answered.ok) return answered;
|
|
@@ -7526,6 +7567,21 @@ function createRecordsClient(config) {
|
|
|
7526
7567
|
"viewDesignate"
|
|
7527
7568
|
);
|
|
7528
7569
|
},
|
|
7570
|
+
async viewLookRead({ table_id }) {
|
|
7571
|
+
const answered = await callDoor(
|
|
7572
|
+
DOORS.viewLookRead,
|
|
7573
|
+
{ p_organization_id: org, p_table_id: table_id },
|
|
7574
|
+
"viewLookRead"
|
|
7575
|
+
);
|
|
7576
|
+
return answered.ok ? ok(answered.data ?? {}) : answered;
|
|
7577
|
+
},
|
|
7578
|
+
async viewLookSet({ table_id, view_id, look }) {
|
|
7579
|
+
return callDoor(
|
|
7580
|
+
DOORS.viewLookSet,
|
|
7581
|
+
{ p_organization_id: org, p_table_id: table_id, p_view_id: view_id, p_look: look },
|
|
7582
|
+
"viewLookSet"
|
|
7583
|
+
);
|
|
7584
|
+
},
|
|
7529
7585
|
async subscriptionMute({ rule_id, muted }) {
|
|
7530
7586
|
return callDoor(
|
|
7531
7587
|
DOORS.subscriptionMute,
|