@ai-matrx/records 0.76.19 → 0.77.2

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.
Files changed (70) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/app-table/index.cjs +84 -2
  3. package/dist/app-table/index.cjs.map +1 -1
  4. package/dist/app-table/index.d.cts +7 -7
  5. package/dist/app-table/index.d.ts +7 -7
  6. package/dist/app-table/index.js +84 -2
  7. package/dist/app-table/index.js.map +1 -1
  8. package/dist/{client-EaE4ta6p.d.cts → client-DZ3UcU4_.d.cts} +53 -5
  9. package/dist/{client-C8G7zUMQ.d.ts → client-ZIxyAOdh.d.ts} +53 -5
  10. package/dist/core/index.cjs +97 -8
  11. package/dist/core/index.cjs.map +1 -1
  12. package/dist/core/index.d.cts +21 -11
  13. package/dist/core/index.d.ts +21 -11
  14. package/dist/core/index.js +97 -8
  15. package/dist/core/index.js.map +1 -1
  16. package/dist/data/index.cjs +85 -3
  17. package/dist/data/index.cjs.map +1 -1
  18. package/dist/data/index.d.cts +6 -6
  19. package/dist/data/index.d.ts +6 -6
  20. package/dist/data/index.js +85 -3
  21. package/dist/data/index.js.map +1 -1
  22. package/dist/{declareTable-aoFu32Ca.d.cts → declareTable-BYZdFrt5.d.cts} +4 -4
  23. package/dist/{declareTable-3yW8GrJE.d.ts → declareTable-DGSJMqGx.d.ts} +4 -4
  24. package/dist/{field-DkB6Nods.d.cts → field-BTW7h7Wh.d.cts} +1 -1
  25. package/dist/{field-cWRPTM3U.d.ts → field-D7I9yck6.d.ts} +1 -1
  26. package/dist/index.cjs +30 -8
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.cts +7 -7
  29. package/dist/index.d.ts +7 -7
  30. package/dist/index.js +30 -8
  31. package/dist/index.js.map +1 -1
  32. package/dist/memory/index.cjs +31 -0
  33. package/dist/memory/index.cjs.map +1 -1
  34. package/dist/memory/index.d.cts +6 -6
  35. package/dist/memory/index.d.ts +6 -6
  36. package/dist/memory/index.js +31 -0
  37. package/dist/memory/index.js.map +1 -1
  38. package/dist/{ports-C2_pOWrL.d.ts → ports-CaYEF1dG.d.ts} +1 -1
  39. package/dist/{ports-C83nhjoM.d.cts → ports-PpvsH1cQ.d.cts} +1 -1
  40. package/dist/react/index.cjs +98 -9
  41. package/dist/react/index.cjs.map +1 -1
  42. package/dist/react/index.d.cts +324 -15
  43. package/dist/react/index.d.ts +324 -15
  44. package/dist/react/index.js +98 -9
  45. package/dist/react/index.js.map +1 -1
  46. package/dist/realtime/index.d.cts +2 -2
  47. package/dist/realtime/index.d.ts +2 -2
  48. package/dist/{record-DVtXK-6L.d.cts → record-B7iwye2k.d.cts} +75 -13
  49. package/dist/{record-DVtXK-6L.d.ts → record-B7iwye2k.d.ts} +75 -13
  50. package/dist/{subscription-DxtZgyFR.d.ts → subscription-BWaRPLyo.d.ts} +60 -2
  51. package/dist/{subscription-vpnl6GxJ.d.cts → subscription-Br30ZwIt.d.cts} +60 -2
  52. package/dist/{table-kind-BtguhnRV.d.cts → table-kind-Da21ZLdJ.d.ts} +146 -5
  53. package/dist/{table-kind-DzyRtFNa.d.ts → table-kind-HAQ6WNxZ.d.cts} +146 -5
  54. package/dist/templates/index.cjs +14 -0
  55. package/dist/templates/index.cjs.map +1 -1
  56. package/dist/templates/index.d.cts +9 -9
  57. package/dist/templates/index.d.ts +9 -9
  58. package/dist/templates/index.js +14 -0
  59. package/dist/templates/index.js.map +1 -1
  60. package/dist/{types-y8GX3-QC.d.ts → types-DWZ5_3by.d.ts} +2 -2
  61. package/dist/{types-DWoJFBbr.d.cts → types-DYoWzHwJ.d.cts} +2 -2
  62. package/dist/{types-DqCWKOYh.d.ts → types-DrJLOqVi.d.ts} +2 -2
  63. package/dist/{types-X9P-cQd0.d.cts → types-LvxsZ6Zv.d.cts} +2 -2
  64. package/dist/use-cases/index.cjs.map +1 -1
  65. package/dist/use-cases/index.d.cts +5 -5
  66. package/dist/use-cases/index.d.ts +5 -5
  67. package/dist/use-cases/index.js.map +1 -1
  68. package/dist/{validate-CEE0ts9g.d.cts → validate-CRdXE73G.d.cts} +1 -1
  69. package/dist/{validate-d9QMYjBm.d.ts → validate-j0WQoC3C.d.ts} +1 -1
  70. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # Changelog — @ai-matrx/records
