@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.
Files changed (126) hide show
  1. package/README.md +172 -1
  2. package/dist/cli/commands/arguments.d.ts.map +1 -1
  3. package/dist/cli/commands/arguments.js +33 -5
  4. package/dist/cli/commands/arguments.js.map +1 -1
  5. package/dist/cli/commands/claims.d.ts +3 -0
  6. package/dist/cli/commands/claims.d.ts.map +1 -0
  7. package/dist/cli/commands/claims.js +120 -0
  8. package/dist/cli/commands/claims.js.map +1 -0
  9. package/dist/cli/commands/parse.d.ts +3 -0
  10. package/dist/cli/commands/parse.d.ts.map +1 -0
  11. package/dist/cli/commands/parse.js +159 -0
  12. package/dist/cli/commands/parse.js.map +1 -0
  13. package/dist/cli/commands/render.d.ts.map +1 -1
  14. package/dist/cli/commands/render.js +77 -4
  15. package/dist/cli/commands/render.js.map +1 -1
  16. package/dist/cli/commands/sources.d.ts +1 -1
  17. package/dist/cli/commands/sources.d.ts.map +1 -1
  18. package/dist/cli/commands/sources.js +83 -45
  19. package/dist/cli/commands/sources.js.map +1 -1
  20. package/dist/cli/config.d.ts +1 -0
  21. package/dist/cli/config.d.ts.map +1 -1
  22. package/dist/cli/config.js +3 -0
  23. package/dist/cli/config.js.map +1 -1
  24. package/dist/cli/engine.d.ts +14 -1
  25. package/dist/cli/engine.d.ts.map +1 -1
  26. package/dist/cli/engine.js +45 -2
  27. package/dist/cli/engine.js.map +1 -1
  28. package/dist/cli/import.d.ts +9 -1
  29. package/dist/cli/import.d.ts.map +1 -1
  30. package/dist/cli/import.js +22 -4
  31. package/dist/cli/import.js.map +1 -1
  32. package/dist/cli/llm/index.d.ts +6 -0
  33. package/dist/cli/llm/index.d.ts.map +1 -0
  34. package/dist/cli/llm/index.js +26 -0
  35. package/dist/cli/llm/index.js.map +1 -0
  36. package/dist/cli/llm/openai.d.ts +4 -0
  37. package/dist/cli/llm/openai.d.ts.map +1 -0
  38. package/dist/cli/llm/openai.js +44 -0
  39. package/dist/cli/llm/openai.js.map +1 -0
  40. package/dist/cli/llm/types.d.ts +14 -0
  41. package/dist/cli/llm/types.d.ts.map +1 -0
  42. package/dist/cli/llm/types.js +2 -0
  43. package/dist/cli/llm/types.js.map +1 -0
  44. package/dist/cli/logging.d.ts +8 -0
  45. package/dist/cli/logging.d.ts.map +1 -0
  46. package/dist/cli/logging.js +23 -0
  47. package/dist/cli/logging.js.map +1 -0
  48. package/dist/cli/router.d.ts.map +1 -1
  49. package/dist/cli/router.js +2 -0
  50. package/dist/cli/router.js.map +1 -1
  51. package/dist/cli/storage/libraries.d.ts +11 -0
  52. package/dist/cli/storage/libraries.d.ts.map +1 -0
  53. package/dist/cli/storage/libraries.js +61 -0
  54. package/dist/cli/storage/libraries.js.map +1 -0
  55. package/dist/cli.js +5 -1
  56. package/dist/cli.js.map +1 -1
  57. package/dist/extensions/basics/argument-parser.d.ts +12 -0
  58. package/dist/extensions/basics/argument-parser.d.ts.map +1 -0
  59. package/dist/extensions/basics/argument-parser.js +27 -0
  60. package/dist/extensions/basics/argument-parser.js.map +1 -0
  61. package/dist/extensions/basics/index.d.ts +4 -0
  62. package/dist/extensions/basics/index.d.ts.map +1 -0
  63. package/dist/extensions/basics/index.js +3 -0
  64. package/dist/extensions/basics/index.js.map +1 -0
  65. package/dist/extensions/basics/schemata.d.ts +31 -0
  66. package/dist/extensions/basics/schemata.d.ts.map +1 -0
  67. package/dist/extensions/basics/schemata.js +55 -0
  68. package/dist/extensions/basics/schemata.js.map +1 -0
  69. package/dist/lib/core/argument-engine.d.ts +5 -2
  70. package/dist/lib/core/argument-engine.d.ts.map +1 -1
  71. package/dist/lib/core/argument-engine.js +20 -24
  72. package/dist/lib/core/argument-engine.js.map +1 -1
  73. package/dist/lib/core/claim-library.d.ts +2 -2
  74. package/dist/lib/core/claim-library.d.ts.map +1 -1
  75. package/dist/lib/core/claim-source-library.d.ts +2 -2
  76. package/dist/lib/core/claim-source-library.d.ts.map +1 -1
  77. package/dist/lib/core/expression-manager.d.ts +25 -2
  78. package/dist/lib/core/expression-manager.d.ts.map +1 -1
  79. package/dist/lib/core/expression-manager.js +211 -4
  80. package/dist/lib/core/expression-manager.js.map +1 -1
  81. package/dist/lib/core/interfaces/index.d.ts +1 -1
  82. package/dist/lib/core/interfaces/index.d.ts.map +1 -1
  83. package/dist/lib/core/interfaces/library.interfaces.d.ts +243 -14
  84. package/dist/lib/core/interfaces/library.interfaces.d.ts.map +1 -1
  85. package/dist/lib/core/interfaces/premise-engine.interfaces.d.ts +38 -0
  86. package/dist/lib/core/interfaces/premise-engine.interfaces.d.ts.map +1 -1
  87. package/dist/lib/core/parser/formula-gen.js +120 -47
  88. package/dist/lib/core/premise-engine.d.ts +8 -1
  89. package/dist/lib/core/premise-engine.d.ts.map +1 -1
  90. package/dist/lib/core/premise-engine.js +90 -21
  91. package/dist/lib/core/premise-engine.js.map +1 -1
  92. package/dist/lib/core/source-library.d.ts +2 -2
  93. package/dist/lib/core/source-library.d.ts.map +1 -1
  94. package/dist/lib/index.d.ts +2 -0
  95. package/dist/lib/index.d.ts.map +1 -1
  96. package/dist/lib/index.js +2 -0
  97. package/dist/lib/index.js.map +1 -1
  98. package/dist/lib/parsing/argument-parser.d.ts +47 -0
  99. package/dist/lib/parsing/argument-parser.d.ts.map +1 -0
  100. package/dist/lib/parsing/argument-parser.js +307 -0
  101. package/dist/lib/parsing/argument-parser.js.map +1 -0
  102. package/dist/lib/parsing/index.d.ts +7 -0
  103. package/dist/lib/parsing/index.d.ts.map +1 -0
  104. package/dist/lib/parsing/index.js +4 -0
  105. package/dist/lib/parsing/index.js.map +1 -0
  106. package/dist/lib/parsing/prompt-builder.d.ts +11 -0
  107. package/dist/lib/parsing/prompt-builder.d.ts.map +1 -0
  108. package/dist/lib/parsing/prompt-builder.js +192 -0
  109. package/dist/lib/parsing/prompt-builder.js.map +1 -0
  110. package/dist/lib/parsing/schemata.d.ts +77 -0
  111. package/dist/lib/parsing/schemata.d.ts.map +1 -0
  112. package/dist/lib/parsing/schemata.js +88 -0
  113. package/dist/lib/parsing/schemata.js.map +1 -0
  114. package/dist/lib/parsing/types.d.ts +13 -0
  115. package/dist/lib/parsing/types.d.ts.map +1 -0
  116. package/dist/lib/parsing/types.js +2 -0
  117. package/dist/lib/parsing/types.js.map +1 -0
  118. package/dist/lib/types/grammar.d.ts +31 -0
  119. package/dist/lib/types/grammar.d.ts.map +1 -0
  120. package/dist/lib/types/grammar.js +11 -0
  121. package/dist/lib/types/grammar.js.map +1 -0
  122. package/package.json +5 -1
  123. package/dist/cli/storage/sources.d.ts +0 -4
  124. package/dist/cli/storage/sources.d.ts.map +0 -1
  125. package/dist/cli/storage/sources.js +0 -22
  126. 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 = "\u2228";
