@polintpro/proposit-core 0.8.4 → 0.8.5

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 (61) hide show
  1. package/dist/lib/core/argument-engine.d.ts +3 -0
  2. package/dist/lib/core/argument-engine.d.ts.map +1 -1
  3. package/dist/lib/core/argument-engine.js +18 -35
  4. package/dist/lib/core/argument-engine.js.map +1 -1
  5. package/dist/lib/core/claim-library.d.ts +14 -22
  6. package/dist/lib/core/claim-library.d.ts.map +1 -1
  7. package/dist/lib/core/claim-library.js +10 -185
  8. package/dist/lib/core/claim-library.js.map +1 -1
  9. package/dist/lib/core/claim-source-library.d.ts +1 -0
  10. package/dist/lib/core/claim-source-library.d.ts.map +1 -1
  11. package/dist/lib/core/claim-source-library.js +1 -0
  12. package/dist/lib/core/claim-source-library.js.map +1 -1
  13. package/dist/lib/core/expression-manager.d.ts +22 -0
  14. package/dist/lib/core/expression-manager.d.ts.map +1 -1
  15. package/dist/lib/core/expression-manager.js +67 -151
  16. package/dist/lib/core/expression-manager.js.map +1 -1
  17. package/dist/lib/core/fork-library.d.ts +9 -0
  18. package/dist/lib/core/fork-library.d.ts.map +1 -1
  19. package/dist/lib/core/fork-library.js +9 -0
  20. package/dist/lib/core/fork-library.js.map +1 -1
  21. package/dist/lib/core/fork-namespace.d.ts +13 -0
  22. package/dist/lib/core/fork-namespace.d.ts.map +1 -1
  23. package/dist/lib/core/fork-namespace.js +13 -0
  24. package/dist/lib/core/fork-namespace.js.map +1 -1
  25. package/dist/lib/core/invariant-violation-error.d.ts +4 -0
  26. package/dist/lib/core/invariant-violation-error.d.ts.map +1 -1
  27. package/dist/lib/core/invariant-violation-error.js +4 -0
  28. package/dist/lib/core/invariant-violation-error.js.map +1 -1
  29. package/dist/lib/core/parser/formula.d.ts +1 -0
  30. package/dist/lib/core/parser/formula.d.ts.map +1 -1
  31. package/dist/lib/core/parser/formula.js +1 -0
  32. package/dist/lib/core/parser/formula.js.map +1 -1
  33. package/dist/lib/core/premise-engine.d.ts +2 -0
  34. package/dist/lib/core/premise-engine.d.ts.map +1 -1
  35. package/dist/lib/core/premise-engine.js +35 -100
  36. package/dist/lib/core/premise-engine.js.map +1 -1
  37. package/dist/lib/core/source-library.d.ts +14 -22
  38. package/dist/lib/core/source-library.d.ts.map +1 -1
  39. package/dist/lib/core/source-library.js +10 -185
  40. package/dist/lib/core/source-library.js.map +1 -1
  41. package/dist/lib/core/versioned-library.d.ts +52 -0
  42. package/dist/lib/core/versioned-library.d.ts.map +1 -0
  43. package/dist/lib/core/versioned-library.js +192 -0
  44. package/dist/lib/core/versioned-library.js.map +1 -0
  45. package/dist/lib/index.d.ts +2 -0
  46. package/dist/lib/index.d.ts.map +1 -1
  47. package/dist/lib/index.js +1 -0
  48. package/dist/lib/index.js.map +1 -1
  49. package/dist/lib/parsing/schemata.d.ts +2 -0
  50. package/dist/lib/parsing/schemata.d.ts.map +1 -1
  51. package/dist/lib/parsing/schemata.js +2 -0
  52. package/dist/lib/parsing/schemata.js.map +1 -1
  53. package/dist/lib/schemata/shared.d.ts +3 -0
  54. package/dist/lib/schemata/shared.d.ts.map +1 -1
  55. package/dist/lib/schemata/shared.js +3 -0
  56. package/dist/lib/schemata/shared.js.map +1 -1
  57. package/dist/lib/utils/position.d.ts +1 -0
  58. package/dist/lib/utils/position.d.ts.map +1 -1
  59. package/dist/lib/utils/position.js +1 -0
  60. package/dist/lib/utils/position.js.map +1 -1
  61. package/package.json +4 -2
@@ -1,196 +1,21 @@
1
- import { Value } from "typebox/value";
2
1
  import { CoreClaimSchema } from "../schemata/claim.js";
3
- import { DEFAULT_CHECKSUM_CONFIG } from "../consts.js";
4
- import { entityChecksum } from "./checksum.js";
5
2
  import { CLAIM_SCHEMA_INVALID, CLAIM_FROZEN_NO_SUCCESSOR, } from "../types/validation.js";