2
2
 
3
+ ## 0.77.2
4
+
5
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
6
+ `git diff npm/records/v0.77.1..npm/records/v0.77.2 -- apps/shared/records`).
7
+ No source changes intended and no consumer action required.
8
+
9
+ ## 0.77.1
10
+
11
+ - (0.77.0 never reached npm: its publish stopped on `table-kind-round-trip`'s golden check — the Python twin's golden still wrote the Rate Card formula literal as `{value: 25}` after cc7dc30f6a made the captured facts `{const: 25}`; the twin now says `const` too.)
12
+
13
+ ## 0.77.0
14
+
15
+ - `formPreviewRoute({ table_id, questions, endings, values })` → `FormRoute` (`custom.form_preview_route`): the store's whole route through a draft form — showIf AND logic jumps, the ending reached and the score. Lane TYPEFORM-DUP.
16
+ - `formResults({ form_id })` → `FormResults` (`custom.form_results`): views, starts, completions, completion rate, drop-off and answers per question, endings, score and hidden fields.
17
+ - `store.generated.ts` regenerated from the live catalogue.
18
+
19
+ **Consumer action:** none.
20
+
21
+ ## 0.76.20
22
+
23
+ - Automations on a table (lane AUTOMATION-DOOR): `client.automationDeclare` / `automations` / `automationArchive` / `automationRestore` / `automationSetEnabled` / `automationRuns` over the six `custom.automation*` doors, and the types in `src/automation.ts` (`AutomationSpec`, `AutomationDeclared`, `AutomationRun` …). A spec the store refuses comes back as `data.ok === false` with `_errors` (one sentence per path). The shape, in plain words with one example, is in FEATURE.md § Automations on a table. Test: `src/__tests__/automation.test.ts`; the doors' own proof is matrx-frontend `scripts/campaign-tests/automation_door_green.sql`.
24
+
25
+ **Consumer action:** none (additive; `pnpm sync-types`).
26
+
3
27
  ## 0.76.19
4
28
 
5
29
  - (0.76.18 never reached npm: its publish stopped on a live-guard test that pinned which DDL guard refuses a client grant first; `real-doors.test.ts` now accepts either guard.)