188
- const peg$c5 = "||";
189
- const peg$c6 = "\u2227";
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("\u2228", false);
204
- const peg$e5 = peg$literalExpectation("||", false);
205
- const peg$e6 = peg$literalExpectation("\u2227", false);
206
- const peg$e7 = peg$literalExpectation("&&", false);
207
- const peg$e8 = peg$classExpectation(["!", "\xAC"], false, false, false);
208
- const peg$e9 = peg$literalExpectation("(", false);
209
- const peg$e10 = peg$literalExpectation(")", false);
210
- const peg$e11 = peg$classExpectation([["A", "Z"], ["a", "z"], "_"], false, false, false);
211
- const peg$e12 = peg$classExpectation([["A", "Z"], ["a", "z"], ["0", "9"], "_"], false, false, false);
212
- const peg$e13 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false, false);
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$c4;
522
+ s5 = peg$c6;
495
523
  peg$currPos++;
496
524
  } else {
497
525
  s5 = peg$FAILED;
498
- if (peg$silentFails === 0) { peg$fail(peg$e4); }
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$c5) {
502
- s5 = peg$c5;
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$e5); }
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$c4;
565
+ s5 = peg$c6;
529
566
  peg$currPos++;
530
567
  } else {
531
568
  s5 = peg$FAILED;
532
- if (peg$silentFails === 0) { peg$fail(peg$e4); }
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$c5) {
536
- s5 = peg$c5;
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$e5); }
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$c6;
624
+ s5 = peg$c9;
579
625
  peg$currPos++;
