@polintpro/proposit-core 0.5.3 → 0.5.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +172 -1
- package/dist/cli/commands/arguments.d.ts.map +1 -1
- package/dist/cli/commands/arguments.js +33 -5
- package/dist/cli/commands/arguments.js.map +1 -1
- package/dist/cli/commands/claims.d.ts +3 -0
- package/dist/cli/commands/claims.d.ts.map +1 -0
- package/dist/cli/commands/claims.js +120 -0
- package/dist/cli/commands/claims.js.map +1 -0
- package/dist/cli/commands/parse.d.ts +3 -0
- package/dist/cli/commands/parse.d.ts.map +1 -0
- package/dist/cli/commands/parse.js +159 -0
- package/dist/cli/commands/parse.js.map +1 -0
- package/dist/cli/commands/render.d.ts.map +1 -1
- package/dist/cli/commands/render.js +77 -4
- package/dist/cli/commands/render.js.map +1 -1
- package/dist/cli/commands/sources.d.ts +1 -1
- package/dist/cli/commands/sources.d.ts.map +1 -1
- package/dist/cli/commands/sources.js +83 -45
- package/dist/cli/commands/sources.js.map +1 -1
- package/dist/cli/config.d.ts +1 -0
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +3 -0
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/engine.d.ts +14 -1
- package/dist/cli/engine.d.ts.map +1 -1
- package/dist/cli/engine.js +45 -2
- package/dist/cli/engine.js.map +1 -1
- package/dist/cli/import.d.ts +9 -1
- package/dist/cli/import.d.ts.map +1 -1
- package/dist/cli/import.js +22 -4
- package/dist/cli/import.js.map +1 -1
- package/dist/cli/llm/index.d.ts +6 -0
- package/dist/cli/llm/index.d.ts.map +1 -0
- package/dist/cli/llm/index.js +26 -0
- package/dist/cli/llm/index.js.map +1 -0
- package/dist/cli/llm/openai.d.ts +4 -0
- package/dist/cli/llm/openai.d.ts.map +1 -0
- package/dist/cli/llm/openai.js +44 -0
- package/dist/cli/llm/openai.js.map +1 -0
- package/dist/cli/llm/types.d.ts +14 -0
- package/dist/cli/llm/types.d.ts.map +1 -0
- package/dist/cli/llm/types.js +2 -0
- package/dist/cli/llm/types.js.map +1 -0
- package/dist/cli/logging.d.ts +8 -0
- package/dist/cli/logging.d.ts.map +1 -0
- package/dist/cli/logging.js +23 -0
- package/dist/cli/logging.js.map +1 -0
- package/dist/cli/router.d.ts.map +1 -1
- package/dist/cli/router.js +2 -0
- package/dist/cli/router.js.map +1 -1
- package/dist/cli/storage/libraries.d.ts +11 -0
- package/dist/cli/storage/libraries.d.ts.map +1 -0
- package/dist/cli/storage/libraries.js +61 -0
- package/dist/cli/storage/libraries.js.map +1 -0
- package/dist/cli.js +5 -1
- package/dist/cli.js.map +1 -1
- package/dist/extensions/basics/argument-parser.d.ts +12 -0
- package/dist/extensions/basics/argument-parser.d.ts.map +1 -0
- package/dist/extensions/basics/argument-parser.js +27 -0
- package/dist/extensions/basics/argument-parser.js.map +1 -0
- package/dist/extensions/basics/index.d.ts +4 -0
- package/dist/extensions/basics/index.d.ts.map +1 -0
- package/dist/extensions/basics/index.js +3 -0
- package/dist/extensions/basics/index.js.map +1 -0
- package/dist/extensions/basics/schemata.d.ts +31 -0
- package/dist/extensions/basics/schemata.d.ts.map +1 -0
- package/dist/extensions/basics/schemata.js +55 -0
- package/dist/extensions/basics/schemata.js.map +1 -0
- package/dist/lib/core/argument-engine.d.ts +5 -2
- package/dist/lib/core/argument-engine.d.ts.map +1 -1
- package/dist/lib/core/argument-engine.js +20 -24
- package/dist/lib/core/argument-engine.js.map +1 -1
- package/dist/lib/core/claim-library.d.ts +2 -2
- package/dist/lib/core/claim-library.d.ts.map +1 -1
- package/dist/lib/core/claim-source-library.d.ts +2 -2
- package/dist/lib/core/claim-source-library.d.ts.map +1 -1
- package/dist/lib/core/expression-manager.d.ts +25 -2
- package/dist/lib/core/expression-manager.d.ts.map +1 -1
- package/dist/lib/core/expression-manager.js +211 -4
- package/dist/lib/core/expression-manager.js.map +1 -1
- package/dist/lib/core/interfaces/index.d.ts +1 -1
- package/dist/lib/core/interfaces/index.d.ts.map +1 -1
- package/dist/lib/core/interfaces/library.interfaces.d.ts +243 -14
- package/dist/lib/core/interfaces/library.interfaces.d.ts.map +1 -1
- package/dist/lib/core/interfaces/premise-engine.interfaces.d.ts +38 -0
- package/dist/lib/core/interfaces/premise-engine.interfaces.d.ts.map +1 -1
- package/dist/lib/core/parser/formula-gen.js +120 -47
- package/dist/lib/core/premise-engine.d.ts +8 -1
- package/dist/lib/core/premise-engine.d.ts.map +1 -1
- package/dist/lib/core/premise-engine.js +90 -21
- package/dist/lib/core/premise-engine.js.map +1 -1
- package/dist/lib/core/source-library.d.ts +2 -2
- package/dist/lib/core/source-library.d.ts.map +1 -1
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +2 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/parsing/argument-parser.d.ts +47 -0
- package/dist/lib/parsing/argument-parser.d.ts.map +1 -0
- package/dist/lib/parsing/argument-parser.js +307 -0
- package/dist/lib/parsing/argument-parser.js.map +1 -0
- package/dist/lib/parsing/index.d.ts +7 -0
- package/dist/lib/parsing/index.d.ts.map +1 -0
- package/dist/lib/parsing/index.js +4 -0
- package/dist/lib/parsing/index.js.map +1 -0
- package/dist/lib/parsing/prompt-builder.d.ts +11 -0
- package/dist/lib/parsing/prompt-builder.d.ts.map +1 -0
- package/dist/lib/parsing/prompt-builder.js +192 -0
- package/dist/lib/parsing/prompt-builder.js.map +1 -0
- package/dist/lib/parsing/schemata.d.ts +77 -0
- package/dist/lib/parsing/schemata.d.ts.map +1 -0
- package/dist/lib/parsing/schemata.js +88 -0
- package/dist/lib/parsing/schemata.js.map +1 -0
- package/dist/lib/parsing/types.d.ts +13 -0
- package/dist/lib/parsing/types.d.ts.map +1 -0
- package/dist/lib/parsing/types.js +2 -0
- package/dist/lib/parsing/types.js.map +1 -0
- package/dist/lib/types/grammar.d.ts +31 -0
- package/dist/lib/types/grammar.d.ts.map +1 -0
- package/dist/lib/types/grammar.js +11 -0
- package/dist/lib/types/grammar.js.map +1 -0
- package/package.json +5 -1
- package/dist/cli/storage/sources.d.ts +0 -4
- package/dist/cli/storage/sources.d.ts.map +0 -1
- package/dist/cli/storage/sources.js +0 -22
- package/dist/cli/storage/sources.js.map +0 -1
|
@@ -184,12 +184,17 @@ function peg$parse(input, options) {
|
|
|
184
184
|
const peg$c1 = "->";
|
|
185
185
|
const peg$c2 = "\u2194";
|
|
186
186
|
const peg$c3 = "<->";
|
|
187
|
-
const peg$c4 = "
|
|
188
|
-
const peg$c5 = "
|
|
189
|
-
const peg$c6 = "\
|
|
190
|
-
const peg$c7 = "
|
|
191
|
-
const peg$c8 = "
|
|
192
|
-
const peg$c9 = "
|
|
187
|
+
const peg$c4 = "implies";
|
|
188
|
+
const peg$c5 = "iff";
|
|
189
|
+
const peg$c6 = "\u2228";
|
|
190
|
+
const peg$c7 = "||";
|
|
191
|
+
const peg$c8 = "or";
|
|
192
|
+
const peg$c9 = "\u2227";
|
|
193
|
+
const peg$c10 = "&&";
|
|
194
|
+
const peg$c11 = "and";
|
|
195
|
+
const peg$c12 = "not";
|
|
196
|
+
const peg$c13 = "(";
|
|
197
|
+
const peg$c14 = ")";
|
|
193
198
|
|
|
194
199
|
const peg$r0 = /^[!\xAC]/;
|
|
195
200
|
const peg$r1 = /^[A-Za-z_]/;
|
|
@@ -200,20 +205,25 @@ function peg$parse(input, options) {
|
|
|
200
205
|
const peg$e1 = peg$literalExpectation("->", false);
|
|
201
206
|
const peg$e2 = peg$literalExpectation("\u2194", false);
|
|
202
207
|
const peg$e3 = peg$literalExpectation("<->", false);
|
|
203
|
-
const peg$e4 = peg$literalExpectation("
|
|
204
|
-
const peg$e5 = peg$literalExpectation("
|
|
205
|
-
const peg$e6 = peg$literalExpectation("\
|
|
206
|
-
const peg$e7 = peg$literalExpectation("
|
|
207
|
-
const peg$e8 = peg$
|
|
208
|
-
const peg$e9 = peg$literalExpectation("
|
|
209
|
-
const peg$e10 = peg$literalExpectation("
|
|
210
|
-
const peg$e11 = peg$
|
|
211
|
-
const peg$e12 = peg$classExpectation([
|
|
212
|
-
const peg$e13 = peg$
|
|
208
|
+
const peg$e4 = peg$literalExpectation("implies", true);
|
|
209
|
+
const peg$e5 = peg$literalExpectation("iff", true);
|
|
210
|
+
const peg$e6 = peg$literalExpectation("\u2228", false);
|
|
211
|
+
const peg$e7 = peg$literalExpectation("||", false);
|
|
212
|
+
const peg$e8 = peg$literalExpectation("or", true);
|
|
213
|
+
const peg$e9 = peg$literalExpectation("\u2227", false);
|
|
214
|
+
const peg$e10 = peg$literalExpectation("&&", false);
|
|
215
|
+
const peg$e11 = peg$literalExpectation("and", true);
|
|
216
|
+
const peg$e12 = peg$classExpectation(["!", "\xAC"], false, false, false);
|
|
217
|
+
const peg$e13 = peg$literalExpectation("not", true);
|
|
218
|
+
const peg$e14 = peg$literalExpectation("(", false);
|
|
219
|
+
const peg$e15 = peg$literalExpectation(")", false);
|
|
220
|
+
const peg$e16 = peg$classExpectation([["A", "Z"], ["a", "z"], "_"], false, false, false);
|
|
221
|
+
const peg$e17 = peg$classExpectation([["A", "Z"], ["a", "z"], ["0", "9"], "_"], false, false, false);
|
|
222
|
+
const peg$e18 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false, false);
|
|
213
223
|
|
|
214
224
|
function peg$f0(expr) { return expr; }
|
|
215
225
|
function peg$f1(left, op, right) {
|
|
216
|
-
const type = (op === "→" || op === "->") ? "implies" : "iff";
|
|
226
|
+
const type = (op === "→" || op === "->" || op.toLowerCase() === "implies") ? "implies" : "iff";
|
|
217
227
|
return binaryNode(type, left, right);
|
|
218
228
|
}
|
|
219
229
|
function peg$f2(first, c) { return c; }
|
|
@@ -453,6 +463,24 @@ function peg$parse(input, options) {
|
|
|
453
463
|
s3 = peg$FAILED;
|
|
454
464
|
if (peg$silentFails === 0) { peg$fail(peg$e3); }
|
|
455
465
|
}
|
|
466
|
+
if (s3 === peg$FAILED) {
|
|
467
|
+
s3 = input.substr(peg$currPos, 7);
|
|
468
|
+
if (s3.toLowerCase() === peg$c4) {
|
|
469
|
+
peg$currPos += (7);
|
|
470
|
+
} else {
|
|
471
|
+
s3 = peg$FAILED;
|
|
472
|
+
if (peg$silentFails === 0) { peg$fail(peg$e4); }
|
|
473
|
+
}
|
|
474
|
+
if (s3 === peg$FAILED) {
|
|
475
|
+
s3 = input.substr(peg$currPos, 3);
|
|
476
|
+
if (s3.toLowerCase() === peg$c5) {
|
|
477
|
+
peg$currPos += (3);
|
|
478
|
+
} else {
|
|
479
|
+
s3 = peg$FAILED;
|
|
480
|
+
if (peg$silentFails === 0) { peg$fail(peg$e5); }
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
}
|
|
456
484
|
}
|
|
457
485
|
}
|
|
458
486
|
}
|
|
@@ -491,19 +519,28 @@ function peg$parse(input, options) {
|
|
|
491
519
|
s3 = peg$currPos;
|
|
492
520
|
s4 = peg$parse_();
|
|
493
521
|
if (input.charCodeAt(peg$currPos) === 8744) {
|
|
494
|
-
s5 = peg$
|
|
522
|
+
s5 = peg$c6;
|
|
495
523
|
peg$currPos++;
|
|
496
524
|
} else {
|
|
497
525
|
s5 = peg$FAILED;
|
|
498
|
-
if (peg$silentFails === 0) { peg$fail(peg$
|
|
526
|
+
if (peg$silentFails === 0) { peg$fail(peg$e6); }
|
|
499
527
|
}
|
|
500
528
|
if (s5 === peg$FAILED) {
|
|
501
|
-
if (input.substr(peg$currPos, 2) === peg$
|
|
502
|
-
s5 = peg$
|
|
529
|
+
if (input.substr(peg$currPos, 2) === peg$c7) {
|
|
530
|
+
s5 = peg$c7;
|
|
503
531
|
peg$currPos += 2;
|
|
504
532
|
} else {
|
|
505
533
|
s5 = peg$FAILED;
|
|
506
|
-
if (peg$silentFails === 0) { peg$fail(peg$
|
|
534
|
+
if (peg$silentFails === 0) { peg$fail(peg$e7); }
|
|
535
|
+
}
|
|
536
|
+
if (s5 === peg$FAILED) {
|
|
537
|
+
s5 = input.substr(peg$currPos, 2);
|
|
538
|
+
if (s5.toLowerCase() === peg$c8) {
|
|
539
|
+
peg$currPos += (2);
|
|
540
|
+
} else {
|
|
541
|
+
s5 = peg$FAILED;
|
|
542
|
+
if (peg$silentFails === 0) { peg$fail(peg$e8); }
|
|
543
|
+
}
|
|
507
544
|
}
|
|
508
545
|
}
|
|
509
546
|
if (s5 !== peg$FAILED) {
|
|
@@ -525,19 +562,28 @@ function peg$parse(input, options) {
|
|
|
525
562
|
s3 = peg$currPos;
|
|
526
563
|
s4 = peg$parse_();
|
|
527
564
|
if (input.charCodeAt(peg$currPos) === 8744) {
|
|
528
|
-
s5 = peg$
|
|
565
|
+
s5 = peg$c6;
|
|
529
566
|
peg$currPos++;
|
|
530
567
|
} else {
|
|
531
568
|
s5 = peg$FAILED;
|
|
532
|
-
if (peg$silentFails === 0) { peg$fail(peg$
|
|
569
|
+
if (peg$silentFails === 0) { peg$fail(peg$e6); }
|
|
533
570
|
}
|
|
534
571
|
if (s5 === peg$FAILED) {
|
|
535
|
-
if (input.substr(peg$currPos, 2) === peg$
|
|
536
|
-
s5 = peg$
|
|
572
|
+
if (input.substr(peg$currPos, 2) === peg$c7) {
|
|
573
|
+
s5 = peg$c7;
|
|
537
574
|
peg$currPos += 2;
|
|
538
575
|
} else {
|
|
539
576
|
s5 = peg$FAILED;
|
|
540
|
-
if (peg$silentFails === 0) { peg$fail(peg$
|
|
577
|
+
if (peg$silentFails === 0) { peg$fail(peg$e7); }
|
|
578
|
+
}
|
|
579
|
+
if (s5 === peg$FAILED) {
|
|
580
|
+
s5 = input.substr(peg$currPos, 2);
|
|
581
|
+
if (s5.toLowerCase() === peg$c8) {
|
|
582
|
+
peg$currPos += (2);
|
|
583
|
+
} else {
|
|
584
|
+
s5 = peg$FAILED;
|
|
585
|
+
if (peg$silentFails === 0) { peg$fail(peg$e8); }
|
|
586
|
+
}
|
|
541
587
|
}
|
|
542
588
|
}
|
|
543
589
|
if (s5 !== peg$FAILED) {
|
|
@@ -575,19 +621,28 @@ function peg$parse(input, options) {
|
|
|
575
621
|
s3 = peg$currPos;
|
|
576
622
|
s4 = peg$parse_();
|
|
577
623
|
if (input.charCodeAt(peg$currPos) === 8743) {
|
|
578
|
-
s5 = peg$
|
|
624
|
+
s5 = peg$c9;
|
|
579
625
|
peg$currPos++;
|
|
580
626
|
} else {
|
|
581
627
|
s5 = peg$FAILED;
|
|
582
|
-
if (peg$silentFails === 0) { peg$fail(peg$
|
|
628
|
+
if (peg$silentFails === 0) { peg$fail(peg$e9); }
|
|
583
629
|
}
|
|
584
630
|
if (s5 === peg$FAILED) {
|
|
585
|
-
if (input.substr(peg$currPos, 2) === peg$
|
|
586
|
-
s5 = peg$
|
|
631
|
+
if (input.substr(peg$currPos, 2) === peg$c10) {
|
|
632
|
+
s5 = peg$c10;
|
|
587
633
|
peg$currPos += 2;
|
|
588
634
|
} else {
|
|
589
635
|
s5 = peg$FAILED;
|
|
590
|
-
if (peg$silentFails === 0) { peg$fail(peg$
|
|
636
|
+
if (peg$silentFails === 0) { peg$fail(peg$e10); }
|
|
637
|
+
}
|
|
638
|
+
if (s5 === peg$FAILED) {
|
|
639
|
+
s5 = input.substr(peg$currPos, 3);
|
|
640
|
+
if (s5.toLowerCase() === peg$c11) {
|
|
641
|
+
peg$currPos += (3);
|
|
642
|
+
} else {
|
|
643
|
+
s5 = peg$FAILED;
|
|
644
|
+
if (peg$silentFails === 0) { peg$fail(peg$e11); }
|
|
645
|
+
}
|
|
591
646
|
}
|
|
592
647
|
}
|
|
593
648
|
if (s5 !== peg$FAILED) {
|
|
@@ -609,19 +664,28 @@ function peg$parse(input, options) {
|
|
|
609
664
|
s3 = peg$currPos;
|
|
610
665
|
s4 = peg$parse_();
|
|
611
666
|
if (input.charCodeAt(peg$currPos) === 8743) {
|
|
612
|
-
s5 = peg$
|
|
667
|
+
s5 = peg$c9;
|
|
613
668
|
peg$currPos++;
|
|
614
669
|
} else {
|
|
615
670
|
s5 = peg$FAILED;
|
|
616
|
-
if (peg$silentFails === 0) { peg$fail(peg$
|
|
671
|
+
if (peg$silentFails === 0) { peg$fail(peg$e9); }
|
|
617
672
|
}
|
|
618
673
|
if (s5 === peg$FAILED) {
|
|
619
|
-
if (input.substr(peg$currPos, 2) === peg$
|
|
620
|
-
s5 = peg$
|
|
674
|
+
if (input.substr(peg$currPos, 2) === peg$c10) {
|
|
675
|
+
s5 = peg$c10;
|
|
621
676
|
peg$currPos += 2;
|
|
622
677
|
} else {
|
|
623
678
|
s5 = peg$FAILED;
|
|
624
|
-
if (peg$silentFails === 0) { peg$fail(peg$
|
|
679
|
+
if (peg$silentFails === 0) { peg$fail(peg$e10); }
|
|
680
|
+
}
|
|
681
|
+
if (s5 === peg$FAILED) {
|
|
682
|
+
s5 = input.substr(peg$currPos, 3);
|
|
683
|
+
if (s5.toLowerCase() === peg$c11) {
|
|
684
|
+
peg$currPos += (3);
|
|
685
|
+
} else {
|
|
686
|
+
s5 = peg$FAILED;
|
|
687
|
+
if (peg$silentFails === 0) { peg$fail(peg$e11); }
|
|
688
|
+
}
|
|
625
689
|
}
|
|
626
690
|
}
|
|
627
691
|
if (s5 !== peg$FAILED) {
|
|
@@ -658,7 +722,16 @@ function peg$parse(input, options) {
|
|
|
658
722
|
peg$currPos++;
|
|
659
723
|
} else {
|
|
660
724
|
s1 = peg$FAILED;
|
|
661
|
-
if (peg$silentFails === 0) { peg$fail(peg$
|
|
725
|
+
if (peg$silentFails === 0) { peg$fail(peg$e12); }
|
|
726
|
+
}
|
|
727
|
+
if (s1 === peg$FAILED) {
|
|
728
|
+
s1 = input.substr(peg$currPos, 3);
|
|
729
|
+
if (s1.toLowerCase() === peg$c12) {
|
|
730
|
+
peg$currPos += (3);
|
|
731
|
+
} else {
|
|
732
|
+
s1 = peg$FAILED;
|
|
733
|
+
if (peg$silentFails === 0) { peg$fail(peg$e13); }
|
|
734
|
+
}
|
|
662
735
|
}
|
|
663
736
|
if (s1 !== peg$FAILED) {
|
|
664
737
|
s2 = peg$parse_();
|
|
@@ -686,11 +759,11 @@ function peg$parse(input, options) {
|
|
|
686
759
|
|
|
687
760
|
s0 = peg$currPos;
|
|
688
761
|
if (input.charCodeAt(peg$currPos) === 40) {
|
|
689
|
-
s1 = peg$
|
|
762
|
+
s1 = peg$c13;
|
|
690
763
|
peg$currPos++;
|
|
691
764
|
} else {
|
|
692
765
|
s1 = peg$FAILED;
|
|
693
|
-
if (peg$silentFails === 0) { peg$fail(peg$
|
|
766
|
+
if (peg$silentFails === 0) { peg$fail(peg$e14); }
|
|
694
767
|
}
|
|
695
768
|
if (s1 !== peg$FAILED) {
|
|
696
769
|
s2 = peg$parse_();
|
|
@@ -698,11 +771,11 @@ function peg$parse(input, options) {
|
|
|
698
771
|
if (s3 !== peg$FAILED) {
|
|
699
772
|
s4 = peg$parse_();
|
|
700
773
|
if (input.charCodeAt(peg$currPos) === 41) {
|
|
701
|
-
s5 = peg$
|
|
774
|
+
s5 = peg$c14;
|
|
702
775
|
peg$currPos++;
|
|
703
776
|
} else {
|
|
704
777
|
s5 = peg$FAILED;
|
|
705
|
-
if (peg$silentFails === 0) { peg$fail(peg$
|
|
778
|
+
if (peg$silentFails === 0) { peg$fail(peg$e15); }
|
|
706
779
|
}
|
|
707
780
|
if (s5 !== peg$FAILED) {
|
|
708
781
|
peg$savedPos = s0;
|
|
@@ -742,7 +815,7 @@ function peg$parse(input, options) {
|
|
|
742
815
|
peg$currPos++;
|
|
743
816
|
} else {
|
|
744
817
|
s2 = peg$FAILED;
|
|
745
|
-
if (peg$silentFails === 0) { peg$fail(peg$
|
|
818
|
+
if (peg$silentFails === 0) { peg$fail(peg$e16); }
|
|
746
819
|
}
|
|
747
820
|
if (s2 !== peg$FAILED) {
|
|
748
821
|
s3 = [];
|
|
@@ -751,7 +824,7 @@ function peg$parse(input, options) {
|
|
|
751
824
|
peg$currPos++;
|
|
752
825
|
} else {
|
|
753
826
|
s4 = peg$FAILED;
|
|
754
|
-
if (peg$silentFails === 0) { peg$fail(peg$
|
|
827
|
+
if (peg$silentFails === 0) { peg$fail(peg$e17); }
|
|
755
828
|
}
|
|
756
829
|
while (s4 !== peg$FAILED) {
|
|
757
830
|
s3.push(s4);
|
|
@@ -760,7 +833,7 @@ function peg$parse(input, options) {
|
|
|
760
833
|
peg$currPos++;
|
|
761
834
|
} else {
|
|
762
835
|
s4 = peg$FAILED;
|
|
763
|
-
if (peg$silentFails === 0) { peg$fail(peg$
|
|
836
|
+
if (peg$silentFails === 0) { peg$fail(peg$e17); }
|
|
764
837
|
}
|
|
765
838
|
}
|
|
766
839
|
s2 = [s2, s3];
|
|
@@ -788,7 +861,7 @@ function peg$parse(input, options) {
|
|
|
788
861
|
peg$currPos++;
|
|
789
862
|
} else {
|
|
790
863
|
s1 = peg$FAILED;
|
|
791
|
-
if (peg$silentFails === 0) { peg$fail(peg$
|
|
864
|
+
if (peg$silentFails === 0) { peg$fail(peg$e18); }
|
|
792
865
|
}
|
|
793
866
|
while (s1 !== peg$FAILED) {
|
|
794
867
|
s0.push(s1);
|
|
@@ -797,7 +870,7 @@ function peg$parse(input, options) {
|
|
|
797
870
|
peg$currPos++;
|
|
798
871
|
} else {
|
|
799
872
|
s1 = peg$FAILED;
|
|
800
|
-
if (peg$silentFails === 0) { peg$fail(peg$
|
|
873
|
+
if (peg$silentFails === 0) { peg$fail(peg$e18); }
|
|
801
874
|
}
|
|
802
875
|
}
|
|
803
876
|
peg$silentFails--;
|
|
@@ -2,6 +2,7 @@ import { type TCoreArgument, type TCorePremise, type TCorePropositionalExpressio
|
|
|
2
2
|
import type { TCoreExpressionAssignment, TCorePremiseEvaluationResult, TCoreValidationResult } from "../types/evaluation.js";
|
|
3
3
|
import type { TCoreMutationResult } from "../types/mutation.js";
|
|
4
4
|
import type { TLogicEngineOptions } from "./argument-engine.js";
|
|
5
|
+
import type { TGrammarConfig } from "../types/grammar.js";
|
|
5
6
|
import type { TExpressionInput, TExpressionManagerSnapshot, TExpressionWithoutPosition, TExpressionUpdate } from "./expression-manager.js";
|
|
6
7
|
import { VariableManager } from "./variable-manager.js";
|
|
7
8
|
import type { TExpressionMutations, TExpressionQueries, TVariableReferences, TPremiseClassification, TPremiseEvaluation, TPremiseLifecycle, TPremiseIdentity, TDisplayable, TChecksummable } from "./interfaces/index.js";
|
|
@@ -64,6 +65,12 @@ export declare class PremiseEngine<TArg extends TCoreArgument = TCoreArgument, T
|
|
|
64
65
|
toPremiseData(): TPremise;
|
|
65
66
|
checksum(): string;
|
|
66
67
|
private computeChecksum;
|
|
68
|
+
/**
|
|
69
|
+
* Loads expressions in BFS order with the nesting check bypassed.
|
|
70
|
+
* Bypasses all PremiseEngine validation (ownership, variable existence, circularity)
|
|
71
|
+
* since restoration paths trust existing data completely.
|
|
72
|
+
*/
|
|
73
|
+
loadExpressions(expressions: TExpressionInput<TExpr>[]): void;
|
|
67
74
|
markDirty(): void;
|
|
68
75
|
/**
|
|
69
76
|
* Re-reads the single root from ExpressionManager after any operation
|
|
@@ -76,7 +83,7 @@ export declare class PremiseEngine<TArg extends TCoreArgument = TCoreArgument, T
|
|
|
76
83
|
private operatorSymbol;
|
|
77
84
|
snapshot(): TPremiseEngineSnapshot<TPremise, TExpr>;
|
|
78
85
|
/** Creates a new PremiseEngine from a previously captured snapshot. */
|
|
79
|
-
static fromSnapshot<TArg extends TCoreArgument = TCoreArgument, TPremise extends TCorePremise = TCorePremise, TExpr extends TCorePropositionalExpression = TCorePropositionalExpression, TVar extends TCorePropositionalVariable = TCorePropositionalVariable>(snapshot: TPremiseEngineSnapshot<TPremise, TExpr>, argument: TOptionalChecksum<TArg>, variables: VariableManager<TVar>, expressionIndex?: Map<string, string
|
|
86
|
+
static fromSnapshot<TArg extends TCoreArgument = TCoreArgument, TPremise extends TCorePremise = TCorePremise, TExpr extends TCorePropositionalExpression = TCorePropositionalExpression, TVar extends TCorePropositionalVariable = TCorePropositionalVariable>(snapshot: TPremiseEngineSnapshot<TPremise, TExpr>, argument: TOptionalChecksum<TArg>, variables: VariableManager<TVar>, expressionIndex?: Map<string, string>, grammarConfig?: TGrammarConfig): PremiseEngine<TArg, TPremise, TExpr, TVar>;
|
|
80
87
|
private syncExpressionIndex;
|
|
81
88
|
private rebuildVariableIndex;
|
|
82
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"premise-engine.d.ts","sourceRoot":"","sources":["../../../src/lib/core/premise-engine.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,KAAK,aAAa,EAElB,KAAK,YAAY,EACjB,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACzB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,KAAK,EACR,yBAAyB,EACzB,4BAA4B,EAI5B,qBAAqB,EACxB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,sBAAsB,CAAA;AAc/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"premise-engine.d.ts","sourceRoot":"","sources":["../../../src/lib/core/premise-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -388,11 +388,26 @@ export class PremiseEngine {
|
|
|
388
388
|
const parent = target.parentId
|
|
389
389
|
? this.expressions.getExpression(target.parentId)
|
|
390
390
|
: undefined;
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
this.expressions.
|
|
391
|
+
// Check for direct not parent: not(target)
|
|
392
|
+
const isDirectNot = parent?.type === "operator" && parent.operator === "not";
|
|
393
|
+
// Check for formula-buffered not: not(formula(target))
|
|
394
|
+
const grandparent = parent?.type === "formula" && parent.parentId
|
|
395
|
+
? this.expressions.getExpression(parent.parentId)
|
|
396
|
+
: undefined;
|
|
397
|
+
const isBufferedNot = parent?.type === "formula" &&
|
|
398
|
+
grandparent?.type === "operator" &&
|
|
399
|
+
grandparent.operator === "not";
|
|
400
|
+
if (isDirectNot || isBufferedNot) {
|
|
401
|
+
if (isBufferedNot) {
|
|
402
|
+
// Structure is not → formula → target.
|
|
403
|
+
// Remove just the not (promotes formula into its slot).
|
|
404
|
+
// The formula remains as a transparent wrapper.
|
|
405
|
+
this.expressions.removeExpression(grandparent.id, false);
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
// Remove the NOT operator, promoting target into its slot
|
|
409
|
+
this.expressions.removeExpression(parent.id, false);
|
|
410
|
+
}
|
|
396
411
|
this.syncRootExpressionId();
|
|
397
412
|
this.markDirty();
|
|
398
413
|
const changes = collector.toChangeset();
|
|
@@ -401,25 +416,58 @@ export class PremiseEngine {
|
|
|
401
416
|
return { result: null, changes };
|
|
402
417
|
}
|
|
403
418
|
else {
|
|
404
|
-
//
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
419
|
+
// When the target is a non-not operator, insert a formula
|
|
420
|
+
// buffer between the new not and the target so the tree
|
|
421
|
+
// satisfies the operator nesting restriction.
|
|
422
|
+
const needsFormula = target.type === "operator" && target.operator !== "not";
|
|
423
|
+
let notExprId;
|
|
424
|
+
if (needsFormula) {
|
|
425
|
+
// Build not → formula → target
|
|
426
|
+
const formulaExpr = {
|
|
427
|
+
id: randomUUID(),
|
|
428
|
+
argumentId: target.argumentId,
|
|
429
|
+
argumentVersion: target.argumentVersion,
|
|
430
|
+
premiseId: target.premiseId,
|
|
431
|
+
type: "formula",
|
|
432
|
+
parentId: target.parentId,
|
|
433
|
+
position: target.position,
|
|
434
|
+
};
|
|
435
|
+
this.expressions.insertExpression(formulaExpr, expressionId);
|
|
436
|
+
const notExpr = {
|
|
437
|
+
id: randomUUID(),
|
|
438
|
+
argumentId: target.argumentId,
|
|
439
|
+
argumentVersion: target.argumentVersion,
|
|
440
|
+
premiseId: target.premiseId,
|
|
441
|
+
type: "operator",
|
|
442
|
+
operator: "not",
|
|
443
|
+
parentId: target.parentId,
|
|
444
|
+
position: target.position,
|
|
445
|
+
};
|
|
446
|
+
this.expressions.insertExpression(notExpr, formulaExpr.id);
|
|
447
|
+
notExprId = notExpr.id;
|
|
448
|
+
}
|
|
449
|
+
else {
|
|
450
|
+
// Wrap target with a new NOT operator
|
|
451
|
+
const notExpr = {
|
|
452
|
+
id: randomUUID(),
|
|
453
|
+
argumentId: target.argumentId,
|
|
454
|
+
argumentVersion: target.argumentVersion,
|
|
455
|
+
premiseId: target.premiseId,
|
|
456
|
+
type: "operator",
|
|
457
|
+
operator: "not",
|
|
458
|
+
parentId: target.parentId,
|
|
459
|
+
position: target.position,
|
|
460
|
+
};
|
|
461
|
+
this.expressions.insertExpression(notExpr, expressionId);
|
|
462
|
+
notExprId = notExpr.id;
|
|
463
|
+
}
|
|
416
464
|
this.syncRootExpressionId();
|
|
417
465
|
this.markDirty();
|
|
418
466
|
const changes = collector.toChangeset();
|
|
419
467
|
this.syncExpressionIndex(changes);
|
|
420
468
|
this.onMutate?.();
|
|
421
469
|
return {
|
|
422
|
-
result: this.expressions.getExpression(
|
|
470
|
+
result: this.expressions.getExpression(notExprId),
|
|
423
471
|
changes,
|
|
424
472
|
};
|
|
425
473
|
}
|
|
@@ -786,6 +834,27 @@ export class PremiseEngine {
|
|
|
786
834
|
}
|
|
787
835
|
return computeHash(canonicalSerialize(checksumMap));
|
|
788
836
|
}
|
|
837
|
+
/**
|
|
838
|
+
* Loads expressions in BFS order with the nesting check bypassed.
|
|
839
|
+
* Bypasses all PremiseEngine validation (ownership, variable existence, circularity)
|
|
840
|
+
* since restoration paths trust existing data completely.
|
|
841
|
+
*/
|
|
842
|
+
loadExpressions(expressions) {
|
|
843
|
+
this.expressions.loadExpressions(expressions);
|
|
844
|
+
// Rebuild root and variable tracking after bulk load.
|
|
845
|
+
for (const expr of this.expressions.toArray()) {
|
|
846
|
+
if (expr.parentId === null) {
|
|
847
|
+
this.rootExpressionId = expr.id;
|
|
848
|
+
}
|
|
849
|
+
if (expr.type === "variable") {
|
|
850
|
+
this.expressionsByVariableId.get(expr.variableId).add(expr.id);
|
|
851
|
+
}
|
|
852
|
+
if (this.expressionIndex) {
|
|
853
|
+
this.expressionIndex.set(expr.id, this.premise.id);
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
this.markDirty();
|
|
857
|
+
}
|
|
789
858
|
markDirty() {
|
|
790
859
|
this.checksumDirty = true;
|
|
791
860
|
}
|
|
@@ -873,16 +942,16 @@ export class PremiseEngine {
|
|
|
873
942
|
rootExpressionId: this.rootExpressionId,
|
|
874
943
|
expressions: exprSnapshot,
|
|
875
944
|
config: {
|
|
945
|
+
...exprSnapshot.config,
|
|
876
946
|
checksumConfig: this.checksumConfig,
|
|
877
|
-
positionConfig: exprSnapshot.config?.positionConfig,
|
|
878
947
|
},
|
|
879
948
|
};
|
|
880
949
|
}
|
|
881
950
|
/** Creates a new PremiseEngine from a previously captured snapshot. */
|
|
882
|
-
static fromSnapshot(snapshot, argument, variables, expressionIndex) {
|
|
951
|
+
static fromSnapshot(snapshot, argument, variables, expressionIndex, grammarConfig) {
|
|
883
952
|
const pe = new PremiseEngine(snapshot.premise, { argument, variables, expressionIndex }, snapshot.config);
|
|
884
953
|
// Restore expressions from the snapshot
|
|
885
|
-
pe.expressions = ExpressionManager.fromSnapshot(snapshot.expressions);
|
|
954
|
+
pe.expressions = ExpressionManager.fromSnapshot(snapshot.expressions, grammarConfig);
|
|
886
955
|
// Restore rootExpressionId from snapshot
|
|
887
956
|
pe.rootExpressionId = snapshot.rootExpressionId;
|
|
888
957
|
// Rebuild the expressionsByVariableId index
|