@@ -847,8 +847,9 @@ function parseTableDuplicated(raw) {
847
847
  var ORDINAL = {
848
848
  viewer: 1,
849
849
  commenter: 2,
850
- editor: 3,
851
- admin: 4
850
+ edit_content: 3,
851
+ editor: 4,
852
+ admin: 5
852
853
  };
853
854
  function asPermissionLevel(word) {
854
855
  return typeof word === "string" && word in ORDINAL ? word : null;
@@ -1008,6 +1009,12 @@ var STORE_DOORS = [
1008
1009
  { name: "assert_public_reader_names_a_public_table", args: "p_organization_id uuid, p_table_id uuid, p_door text", returns: "void", security: "definer" },
1009
1010
  { name: "assert_scope_door", args: "p_organization_id uuid, p_door text", returns: "void", security: "definer" },
1010
1011
  { name: "assert_store_door", args: "p_organization_id uuid, p_door text", returns: "void", security: "invoker" },
1012
+ { name: "automation_archive", args: "p_organization_id uuid, p_automation_id uuid", returns: "jsonb", security: "definer" },
1013
+ { name: "automation_declare", args: "p_organization_id uuid, p_table_id uuid, p_spec jsonb, p_automation_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
1014
+ { name: "automation_restore", args: "p_organization_id uuid, p_automation_id uuid", returns: "jsonb", security: "definer" },
1015
+ { name: "automation_runs", args: "p_automation_id uuid, p_limit integer DEFAULT 50, p_cursor timestamp with time zone DEFAULT NULL::timestamp with time zone, p_organization_id uuid DEFAULT NULL::uuid", returns: "jsonb", security: "definer" },
1016
+ { name: "automation_set_enabled", args: "p_organization_id uuid, p_automation_id uuid, p_enabled boolean", returns: "jsonb", security: "definer" },
1017
+ { name: "automations", args: "p_table_id uuid, p_organization_id uuid DEFAULT NULL::uuid, p_include_archived boolean DEFAULT false", returns: "jsonb", security: "definer" },
1011
1018
  { name: "autonumber_backfill", args: "p_organization_id uuid, p_field_id uuid", returns: "jsonb", security: "definer" },
1012
1019
  { name: "barcode_symbologies", args: "", returns: "text[]", security: "invoker" },
1013
1020
  { name: "booking_cancel", args: "p_booking_ref text, p_origin text DEFAULT NULL::text", returns: "TABLE(booking_ref text, record_id uuid, slot_key text, state text, message text)", security: "definer" },
@@ -1254,13 +1261,18 @@ var STORE_DOORS = [
1254
1261
  { name: "form_look_options", args: "p_organization_id uuid, p_presentation jsonb DEFAULT '{}'::jsonb", returns: "jsonb", security: "definer" },
1255
1262
  { name: "form_notify", args: "p_organization_id uuid, p_form_id uuid, p_record_id uuid, p_submission_id uuid", returns: "uuid", security: "invoker" },
1256
1263
  { name: "form_preview_asks", args: "p_organization_id uuid, p_table_id uuid, p_questions jsonb, p_values jsonb", returns: "TABLE(field_key text, asked boolean, decided boolean, said text)", security: "definer" },
1264
+ { name: "form_preview_route", args: "p_organization_id uuid, p_table_id uuid, p_questions jsonb, p_endings jsonb, p_values jsonb", returns: "jsonb", security: "definer" },
1257
1265
  { name: "form_public", args: "p_form_id uuid", returns: "TABLE(form_id uuid, organization_id uuid, table_id uuid, title text, presentation jsonb, fields jsonb, honeypot_key text, state text, message text)", security: "definer" },
1258
1266
  { name: "form_public_asks", args: "p_form_id uuid, p_values jsonb, p_secret text DEFAULT NULL::text, p_origin text DEFAULT NULL::text", returns: "TABLE(field_key text, asked boolean, decided boolean, said text)", security: "definer" },
1267
+ { name: "form_public_route", args: "p_form_id uuid, p_values jsonb", returns: "jsonb", security: "definer" },
1259
1268
  { name: "form_redirect_domains", args: "p_organization_id uuid", returns: "text[]", security: "invoker" },
1260
1269
  { name: "form_redirect_refusal", args: "p_organization_id uuid, p_url text", returns: "text", security: "invoker" },
1261
1270
  { name: "form_restore", args: "p_organization_id uuid, p_form_id uuid", returns: "jsonb", security: "definer" },
1271
+ { name: "form_results", args: "p_organization_id uuid, p_form_id uuid", returns: "jsonb", security: "definer" },
1262
1272
  { name: "form_slug", args: "p_organization_id uuid, p_title text, p_form_id uuid DEFAULT NULL::uuid", returns: "text", security: "invoker" },
1263
1273
  { name: "form_submit", args: "p_form_id uuid, p_origin text, p_payload jsonb, p_bucket text, p_honeypot text DEFAULT NULL::text, p_client_key text DEFAULT NULL::text", returns: "TABLE(submission_id uuid, record_id uuid, state text, message text)", security: "definer" },
1274
+ { name: "form_theme_options", args: "", returns: "jsonb", security: "invoker" },
1275
+ { name: "form_visit", args: "p_form_id uuid, p_visit text, p_event text, p_field text DEFAULT NULL::text", returns: "text", security: "definer" },
1264
1276
  { name: "forms", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid", returns: "TABLE(form_id uuid, table_id uuid, title text, slug text, published_at timestamp with time zone, closed_at timestamp with time zone, submission_cap integer, responses bigint, in_table bigint, held bigint, rejected bigint, state text, quarantine_rule_id uuid, notify_rule_id uuid, presentation jsonb)", security: "definer" },
1265
1277
  { name: "forms_archived", args: "p_organization_id uuid, p_table_id uuid DEFAULT NULL::uuid, p_limit integer DEFAULT 100", returns: "TABLE(form_id uuid, table_id uuid, table_name text, kind text, title text, slug text, archived_at timestamp with time zone, archived_by uuid, table_archived boolean, can_restore boolean)", security: "definer" },
1266
1278
  { name: "formula_compile_sql", args: "p_organization_id uuid, p_expr jsonb, p_values_sql text", returns: "text", security: "invoker" },
@@ -1591,6 +1603,7 @@ var STORE_DOORS = [
1591
1603
  { name: "rollup_value", args: "p_organization_id uuid, p_record_id uuid, p_field_data jsonb", returns: "jsonb", security: "invoker" },
1592
1604
  { name: "row_actions", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
1593
1605
  { name: "row_sits_in_a_personal_table", args: "p_type text, p_organization_id uuid, p_id uuid", returns: "boolean", security: "invoker" },
1606
+ { name: "row_template_bodies", args: "p_organization_id uuid, p_table_id uuid", returns: "TABLE(template_id uuid, body jsonb)", security: "definer" },
1594
1607
  { name: "row_template_declare", args: "p_organization_id uuid, p_table_id uuid, p_spec jsonb", returns: "uuid", security: "definer" },
1595
1608
  { name: "row_templates", args: "p_organization_id uuid, p_table_id uuid", returns: 'TABLE(template_id uuid, name text, table_id uuid, "values" jsonb, created_at timestamp with time zone, updated_at timestamp with time zone)', security: "definer" },
1596
1609
  { name: "rule_applies", args: "p_organization_id uuid, p_rule_id uuid, p_record_id uuid", returns: "jsonb", security: "invoker" },
@@ -1717,6 +1730,8 @@ var STORE_DOORS = [
1717
1730
  { name: "table_stage_field", args: "p_organization_id uuid, p_table_id uuid", returns: "text", security: "definer" },
1718
1731
  { name: "table_storage", args: "p_organization_id uuid, p_table_id uuid", returns: "text", security: "invoker" },
1719
1732
  { name: "table_sync", args: "p_organization_id uuid, p_home_id uuid, p_spec jsonb", returns: "jsonb", security: "definer" },
1733
+ { name: "table_template_declare", args: "p_org_id uuid, p_name text, p_description text, p_fields jsonb", returns: "uuid", security: "invoker" },
1734
+ { name: "table_templates", args: "p_org_id uuid", returns: "jsonb", security: "definer" },
1720
1735
  { name: "table_transfer_owner", args: "p_table_id uuid, p_to_person uuid, p_reason text", returns: "jsonb", security: "definer" },
1721
1736
  { name: "table_type_field", args: "p_organization_id uuid, p_table_id uuid", returns: "text", security: "definer" },
1722
1737
  { name: "table_unique_rule_fields", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "invoker" },
@@ -2182,6 +2197,10 @@ var DOORS = {
2182
2197
  * organization wall and the caller's own rung on the Table — never `rule_eval` from a browser.
2183
2198
  */
2184
2199
  formPreviewAsks: "form_preview_asks",
2200
+ /** TYPEFORM-DUP: the owner's preview of the whole route — jumps, ending, score (`custom._form_route`). */
2201
+ formPreviewRoute: "form_preview_route",
2202
+ /** TYPEFORM-DUP: views, starts, completions, drop-off and answers per question. */
2203
+ formResults: "form_results",
2185
2204
  formLookOptions: "form_look_options",
2186
2205
  // PRODUCTS row 14 — "let clients book a 30-minute consult". A booking page IS an
2187
2206
  // `anon_form`, so it is opened and closed by `anonPublish` like any other; this is
@@ -2499,6 +2518,13 @@ var DOORS = {
2499
2518
  actionDeclare: "action_declare",
2500
2519
  rowActions: "row_actions",
2501
2520
  actionRun: "action_run",
2521
+ // AUTOMATION-DOOR (2026-10-07) — automations on a table. See ../automation.ts.
2522
+ automationDeclare: "automation_declare",
2523
+ automations: "automations",
2524
+ automationArchive: "automation_archive",
2525
+ automationRestore: "automation_restore",
2526
+ automationSetEnabled: "automation_set_enabled",
2527
+ automationRuns: "automation_runs",
2502
2528
  tableWebhookDeclare: "table_webhook_declare",
2503
2529
  tableWebhooks: "table_webhooks",
2504
2530
  tableWebhookArchive: "table_webhook_archive",
@@ -4078,6 +4104,20 @@ function createRecordsClient(given) {
4078
4104
  "formPreviewAsks"
4079
4105
  );
4080
4106
  },
4107
+ async formPreviewRoute({ table_id, questions, endings, values }) {
4108
+ return callDoor(
4109
+ DOORS.formPreviewRoute,
4110
+ { p_organization_id: org, p_table_id: table_id, p_questions: questions, p_endings: endings ?? [], p_values: values },
4111
+ "formPreviewRoute"
4112
+ );
4113
+ },
4114
+ async formResults({ form_id }) {
4115
+ return callDoor(
4116
+ DOORS.formResults,
4117
+ { p_organization_id: org, p_form_id: form_id },
4118
+ "formResults"
4119
+ );
4120
+ },
4081
4121
  async formLookOptions(args) {
4082
4122
  return callDoor(
4083
4123
  DOORS.formLookOptions,
@@ -5754,6 +5794,48 @@ function createRecordsClient(given) {
5754
5794
  }
5755
5795
  return result;
5756
5796
  },
5797
+ async automationDeclare({ table_id, spec, automation_id }) {
5798
+ return callDoor(
5799
+ DOORS.automationDeclare,
5800
+ { p_organization_id: org, p_table_id: table_id, p_spec: spec, p_automation_id: automation_id ?? null },
5801
+ "automationDeclare"
5802
+ );
5803
+ },
5804
+ async automations({ table_id, include_archived }) {
5805
+ return callDoor(
5806
+ DOORS.automations,
5807
+ { p_table_id: table_id, p_organization_id: org, p_include_archived: include_archived ?? false },
5808
+ "automations"
5809
+ );
5810
+ },
5811
+ async automationArchive({ automation_id }) {
5812
+ return callDoor(
5813
+ DOORS.automationArchive,
5814
+ { p_organization_id: org, p_automation_id: automation_id },
5815
+ "automationArchive"
5816
+ );
5817
+ },
5818
+ async automationRestore({ automation_id }) {
5819
+ return callDoor(
5820
+ DOORS.automationRestore,
5821
+ { p_organization_id: org, p_automation_id: automation_id },
5822
+ "automationRestore"
5823
+ );
5824
+ },
5825
+ async automationSetEnabled({ automation_id, enabled }) {
5826
+ return callDoor(
5827
+ DOORS.automationSetEnabled,
5828
+ { p_organization_id: org, p_automation_id: automation_id, p_enabled: enabled },
5829
+ "automationSetEnabled"
5830
+ );
5831
+ },
5832
+ async automationRuns({ automation_id, limit, cursor }) {
5833
+ return callDoor(
5834
+ DOORS.automationRuns,
5835
+ { p_automation_id: automation_id, p_limit: limit ?? 50, p_cursor: cursor ?? null, p_organization_id: org },
5836
+ "automationRuns"
5837
+ );
5838
+ },
5757
5839
  async tableWebhookDeclare({ table_id, target_url, events, description }) {
5758
5840
  return callDoor(
5759
5841
  DOORS.tableWebhookDeclare,