@ai-matrx/records 0.82.1 → 0.83.1

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 CHANGED
@@ -1,9 +1,26 @@
1
1
  # Changelog — @ai-matrx/records
2
2
 
3
+ ## 0.83.1
4
+
5
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
6
+ `git diff npm/records/v0.83.0..npm/records/v0.83.1 -- apps/shared/records`).
7
+ No source changes intended and no consumer action required.
8
+
9
+ ## 0.83.0 — the gate parses with the one formula language
10
+
11
+ - The template gate parses formulas with `@ai-matrx/kit/formula` (one parser, the store's 35
12
+ functions) and keeps only its exact-fraction evaluator (`evalFormula`, numbers read from the digits as
13
+ typed). `parseFormula` is renamed `parseGateFormula`; the function list is
14
+ `FORMULA_FUNCTION_NAMES` (from kit). An unknown function now reads "There is no function called
15
+ `FOO`. A column goes in braces, like {FOO}." (architecture D6).
16
+
17
+ Consumer action: `parseFormula` / `FORMULA_FUNCTIONS` from `@ai-matrx/records` → `parseGateFormula` /
18
+ `FORMULA_FUNCTION_NAMES` (no consumer imports them).
19
+
3
20
  ## 0.82.1
4
21
  ### lane DESCRIBE-BENCH2 (sweep): the mechanical wrong shapes are read, not refused
5
22
 
6
- - `autofixDescribeSpec` also rewrites, each with an auto-fix note and only when unambiguous: view `filters` written as a list of `{field, op, value}` (→ the store's map; several values → `anyOf`; a condition the store cannot express is dropped and SAID), `sort`/`orderBy` → `sorts`, `group_by`/`date_field`/… → `groupBy`/`dateField`/…, an exact duplicate view dropped; a field typed with `kind`/`type` (or by a plain label) → `parityType`; a formula over bare field names → `{Label}`; a relationship `inverseKey` that is already a field of the target (the store then read the rollup's link as a plain formula) renamed; a rollup named for a status with no filter → the filter when exactly one far-side choice/tick box is that word; a real-looking phone → a fictional one; a copy of the shared team_member block → an ordinary table (name, role, notes).
23
+ - `autofixDescribeSpec` also rewrites, each with an auto-fix note and only when unambiguous: view `filters` written as a list of `{field, op, value}` (→ the store's map; several values → `anyOf`; a condition the store cannot express is dropped and SAID), `sort`/`orderBy` → `sorts`, `group_by`/`date_field`/… → `groupBy`/`dateField`/…, an exact duplicate view dropped; a field typed with `kind`/`type` (or by a plain label) → `parityType`; a formula over bare field names → `{Label}`; a relationship `inverseKey` that is already a field of the target (the store then read the rollup's link as a plain formula) renamed; a rollup named for a status with no filter → the filter when exactly one far-side choice/tick box is that word; a real-looking phone → a fictional one; a copy of the shared team_member block → an ordinary table (name, role, notes) — never a table whose fields are exactly one the person already has (a link-only reuse is not changed).
7
24
  - `describeVocabulary()` gains `view_filters_shape`, `field_shape`, `formula_shape`, `relationship_shape`, `phone_rule`, `team_rule`.
8
25
 
9
26
  ## Earlier in this release — a rollup or lookup in the wrong shape is read, not refused
@@ -695,6 +695,7 @@ var SHARED_BLOCK_IDS = Object.keys(SHARED_BLOCKS);
695
695
 
696
696
  // src/templates/validate.ts
697
697
  var import_uuid = require("@ai-matrx/kit/uuid");
698
+ var import_formula = require("@ai-matrx/kit/formula");
698
699
 
699
700
  // src/templates/confidential.ts
700
701
  var TABLE_KERNEL_ID = "11111111-0000-4000-8000-000000000001";
@@ -1776,6 +1777,7 @@ function resolveDateToken(token, today, timeZone) {
1776
1777
  const local = `${day}T${m[6]}:${m[7]}`;
1777
1778
  return `${local}:00${zoneOffset(local, timeZone)}`;
1778
1779
  }
1780
+ var FORMULA_FUNCTION_NAMES = new Set(import_formula.FORMULA_FUNCTIONS.map((f) => f.name));
1779
1781
  var BEHAVIOR_OF = new Map([
1780
1782
  ...PARITY_FIELD_TYPES.map((t) => [t.parity_type, t.behavior]),
1781
1783
  ...DECLARABLE_FIELD_KINDS.map((k) => [k.kind, k.behavior]),