@orcalang/orca-lang 0.1.18 → 0.1.19

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 (45) hide show
  1. package/dist/compiler/dt-compiler.d.ts +23 -0
  2. package/dist/compiler/dt-compiler.d.ts.map +1 -0
  3. package/dist/compiler/dt-compiler.js +183 -0
  4. package/dist/compiler/dt-compiler.js.map +1 -0
  5. package/dist/health-check.d.ts +3 -0
  6. package/dist/health-check.d.ts.map +1 -0
  7. package/dist/health-check.js +235 -0
  8. package/dist/health-check.js.map +1 -0
  9. package/dist/parser/ast.d.ts +2 -0
  10. package/dist/parser/ast.d.ts.map +1 -1
  11. package/dist/parser/dt-ast.d.ts +43 -0
  12. package/dist/parser/dt-ast.d.ts.map +1 -0
  13. package/dist/parser/dt-ast.js +3 -0
  14. package/dist/parser/dt-ast.js.map +1 -0
  15. package/dist/parser/dt-parser.d.ts +40 -0
  16. package/dist/parser/dt-parser.d.ts.map +1 -0
  17. package/dist/parser/dt-parser.js +240 -0
  18. package/dist/parser/dt-parser.js.map +1 -0
  19. package/dist/parser/markdown-parser.d.ts.map +1 -1
  20. package/dist/parser/markdown-parser.js +29 -4
  21. package/dist/parser/markdown-parser.js.map +1 -1
  22. package/dist/skills.d.ts +49 -1
  23. package/dist/skills.d.ts.map +1 -1
  24. package/dist/skills.js +223 -0
  25. package/dist/skills.js.map +1 -1
  26. package/dist/tools.d.ts.map +1 -1
  27. package/dist/tools.js +49 -0
  28. package/dist/tools.js.map +1 -1
  29. package/dist/verifier/dt-verifier.d.ts +5 -0
  30. package/dist/verifier/dt-verifier.d.ts.map +1 -0
  31. package/dist/verifier/dt-verifier.js +499 -0
  32. package/dist/verifier/dt-verifier.js.map +1 -0
  33. package/dist/verifier/types.d.ts +4 -0
  34. package/dist/verifier/types.d.ts.map +1 -1
  35. package/package.json +3 -2
  36. package/src/compiler/dt-compiler.ts +232 -0
  37. package/src/health-check.ts +273 -0
  38. package/src/parser/ast.ts +3 -0
  39. package/src/parser/dt-ast.ts +40 -0
  40. package/src/parser/dt-parser.ts +289 -0
  41. package/src/parser/markdown-parser.ts +32 -5
  42. package/src/skills.ts +274 -1
  43. package/src/tools.ts +53 -0
  44. package/src/verifier/dt-verifier.ts +562 -0
  45. package/src/verifier/types.ts +4 -0
