@ldclabs/kip-lang 0.4.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/LICENSE +21 -0
  3. package/README.md +89 -64
  4. package/dist/ast.d.ts +511 -145
  5. package/dist/ast.d.ts.map +1 -1
  6. package/dist/diagnostics.d.ts +8 -2
  7. package/dist/diagnostics.d.ts.map +1 -1
  8. package/dist/diagnostics.js +32 -3
  9. package/dist/diagnostics.js.map +1 -1
  10. package/dist/exec-ast.d.ts +514 -149
  11. package/dist/exec-ast.d.ts.map +1 -1
  12. package/dist/exec-ast.js +8 -7
  13. package/dist/exec-ast.js.map +1 -1
  14. package/dist/formatter.d.ts.map +1 -1
  15. package/dist/formatter.js +870 -479
  16. package/dist/formatter.js.map +1 -1
  17. package/dist/index.d.ts +4 -4
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +2 -2
  20. package/dist/index.js.map +1 -1
  21. package/dist/lexer.d.ts.map +1 -1
  22. package/dist/lexer.js +12 -30
  23. package/dist/lexer.js.map +1 -1
  24. package/dist/lower.d.ts +1 -2
  25. package/dist/lower.d.ts.map +1 -1
  26. package/dist/lower.js +1287 -598
  27. package/dist/lower.js.map +1 -1
  28. package/dist/parser.d.ts.map +1 -1
  29. package/dist/parser.js +2410 -1300
  30. package/dist/parser.js.map +1 -1
  31. package/dist/semantics.d.ts +11 -7
  32. package/dist/semantics.d.ts.map +1 -1
  33. package/dist/semantics.js +295 -180
  34. package/dist/semantics.js.map +1 -1
  35. package/dist/token.d.ts +130 -40
  36. package/dist/token.d.ts.map +1 -1
  37. package/dist/token.js +264 -83
  38. package/dist/token.js.map +1 -1
  39. package/dist/version.d.ts +2 -2
  40. package/dist/version.js +2 -2
  41. package/package.json +35 -5
  42. package/src/ast.ts +914 -0
  43. package/src/budget.ts +108 -0
  44. package/src/diagnostics.ts +182 -0
  45. package/src/errors.ts +42 -0
  46. package/src/exec-ast.ts +614 -0
  47. package/src/formatter.ts +1339 -0
  48. package/src/index.ts +226 -0
  49. package/src/lexer.ts +459 -0
  50. package/src/lower.ts +2011 -0
  51. package/src/parser.ts +3506 -0
  52. package/src/semantics.ts +392 -0
  53. package/src/token.ts +408 -0
  54. package/src/version.ts +13 -0
package/dist/semantics.js CHANGED
@@ -1,11 +1,15 @@
1
1
  /**
2
- * Best-effort static checks layered on top of the syntax parser. These encode
3
- * the spec's SHOULD/MUST rules that are decidable without a live schema:
4
- * - reserved `_` metadata writes (KIP_2002),
5
- * - unbounded associative-recall patterns lacking a LIMIT (KIP_4002),
6
- * - concept-type / predicate naming conventions (KIP_2001, §2.8).
7
- * Everything requiring the graph's schema (undefined types, missing required
8
- * attributes, protected targets) is left to the engine.
2
+ * Best-effort static checks layered on top of the syntax parser.
3
+ *
4
+ * These encode the KIP 2.0 rules that are decidable without a live Schema:
5
+ * - Core registry values written as literals (stance, mode, search mode);
6
+ * - the `[0,1]` ranges Core and the Cognitive Memory Profile fix;
7
+ * - unbounded recall lacking a LIMIT;
8
+ * - local handles referenced inside a mutation plan that nothing binds.
9
+ *
10
+ * Everything requiring the graph's Schema — whether a symbol resolves, whether
11
+ * a field exists, whether a Projection is sufficiently bounded — is left to
12
+ * the engine, which is the only party that knows the active Schema Environment.
9
13
  */
10
14
  export function analyzeSemantics(program) {
11
15
  const diags = [];
@@ -14,215 +18,326 @@ export function analyzeSemantics(program) {
14
18
  }
15
19
  return diags;
16
20
  }