580
626
  } else {
581
627
  s5 = peg$FAILED;
582
- if (peg$silentFails === 0) { peg$fail(peg$e6); }
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$c7) {
586
- s5 = peg$c7;
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$e7); }
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$c6;
667
+ s5 = peg$c9;
613
668
  peg$currPos++;
614
669
  } else {
615
670
  s5 = peg$FAILED;
616
- if (peg$silentFails === 0) { peg$fail(peg$e6); }
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$c7) {
620
- s5 = peg$c7;
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$e7); }
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$e8); }
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$c8;
762
+ s1 = peg$c13;
690
763
  peg$currPos++;
691
764
  } else {
692
765
  s1 = peg$FAILED;
693
- if (peg$silentFails === 0) { peg$fail(peg$e9); }
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$c9;
774
+ s5 = peg$c14;
702
775
  peg$currPos++;
703
776
  } else {
704
777
  s5 = peg$FAILED;
705
- if (peg$silentFails === 0) { peg$fail(peg$e10); }
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$e11); }
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$e12); }
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$e12); }
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$e13); }
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$e13); }
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>): PremiseEngine<TArg, TPremise, TExpr, TVar>;
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":"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"}
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
- if (parent &&
392
- parent.type === "operator" &&
393
- parent.operator === "not") {
394
- // Remove the NOT operator, promoting target into its slot
395
- this.expressions.removeExpression(parent.id, false);
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
- // Wrap target with a new NOT operator
405
- const notExpr = {
406
- id: randomUUID(),
407
- argumentId: target.argumentId,
408
- argumentVersion: target.argumentVersion,
409
- premiseId: target.premiseId,
410
- type: "operator",
411
- operator: "not",
412
- parentId: target.parentId,
413
- position: target.position,
414
- };
415
- this.expressions.insertExpression(notExpr, expressionId);
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(notExpr.id),
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