6
- import { InvariantViolationError } from "./invariant-violation-error.js";
7
- export class ClaimLibrary {
8
- entities;
9
- checksumConfig;
10
- constructor(options) {
11
- this.entities = new Map();
12
- this.checksumConfig = options?.checksumConfig;
13
- }
14
- restoreFromSnapshot(snap) {
15
- this.entities = new Map();
16
- for (const entity of snap.claims) {
17
- let versions = this.entities.get(entity.id);
18
- if (!versions) {
19
- versions = new Map();
20
- this.entities.set(entity.id, versions);
21
- }
22
- versions.set(entity.version, entity);
23
- }
24
- }
25
- withValidation(fn) {
26
- const snap = this.snapshot();
27
- try {
28
- const result = fn();
29
- const validation = this.validate();
30
- if (!validation.ok) {
31
- this.restoreFromSnapshot(snap);
32
- throw new InvariantViolationError(validation.violations);
33
- }
34
- return result;
35
- }
36
- catch (e) {
37
- if (!(e instanceof InvariantViolationError)) {
38
- this.restoreFromSnapshot(snap);
39
- }
40
- throw e;
41
- }
42
- }
43
- create(claim) {
44
- return this.withValidation(() => {
45
- if (this.entities.has(claim.id)) {
46
- throw new Error(`Claim with ID "${claim.id}" already exists.`);
47
- }
48
- const full = {
49
- ...claim,
50
- version: 0,
51
- frozen: false,
52
- checksum: "",
53
- };
54
- full.checksum = this.computeChecksum(full);
55
- const versions = new Map();
56
- versions.set(0, full);
57
- this.entities.set(full.id, versions);
58
- return full;
59
- });
60
- }
61
- update(id, updates) {
62
- return this.withValidation(() => {
63
- const versions = this.entities.get(id);
64
- if (!versions) {
65
- throw new Error(`Claim "${id}" does not exist.`);
66
- }
67
- const maxVersion = this.maxVersion(versions);
68
- const current = versions.get(maxVersion);
69
- if (current.frozen) {
70
- throw new Error(`Claim "${id}" version ${maxVersion} is frozen and cannot be updated.`);
71
- }
72
- const updated = {
73
- ...current,
74
- ...updates,
75
- id: current.id,
76
- version: current.version,
77
- frozen: current.frozen,
78
- checksum: "",
79
- };
80
- updated.checksum = this.computeChecksum(updated);
81
- versions.set(maxVersion, updated);
82
- return updated;
83
- });
84
- }
85
- freeze(id) {
86
- return this.withValidation(() => {
87
- const versions = this.entities.get(id);
88
- if (!versions) {
89
- throw new Error(`Claim "${id}" does not exist.`);
90
- }
91
- const maxVersion = this.maxVersion(versions);
92
- const current = versions.get(maxVersion);
93
- if (current.frozen) {
94
- throw new Error(`Claim "${id}" version ${maxVersion} is already frozen.`);
95
- }
96
- const frozenEntity = {
97
- ...current,
98
- frozen: true,
99
- checksum: "",
100
- };
101
- frozenEntity.checksum = this.computeChecksum(frozenEntity);
102
- versions.set(maxVersion, frozenEntity);
103
- const nextVersion = maxVersion + 1;
104
- const nextEntity = {
105
- ...current,
106
- version: nextVersion,
107
- frozen: false,
108
- checksum: "",
109
- };
110
- nextEntity.checksum = this.computeChecksum(nextEntity);
111
- versions.set(nextVersion, nextEntity);
112
- return { frozen: frozenEntity, current: nextEntity };
113
- });
114
- }
115
- get(id, version) {
116
- return this.entities.get(id)?.get(version);
117
- }
118
- getCurrent(id) {
119
- const versions = this.entities.get(id);
120
- if (!versions)
121
- return undefined;
122
- return versions.get(this.maxVersion(versions));
123
- }
124
- getAll() {
125
- const result = [];
126
- for (const versions of this.entities.values()) {
127
- for (const entity of versions.values()) {
128
- result.push(entity);
129
- }
130
- }
131
- return result;
132
- }
133
- getVersions(id) {
134
- const versions = this.entities.get(id);
135
- if (!versions)
136
- return [];
137
- return Array.from(versions.values()).sort((a, b) => a.version - b.version);
138
- }
3
+ import { VersionedLibrary } from "./versioned-library.js";
4
+ export class ClaimLibrary extends VersionedLibrary {
5
+ entityLabel = "Claim";
6
+ entityType = "claim";
7
+ schema = CoreClaimSchema;
8
+ checksumFieldsKey = "claimFields";
9
+ schemaInvalidCode = CLAIM_SCHEMA_INVALID;
10
+ frozenSuccessorCode = CLAIM_FROZEN_NO_SUCCESSOR;
139
11
  snapshot() {
140
12
  return { claims: this.getAll() };
141
13
  }
14
+ /** Restores a claim library from a previously captured snapshot. */
142
15
  static fromSnapshot(snapshot, options) {
143
16
  const lib = new ClaimLibrary(options);
144
- for (const entity of snapshot.claims) {
145
- let versions = lib.entities.get(entity.id);
146
- if (!versions) {
147
- versions = new Map();
148
- lib.entities.set(entity.id, versions);
149
- }
150
- versions.set(entity.version, entity);
151
- }
17
+ lib.restoreFromEntities(snapshot.claims);
152
18
  return lib;
153
19
  }
154
- validate() {
155
- const violations = [];
156
- for (const [id, versions] of this.entities) {
157
- const sortedVersions = [...versions.entries()].sort(([a], [b]) => a - b);
158
- for (const [version, claim] of sortedVersions) {
159
- if (!Value.Check(CoreClaimSchema, claim)) {
160
- violations.push({
161
- code: CLAIM_SCHEMA_INVALID,
162
- message: `Claim "${id}" version ${version} does not conform to schema`,
163
- entityType: "claim",
164
- entityId: id,
165
- });
166
- }
167
- if (claim.frozen) {
168
- const maxVer = this.maxVersion(versions);
169
- if (version < maxVer && !versions.has(version + 1)) {
170
- violations.push({
171
- code: CLAIM_FROZEN_NO_SUCCESSOR,
172
- message: `Claim "${id}" version ${version} is frozen but has no successor version`,
173
- entityType: "claim",
174
- entityId: id,
175
- });
176
- }
177
- }
178
- }
179
- }
180
- return { ok: violations.length === 0, violations };
181
- }
182
- maxVersion(versions) {
183
- let max = -1;
184
- for (const v of versions.keys()) {
185
- if (v > max)
186
- max = v;
187
- }
188
- return max;
189
- }
190
- computeChecksum(entity) {
191
- const fields = this.checksumConfig?.claimFields ??
192
- DEFAULT_CHECKSUM_CONFIG.claimFields;
193
- return entityChecksum(entity, fields);
194
- }
195
20
  }
196
21
  //# sourceMappingURL=claim-library.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claim-library.js","sourceRoot":"","sources":["../../../src/lib/core/claim-library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAS9C,OAAO,EACH,oBAAoB,EACpB,yBAAyB,GAC5B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AAExE,MAAM,OAAO,YAAY;IAGb,QAAQ,CAAkC;IAC1C,cAAc,CAAsB;IAE5C,YAAY,OAAkD;QAC1D,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,cAAc,GAAG,OAAO,EAAE,cAAc,CAAA;IACjD,CAAC;IAEO,mBAAmB,CAAC,IAAmC;QAC3D,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;QACzB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;gBACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;YAC1C,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACxC,CAAC;IACL,CAAC;IAEO,cAAc,CAAI,EAAW;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAC5B,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,EAAE,EAAE,CAAA;YACnB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;YAClC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACjB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;gBAC9B,MAAM,IAAI,uBAAuB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;YAC5D,CAAC;YACD,OAAO,MAAM,CAAA;QACjB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,CAAC,CAAC,YAAY,uBAAuB,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;YAClC,CAAC;YACD,MAAM,CAAC,CAAA;QACX,CAAC;IACL,CAAC;IAEM,MAAM,CACT,KAAsD;QAEtD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;YAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAY,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,EAAE,mBAAmB,CAAC,CAAA;YAClE,CAAC;YACD,MAAM,IAAI,GAAG;gBACT,GAAG,KAAK;gBACR,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,EAAE;aACL,CAAA;YACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;YAE1C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAA;YAC1C,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;YACrB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;YACpC,OAAO,IAAI,CAAA;QACf,CAAC,CAAC,CAAA;IACN,CAAC;IAEM,MAAM,CACT,EAAU,EACV,OAAwE;QAExE,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAA;YACpD,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;YAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAE,CAAA;YACzC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CACX,UAAU,EAAE,aAAa,UAAU,mCAAmC,CACzE,CAAA;YACL,CAAC;YACD,MAAM,OAAO,GAAG;gBACZ,GAAG,OAAO;gBACV,GAAG,OAAO;gBACV,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,EAAE;aACL,CAAA;YACX,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;YAChD,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YACjC,OAAO,OAAO,CAAA;QAClB,CAAC,CAAC,CAAA;IACN,CAAC;IAEM,MAAM,CAAC,EAAU;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAA;YACpD,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;YAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAE,CAAA;YACzC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CACX,UAAU,EAAE,aAAa,UAAU,qBAAqB,CAC3D,CAAA;YACL,CAAC;YACD,MAAM,YAAY,GAAG;gBACjB,GAAG,OAAO;gBACV,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,EAAE;aACL,CAAA;YACX,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;YAC1D,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;YAEtC,MAAM,WAAW,GAAG,UAAU,GAAG,CAAC,CAAA;YAClC,MAAM,UAAU,GAAG;gBACf,GAAG,OAAO;gBACV,OAAO,EAAE,WAAW;gBACpB,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,EAAE;aACL,CAAA;YACX,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;YACtD,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;YAErC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA;QACxD,CAAC,CAAC,CAAA;IACN,CAAC;IAEM,GAAG,CAAC,EAAU,EAAE,OAAe;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IAC9C,CAAC;IAEM,UAAU,CAAC,EAAU;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAA;QAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;IAClD,CAAC;IAEM,MAAM;QACT,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACvB,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAA;IACjB,CAAC;IAEM,WAAW,CAAC,EAAU;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAA;QACxB,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CACrC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAClC,CAAA;IACL,CAAC;IAEM,QAAQ;QACX,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAA;IACpC,CAAC;IAEM,MAAM,CAAC,YAAY,CACtB,QAAuC,EACvC,OAAkD;QAElD,MAAM,GAAG,GAAG,IAAI,YAAY,CAAS,OAAO,CAAC,CAAA;QAC7C,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACnC,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;gBACpB,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;YACzC,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,GAAG,CAAA;IACd,CAAC;IAEM,QAAQ;QACX,MAAM,UAAU,GAA0B,EAAE,CAAA;QAC5C,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,cAAc,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAC/C,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CACtB,CAAA;YACD,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,cAAc,EAAE,CAAC;gBAC5C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC;oBACvC,UAAU,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,oBAAoB;wBAC1B,OAAO,EAAE,UAAU,EAAE,aAAa,OAAO,6BAA6B;wBACtE,UAAU,EAAE,OAAO;wBACnB,QAAQ,EAAE,EAAE;qBACf,CAAC,CAAA;gBACN,CAAC;gBACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACf,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;oBACxC,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;wBACjD,UAAU,CAAC,IAAI,CAAC;4BACZ,IAAI,EAAE,yBAAyB;4BAC/B,OAAO,EAAE,UAAU,EAAE,aAAa,OAAO,yCAAyC;4BAClF,UAAU,EAAE,OAAO;4BACnB,QAAQ,EAAE,EAAE;yBACf,CAAC,CAAA;oBACN,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,UAAU,EAAE,CAAA;IACtD,CAAC;IAEO,UAAU,CAAC,QAA6B;QAC5C,IAAI,GAAG,GAAG,CAAC,CAAC,CAAA;QACZ,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,GAAG;gBAAE,GAAG,GAAG,CAAC,CAAA;QACxB,CAAC;QACD,OAAO,GAAG,CAAA;IACd,CAAC;IAEO,eAAe,CAAC,MAAc;QAClC,MAAM,MAAM,GACR,IAAI,CAAC,cAAc,EAAE,WAAW;YAChC,uBAAuB,CAAC,WAAY,CAAA;QACxC,OAAO,cAAc,CACjB,MAA4C,EAC5C,MAAM,CACT,CAAA;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"claim-library.js","sourceRoot":"","sources":["../../../src/lib/core/claim-library.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAMtD,OAAO,EACH,oBAAoB,EACpB,yBAAyB,GAC5B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD,MAAM,OAAO,YACT,SAAQ,gBAAwB;IAGb,WAAW,GAAG,OAAO,CAAA;IACrB,UAAU,GAAG,OAAgB,CAAA;IAC7B,MAAM,GAAG,eAAe,CAAA;IACxB,iBAAiB,GAAG,aAAsB,CAAA;IAC1C,iBAAiB,GAAG,oBAAoB,CAAA;IACxC,mBAAmB,GAAG,yBAAyB,CAAA;IAE3D,QAAQ;QACX,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAA;IACpC,CAAC;IAED,oEAAoE;IAC7D,MAAM,CAAC,YAAY,CACtB,QAAuC,EACvC,OAAkD;QAElD,MAAM,GAAG,GAAG,IAAI,YAAY,CAAS,OAAO,CAAC,CAAA;QAC7C,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACxC,OAAO,GAAG,CAAA;IACd,CAAC;CACJ"}
@@ -22,6 +22,7 @@ export declare class ClaimSourceLibrary<TAssoc extends TCoreClaimSourceAssociati
22
22
  getAll(): TAssoc[];
23
23
  filter(predicate: (a: TAssoc) => boolean): TAssoc[];
24
24
  snapshot(): TClaimSourceLibrarySnapshot<TAssoc>;
25
+ /** Restores a claim-source library from a snapshot, re-indexing all associations. */
25
26
  static fromSnapshot<TAssoc extends TCoreClaimSourceAssociation = TCoreClaimSourceAssociation>(snapshot: TClaimSourceLibrarySnapshot<TAssoc>, claimLookup: TClaimLookup, sourceLookup: TSourceLookup, options?: {
26
27
  checksumConfig?: TCoreChecksumConfig;
27
28
  }): ClaimSourceLibrary<TAssoc>;
@@ -1 +1 @@
1
- {"version":3,"file":"claim-source-library.d.ts","sourceRoot":"","sources":["../../../src/lib/core/claim-source-library.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAA;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAG/D,OAAO,KAAK,EACR,YAAY,EACZ,aAAa,EACb,6BAA6B,EAC7B,2BAA2B,EAC9B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,KAAK,EACR,0BAA0B,EAE7B,MAAM,wBAAwB,CAAA;AAQ/B,qBAAa,kBAAkB,CAC3B,MAAM,SAAS,2BAA2B,GAAG,2BAA2B,CAC1E,YAAW,6BAA6B,CAAC,MAAM,CAAC;IAC9C,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,oBAAoB,CAA0B;IACtD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAC,CAAqB;gBAGxC,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,aAAa,EAC3B,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,mBAAmB,CAAA;KAAE;IAUtD,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,cAAc;IAkBf,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,MAAM;IAmD5C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAuB1B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAQtC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAQxC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAInC,MAAM,IAAI,MAAM,EAAE;IAIlB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,EAAE;IAInD,QAAQ,IAAI,2BAA2B,CAAC,MAAM,CAAC;WAIxC,YAAY,CACtB,MAAM,SAAS,2BAA2B,GACtC,2BAA2B,EAE/B,QAAQ,EAAE,2BAA2B,CAAC,MAAM,CAAC,EAC7C,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,aAAa,EAC3B,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,mBAAmB,CAAA;KAAE,GACnD,kBAAkB,CAAC,MAAM,CAAC;IA0BtB,QAAQ,IAAI,0BAA0B;IA+B7C,OAAO,CAAC,eAAe;CAS1B"}
1
+ {"version":3,"file":"claim-source-library.d.ts","sourceRoot":"","sources":["../../../src/lib/core/claim-source-library.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAA;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAG/D,OAAO,KAAK,EACR,YAAY,EACZ,aAAa,EACb,6BAA6B,EAC7B,2BAA2B,EAC9B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,KAAK,EACR,0BAA0B,EAE7B,MAAM,wBAAwB,CAAA;AAQ/B,qBAAa,kBAAkB,CAC3B,MAAM,SAAS,2BAA2B,GAAG,2BAA2B,CAC1E,YAAW,6BAA6B,CAAC,MAAM,CAAC;IAC9C,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,oBAAoB,CAA0B;IACtD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAC,CAAqB;gBAGxC,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,aAAa,EAC3B,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,mBAAmB,CAAA;KAAE;IAUtD,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,cAAc;IAkBf,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,MAAM;IAmD5C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAuB1B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAQtC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAQxC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAInC,MAAM,IAAI,MAAM,EAAE;IAIlB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,EAAE;IAInD,QAAQ,IAAI,2BAA2B,CAAC,MAAM,CAAC;IAItD,qFAAqF;WACvE,YAAY,CACtB,MAAM,SAAS,2BAA2B,GACtC,2BAA2B,EAE/B,QAAQ,EAAE,2BAA2B,CAAC,MAAM,CAAC,EAC7C,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,aAAa,EAC3B,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,mBAAmB,CAAA;KAAE,GACnD,kBAAkB,CAAC,MAAM,CAAC;IA0BtB,QAAQ,IAAI,0BAA0B;IA+B7C,OAAO,CAAC,eAAe;CAS1B"}
@@ -134,6 +134,7 @@ export class ClaimSourceLibrary {
134
134
  snapshot() {
135
135
  return { claimSourceAssociations: this.getAll() };
136
136
  }
137
+ /** Restores a claim-source library from a snapshot, re-indexing all associations. */
137
138
  static fromSnapshot(snapshot, claimLookup, sourceLookup, options) {
138
139
  const lib = new ClaimSourceLibrary(claimLookup, sourceLookup, options);
139
140
  for (const assoc of snapshot.claimSourceAssociations) {
@@ -1 +1 @@
1
- {"version":3,"file":"claim-source-library.js","sourceRoot":"","sources":["../../../src/lib/core/claim-source-library.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claim-source-library.js","sourceRoot":"","sources":["../../../src/lib/core/claim-source-library.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,28 @@ export declare class ExpressionManager<TExpr extends TCorePropositionalExpressio
39
39
  constructor(config?: TLogicEngineOptions);
40
40
  private get grammarConfig();
41
41
  private attachChecksum;
42
+ /**
43
+ * Creates and registers a formula-buffer expression in the three internal
44
+ * maps (`expressions`, `childExpressionIdsByParentId`,
45
+ * `childPositionsByParentId`) and notifies the change collector.
46
+ *
47
+ * Used by `addExpression`, `insertExpression`, and `wrapExpression` to
48
+ * auto-insert formula nodes between operators when
49
+ * `grammarConfig.autoNormalize` is enabled.
50
+ *
51
+ * @returns The generated formula expression ID.
52
+ */
53
+ private registerFormulaBuffer;
54
+ /**
55
+ * Removes an expression from the three internal maps: deletes it from
56
+ * the main `expressions` store, removes it from its parent's child-id
57
+ * and position indexes, and deletes its own child-id and position
58
+ * indexes.
59
+ *
60
+ * Callers remain responsible for collector notification, dirty-set
61
+ * cleanup, and parent dirtying — timing for those varies by call site.
62
+ */
63
+ private detachExpression;
42
64
  /**
43
65
  * Marks an expression and all its ancestors as dirty for hierarchical
44
66
  * checksum recomputation. Stops early when it reaches an expression
@@ -1 +1 @@
1
- {"version":3,"file":"expression-manager.d.ts","sourceRoot":"","sources":["../../../src/lib/core/expression-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expression-manager.d.ts","sourceRoot":"","sources":["../../../src/lib/core/expression-manager.ts"],"names":[],"mappings":"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"}
@@ -58,6 +58,57 @@ export class ExpressionManager {
58
58
  combinedChecksum: checksum,
59
59
  };
60
60
  }
61
+ /**
62
+ * Creates and registers a formula-buffer expression in the three internal
63
+ * maps (`expressions`, `childExpressionIdsByParentId`,
64
+ * `childPositionsByParentId`) and notifies the change collector.
65
+ *
66
+ * Used by `addExpression`, `insertExpression`, and `wrapExpression` to
67
+ * auto-insert formula nodes between operators when
68
+ * `grammarConfig.autoNormalize` is enabled.
69
+ *
70
+ * @returns The generated formula expression ID.
71
+ */
72
+ registerFormulaBuffer(sourceExpr, parentId, position, formulaId) {
73
+ formulaId ??= this.generateId();
74
+ const formulaExpr = this.attachChecksum({
75
+ id: formulaId,
76
+ type: "formula",
77
+ argumentId: sourceExpr.argumentId,
78
+ argumentVersion: sourceExpr.argumentVersion,
79
+ premiseId: sourceExpr
80
+ .premiseId,
81
+ parentId,
82
+ position,
83
+ });
84
+ this.expressions.set(formulaId, formulaExpr);
85
+ this.collector?.addedExpression({
86
+ ...formulaExpr,
87
+ });
88
+ getOrCreate(this.childExpressionIdsByParentId, parentId, () => new Set()).add(formulaId);
89
+ getOrCreate(this.childPositionsByParentId, parentId, () => new Set()).add(position);
90
+ return formulaId;
91
+ }
92
+ /**
93
+ * Removes an expression from the three internal maps: deletes it from
94
+ * the main `expressions` store, removes it from its parent's child-id
95
+ * and position indexes, and deletes its own child-id and position
96
+ * indexes.
97
+ *
98
+ * Callers remain responsible for collector notification, dirty-set
99
+ * cleanup, and parent dirtying — timing for those varies by call site.
100
+ */
101
+ detachExpression(expressionId, expression) {
102
+ this.expressions.delete(expressionId);
103
+ this.childExpressionIdsByParentId
104
+ .get(expression.parentId)
105
+ ?.delete(expressionId);
106
+ this.childPositionsByParentId
107
+ .get(expression.parentId)
108
+ ?.delete(expression.position);
109
+ this.childExpressionIdsByParentId.delete(expressionId);
110
+ this.childPositionsByParentId.delete(expressionId);
111
+ }
61
112
  /**
62
113
  * Marks an expression and all its ancestors as dirty for hierarchical
63
114
  * checksum recomputation. Stops early when it reaches an expression
@@ -193,23 +244,7 @@ export class ExpressionManager {
193
244
  // Check original parent can accept the formula as a new child.
194
245
  this.assertChildLimit(parent.operator, expression.parentId);
195
246
  // Auto-insert a formula buffer between parent and expression.
196
- const formulaId = this.generateId();
197
- const formulaExpr = this.attachChecksum({
198
- id: formulaId,
199
- type: "formula",
200
- argumentId: expression.argumentId,
201
- argumentVersion: expression.argumentVersion,
202
- premiseId: expression.premiseId,
203
- parentId: expression.parentId,
204
- position: expression.position,
205
- });
206
- // Register formula directly in stores.
207
- this.expressions.set(formulaId, formulaExpr);
208
- this.collector?.addedExpression({
209
- ...formulaExpr,
210
- });
211
- getOrCreate(this.childExpressionIdsByParentId, expression.parentId, () => new Set()).add(formulaId);
212
- getOrCreate(this.childPositionsByParentId, expression.parentId, () => new Set()).add(expression.position);
247
+ const formulaId = this.registerFormulaBuffer(expression, expression.parentId, expression.position);
213
248
  // Rewrite expression to be child of formula.
214
249
  expression = {
215
250
  ...expression,
@@ -217,7 +252,7 @@ export class ExpressionManager {
217
252
  position: 0,
218
253
  };
219
254
  // Update parent reference for subsequent checks.
220
- parent = formulaExpr;
255
+ parent = this.expressions.get(formulaId);
221
256
  }
222
257
  else {
223
258
  throw new Error(`Non-not operator expressions cannot be direct children of operator expressions — wrap in a formula node`);
@@ -447,15 +482,7 @@ export class ExpressionManager {
447
482
  this.collector?.removedExpression({
448
483
  ...expression,
449
484
  });
450
- this.expressions.delete(id);
451
- this.childExpressionIdsByParentId
452
- .get(expression.parentId)
453
- ?.delete(id);
454
- this.childPositionsByParentId
455
- .get(expression.parentId)
456
- ?.delete(expression.position);
457
- this.childExpressionIdsByParentId.delete(id);
458
- this.childPositionsByParentId.delete(id);
485
+ this.detachExpression(id, expression);
459
486
  }
460
487
  // Prune deleted expressions from the dirty set and mark the surviving parent dirty.
461
488
  this.pruneDeletedFromDirtySet(toRemove);
@@ -476,13 +503,7 @@ export class ExpressionManager {
476
503
  this.collector?.removedExpression({
477
504
  ...target,
478
505
  });
479
- this.expressions.delete(expressionId);
480
- this.childExpressionIdsByParentId
481
- .get(parentId)
482
- ?.delete(expressionId);
483
- this.childPositionsByParentId.get(parentId)?.delete(target.position);
484
- this.childExpressionIdsByParentId.delete(expressionId);
485
- this.childPositionsByParentId.delete(expressionId);
506
+ this.detachExpression(expressionId, target);
486
507
  // Prune deleted expression from dirty set and mark surviving parent dirty.
487
508
  this.dirtyExpressionIds.delete(expressionId);
488
509
  if (parentId !== null) {
@@ -556,15 +577,7 @@ export class ExpressionManager {
556
577
  this.collector?.removedExpression({
557
578
  ...operator,
558
579
  });
559
- this.expressions.delete(operatorId);
560
- this.childExpressionIdsByParentId
561
- .get(grandparentId)
562
- ?.delete(operatorId);
563
- this.childPositionsByParentId
564
- .get(grandparentId)
565
- ?.delete(operator.position);
566
- this.childExpressionIdsByParentId.delete(operatorId);
567
- this.childPositionsByParentId.delete(operatorId);
580
+ this.detachExpression(operatorId, operator);
568
581
  // Prune collapsed formula from dirty set and propagate to grandparent.
569
582
  this.dirtyExpressionIds.delete(operatorId);
570
583
  if (grandparentId !== null) {
@@ -579,19 +592,10 @@ export class ExpressionManager {
579
592
  const children = this.getChildExpressions(operatorId);
580
593
  if (children.length === 0) {
581
594
  const grandparentId = operator.parentId;
582
- const grandparentPosition = operator.position;
583
595
  this.collector?.removedExpression({
584
596
  ...operator,
585
597
  });
586
- this.expressions.delete(operatorId);
587
- this.childExpressionIdsByParentId
588
- .get(grandparentId)
589
- ?.delete(operatorId);
590
- this.childPositionsByParentId
591
- .get(grandparentId)
592
- ?.delete(grandparentPosition);
593
- this.childExpressionIdsByParentId.delete(operatorId);
594
- this.childPositionsByParentId.delete(operatorId);
598
+ this.detachExpression(operatorId, operator);
595
599
  // Prune collapsed operator from dirty set and propagate to grandparent.
596
600
  this.dirtyExpressionIds.delete(operatorId);
597
601
  if (grandparentId !== null) {
@@ -961,23 +965,7 @@ export class ExpressionManager {
961
965
  let finalParentId = anchorParentId;
962
966
  let finalPosition = anchorPosition;
963
967
  if (needsParentFormulaBuffer) {
964
- const formulaId = this.generateId();
965
- const formulaExpr = this.attachChecksum({
966
- id: formulaId,
967
- type: "formula",
968
- argumentId: expression.argumentId,
969
- argumentVersion: expression.argumentVersion,
970
- premiseId: expression
971
- .premiseId,
972
- parentId: anchorParentId,
973
- position: anchorPosition,
974
- });
975
- this.expressions.set(formulaId, formulaExpr);
976
- this.collector?.addedExpression({
977
- ...formulaExpr,
978
- });
979
- getOrCreate(this.childExpressionIdsByParentId, anchorParentId, () => new Set()).add(formulaId);
980
- getOrCreate(this.childPositionsByParentId, anchorParentId, () => new Set()).add(anchorPosition);
968
+ const formulaId = this.registerFormulaBuffer(expression, anchorParentId, anchorPosition);
981
969
  finalParentId = formulaId;
982
970
  finalPosition = 0;
983
971
  }
@@ -998,27 +986,12 @@ export class ExpressionManager {
998
986
  for (const childId of childrenNeedingFormulaBuffer) {
999
987
  const child = this.expressions.get(childId);
1000
988
  const childPosition = child.position;
1001
- const formulaId = this.generateId();
1002
989
  // Reparent the child under the formula first. This detaches the child
1003
990
  // from expression.id's tracking (removing its position from the set).
991
+ // registerFormulaBuffer then occupies the freed position.
992
+ const formulaId = this.generateId();
1004
993
  this.reparent(childId, formulaId, 0);
1005
- // Now create and register the formula at the freed position under expression.id.
1006
- const formulaExpr = this.attachChecksum({
1007
- id: formulaId,
1008
- type: "formula",
1009
- argumentId: expression.argumentId,
1010
- argumentVersion: expression.argumentVersion,
1011
- premiseId: expression
1012
- .premiseId,
1013
- parentId: expression.id,
1014
- position: childPosition,
1015
- });
1016
- this.expressions.set(formulaId, formulaExpr);
1017
- this.collector?.addedExpression({
1018
- ...formulaExpr,
1019
- });
1020
- getOrCreate(this.childExpressionIdsByParentId, expression.id, () => new Set()).add(formulaId);
1021
- getOrCreate(this.childPositionsByParentId, expression.id, () => new Set()).add(childPosition);
994
+ this.registerFormulaBuffer(expression, expression.id, childPosition, formulaId);
1022
995
  }
1023
996
  // Mark the new expression and its ancestors dirty for hierarchical checksum recomputation.
1024
997
  // Note: reparent() already marks children dirty, so this propagates from the new expression up.
@@ -1163,23 +1136,7 @@ export class ExpressionManager {
1163
1136
  let operatorParentId = anchorParentId;
1164
1137
  let operatorPosition = anchorPosition;
1165
1138
  if (needsParentFormulaBuffer) {
1166
- const formulaId = this.generateId();
1167
- const formulaExpr = this.attachChecksum({
1168
- id: formulaId,
1169
- type: "formula",
1170
- argumentId: operator.argumentId,
1171
- argumentVersion: operator.argumentVersion,
1172
- premiseId: operator
1173
- .premiseId,
1174
- parentId: anchorParentId,
1175
- position: anchorPosition,
1176
- });
1177
- this.expressions.set(formulaId, formulaExpr);
1178
- this.collector?.addedExpression({
1179
- ...formulaExpr,
1180
- });
1181
- getOrCreate(this.childExpressionIdsByParentId, anchorParentId, () => new Set()).add(formulaId);
1182
- getOrCreate(this.childPositionsByParentId, anchorParentId, () => new Set()).add(anchorPosition);
1139
+ const formulaId = this.registerFormulaBuffer(operator, anchorParentId, anchorPosition);
1183
1140
  operatorParentId = formulaId;
1184
1141
  operatorPosition = 0;
1185
1142
  }
@@ -1201,24 +1158,9 @@ export class ExpressionManager {
1201
1158
  const childPosition = existingChild.position;
1202
1159
  const formulaId = this.generateId();
1203
1160
  // Reparent existing node under formula first (frees position in operator's tracking).
1161
+ // registerFormulaBuffer then occupies the freed position.
1204
1162
  this.reparent(existingNodeId, formulaId, 0);
1205
- // Register formula at the freed position under operator.
1206
- const formulaExpr = this.attachChecksum({
1207
- id: formulaId,
1208
- type: "formula",
1209
- argumentId: operator.argumentId,
1210
- argumentVersion: operator.argumentVersion,
1211
- premiseId: operator
1212
- .premiseId,
1213
- parentId: operator.id,
1214
- position: childPosition,
1215
- });
1216
- this.expressions.set(formulaId, formulaExpr);
1217
- this.collector?.addedExpression({
1218
- ...formulaExpr,
1219
- });
1220
- getOrCreate(this.childExpressionIdsByParentId, operator.id, () => new Set()).add(formulaId);
1221
- getOrCreate(this.childPositionsByParentId, operator.id, () => new Set()).add(childPosition);
1163
+ this.registerFormulaBuffer(operator, operator.id, childPosition, formulaId);
1222
1164
  }
1223
1165
  // Site 3: auto-insert formula buffer between operator and new sibling.
1224
1166
  if (siblingNeedsFormulaBuffer) {
@@ -1226,24 +1168,9 @@ export class ExpressionManager {
1226
1168
  const childPosition = siblingChild.position;
1227
1169
  const formulaId = this.generateId();
1228
1170
  // Reparent sibling under formula first (frees position in operator's tracking).
1171
+ // registerFormulaBuffer then occupies the freed position.
1229
1172
  this.reparent(newSibling.id, formulaId, 0);
1230
- // Register formula at the freed position under operator.
1231
- const formulaExpr = this.attachChecksum({
1232
- id: formulaId,
1233
- type: "formula",
1234
- argumentId: operator.argumentId,
1235
- argumentVersion: operator.argumentVersion,
1236
- premiseId: operator
1237
- .premiseId,
1238
- parentId: operator.id,
1239
- position: childPosition,
1240
- });
1241
- this.expressions.set(formulaId, formulaExpr);
1242
- this.collector?.addedExpression({
1243
- ...formulaExpr,
1244
- });
1245
- getOrCreate(this.childExpressionIdsByParentId, operator.id, () => new Set()).add(formulaId);
1246
- getOrCreate(this.childPositionsByParentId, operator.id, () => new Set()).add(childPosition);
1173
+ this.registerFormulaBuffer(operator, operator.id, childPosition, formulaId);
1247
1174
  }
1248
1175
  // Mark the new operator (and ancestors), the new sibling, and the reparented existing node dirty.
1249
1176
  // reparent() already marks the existing node dirty; mark the operator and sibling as well.
@@ -1273,18 +1200,7 @@ export class ExpressionManager {
1273
1200
  if (children.length > 0) {
1274
1201
  throw new Error(`Cannot delete expression "${expressionId}" — it still has ${children.length} children. Reparent them first.`);
1275
1202
  }
1276
- // Detach from parent
1277
- this.childExpressionIdsByParentId
1278
- .get(expression.parentId)
1279
- ?.delete(expressionId);
1280
- this.childPositionsByParentId
1281
- .get(expression.parentId)
1282
- ?.delete(expression.position);
1283
- // Remove own tracking
1284
- this.childExpressionIdsByParentId.delete(expressionId);
1285
- this.childPositionsByParentId.delete(expressionId);
1286
- // Remove from store
1287
- this.expressions.delete(expressionId);
1203
+ this.detachExpression(expressionId, expression);
1288
1204
  // Notify collector
1289
1205
  this.collector?.removedExpression({
1290
1206
  ...expression,