21
+ /** Core registries (Spec §20.13). A Schema Package may not shadow these. */
22
+ const STANCES = new Set(['support', 'reject', 'uncertain']);
23
+ const MODES = new Set([
24
+ 'observed',
25
+ 'stated',
26
+ 'inferred',
27
+ 'predicted',
28
+ 'hypothetical',
29
+ 'imported'
30
+ ]);
31
+ const SEARCH_MODES = new Set(['keyword', 'semantic', 'hybrid']);
32
+ const ASSERTION_STATES = new Set([
33
+ 'active',
34
+ 'retracted',
35
+ 'superseded',
36
+ 'expired'
37
+ ]);
38
+ const ACTIVITY_TERMINAL = new Set(['completed', 'failed', 'cancelled']);
39
+ /** Signals the Profile fixes to `[0,1]`; none of them is truth. */
40
+ const UNIT_INTERVAL_FIELDS = new Set([
41
+ 'confidence',
42
+ 'memory_strength',
43
+ 'salience',
44
+ 'utility',
45
+ 'threshold'
46
+ ]);
17
47
  function analyzeStatement(stmt, diags) {
18
48
  switch (stmt.kind) {
19
49
  case 'FindStatement':
20
- if (stmt.where)
21
- checkWhere(stmt.where, !!stmt.limit, diags);
50
+ checkWhere(stmt.where, !!stmt.limit, diags);
22
51
  break;
23
- case 'UpsertStatement':
24
- checkMetadata(stmt.metadata, diags);
25
- for (const block of stmt.blocks) {
26
- if (block.kind === 'ConceptBlock') {
27
- checkMatcherNaming(block.matcher, diags);
28
- checkMetadata(block.metadata, diags);
29
- for (const item of block.setPropositions?.items ?? []) {
30
- checkPredicateName(item.predicate, item.range, diags);
31
- checkEndpointNaming(item.target, diags);
32
- checkMetadata(item.metadata, diags);
33
- }
34
- }
35
- else {
36
- checkPropositionNaming(block, diags);
37
- checkEndpointNaming(block.subject, diags);
38
- checkEndpointNaming(block.object, diags);
39
- checkMetadata(block.metadata, diags);
40
- }
52
+ case 'MutateStatement':
53
+ checkMutate(stmt, diags);
54
+ for (const clause of stmt.clauses)
55
+ analyzeMutationClause(clause, diags);
56
+ break;
57
+ case 'SearchStatement':
58
+ if (stmt.mode) {
59
+ checkEnum(stmt.mode, SEARCH_MODES, 'SEARCH MODE', diags);
60
+ }
61
+ if (stmt.threshold && stmt.threshold.kind === 'NumberLiteral') {
62
+ checkUnitInterval('THRESHOLD', stmt.threshold.value, stmt.threshold.range, diags);
41
63
  }
42
64
  break;
43
- case 'UpdateStatement':
44
- checkMetadata(stmt.setMetadata, diags);
45
- checkWhere(stmt.where, !!stmt.limit, diags);
65
+ default:
66
+ analyzeMutationClause(stmt, diags);
67
+ }
68
+ }
69
+ function analyzeMutationClause(stmt, diags) {
70
+ switch (stmt.kind) {
71
+ case 'AssertStatement':
72
+ checkAssert(stmt, diags);
73
+ break;
74
+ case 'CreateConceptStatement':
75
+ for (const facet of stmt.setFacets)
76
+ checkFacet(facet, diags);
77
+ break;
78
+ case 'UpsertConceptStatement':
79
+ for (const facet of stmt.setFacets)
80
+ checkFacet(facet, diags);
81
+ break;
82
+ case 'CreateAssertionStatement':
83
+ if (stmt.setFields) {
84
+ checkAssignmentValues(stmt.setFields.assignments, diags);
85
+ }
86
+ for (const facet of stmt.setFacets)
87
+ checkFacet(facet, diags);
46
88
  break;
47
- case 'MergeStatement':
48
- checkWhere(stmt.where, true, diags);
89
+ case 'CreateEvidenceStatement':
90
+ case 'CreateActivityStatement':
91
+ for (const facet of stmt.setFacets)
92
+ checkFacet(facet, diags);
49
93
  break;
50
- case 'DeleteStatement':
94
+ case 'UpdateStatement':
95
+ for (const action of stmt.actions) {
96
+ if (action.kind === 'SetFacetClause')
97
+ checkFacet(action, diags);
98
+ }
51
99
  if (stmt.where)
52
- checkWhere(stmt.where, true, diags);
100
+ checkWhere(stmt.where, !!stmt.limit, diags);
53
101
  break;
54
- case 'ExportStatement':
55
- checkWhere(stmt.where, !!stmt.limit, diags);
102
+ case 'RetractAssertionStatement':
103
+ case 'ArchiveStatement':
104
+ case 'TombstoneStatement':
105
+ if (stmt.expectState) {
106
+ checkEnum(stmt.expectState.value, ASSERTION_STATES, 'EXPECT STATE', diags);
107
+ }
108
+ break;
109
+ case 'TransitionActivityStatement':
110
+ checkEnum(stmt.to, ACTIVITY_TERMINAL, 'TRANSITION ACTIVITY TO', diags);
56
111
  break;
57
112
  }
58
113
  }
59
- // ─── Reserved `_` metadata namespace (KIP_2002) ──────────────────────
60
- function checkMetadata(meta, diags) {
61
- if (!meta)
62
- return;
63
- for (const entry of meta.entries) {
64
- if (entry.key.startsWith('_')) {
65
- diags.push({
66
- range: entry.range,
67
- severity: 'error',
68
- message: `Metadata key '${entry.key}' is in the engine-reserved '_' namespace and is read-only to KML (KIP_2002).`,
69
- code: 'KIP_2002'
70
- });
114
+ /**
115
+ * `by` and `mode` carry the whole epistemic commitment, so a literal that is
116
+ * not in the Core registry is a mistake the toolkit can name now rather than
117
+ * letting the engine reject the whole transaction later.
118
+ */
119
+ function checkAssert(stmt, diags) {
120
+ for (const entry of stmt.assignments.entries) {
121
+ if (entry.key === 'mode') {
122
+ checkEnum(entry.value, MODES, 'ASSERT mode', diags);
71
123
  }
72
- }
73
- }
74
- // ─── Naming conventions (§2.8, KIP_2001) ─────────────────────────────
75
- function checkMatcherNaming(matcher, diags) {
76
- for (const entry of matcher.entries) {
77
- if (entry.key !== 'type')
78
- continue;
79
- const name = literalString(entry);
80
- // Skip parameters, meta-types ($-prefixed), and error placeholders.
81
- if (name == null || name === '' || name.startsWith('$'))
82
- continue;
83
- if (!/^[A-Z][A-Za-z0-9]*$/.test(name)) {
84
- diags.push({
85
- range: entry.range,
86
- severity: 'warning',
87
- message: `Concept type '${name}' should be UpperCamelCase (§2.8); mismatched casing resolves to a different, likely undefined type (KIP_2001).`,
88
- code: 'KIP_2001'
89
- });
124
+ else if (entry.key === 'stance') {
125
+ checkEnum(entry.value, STANCES, 'ASSERT stance', diags);
126
+ }
127
+ else if (entry.key === 'confidence' && entry.value.kind === 'NumberLiteral') {
128
+ checkUnitInterval('confidence', entry.value.value, entry.value.range, diags);
90
129
  }
91
130
  }
92
- }
93
- /** Recurse into a proposition endpoint, checking concept types and nested predicates. */
94
- function checkEndpointNaming(endpoint, diags) {
95
- if (!endpoint)
96
- return;
97
- if (endpoint.kind === 'ConceptPattern') {
98
- checkMatcherNaming(endpoint.matcher, diags);
99
- }
100
- else if (endpoint.kind === 'PropositionPattern') {
101
- checkPropositionNaming(endpoint, diags);
102
- checkEndpointNaming(endpoint.subject, diags);
103
- checkEndpointNaming(endpoint.object, diags);
104
- }
105
- }
106
- function checkPredicateName(predicate, range, diags) {
107
- if (predicate === '')
108
- return;
109
- if (!/^[a-z_][a-z0-9_]*$/.test(predicate)) {
131
+ // An observation with no cited artifact is still a valid Assertion, but it
132
+ // is the shape that most often should have carried Evidence.
133
+ const mode = stmt.assignments.entries.find((e) => e.key === 'mode');
134
+ const hasEvidence = stmt.assignments.entries.some((e) => e.key === 'evidence');
135
+ if (mode &&
136
+ mode.value.kind === 'StringLiteral' &&
137
+ mode.value.parsed === 'observed' &&
138
+ !hasEvidence) {
110
139
  diags.push({
111
- range,
112
- severity: 'warning',
113
- message: `Predicate '${predicate}' should be snake_case (§2.8); mismatched casing resolves to a different, likely undefined predicate (KIP_2001).`,
114
- code: 'KIP_2001'
140
+ range: stmt.assignments.range,
141
+ severity: 'info',
142
+ message: 'mode: "observed" without evidence: an observation normally cites the artifact it was observed from',
143
+ code: 'KIP_2101'
115
144
  });
116
145
  }
117
146
  }
118
- // ─── Unbounded associative recall (KIP_4002) ─────────────────────────
119
- function checkWhere(where, hasLimit, diags) {
120
- const constrained = new Set();
121
- collectConstrainedVars(where.patterns, constrained);
122
- checkPatternNaming(where.patterns, diags);
123
- walkPropositions(where.patterns, (p) => {
124
- if (hasLimit)
125
- return;
126
- if (p.predicate?.kind !== 'PredicateVariable')
127
- return;
128
- if (isUnconstrained(p.subject, constrained) &&
129
- isUnconstrained(p.object, constrained)) {
130
- diags.push({
131
- range: p.range,
132
- severity: 'warning',
133
- message: `Unbounded exploration '(?s, ?p, ?o)' with no constrained endpoint should be paired with a LIMIT (KIP_4002).`,
134
- code: 'KIP_4002'
135
- });
136
- }
137
- });
147
+ function checkFacet(clause, diags) {
148
+ checkAssignmentValues(clause.assignments, diags);
138
149
  }
139
- /** Walk every concept matcher and predicate in a pattern tree for naming checks. */
140
- function checkPatternNaming(patterns, diags) {
141
- for (const p of patterns) {
142
- switch (p.kind) {
143
- case 'ConceptPattern':
144
- checkMatcherNaming(p.matcher, diags);
145
- break;
146
- case 'PropositionPattern':
147
- checkPropositionNaming(p, diags);
148
- checkEndpointNaming(p.subject, diags);
149
- checkEndpointNaming(p.object, diags);
150
- break;
151
- case 'NotClause':
152
- case 'OptionalClause':
153
- case 'UnionClause':
154
- checkPatternNaming(p.patterns, diags);
155
- break;
150
+ function checkAssignmentValues(object, diags) {
151
+ for (const entry of object.entries) {
152
+ if (UNIT_INTERVAL_FIELDS.has(entry.key) &&
153
+ entry.value.kind === 'NumberLiteral') {
154
+ checkUnitInterval(entry.key, entry.value.value, entry.value.range, diags);
156
155
  }
156
+ if (entry.key === 'stance')
157
+ checkEnum(entry.value, STANCES, 'stance', diags);
158
+ if (entry.key === 'mode')
159
+ checkEnum(entry.value, MODES, 'mode', diags);
157
160
  }
158
161
  }
159
- function checkPropositionNaming(p, diags) {
160
- const pred = p.predicate;
161
- if (!pred)
162
+ function checkEnum(value, allowed, label, diags) {
163
+ // A parameter is bound at execution time; only a written literal is checkable.
164
+ if (value.kind !== 'StringLiteral')
165
+ return;
166
+ if (allowed.has(value.parsed))
167
+ return;
168
+ diags.push({
169
+ range: value.range,
170
+ severity: 'error',
171
+ message: `${label} must be one of ${[...allowed].join(', ')}, got "${value.parsed}"`,
172
+ code: 'KIP_2001'
173
+ });
174
+ }
175
+ function checkUnitInterval(field, value, range, diags) {
176
+ if (value >= 0 && value <= 1)
162
177
  return;
163
- if (pred.kind === 'PredicateLiteral') {
164
- checkPredicateName(pred.value, pred.range, diags);
178
+ diags.push({
179
+ range,
180
+ severity: 'error',
181
+ message: `${field} must be within [0, 1], got ${value}`,
182
+ code: 'KIP_2001'
183
+ });
184
+ }
185
+ // ---------------------------------------------------------------------------
186
+ // Handles
187
+ // ---------------------------------------------------------------------------
188
+ /**
189
+ * Handles are block-local and forward references are allowed, so binding is
190
+ * checked against the whole plan rather than in source order. A reference
191
+ * nothing binds is a typo the engine would only find at validation time.
192
+ */
193
+ function checkMutate(stmt, diags) {
194
+ const bound = new Set();
195
+ for (const clause of stmt.clauses) {
196
+ const handle = handleNameOf(clause);
197
+ if (handle)
198
+ bound.add(handle);
165
199
  }
166
- else if (pred.kind === 'PredicateAlternation') {
167
- for (const alt of pred.predicates) {
168
- checkPredicateName(alt.value, alt.range, diags);
200
+ const referenced = [];
201
+ for (const clause of stmt.clauses)
202
+ collectHandleRefs(clause, referenced);
203
+ for (const ref of referenced) {
204
+ if (!bound.has(ref.name)) {
205
+ diags.push({
206
+ range: ref.range,
207
+ severity: 'error',
208
+ message: `?${ref.name} is not bound by any clause in this MUTATE block`,
209
+ code: 'KIP_2102'
210
+ });
169
211
  }
170
212
  }
171
213
  }
172
- /** A variable endpoint is "constrained" if bound elsewhere by type/name/id or a literal-predicate link. */
173
- function isUnconstrained(endpoint, constrained) {
174
- if (!endpoint)
175
- return false;
176
- if (endpoint.kind !== 'VariableRef')
177
- return false; // concept/proposition pattern is itself a constraint
178
- return !constrained.has(endpoint.name);
214
+ function handleNameOf(clause) {
215
+ switch (clause.kind) {
216
+ case 'CreateConceptStatement':
217
+ case 'UpsertConceptStatement':
218
+ case 'CreateEvidenceStatement':
219
+ case 'CreateAssertionStatement':
220
+ case 'CreateActivityStatement':
221
+ return clause.handle.name.slice(1);
222
+ case 'EnsurePropositionStatement':
223
+ case 'AssertStatement':
224
+ return clause.handle ? clause.handle.name.slice(1) : null;
225
+ default:
226
+ return null;
227
+ }
179
228
  }
180
- function collectConstrainedVars(patterns, out) {
181
- for (const p of patterns) {
182
- switch (p.kind) {
183
- case 'ConceptPattern':
184
- if (p.variable && p.matcher.entries.length > 0)
185
- out.add(p.variable);
186
- break;
187
- case 'PropositionPattern':
188
- if (p.predicate?.kind !== 'PredicateVariable') {
189
- addEndpointVar(p.subject, out);
190
- addEndpointVar(p.object, out);
191
- }
192
- break;
193
- case 'NotClause':
194
- case 'OptionalClause':
195
- case 'UnionClause':
196
- collectConstrainedVars(p.patterns, out);
197
- break;
229
+ /** Collects `?handle` uses in value positions, where they must resolve. */
230
+ function collectHandleRefs(clause, out) {
231
+ const fromObject = (object) => {
232
+ if (!object)
233
+ return;
234
+ for (const entry of object.entries)
235
+ fromExpression(entry.value);
236
+ };
237
+ const fromExpression = (expr) => {
238
+ if (expr.kind === 'VariableRef') {
239
+ out.push({ name: expr.name.slice(1), range: expr.range });
198
240
  }
241
+ else if (expr.kind === 'ArrayLiteral') {
242
+ for (const element of expr.elements)
243
+ fromExpression(element);
244
+ }
245
+ else if (expr.kind === 'ObjectLiteral') {
246
+ for (const entry of expr.entries)
247
+ fromExpression(entry.value);
248
+ }
249
+ else if (expr.kind === 'FunctionCallExpr') {
250
+ for (const arg of expr.args)
251
+ fromExpression(arg);
252
+ }
253
+ };
254
+ switch (clause.kind) {
255
+ case 'CreateConceptStatement':
256
+ case 'UpsertConceptStatement':
257
+ fromObject(clause.setFields?.assignments);
258
+ fromObject(clause.setAttributes?.assignments);
259
+ for (const facet of clause.setFacets)
260
+ fromObject(facet.assignments);
261
+ for (const edge of clause.setStructural?.assignments ?? []) {
262
+ fromExpression(edge.value);
263
+ }
264
+ break;
265
+ case 'CreateEvidenceStatement':
266
+ case 'CreateAssertionStatement':
267
+ case 'CreateActivityStatement':
268
+ fromObject(clause.setFields?.assignments);
269
+ for (const facet of clause.setFacets)
270
+ fromObject(facet.assignments);
271
+ for (const edge of clause.setStructural?.assignments ?? []) {
272
+ fromExpression(edge.value);
273
+ }
274
+ break;
275
+ case 'AssertStatement':
276
+ fromObject(clause.assignments);
277
+ if (clause.superseding?.kind === 'VariableRef') {
278
+ out.push({
279
+ name: clause.superseding.name.slice(1),
280
+ range: clause.superseding.range
281
+ });
282
+ }
283
+ break;
284
+ case 'SupersedeAssertionStatement':
285
+ case 'CorrectEvidenceStatement':
286
+ for (const ref of [clause.target, clause.by]) {
287
+ if (ref.kind === 'VariableRef') {
288
+ out.push({ name: ref.name.slice(1), range: ref.range });
289
+ }
290
+ }
291
+ break;
199
292
  }
200
293
  }
201
- function addEndpointVar(endpoint, out) {
202
- if (endpoint?.kind === 'VariableRef')
203
- out.add(endpoint.name);
204
- else if (endpoint?.kind === 'ConceptPattern' && endpoint.variable) {
205
- out.add(endpoint.variable);
294
+ // ---------------------------------------------------------------------------
295
+ // Unbounded recall
296
+ // ---------------------------------------------------------------------------
297
+ function checkWhere(where, hasLimit, diags) {
298
+ if (hasLimit)
299
+ return;
300
+ if (where.patterns.length === 0)
301
+ return;
302
+ // A pattern that constrains nothing enumerates the Space. That is a real
303
+ // query, but at scale it is almost always an omitted LIMIT.
304
+ if (where.patterns.every(isUnconstrained)) {
305
+ diags.push({
306
+ range: where.range,
307
+ severity: 'warning',
308
+ message: 'this pattern constrains nothing and will scan the whole MemorySpace; add a LIMIT or a more specific match',
309
+ code: 'KIP_4002'
310
+ });
206
311
  }
207
312
  }
208
- function walkPropositions(patterns, visit) {
209
- for (const p of patterns) {
210
- switch (p.kind) {
211
- case 'PropositionPattern':
212
- visit(p);
213
- break;
214
- case 'NotClause':
215
- case 'OptionalClause':
216
- case 'UnionClause':
217
- walkPropositions(p.patterns, visit);
218
- break;
219
- }
313
+ function isUnconstrained(pattern) {
314
+ switch (pattern.kind) {
315
+ case 'ConceptPattern':
316
+ return isEmptyMatcher(pattern.matcher);
317
+ case 'AssertionPattern':
318
+ case 'EvidencePattern':
319
+ case 'ActivityPattern':
320
+ return isEmptyMatcher(pattern.matcher);
321
+ case 'PropositionPattern':
322
+ // `(id: ...)` names one Proposition, so it never scans.
323
+ if (pattern.tuple.id)
324
+ return false;
325
+ return (!!pattern.tuple.subject &&
326
+ !!pattern.tuple.object &&
327
+ isOpenTerm(pattern.tuple.subject) &&
328
+ isOpenTerm(pattern.tuple.object));
329
+ default:
330
+ return false;
220
331
  }
221
332
  }
222
- // ─── Helpers ─────────────────────────────────────────────────────────
223
- function literalString(entry) {
224
- return entry.value.kind === 'StringLiteral'
225
- ? entry.value.parsed
226
- : null;
333
+ function isEmptyMatcher(matcher) {
334
+ return matcher.members.length === 0;
335
+ }
336
+ function isOpenTerm(term) {
337
+ if (term.kind === 'VariableRef')
338
+ return true;
339
+ if (term.kind === 'ObjectPattern')
340
+ return term.members.length === 0;
341
+ return false;
227
342
  }
228
343
  //# sourceMappingURL=semantics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"semantics.js","sourceRoot":"","sources":["../src/semantics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"semantics.js","sourceRoot":"","sources":["../src/semantics.ts"],"names":[],"mappings":"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"}