@@ -0,0 +1,499 @@
1
+ // Decision Table Verifier
2
+ // Checks: completeness, consistency, redundancy, and structural integrity
3
+ // Helper to get all values for a condition
4
+ function getConditionValues(condition) {
5
+ if (condition.type === 'bool') {
6
+ return condition.values.length > 0 ? condition.values : ['true', 'false'];
7
+ }
8
+ return condition.values;
9
+ }
10
+ // Check if a cell matches a given value
11
+ function cellMatches(cell, value) {
12
+ switch (cell.kind) {
13
+ case 'any':
14
+ return true;
15
+ case 'exact':
16
+ return cell.value === value;
17
+ case 'negated':
18
+ return cell.value !== value;
19
+ case 'set':
20
+ return cell.values.includes(value);
21
+ }
22
+ }
23
+ // Check if a rule's conditions cover a specific input combination
24
+ function ruleMatchesInput(rule, conditionDefs, input) {
25
+ for (const cond of conditionDefs) {
26
+ const cell = rule.conditions.get(cond.name);
27
+ if (!cell)
28
+ continue; // No condition for this column means "any"
29
+ const expectedValue = input.get(cond.name);
30
+ if (!cellMatches(cell, expectedValue || '')) {
31
+ return false;
32
+ }
33
+ }
34
+ return true;
35
+ }
36
+ // Check if two rules overlap (can match the same input)
37
+ function rulesOverlap(rule1, rule2, conditionDefs) {
38
+ for (const cond of conditionDefs) {
39
+ const cell1 = rule1.conditions.get(cond.name);
40
+ const cell2 = rule2.conditions.get(cond.name);
41
+ // If either rule doesn't constrain this condition, they overlap on it
42
+ if (!cell1 || cell1.kind === 'any')
43
+ continue;
44
+ if (!cell2 || cell2.kind === 'any')
45
+ continue;
46
+ // Check if cells intersect
47
+ if (!cellsIntersect(cell1, cell2)) {
48
+ return false; // No overlap on this condition means no overall overlap
49
+ }
50
+ }
51
+ return true; // All constrained conditions intersect
52
+ }
53
+ // Check if two cells intersect (can match the same value)
54
+ function cellsIntersect(cell1, cell2) {
55
+ // Any intersects with everything
56
+ if (cell1.kind === 'any' || cell2.kind === 'any')
57
+ return true;
58
+ // Exact vs Exact
59
+ if (cell1.kind === 'exact' && cell2.kind === 'exact') {
60
+ return cell1.value === cell2.value;
61
+ }
62
+ // Exact vs Negated
63
+ if (cell1.kind === 'exact' && cell2.kind === 'negated') {
64
+ return cell2.value !== cell1.value;
65
+ }
66
+ if (cell1.kind === 'negated' && cell2.kind === 'exact') {
67
+ return cell1.value !== cell2.value;
68
+ }
69
+ // Exact vs Set
70
+ if (cell1.kind === 'exact' && cell2.kind === 'set') {
71
+ return cell2.values.includes(cell1.value);
72
+ }
73
+ if (cell1.kind === 'set' && cell2.kind === 'exact') {
74
+ return cell1.values.includes(cell2.value);
75
+ }
76
+ // Negated vs Negated
77
+ if (cell1.kind === 'negated' && cell2.kind === 'negated') {
78
+ return cell1.value !== cell2.value;
79
+ }
80
+ // Negated vs Set
81
+ if (cell1.kind === 'negated' && cell2.kind === 'set') {
82
+ return !cell2.values.includes(cell1.value);
83
+ }
84
+ if (cell1.kind === 'set' && cell2.kind === 'negated') {
85
+ return !cell1.values.includes(cell2.value);
86
+ }
87
+ // Set vs Set
88
+ if (cell1.kind === 'set' && cell2.kind === 'set') {
89
+ return cell1.values.some(v => cell2.values.includes(v));
90
+ }
91
+ return true;
92
+ }
93
+ // Generate all possible combinations of condition values
94
+ function generateCombinations(conditionDefs) {
95
+ const combinations = [];
96
+ const values = conditionDefs.map(c => getConditionValues(c));
97
+ function* cartesian(index, current) {
98
+ if (index === conditionDefs.length) {
99
+ yield new Map(current);
100
+ return;
101
+ }
102
+ const condName = conditionDefs[index].name;
103
+ for (const val of values[index]) {
104
+ current.set(condName, val);
105
+ yield* cartesian(index + 1, current);
106
+ current.delete(condName);
107
+ }
108
+ }
109
+ return [...cartesian(0, new Map())];
110
+ }
111
+ // Find which rules match a given input
112
+ function findMatchingRules(dt, input) {
113
+ return dt.rules.filter(rule => ruleMatchesInput(rule, dt.conditions, input));
114
+ }
115
+ // Check if two rules produce the same action outputs
116
+ function actionsMatch(rule1, rule2, actionNames) {
117
+ for (const actionName of actionNames) {
118
+ const val1 = rule1.actions.get(actionName);
119
+ const val2 = rule2.actions.get(actionName);
120
+ if (val1 !== val2)
121
+ return false;
122
+ }
123
+ return true;
124
+ }
125
+ // ============================================================
126
+ // Structural Checks
127
+ // ============================================================
128
+ function checkStructural(dt) {
129
+ const errors = [];
130
+ // DT_NO_CONDITIONS
131
+ if (dt.conditions.length === 0) {
132
+ errors.push({
133
+ code: 'DT_NO_CONDITIONS',
134
+ message: 'Decision table has no conditions declared',
135
+ severity: 'error',
136
+ location: { decisionTable: dt.name },
137
+ suggestion: 'Add a ## conditions section with at least one condition',
138
+ });
139
+ }
140
+ // DT_NO_ACTIONS
141
+ if (dt.actions.length === 0) {
142
+ errors.push({
143
+ code: 'DT_NO_ACTIONS',
144
+ message: 'Decision table has no actions declared',
145
+ severity: 'error',
146
+ location: { decisionTable: dt.name },
147
+ suggestion: 'Add an ## actions section with at least one action',
148
+ });
149
+ }
150
+ // DT_EMPTY_RULES
151
+ if (dt.rules.length === 0) {
152
+ errors.push({
153
+ code: 'DT_EMPTY_RULES',
154
+ message: 'Decision table has no rules',
155
+ severity: 'warning',
156
+ location: { decisionTable: dt.name },
157
+ suggestion: 'Add rules to the ## rules section',
158
+ });
159
+ return errors; // No point checking rule content if there are no rules
160
+ }
161
+ const conditionNames = new Set(dt.conditions.map(c => c.name));
162
+ const actionNames = new Set(dt.actions.map(a => a.name));
163
+ const ruleConditionNames = new Set();
164
+ const ruleActionNames = new Set();
165
+ // Check each rule
166
+ for (let ruleIdx = 0; ruleIdx < dt.rules.length; ruleIdx++) {
167
+ const rule = dt.rules[ruleIdx];
168
+ const ruleNum = rule.number ?? ruleIdx + 1;
169
+ // Check condition columns
170
+ for (const [condName] of rule.conditions) {
171
+ ruleConditionNames.add(condName);
172
+ // DT_UNKNOWN_CONDITION_COLUMN
173
+ if (!conditionNames.has(condName)) {
174
+ errors.push({
175
+ code: 'DT_UNKNOWN_CONDITION_COLUMN',
176
+ message: `Rule ${ruleNum} has unknown condition column "${condName}"`,
177
+ severity: 'warning',
178
+ location: { decisionTable: dt.name, rule: ruleNum, condition: condName },
179
+ suggestion: `Remove or rename the column to match a declared condition`,
180
+ });
181
+ }
182
+ else {
183
+ // DT_UNKNOWN_CONDITION_VALUE
184
+ const cond = dt.conditions.find(c => c.name === condName);
185
+ const cell = rule.conditions.get(condName);
186
+ // Skip value validation for int_range — values are ranges, not enum values
187
+ if (cell.kind !== 'any' && cond.type !== 'string' && cond.type !== 'int_range') {
188
+ const validValues = getConditionValues(cond);
189
+ if (cell.kind === 'exact' && !validValues.includes(cell.value)) {
190
+ errors.push({
191
+ code: 'DT_UNKNOWN_CONDITION_VALUE',
192
+ message: `Rule ${ruleNum} condition "${condName}" has value "${cell.value}" not in declared values`,
193
+ severity: 'error',
194
+ location: { decisionTable: dt.name, rule: ruleNum, condition: condName },
195
+ suggestion: `Change to one of: ${validValues.join(', ')}`,
196
+ });
197
+ }
198
+ else if (cell.kind === 'negated' && !validValues.includes(cell.value)) {
199
+ errors.push({
200
+ code: 'DT_UNKNOWN_CONDITION_VALUE',
201
+ message: `Rule ${ruleNum} condition "${condName}" negates "${cell.value}" which is not in declared values`,
202
+ severity: 'error',
203
+ location: { decisionTable: dt.name, rule: ruleNum, condition: condName },
204
+ suggestion: `Change to negate one of: ${validValues.join(', ')}`,
205
+ });
206
+ }
207
+ else if (cell.kind === 'set') {
208
+ for (const v of cell.values) {
209
+ if (!validValues.includes(v)) {
210
+ errors.push({
211
+ code: 'DT_UNKNOWN_CONDITION_VALUE',
212
+ message: `Rule ${ruleNum} condition "${condName}" has value "${v}" not in declared values`,
213
+ severity: 'error',
214
+ location: { decisionTable: dt.name, rule: ruleNum, condition: condName },
215
+ suggestion: `Change to one of: ${validValues.join(', ')}`,
216
+ });
217
+ }
218
+ }
219
+ }
220
+ }
221
+ }
222
+ }
223
+ // Check action columns
224
+ for (const [actionName] of rule.actions) {
225
+ ruleActionNames.add(actionName);
226
+ // DT_UNKNOWN_ACTION_COLUMN
227
+ if (!actionNames.has(actionName)) {
228
+ errors.push({
229
+ code: 'DT_UNKNOWN_ACTION_COLUMN',
230
+ message: `Rule ${ruleNum} has unknown action column "${actionName}"`,
231
+ severity: 'warning',
232
+ location: { decisionTable: dt.name, rule: ruleNum, action: actionName },
233
+ suggestion: `Remove or rename the column to match a declared action`,
234
+ });
235
+ }
236
+ else {
237
+ // DT_UNKNOWN_ACTION_VALUE
238
+ const action = dt.actions.find(a => a.name === actionName);
239
+ const value = rule.actions.get(actionName);
240
+ if (action.type === 'enum' && action.values) {
241
+ if (!action.values.includes(value)) {
242
+ errors.push({
243
+ code: 'DT_UNKNOWN_ACTION_VALUE',
244
+ message: `Rule ${ruleNum} action "${actionName}" has value "${value}" not in declared values`,
245
+ severity: 'error',
246
+ location: { decisionTable: dt.name, rule: ruleNum, action: actionName },
247
+ suggestion: `Change to one of: ${action.values.join(', ')}`,
248
+ });
249
+ }
250
+ }
251
+ }
252
+ }
253
+ }
254
+ // DT_MISSING_CONDITION_COLUMN
255
+ for (const condName of conditionNames) {
256
+ if (!ruleConditionNames.has(condName)) {
257
+ errors.push({
258
+ code: 'DT_MISSING_CONDITION_COLUMN',
259
+ message: `Condition "${condName}" is declared but has no column in the rules table`,
260
+ severity: 'warning',
261
+ location: { decisionTable: dt.name, condition: condName },
262
+ suggestion: `Add a "${condName}" column to the rules table`,
263
+ });
264
+ }
265
+ }
266
+ // DT_MISSING_ACTION_COLUMN
267
+ for (const actionName of actionNames) {
268
+ if (!ruleActionNames.has(actionName)) {
269
+ errors.push({
270
+ code: 'DT_MISSING_ACTION_COLUMN',
271
+ message: `Action "${actionName}" is declared but has no corresponding column in the rules table`,
272
+ severity: 'warning',
273
+ location: { decisionTable: dt.name, action: actionName },
274
+ suggestion: `Add a "→ ${actionName}" column to the rules table`,
275
+ });
276
+ }
277
+ }
278
+ // DT_DUPLICATE_RULE
279
+ for (let i = 0; i < dt.rules.length; i++) {
280
+ for (let j = i + 1; j < dt.rules.length; j++) {
281
+ const rule1 = dt.rules[i];
282
+ const rule2 = dt.rules[j];
283
+ // Check if conditions are identical
284
+ let identical = true;
285
+ if (rule1.conditions.size !== rule2.conditions.size) {
286
+ identical = false;
287
+ }
288
+ else {
289
+ for (const [name, cell1] of rule1.conditions) {
290
+ const cell2 = rule2.conditions.get(name);
291
+ if (!cell2 || !cellsEqual(cell1, cell2)) {
292
+ identical = false;
293
+ break;
294
+ }
295
+ }
296
+ }
297
+ if (identical) {
298
+ const rule1Num = rule1.number ?? i + 1;
299
+ const rule2Num = rule2.number ?? j + 1;
300
+ errors.push({
301
+ code: 'DT_DUPLICATE_RULE',
302
+ message: `Rule ${rule1Num} and Rule ${rule2Num} have identical condition patterns`,
303
+ severity: 'warning',
304
+ location: { decisionTable: dt.name, rule: rule2Num },
305
+ suggestion: `Remove or modify one of the duplicate rules`,
306
+ });
307
+ }
308
+ }
309
+ }
310
+ return errors;
311
+ }
312
+ function cellsEqual(cell1, cell2) {
313
+ if (cell1.kind !== cell2.kind)
314
+ return false;
315
+ // Now cell1 and cell2 have the same kind, narrow both
316
+ const kind = cell1.kind;
317
+ if (kind === 'any')
318
+ return true;
319
+ if (kind === 'exact') {
320
+ return cell1.value === cell2.value;
321
+ }
322
+ if (kind === 'negated') {
323
+ return cell1.value === cell2.value;
324
+ }
325
+ if (kind === 'set') {
326
+ const s1 = cell1;
327
+ const s2 = cell2;
328
+ return s1.values.length === s2.values.length && s1.values.every(v => s2.values.includes(v));
329
+ }
330
+ return true;
331
+ }
332
+ // ============================================================
333
+ // Completeness Check
334
+ // ============================================================
335
+ function checkCompleteness(dt) {
336
+ const errors = [];
337
+ if (dt.conditions.length === 0)
338
+ return errors; // Already reported in structural
339
+ // int_range conditions cannot be exhaustively enumerated — skip completeness check
340
+ if (dt.conditions.some(c => c.type === 'int_range')) {
341
+ errors.push({
342
+ code: 'DT_COMPLETENESS_SKIPPED',
343
+ message: 'Completeness check skipped: int_range conditions cannot be exhaustively enumerated',
344
+ severity: 'warning',
345
+ location: { decisionTable: dt.name },
346
+ suggestion: 'Manually verify that all numeric ranges are covered without gaps',
347
+ });
348
+ return errors;
349
+ }
350
+ // Calculate total combinations for enum/bool conditions
351
+ let totalCombinations = 1;
352
+ for (const cond of dt.conditions) {
353
+ const values = getConditionValues(cond);
354
+ if (values.length === 0) {
355
+ totalCombinations = Infinity;
356
+ break;
357
+ }
358
+ totalCombinations *= values.length;
359
+ if (totalCombinations > 4096)
360
+ break;
361
+ }
362
+ if (totalCombinations > 4096) {
363
+ errors.push({
364
+ code: 'DT_COMPLETENESS_SKIPPED',
365
+ message: `Completeness check skipped: ${totalCombinations} combinations exceed limit of 4096`,
366
+ severity: 'warning',
367
+ location: { decisionTable: dt.name },
368
+ suggestion: 'Consider simplifying conditions or using wildcards to reduce combination count',
369
+ });
370
+ return errors;
371
+ }
372
+ // Generate all combinations and check coverage
373
+ const combinations = generateCombinations(dt.conditions);
374
+ const actionNames = dt.actions.map(a => a.name);
375
+ for (const combo of combinations) {
376
+ const matchingRules = findMatchingRules(dt, combo);
377
+ if (matchingRules.length === 0) {
378
+ const comboDesc = [...combo.entries()].map(([k, v]) => `${k}=${v}`).join(', ');
379
+ errors.push({
380
+ code: 'DT_INCOMPLETE',
381
+ message: `Missing coverage for: ${comboDesc}`,
382
+ severity: 'error',
383
+ location: { decisionTable: dt.name },
384
+ suggestion: `Add a rule to cover this condition combination`,
385
+ });
386
+ }
387
+ }
388
+ return errors;
389
+ }
390
+ // ============================================================
391
+ // Consistency Check
392
+ // ============================================================
393
+ function checkConsistency(dt) {
394
+ const errors = [];
395
+ const isAllMatch = dt.policy === 'all-match';
396
+ for (let i = 0; i < dt.rules.length; i++) {
397
+ for (let j = i + 1; j < dt.rules.length; j++) {
398
+ const rule1 = dt.rules[i];
399
+ const rule2 = dt.rules[j];
400
+ // Check if rules overlap
401
+ if (!rulesOverlap(rule1, rule2, dt.conditions))
402
+ continue;
403
+ // Rules overlap - check if actions agree
404
+ const actionNames = dt.actions.map(a => a.name);
405
+ const actionsAgree = actionsMatch(rule1, rule2, actionNames);
406
+ if (!actionsAgree) {
407
+ const rule1Num = rule1.number ?? i + 1;
408
+ const rule2Num = rule2.number ?? j + 1;
409
+ const severity = isAllMatch ? 'error' : 'warning';
410
+ const code = isAllMatch ? 'DT_INCONSISTENT' : 'DT_INCONSISTENT';
411
+ const overlappingConditions = [];
412
+ for (const cond of dt.conditions) {
413
+ const cell1 = rule1.conditions.get(cond.name);
414
+ const cell2 = rule2.conditions.get(cond.name);
415
+ if (cell1 && cell2 && cellsIntersect(cell1, cell2)) {
416
+ overlappingConditions.push(cond.name);
417
+ }
418
+ }
419
+ errors.push({
420
+ code,
421
+ message: `Rules ${rule1Num} and ${rule2Num} can match the same input but produce different results`,
422
+ severity,
423
+ location: { decisionTable: dt.name, rule: rule2Num },
424
+ suggestion: `For ${isAllMatch ? 'all-match' : 'first-match'} policy: review overlapping rules on conditions: ${overlappingConditions.join(', ')}`,
425
+ });
426
+ }
427
+ }
428
+ }
429
+ return errors;
430
+ }
431
+ // ============================================================
432
+ // Redundancy Check
433
+ // ============================================================
434
+ function checkRedundancy(dt) {
435
+ const errors = [];
436
+ // For each rule, check if it's fully covered by earlier rules with same actions
437
+ for (let ruleIdx = 1; ruleIdx < dt.rules.length; ruleIdx++) {
438
+ const rule = dt.rules[ruleIdx];
439
+ const ruleNum = rule.number ?? ruleIdx + 1;
440
+ const actionNames = dt.actions.map(a => a.name);
441
+ // A rule is redundant if at least one earlier rule overlaps it AND all overlapping
442
+ // earlier rules produce the same actions (meaning first-match would always hit them first
443
+ // with an identical result, so this rule can never change the outcome).
444
+ let hasOverlappingPredecessor = false;
445
+ let allOverlappingHaveSameActions = true;
446
+ for (let prevIdx = 0; prevIdx < ruleIdx; prevIdx++) {
447
+ const prevRule = dt.rules[prevIdx];
448
+ if (!rulesOverlap(prevRule, rule, dt.conditions))
449
+ continue;
450
+ hasOverlappingPredecessor = true;
451
+ if (!actionsMatch(prevRule, rule, actionNames)) {
452
+ allOverlappingHaveSameActions = false;
453
+ break;
454
+ }
455
+ }
456
+ if (hasOverlappingPredecessor && allOverlappingHaveSameActions) {
457
+ errors.push({
458
+ code: 'DT_REDUNDANT',
459
+ message: `Rule ${ruleNum} is redundant — earlier rules cover all its cases with the same actions`,
460
+ severity: 'warning',
461
+ location: { decisionTable: dt.name, rule: ruleNum },
462
+ suggestion: `Remove this rule or make it more specific`,
463
+ });
464
+ }
465
+ }
466
+ return errors;
467
+ }
468
+ // ============================================================
469
+ // Main Verifier
470
+ // ============================================================
471
+ export function verifyDecisionTable(dt) {
472
+ const errors = [];
473
+ // Run structural checks first
474
+ errors.push(...checkStructural(dt));
475
+ // Run semantic checks (only if basic structure is valid)
476
+ const hasNoConditions = dt.conditions.length === 0;
477
+ const hasNoActions = dt.actions.length === 0;
478
+ if (!hasNoConditions && !hasNoActions) {
479
+ errors.push(...checkCompleteness(dt));
480
+ errors.push(...checkConsistency(dt));
481
+ errors.push(...checkRedundancy(dt));
482
+ }
483
+ return {
484
+ valid: !errors.some(e => e.severity === 'error'),
485
+ errors,
486
+ };
487
+ }
488
+ export function verifyDecisionTables(dts) {
489
+ const allErrors = [];
490
+ for (const dt of dts) {
491
+ const result = verifyDecisionTable(dt);
492
+ allErrors.push(...result.errors);
493
+ }
494
+ return {
495
+ valid: !allErrors.some(e => e.severity === 'error'),
496
+ errors: allErrors,
497
+ };
498
+ }
499
+ //# sourceMappingURL=dt-verifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dt-verifier.js","sourceRoot":"","sources":["../../src/verifier/dt-verifier.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,0EAA0E;AAK1E,2CAA2C;AAC3C,SAAS,kBAAkB,CAAC,SAAuB;IACjD,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,SAAS,CAAC,MAAM,CAAC;AAC1B,CAAC;AAED,wCAAwC;AACxC,SAAS,WAAW,CAAC,IAAe,EAAE,KAAa;IACjD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,KAAK;YACR,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;QAC9B,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;QAC9B,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,kEAAkE;AAClE,SAAS,gBAAgB,CAAC,IAAU,EAAE,aAA6B,EAAE,KAA0B;IAC7F,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,SAAS,CAAC,2CAA2C;QAChE,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,IAAI,EAAE,CAAC,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wDAAwD;AACxD,SAAS,YAAY,CAAC,KAAW,EAAE,KAAW,EAAE,aAA6B;IAC3E,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9C,sEAAsE;QACtE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK;YAAE,SAAS;QAC7C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK;YAAE,SAAS;QAE7C,2BAA2B;QAC3B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC,CAAC,wDAAwD;QACxE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,CAAC,uCAAuC;AACtD,CAAC;AAED,0DAA0D;AAC1D,SAAS,cAAc,CAAC,KAAgB,EAAE,KAAgB;IACxD,iCAAiC;IACjC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAE9D,iBAAiB;IACjB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;IACrC,CAAC;IAED,mBAAmB;IACnB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACvD,OAAO,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;IACrC,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvD,OAAO,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;IACrC,CAAC;IAED,eAAe;IACf,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,qBAAqB;IACrB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;IACrC,CAAC;IAED,iBAAiB;IACjB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,aAAa;IACb,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,yDAAyD;AACzD,SAAS,oBAAoB,CAAC,aAA6B;IACzD,MAAM,YAAY,GAA0B,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7D,QAAQ,CAAC,CAAC,SAAS,CAAC,KAAa,EAAE,OAA4B;QAC7D,IAAI,KAAK,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC3B,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,uCAAuC;AACvC,SAAS,iBAAiB,CAAC,EAAoB,EAAE,KAA0B;IACzE,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,qDAAqD;AACrD,SAAS,YAAY,CAAC,KAAW,EAAE,KAAW,EAAE,WAAqB;IACnE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+DAA+D;AAC/D,oBAAoB;AACpB,+DAA+D;AAE/D,SAAS,eAAe,CAAC,EAAoB;IAC3C,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,mBAAmB;IACnB,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,2CAA2C;YACpD,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE;YACpC,UAAU,EAAE,yDAAyD;SACtE,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,wCAAwC;YACjD,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE;YACpC,UAAU,EAAE,oDAAoD;SACjE,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB;IACjB,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,6BAA6B;YACtC,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE;YACpC,UAAU,EAAE,mCAAmC;SAChD,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,CAAC,uDAAuD;IACxE,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7C,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAE1C,kBAAkB;IAClB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,CAAC;QAE3C,0BAA0B;QAC1B,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACzC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEjC,8BAA8B;YAC9B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,6BAA6B;oBACnC,OAAO,EAAE,QAAQ,OAAO,kCAAkC,QAAQ,GAAG;oBACrE,QAAQ,EAAE,SAAS;oBACnB,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;oBACxE,UAAU,EAAE,2DAA2D;iBACxE,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,6BAA6B;gBAC7B,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAE,CAAC;gBAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;gBAE5C,2EAA2E;gBAC3E,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAC/E,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC/D,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,4BAA4B;4BAClC,OAAO,EAAE,QAAQ,OAAO,eAAe,QAAQ,gBAAgB,IAAI,CAAC,KAAK,0BAA0B;4BACnG,QAAQ,EAAE,OAAO;4BACjB,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;4BACxE,UAAU,EAAE,qBAAqB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;yBAC1D,CAAC,CAAC;oBACL,CAAC;yBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBACxE,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,4BAA4B;4BAClC,OAAO,EAAE,QAAQ,OAAO,eAAe,QAAQ,cAAc,IAAI,CAAC,KAAK,mCAAmC;4BAC1G,QAAQ,EAAE,OAAO;4BACjB,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;4BACxE,UAAU,EAAE,4BAA4B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;yBACjE,CAAC,CAAC;oBACL,CAAC;yBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;wBAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;4BAC5B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gCAC7B,MAAM,CAAC,IAAI,CAAC;oCACV,IAAI,EAAE,4BAA4B;oCAClC,OAAO,EAAE,QAAQ,OAAO,eAAe,QAAQ,gBAAgB,CAAC,0BAA0B;oCAC1F,QAAQ,EAAE,OAAO;oCACjB,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;oCACxE,UAAU,EAAE,qBAAqB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iCAC1D,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,KAAK,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAEhC,2BAA2B;YAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,0BAA0B;oBAChC,OAAO,EAAE,QAAQ,OAAO,+BAA+B,UAAU,GAAG;oBACpE,QAAQ,EAAE,SAAS;oBACnB,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE;oBACvE,UAAU,EAAE,wDAAwD;iBACrE,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,0BAA0B;gBAC1B,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAE,CAAC;gBAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC;gBAE5C,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBACnC,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,yBAAyB;4BAC/B,OAAO,EAAE,QAAQ,OAAO,YAAY,UAAU,gBAAgB,KAAK,0BAA0B;4BAC7F,QAAQ,EAAE,OAAO;4BACjB,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE;4BACvE,UAAU,EAAE,qBAAqB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;yBAC5D,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;QACtC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,6BAA6B;gBACnC,OAAO,EAAE,cAAc,QAAQ,oDAAoD;gBACnF,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE;gBACzD,UAAU,EAAE,UAAU,QAAQ,6BAA6B;aAC5D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,0BAA0B;gBAChC,OAAO,EAAE,WAAW,UAAU,kEAAkE;gBAChG,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE;gBACxD,UAAU,EAAE,YAAY,UAAU,6BAA6B;aAChE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAE1B,oCAAoC;YACpC,IAAI,SAAS,GAAG,IAAI,CAAC;YACrB,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBACpD,SAAS,GAAG,KAAK,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;oBAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACzC,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;wBACxC,SAAS,GAAG,KAAK,CAAC;wBAClB,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;gBACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,QAAQ,QAAQ,aAAa,QAAQ,oCAAoC;oBAClF,QAAQ,EAAE,SAAS;oBACnB,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACpD,UAAU,EAAE,6CAA6C;iBAC1D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,KAAgB,EAAE,KAAgB;IACpD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5C,sDAAsD;IACtD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAQ,KAA0C,CAAC,KAAK,KAAM,KAA0C,CAAC,KAAK,CAAC;IACjH,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAQ,KAA4C,CAAC,KAAK,KAAM,KAA4C,CAAC,KAAK,CAAC;IACrH,CAAC;IACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,MAAM,EAAE,GAAG,KAA0C,CAAC;QACtD,MAAM,EAAE,GAAG,KAA0C,CAAC;QACtD,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+DAA+D;AAC/D,qBAAqB;AACrB,+DAA+D;AAE/D,SAAS,iBAAiB,CAAC,EAAoB;IAC7C,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,iCAAiC;IAEhF,mFAAmF;IACnF,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,oFAAoF;YAC7F,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE;YACpC,UAAU,EAAE,kEAAkE;SAC/E,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wDAAwD;IACxD,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,iBAAiB,GAAG,QAAQ,CAAC;YAC7B,MAAM;QACR,CAAC;QACD,iBAAiB,IAAI,MAAM,CAAC,MAAM,CAAC;QACnC,IAAI,iBAAiB,GAAG,IAAI;YAAE,MAAM;IACtC,CAAC;IAED,IAAI,iBAAiB,GAAG,IAAI,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,+BAA+B,iBAAiB,oCAAoC;YAC7F,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE;YACpC,UAAU,EAAE,gFAAgF;SAC7F,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,+CAA+C;IAC/C,MAAM,YAAY,GAAG,oBAAoB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEhD,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,iBAAiB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAEnD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/E,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,yBAAyB,SAAS,EAAE;gBAC7C,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE;gBACpC,UAAU,EAAE,gDAAgD;aAC7D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+DAA+D;AAC/D,oBAAoB;AACpB,+DAA+D;AAE/D,SAAS,gBAAgB,CAAC,EAAoB;IAC5C,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,EAAE,CAAC,MAAM,KAAK,WAAW,CAAC;IAE7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAE1B,yBAAyB;YACzB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC;gBAAE,SAAS;YAEzD,yCAAyC;YACzC,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAE7D,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;gBACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;gBACvC,MAAM,QAAQ,GAAa,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5D,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC;gBAEhE,MAAM,qBAAqB,GAAa,EAAE,CAAC;gBAC7C,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;oBACjC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC9C,IAAI,KAAK,IAAI,KAAK,IAAI,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;wBACnD,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxC,CAAC;gBACH,CAAC;gBAEC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI;oBACJ,OAAO,EAAE,SAAS,QAAQ,QAAQ,QAAQ,yDAAyD;oBACnG,QAAQ;oBACR,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACpD,UAAU,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,oDAAoD,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBAClJ,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D,SAAS,eAAe,CAAC,EAAoB;IAC3C,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,gFAAgF;IAChF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEhD,mFAAmF;QACnF,0FAA0F;QAC1F,wEAAwE;QACxE,IAAI,yBAAyB,GAAG,KAAK,CAAC;QACtC,IAAI,6BAA6B,GAAG,IAAI,CAAC;QAEzC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEnC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC;gBAAE,SAAS;YAE3D,yBAAyB,GAAG,IAAI,CAAC;YAEjC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;gBAC/C,6BAA6B,GAAG,KAAK,CAAC;gBACtC,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,yBAAyB,IAAI,6BAA6B,EAAE,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,QAAQ,OAAO,yEAAyE;gBACjG,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;gBACnD,UAAU,EAAE,2CAA2C;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+DAA+D;AAC/D,gBAAgB;AAChB,+DAA+D;AAE/D,MAAM,UAAU,mBAAmB,CAAC,EAAoB;IACtD,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,8BAA8B;IAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;IAEpC,yDAAyD;IACzD,MAAM,eAAe,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;IAE7C,IAAI,CAAC,eAAe,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC;QAChD,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAuB;IAC1D,MAAM,SAAS,GAAwB,EAAE,CAAC;IAE1C,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACvC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,OAAO;QACL,KAAK,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC;QACnD,MAAM,EAAE,SAAS;KAClB,CAAC;AACJ,CAAC"}
@@ -8,6 +8,10 @@ export interface VerificationError {
8
8
  state?: string;
9
9
  event?: string;
10
10
  transition?: Transition;
11
+ rule?: number;
12
+ condition?: string;
13
+ action?: string;
14
+ decisionTable?: string;
11
15
  };
12
16
  suggestion?: string;
13
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/verifier/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEpE,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,YAAY,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,QAAQ,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACvC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/verifier/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEpE,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,YAAY,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,QAAQ,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACvC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orcalang/orca-lang",
3
- "version": "0.1.18",
3
+ "version": "0.1.19",
4
4
  "description": "Orca (Orchestrated State Machine Language) - an LLM-native code generation target",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -43,6 +43,7 @@
43
43
  "test": "vitest run",
44
44
  "test:watch": "vitest",
45
45
  "verify": "tsx src/index.ts verify",
46
- "compile": "tsx src/index.ts compile"
46
+ "compile": "tsx src/index.ts compile",
47
+ "health-check": "tsx src/health-check.ts"
47
48
  }
48
49
  }