@xom11/whiteboard 0.30.0 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/ai.d.mts +374 -59
  2. package/dist/ai.d.ts +374 -59
  3. package/dist/ai.js +7542 -545
  4. package/dist/ai.js.map +1 -1
  5. package/dist/ai.mjs +7243 -569
  6. package/dist/ai.mjs.map +1 -1
  7. package/dist/catalog.json +5 -5
  8. package/dist/{chunk-ZTQBUKLJ.mjs → chunk-4EXRNZRX.mjs} +781 -95
  9. package/dist/chunk-4EXRNZRX.mjs.map +1 -0
  10. package/dist/{chunk-PPKHCRRE.mjs → chunk-C76SOFXF.mjs} +3 -3
  11. package/dist/{chunk-PPKHCRRE.mjs.map → chunk-C76SOFXF.mjs.map} +1 -1
  12. package/dist/{chunk-IHUFOV7L.mjs → chunk-CH6SFONH.mjs} +15 -3
  13. package/dist/chunk-CH6SFONH.mjs.map +1 -0
  14. package/dist/{chunk-XVVLT6B3.mjs → chunk-DBG6DZ2V.mjs} +4 -4
  15. package/dist/{chunk-XVVLT6B3.mjs.map → chunk-DBG6DZ2V.mjs.map} +1 -1
  16. package/dist/{chunk-BU5KLO3P.mjs → chunk-DCFZTKFE.mjs} +14 -6
  17. package/dist/chunk-DCFZTKFE.mjs.map +1 -0
  18. package/dist/{chunk-SF3U7ZF4.mjs → chunk-DJM5EWTT.mjs} +231 -16
  19. package/dist/chunk-DJM5EWTT.mjs.map +1 -0
  20. package/dist/{chunk-V3YJ6JFL.mjs → chunk-F42MZ745.mjs} +3 -3
  21. package/dist/{chunk-V3YJ6JFL.mjs.map → chunk-F42MZ745.mjs.map} +1 -1
  22. package/dist/{chunk-5JM35CXV.mjs → chunk-FI2MGX5H.mjs} +4 -4
  23. package/dist/{chunk-5JM35CXV.mjs.map → chunk-FI2MGX5H.mjs.map} +1 -1
  24. package/dist/{chunk-SZDAS7LK.mjs → chunk-IE2GGHNF.mjs} +131 -81
  25. package/dist/chunk-IE2GGHNF.mjs.map +1 -0
  26. package/dist/{chunk-BNBOIDO5.mjs → chunk-K7VJU7LQ.mjs} +3 -3
  27. package/dist/{chunk-BNBOIDO5.mjs.map → chunk-K7VJU7LQ.mjs.map} +1 -1
  28. package/dist/{chunk-H22OZYTW.mjs → chunk-KLGPAMJS.mjs} +55 -43
  29. package/dist/chunk-KLGPAMJS.mjs.map +1 -0
  30. package/dist/{chunk-CXHNVYMD.mjs → chunk-KWDBVLST.mjs} +5 -5
  31. package/dist/{chunk-CXHNVYMD.mjs.map → chunk-KWDBVLST.mjs.map} +1 -1
  32. package/dist/{chunk-73Q7ADVL.mjs → chunk-MNHOFOM5.mjs} +2 -2
  33. package/dist/{chunk-73Q7ADVL.mjs.map → chunk-MNHOFOM5.mjs.map} +1 -1
  34. package/dist/{chunk-QRUAEXLR.mjs → chunk-MOAXHVKI.mjs} +5 -5
  35. package/dist/{chunk-QRUAEXLR.mjs.map → chunk-MOAXHVKI.mjs.map} +1 -1
  36. package/dist/{chunk-QGNU34T7.mjs → chunk-QLQ4MJNO.mjs} +10 -4
  37. package/dist/chunk-QLQ4MJNO.mjs.map +1 -0
  38. package/dist/chunk-SUXIMLYN.mjs +238 -0
  39. package/dist/chunk-SUXIMLYN.mjs.map +1 -0
  40. package/dist/{chunk-OQIQNKPQ.mjs → chunk-XSTGTEGP.mjs} +5 -5
  41. package/dist/{chunk-OQIQNKPQ.mjs.map → chunk-XSTGTEGP.mjs.map} +1 -1
  42. package/dist/geometry-2d.d.mts +1 -1
  43. package/dist/geometry-2d.d.ts +1 -1
  44. package/dist/geometry-2d.js +1329 -288
  45. package/dist/geometry-2d.js.map +1 -1
  46. package/dist/geometry-2d.mjs +6 -6
  47. package/dist/geometry-3d.d.mts +1 -1
  48. package/dist/geometry-3d.d.ts +1 -1
  49. package/dist/geometry-3d.js +4136 -462
  50. package/dist/geometry-3d.js.map +1 -1
  51. package/dist/geometry-3d.mjs +5 -5
  52. package/dist/graph-2d.d.mts +1 -1
  53. package/dist/graph-2d.d.ts +1 -1
  54. package/dist/graph-2d.js +1010 -208
  55. package/dist/graph-2d.js.map +1 -1
  56. package/dist/graph-2d.mjs +8 -8
  57. package/dist/{handleExtractProblem-BrDY9ifM.d.ts → handleExtractProblem-mtJyhEw3.d.mts} +2 -0
  58. package/dist/{handleExtractProblem-BrDY9ifM.d.mts → handleExtractProblem-mtJyhEw3.d.ts} +2 -0
  59. package/dist/{host-ZQCDAT6O.mjs → host-H2IGOKJU.mjs} +3 -3
  60. package/dist/{host-ZQCDAT6O.mjs.map → host-H2IGOKJU.mjs.map} +1 -1
  61. package/dist/{host-3UFGFMJ2.mjs → host-JNLJ5BVR.mjs} +92 -45
  62. package/dist/host-JNLJ5BVR.mjs.map +1 -0
  63. package/dist/{host-HOSJHQ5H.mjs → host-VRWLQSMH.mjs} +14 -13
  64. package/dist/host-VRWLQSMH.mjs.map +1 -0
  65. package/dist/host-W4U6YCSX.mjs +4973 -0
  66. package/dist/host-W4U6YCSX.mjs.map +1 -0
  67. package/dist/index.d.mts +3 -3
  68. package/dist/index.d.ts +3 -3
  69. package/dist/index.js +4577 -600
  70. package/dist/index.js.map +1 -1
  71. package/dist/index.mjs +35 -29
  72. package/dist/index.mjs.map +1 -1
  73. package/dist/latex.d.mts +1 -1
  74. package/dist/latex.d.ts +1 -1
  75. package/dist/latex.js +8 -2
  76. package/dist/latex.js.map +1 -1
  77. package/dist/latex.mjs +1 -1
  78. package/dist/render-NMS7OAV6.mjs +10 -0
  79. package/dist/{render-ZX2O2IK7.mjs.map → render-NMS7OAV6.mjs.map} +1 -1
  80. package/dist/serialize-7UZWQQ4I.mjs +9 -0
  81. package/dist/{serialize-N4G6RFBB.mjs.map → serialize-7UZWQQ4I.mjs.map} +1 -1
  82. package/dist/{types-C3FjpoUi.d.mts → types-tePd94vW.d.mts} +8 -0
  83. package/dist/{types-C3FjpoUi.d.ts → types-tePd94vW.d.ts} +8 -0
  84. package/package.json +4 -1
  85. package/dist/chunk-BU5KLO3P.mjs.map +0 -1
  86. package/dist/chunk-H22OZYTW.mjs.map +0 -1
  87. package/dist/chunk-IHUFOV7L.mjs.map +0 -1
  88. package/dist/chunk-QGNU34T7.mjs.map +0 -1
  89. package/dist/chunk-QK6OVDLC.mjs +0 -103
  90. package/dist/chunk-QK6OVDLC.mjs.map +0 -1
  91. package/dist/chunk-SF3U7ZF4.mjs.map +0 -1
  92. package/dist/chunk-SZDAS7LK.mjs.map +0 -1
  93. package/dist/chunk-ZTQBUKLJ.mjs.map +0 -1
  94. package/dist/host-2ISGVO7O.mjs +0 -2377
  95. package/dist/host-2ISGVO7O.mjs.map +0 -1
  96. package/dist/host-3UFGFMJ2.mjs.map +0 -1
  97. package/dist/host-HOSJHQ5H.mjs.map +0 -1
  98. package/dist/render-ZX2O2IK7.mjs +0 -10
  99. package/dist/serialize-N4G6RFBB.mjs +0 -9
package/dist/ai.d.mts CHANGED
@@ -1,7 +1,7 @@
1
- import { c as State, b as AiFigureUiResult } from './types-C3FjpoUi.mjs';
1
+ import { c as State, b as AiFigureUiResult } from './types-tePd94vW.mjs';
2
2
  import { z } from 'zod';
3
- import { I as ImagePart } from './handleExtractProblem-BrDY9ifM.mjs';
4
- export { a as ExtractProblemOptions, b as ExtractProblemOutcome, E as ExtractUiResult, H as HandleExtractProblemOptions, e as extractProblemFromImage, h as handleExtractProblem } from './handleExtractProblem-BrDY9ifM.mjs';
3
+ import { I as ImagePart } from './handleExtractProblem-mtJyhEw3.mjs';
4
+ export { a as ExtractProblemOptions, b as ExtractProblemOutcome, E as ExtractUiResult, H as HandleExtractProblemOptions, e as extractProblemFromImage, h as handleExtractProblem } from './handleExtractProblem-mtJyhEw3.mjs';
5
5
  import 'react';
6
6
  import '@excalidraw/excalidraw/element/types';
7
7
 
@@ -36,6 +36,12 @@ type DslPointT = {
36
36
  p1: Name;
37
37
  p2: Name;
38
38
  visible?: boolean;
39
+ } | {
40
+ name: Name;
41
+ kind: 'onPerpBisector';
42
+ p1: Name;
43
+ p2: Name;
44
+ t?: number;
39
45
  } | {
40
46
  name: Name;
41
47
  kind: 'onSegment';
@@ -113,12 +119,18 @@ type DslPointT = {
113
119
  circle: Name;
114
120
  a: Name;
115
121
  b: Name;
116
- notContaining: Name;
122
+ notContaining?: Name;
123
+ containing?: Name;
117
124
  } | {
118
125
  name: Name;
119
126
  kind: 'excenter';
120
127
  vertices: [Name, Name, Name];
121
128
  opposite: Name;
129
+ } | {
130
+ name: Name;
131
+ kind: 'mixtilinearPoint';
132
+ vertices: [Name, Name, Name];
133
+ which: 'center' | 'touch';
122
134
  } | {
123
135
  name: Name;
124
136
  kind: 'reflectPoint';
@@ -135,6 +147,13 @@ type DslPointT = {
135
147
  from: Name;
136
148
  through: Name;
137
149
  distance: DslDistanceSpec;
150
+ } | {
151
+ name: Name;
152
+ kind: 'commonTangentPoint';
153
+ circles: [Name, Name];
154
+ on: 0 | 1;
155
+ variant: 'external' | 'internal';
156
+ side: 0 | 1;
138
157
  };
139
158
  type DslShapeT = {
140
159
  name: Name;
@@ -253,9 +272,9 @@ declare const DrawShapeIntentZ: z.ZodObject<{
253
272
  explicitCoords: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
254
273
  }, "strip", z.ZodTypeAny, {
255
274
  shape: "square" | "rectangle" | "rhombus" | "parallelogram" | "triangle" | "trapezoid" | "quadrilateral";
275
+ variant: "any" | "equilateral" | "isoceles-AB" | "isoceles-BC" | "isoceles-CA" | "right-at-A" | "right-at-B" | "right-at-C" | "standard" | "wide" | "tall" | "right" | "isoceles" | "general";
256
276
  op: "draw-shape";
257
277
  labels: string[];
258
- variant: "any" | "equilateral" | "isoceles-AB" | "isoceles-BC" | "isoceles-CA" | "right-at-A" | "right-at-B" | "right-at-C" | "standard" | "wide" | "tall" | "right" | "isoceles" | "general";
259
278
  explicitCoords?: Record<string, [number, number]> | undefined;
260
279
  }, {
261
280
  shape: "square" | "rectangle" | "rhombus" | "parallelogram" | "triangle" | "trapezoid" | "quadrilateral";
@@ -276,6 +295,18 @@ declare const AddPointIntentZ: z.ZodObject<{
276
295
  }, {
277
296
  kind: "midpoint";
278
297
  of: string;
298
+ }>, z.ZodObject<{
299
+ kind: z.ZodLiteral<"onPerpBisector">;
300
+ p1: z.ZodString;
301
+ p2: z.ZodString;
302
+ }, "strip", z.ZodTypeAny, {
303
+ kind: "onPerpBisector";
304
+ p1: string;
305
+ p2: string;
306
+ }, {
307
+ kind: "onPerpBisector";
308
+ p1: string;
309
+ p2: string;
279
310
  }>, z.ZodObject<{
280
311
  kind: z.ZodLiteral<"perpFoot">;
281
312
  from: z.ZodString;
@@ -479,19 +510,22 @@ declare const AddPointIntentZ: z.ZodObject<{
479
510
  circle: z.ZodString;
480
511
  a: z.ZodString;
481
512
  b: z.ZodString;
482
- notContaining: z.ZodString;
513
+ notContaining: z.ZodOptional<z.ZodString>;
514
+ containing: z.ZodOptional<z.ZodString>;
483
515
  }, "strip", z.ZodTypeAny, {
484
516
  kind: "arcMidpoint";
485
517
  circle: string;
486
518
  a: string;
487
519
  b: string;
488
- notContaining: string;
520
+ notContaining?: string | undefined;
521
+ containing?: string | undefined;
489
522
  }, {
490
523
  kind: "arcMidpoint";
491
524
  circle: string;
492
525
  a: string;
493
526
  b: string;
494
- notContaining: string;
527
+ notContaining?: string | undefined;
528
+ containing?: string | undefined;
495
529
  }>, z.ZodObject<{
496
530
  kind: z.ZodLiteral<"reflectPoint">;
497
531
  of: z.ZodString;
@@ -528,6 +562,18 @@ declare const AddPointIntentZ: z.ZodObject<{
528
562
  kind: "excenter";
529
563
  opposite: string;
530
564
  of: [string, string, string];
565
+ }>, z.ZodObject<{
566
+ kind: z.ZodLiteral<"mixtilinearPoint">;
567
+ of: z.ZodTuple<[z.ZodString, z.ZodString, z.ZodString], null>;
568
+ which: z.ZodUnion<[z.ZodLiteral<"center">, z.ZodLiteral<"touch">]>;
569
+ }, "strip", z.ZodTypeAny, {
570
+ kind: "mixtilinearPoint";
571
+ which: "center" | "touch";
572
+ of: [string, string, string];
573
+ }, {
574
+ kind: "mixtilinearPoint";
575
+ which: "center" | "touch";
576
+ of: [string, string, string];
531
577
  }>, z.ZodObject<{
532
578
  kind: z.ZodLiteral<"rightAngleViewing">;
533
579
  a: z.ZodString;
@@ -641,11 +687,33 @@ declare const AddPointIntentZ: z.ZodObject<{
641
687
  scale?: number | undefined;
642
688
  offset?: number | undefined;
643
689
  };
690
+ }>, z.ZodObject<{
691
+ kind: z.ZodLiteral<"commonTangentPoint">;
692
+ circles: z.ZodTuple<[z.ZodString, z.ZodString], null>;
693
+ on: z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<1>]>;
694
+ variant: z.ZodEnum<["external", "internal"]>;
695
+ side: z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<1>]>;
696
+ }, "strip", z.ZodTypeAny, {
697
+ kind: "commonTangentPoint";
698
+ circles: [string, string];
699
+ on: 0 | 1;
700
+ variant: "external" | "internal";
701
+ side: 0 | 1;
702
+ }, {
703
+ kind: "commonTangentPoint";
704
+ circles: [string, string];
705
+ on: 0 | 1;
706
+ variant: "external" | "internal";
707
+ side: 0 | 1;
644
708
  }>]>;
645
709
  }, "strip", z.ZodTypeAny, {
646
710
  constraint: {
647
711
  kind: "midpoint";
648
712
  of: string;
713
+ } | {
714
+ kind: "onPerpBisector";
715
+ p1: string;
716
+ p2: string;
649
717
  } | {
650
718
  kind: "perpFoot";
651
719
  onLine: string;
@@ -717,7 +785,8 @@ declare const AddPointIntentZ: z.ZodObject<{
717
785
  circle: string;
718
786
  a: string;
719
787
  b: string;
720
- notContaining: string;
788
+ notContaining?: string | undefined;
789
+ containing?: string | undefined;
721
790
  } | {
722
791
  kind: "reflectPoint";
723
792
  through: string;
@@ -730,6 +799,10 @@ declare const AddPointIntentZ: z.ZodObject<{
730
799
  kind: "excenter";
731
800
  opposite: string;
732
801
  of: [string, string, string];
802
+ } | {
803
+ kind: "mixtilinearPoint";
804
+ which: "center" | "touch";
805
+ of: [string, string, string];
733
806
  } | {
734
807
  kind: "rightAngleViewing";
735
808
  onLine: string;
@@ -757,6 +830,12 @@ declare const AddPointIntentZ: z.ZodObject<{
757
830
  scale?: number | undefined;
758
831
  offset?: number | undefined;
759
832
  };
833
+ } | {
834
+ kind: "commonTangentPoint";
835
+ circles: [string, string];
836
+ on: 0 | 1;
837
+ variant: "external" | "internal";
838
+ side: 0 | 1;
760
839
  };
761
840
  name: string;
762
841
  op: "add-point";
@@ -764,6 +843,10 @@ declare const AddPointIntentZ: z.ZodObject<{
764
843
  constraint: {
765
844
  kind: "midpoint";
766
845
  of: string;
846
+ } | {
847
+ kind: "onPerpBisector";
848
+ p1: string;
849
+ p2: string;
767
850
  } | {
768
851
  kind: "perpFoot";
769
852
  onLine: string;
@@ -835,7 +918,8 @@ declare const AddPointIntentZ: z.ZodObject<{
835
918
  circle: string;
836
919
  a: string;
837
920
  b: string;
838
- notContaining: string;
921
+ notContaining?: string | undefined;
922
+ containing?: string | undefined;
839
923
  } | {
840
924
  kind: "reflectPoint";
841
925
  through: string;
@@ -848,6 +932,10 @@ declare const AddPointIntentZ: z.ZodObject<{
848
932
  kind: "excenter";
849
933
  opposite: string;
850
934
  of: [string, string, string];
935
+ } | {
936
+ kind: "mixtilinearPoint";
937
+ which: "center" | "touch";
938
+ of: [string, string, string];
851
939
  } | {
852
940
  kind: "rightAngleViewing";
853
941
  onLine: string;
@@ -875,6 +963,12 @@ declare const AddPointIntentZ: z.ZodObject<{
875
963
  scale?: number | undefined;
876
964
  offset?: number | undefined;
877
965
  };
966
+ } | {
967
+ kind: "commonTangentPoint";
968
+ circles: [string, string];
969
+ on: 0 | 1;
970
+ variant: "external" | "internal";
971
+ side: 0 | 1;
878
972
  };
879
973
  name: string;
880
974
  op: "add-point";
@@ -910,8 +1004,8 @@ declare const DrawCircleIntentZ: z.ZodObject<{
910
1004
  op: "draw-circle";
911
1005
  spec: "diameter" | "centerThrough" | "through3" | "centerRadius" | "inscribedIn";
912
1006
  points?: [string, string, string] | undefined;
913
- through?: string | undefined;
914
1007
  center?: string | undefined;
1008
+ through?: string | undefined;
915
1009
  radius?: number | undefined;
916
1010
  triangle?: [string, string, string] | undefined;
917
1011
  endpoints?: [string, string] | undefined;
@@ -920,8 +1014,8 @@ declare const DrawCircleIntentZ: z.ZodObject<{
920
1014
  op: "draw-circle";
921
1015
  spec: "diameter" | "centerThrough" | "through3" | "centerRadius" | "inscribedIn";
922
1016
  points?: [string, string, string] | undefined;
923
- through?: string | undefined;
924
1017
  center?: string | undefined;
1018
+ through?: string | undefined;
925
1019
  radius?: number | undefined;
926
1020
  triangle?: [string, string, string] | undefined;
927
1021
  endpoints?: [string, string] | undefined;
@@ -934,9 +1028,9 @@ declare const IntentZ: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
934
1028
  explicitCoords: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
935
1029
  }, "strip", z.ZodTypeAny, {
936
1030
  shape: "square" | "rectangle" | "rhombus" | "parallelogram" | "triangle" | "trapezoid" | "quadrilateral";
1031
+ variant: "any" | "equilateral" | "isoceles-AB" | "isoceles-BC" | "isoceles-CA" | "right-at-A" | "right-at-B" | "right-at-C" | "standard" | "wide" | "tall" | "right" | "isoceles" | "general";
937
1032
  op: "draw-shape";
938
1033
  labels: string[];
939
- variant: "any" | "equilateral" | "isoceles-AB" | "isoceles-BC" | "isoceles-CA" | "right-at-A" | "right-at-B" | "right-at-C" | "standard" | "wide" | "tall" | "right" | "isoceles" | "general";
940
1034
  explicitCoords?: Record<string, [number, number]> | undefined;
941
1035
  }, {
942
1036
  shape: "square" | "rectangle" | "rhombus" | "parallelogram" | "triangle" | "trapezoid" | "quadrilateral";
@@ -956,6 +1050,18 @@ declare const IntentZ: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
956
1050
  }, {
957
1051
  kind: "midpoint";
958
1052
  of: string;
1053
+ }>, z.ZodObject<{
1054
+ kind: z.ZodLiteral<"onPerpBisector">;
1055
+ p1: z.ZodString;
1056
+ p2: z.ZodString;
1057
+ }, "strip", z.ZodTypeAny, {
1058
+ kind: "onPerpBisector";
1059
+ p1: string;
1060
+ p2: string;
1061
+ }, {
1062
+ kind: "onPerpBisector";
1063
+ p1: string;
1064
+ p2: string;
959
1065
  }>, z.ZodObject<{
960
1066
  kind: z.ZodLiteral<"perpFoot">;
961
1067
  from: z.ZodString;
@@ -1159,19 +1265,22 @@ declare const IntentZ: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
1159
1265
  circle: z.ZodString;
1160
1266
  a: z.ZodString;
1161
1267
  b: z.ZodString;
1162
- notContaining: z.ZodString;
1268
+ notContaining: z.ZodOptional<z.ZodString>;
1269
+ containing: z.ZodOptional<z.ZodString>;
1163
1270
  }, "strip", z.ZodTypeAny, {
1164
1271
  kind: "arcMidpoint";
1165
1272
  circle: string;
1166
1273
  a: string;
1167
1274
  b: string;
1168
- notContaining: string;
1275
+ notContaining?: string | undefined;
1276
+ containing?: string | undefined;
1169
1277
  }, {
1170
1278
  kind: "arcMidpoint";
1171
1279
  circle: string;
1172
1280
  a: string;
1173
1281
  b: string;
1174
- notContaining: string;
1282
+ notContaining?: string | undefined;
1283
+ containing?: string | undefined;
1175
1284
  }>, z.ZodObject<{
1176
1285
  kind: z.ZodLiteral<"reflectPoint">;
1177
1286
  of: z.ZodString;
@@ -1208,6 +1317,18 @@ declare const IntentZ: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
1208
1317
  kind: "excenter";
1209
1318
  opposite: string;
1210
1319
  of: [string, string, string];
1320
+ }>, z.ZodObject<{
1321
+ kind: z.ZodLiteral<"mixtilinearPoint">;
1322
+ of: z.ZodTuple<[z.ZodString, z.ZodString, z.ZodString], null>;
1323
+ which: z.ZodUnion<[z.ZodLiteral<"center">, z.ZodLiteral<"touch">]>;
1324
+ }, "strip", z.ZodTypeAny, {
1325
+ kind: "mixtilinearPoint";
1326
+ which: "center" | "touch";
1327
+ of: [string, string, string];
1328
+ }, {
1329
+ kind: "mixtilinearPoint";
1330
+ which: "center" | "touch";
1331
+ of: [string, string, string];
1211
1332
  }>, z.ZodObject<{
1212
1333
  kind: z.ZodLiteral<"rightAngleViewing">;
1213
1334
  a: z.ZodString;
@@ -1321,11 +1442,33 @@ declare const IntentZ: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
1321
1442
  scale?: number | undefined;
1322
1443
  offset?: number | undefined;
1323
1444
  };
1445
+ }>, z.ZodObject<{
1446
+ kind: z.ZodLiteral<"commonTangentPoint">;
1447
+ circles: z.ZodTuple<[z.ZodString, z.ZodString], null>;
1448
+ on: z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<1>]>;
1449
+ variant: z.ZodEnum<["external", "internal"]>;
1450
+ side: z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<1>]>;
1451
+ }, "strip", z.ZodTypeAny, {
1452
+ kind: "commonTangentPoint";
1453
+ circles: [string, string];
1454
+ on: 0 | 1;
1455
+ variant: "external" | "internal";
1456
+ side: 0 | 1;
1457
+ }, {
1458
+ kind: "commonTangentPoint";
1459
+ circles: [string, string];
1460
+ on: 0 | 1;
1461
+ variant: "external" | "internal";
1462
+ side: 0 | 1;
1324
1463
  }>]>;
1325
1464
  }, "strip", z.ZodTypeAny, {
1326
1465
  constraint: {
1327
1466
  kind: "midpoint";
1328
1467
  of: string;
1468
+ } | {
1469
+ kind: "onPerpBisector";
1470
+ p1: string;
1471
+ p2: string;
1329
1472
  } | {
1330
1473
  kind: "perpFoot";
1331
1474
  onLine: string;
@@ -1397,7 +1540,8 @@ declare const IntentZ: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
1397
1540
  circle: string;
1398
1541
  a: string;
1399
1542
  b: string;
1400
- notContaining: string;
1543
+ notContaining?: string | undefined;
1544
+ containing?: string | undefined;
1401
1545
  } | {
1402
1546
  kind: "reflectPoint";
1403
1547
  through: string;
@@ -1410,6 +1554,10 @@ declare const IntentZ: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
1410
1554
  kind: "excenter";
1411
1555
  opposite: string;
1412
1556
  of: [string, string, string];
1557
+ } | {
1558
+ kind: "mixtilinearPoint";
1559
+ which: "center" | "touch";
1560
+ of: [string, string, string];
1413
1561
  } | {
1414
1562
  kind: "rightAngleViewing";
1415
1563
  onLine: string;
@@ -1437,6 +1585,12 @@ declare const IntentZ: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
1437
1585
  scale?: number | undefined;
1438
1586
  offset?: number | undefined;
1439
1587
  };
1588
+ } | {
1589
+ kind: "commonTangentPoint";
1590
+ circles: [string, string];
1591
+ on: 0 | 1;
1592
+ variant: "external" | "internal";
1593
+ side: 0 | 1;
1440
1594
  };
1441
1595
  name: string;
1442
1596
  op: "add-point";
@@ -1444,6 +1598,10 @@ declare const IntentZ: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
1444
1598
  constraint: {
1445
1599
  kind: "midpoint";
1446
1600
  of: string;
1601
+ } | {
1602
+ kind: "onPerpBisector";
1603
+ p1: string;
1604
+ p2: string;
1447
1605
  } | {
1448
1606
  kind: "perpFoot";
1449
1607
  onLine: string;
@@ -1515,7 +1673,8 @@ declare const IntentZ: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
1515
1673
  circle: string;
1516
1674
  a: string;
1517
1675
  b: string;
1518
- notContaining: string;
1676
+ notContaining?: string | undefined;
1677
+ containing?: string | undefined;
1519
1678
  } | {
1520
1679
  kind: "reflectPoint";
1521
1680
  through: string;
@@ -1528,6 +1687,10 @@ declare const IntentZ: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
1528
1687
  kind: "excenter";
1529
1688
  opposite: string;
1530
1689
  of: [string, string, string];
1690
+ } | {
1691
+ kind: "mixtilinearPoint";
1692
+ which: "center" | "touch";
1693
+ of: [string, string, string];
1531
1694
  } | {
1532
1695
  kind: "rightAngleViewing";
1533
1696
  onLine: string;
@@ -1555,6 +1718,12 @@ declare const IntentZ: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
1555
1718
  scale?: number | undefined;
1556
1719
  offset?: number | undefined;
1557
1720
  };
1721
+ } | {
1722
+ kind: "commonTangentPoint";
1723
+ circles: [string, string];
1724
+ on: 0 | 1;
1725
+ variant: "external" | "internal";
1726
+ side: 0 | 1;
1558
1727
  };
1559
1728
  name: string;
1560
1729
  op: "add-point";
@@ -1588,8 +1757,8 @@ declare const IntentZ: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
1588
1757
  op: "draw-circle";
1589
1758
  spec: "diameter" | "centerThrough" | "through3" | "centerRadius" | "inscribedIn";
1590
1759
  points?: [string, string, string] | undefined;
1591
- through?: string | undefined;
1592
1760
  center?: string | undefined;
1761
+ through?: string | undefined;
1593
1762
  radius?: number | undefined;
1594
1763
  triangle?: [string, string, string] | undefined;
1595
1764
  endpoints?: [string, string] | undefined;
@@ -1598,15 +1767,15 @@ declare const IntentZ: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
1598
1767
  op: "draw-circle";
1599
1768
  spec: "diameter" | "centerThrough" | "through3" | "centerRadius" | "inscribedIn";
1600
1769
  points?: [string, string, string] | undefined;
1601
- through?: string | undefined;
1602
1770
  center?: string | undefined;
1771
+ through?: string | undefined;
1603
1772
  radius?: number | undefined;
1604
1773
  triangle?: [string, string, string] | undefined;
1605
1774
  endpoints?: [string, string] | undefined;
1606
1775
  }>, z.ZodObject<{
1607
1776
  op: z.ZodLiteral<"draw-line">;
1608
1777
  name: z.ZodString;
1609
- kind: z.ZodEnum<["perpThrough", "parallelThrough", "tangentAt", "tangentFromExt", "angleBisector", "lineThrough", "radicalAxis"]>;
1778
+ kind: z.ZodEnum<["perpThrough", "parallelThrough", "tangentAt", "tangentFromExt", "angleBisector", "lineThrough", "radicalAxis", "perpBisector"]>;
1610
1779
  through: z.ZodOptional<z.ZodString>;
1611
1780
  to: z.ZodOptional<z.ZodString>;
1612
1781
  from: z.ZodOptional<z.ZodString>;
@@ -1619,7 +1788,7 @@ declare const IntentZ: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
1619
1788
  vertex: z.ZodOptional<z.ZodString>;
1620
1789
  p2: z.ZodOptional<z.ZodString>;
1621
1790
  }, "strip", z.ZodTypeAny, {
1622
- kind: "angleBisector" | "lineThrough" | "radicalAxis" | "perpThrough" | "parallelThrough" | "tangentAt" | "tangentFromExt";
1791
+ kind: "perpBisector" | "angleBisector" | "lineThrough" | "radicalAxis" | "perpThrough" | "parallelThrough" | "tangentAt" | "tangentFromExt";
1623
1792
  name: string;
1624
1793
  op: "draw-line";
1625
1794
  circle?: string | undefined;
@@ -1634,7 +1803,7 @@ declare const IntentZ: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
1634
1803
  which?: "first" | "second" | "both" | undefined;
1635
1804
  to?: string | undefined;
1636
1805
  }, {
1637
- kind: "angleBisector" | "lineThrough" | "radicalAxis" | "perpThrough" | "parallelThrough" | "tangentAt" | "tangentFromExt";
1806
+ kind: "perpBisector" | "angleBisector" | "lineThrough" | "radicalAxis" | "perpThrough" | "parallelThrough" | "tangentAt" | "tangentFromExt";
1638
1807
  name: string;
1639
1808
  op: "draw-line";
1640
1809
  circle?: string | undefined;
@@ -1650,14 +1819,14 @@ declare const IntentZ: z.ZodDiscriminatedUnion<"op", [z.ZodObject<{
1650
1819
  to?: string | undefined;
1651
1820
  }>, z.ZodObject<{
1652
1821
  op: z.ZodLiteral<"mark-shape">;
1653
- shape: z.ZodEnum<["triangle", "quadrilateral"]>;
1822
+ shape: z.ZodEnum<["triangle", "quadrilateral", "polygon"]>;
1654
1823
  labels: z.ZodArray<z.ZodString, "many">;
1655
1824
  }, "strip", z.ZodTypeAny, {
1656
- shape: "triangle" | "quadrilateral";
1825
+ shape: "polygon" | "triangle" | "quadrilateral";
1657
1826
  op: "mark-shape";
1658
1827
  labels: string[];
1659
1828
  }, {
1660
- shape: "triangle" | "quadrilateral";
1829
+ shape: "polygon" | "triangle" | "quadrilateral";
1661
1830
  op: "mark-shape";
1662
1831
  labels: string[];
1663
1832
  }>]>;
@@ -1677,9 +1846,9 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
1677
1846
  explicitCoords: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
1678
1847
  }, "strip", z.ZodTypeAny, {
1679
1848
  shape: "square" | "rectangle" | "rhombus" | "parallelogram" | "triangle" | "trapezoid" | "quadrilateral";
1849
+ variant: "any" | "equilateral" | "isoceles-AB" | "isoceles-BC" | "isoceles-CA" | "right-at-A" | "right-at-B" | "right-at-C" | "standard" | "wide" | "tall" | "right" | "isoceles" | "general";
1680
1850
  op: "draw-shape";
1681
1851
  labels: string[];
1682
- variant: "any" | "equilateral" | "isoceles-AB" | "isoceles-BC" | "isoceles-CA" | "right-at-A" | "right-at-B" | "right-at-C" | "standard" | "wide" | "tall" | "right" | "isoceles" | "general";
1683
1852
  explicitCoords?: Record<string, [number, number]> | undefined;
1684
1853
  }, {
1685
1854
  shape: "square" | "rectangle" | "rhombus" | "parallelogram" | "triangle" | "trapezoid" | "quadrilateral";
@@ -1699,6 +1868,18 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
1699
1868
  }, {
1700
1869
  kind: "midpoint";
1701
1870
  of: string;
1871
+ }>, z.ZodObject<{
1872
+ kind: z.ZodLiteral<"onPerpBisector">;
1873
+ p1: z.ZodString;
1874
+ p2: z.ZodString;
1875
+ }, "strip", z.ZodTypeAny, {
1876
+ kind: "onPerpBisector";
1877
+ p1: string;
1878
+ p2: string;
1879
+ }, {
1880
+ kind: "onPerpBisector";
1881
+ p1: string;
1882
+ p2: string;
1702
1883
  }>, z.ZodObject<{
1703
1884
  kind: z.ZodLiteral<"perpFoot">;
1704
1885
  from: z.ZodString;
@@ -1902,19 +2083,22 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
1902
2083
  circle: z.ZodString;
1903
2084
  a: z.ZodString;
1904
2085
  b: z.ZodString;
1905
- notContaining: z.ZodString;
2086
+ notContaining: z.ZodOptional<z.ZodString>;
2087
+ containing: z.ZodOptional<z.ZodString>;
1906
2088
  }, "strip", z.ZodTypeAny, {
1907
2089
  kind: "arcMidpoint";
1908
2090
  circle: string;
1909
2091
  a: string;
1910
2092
  b: string;
1911
- notContaining: string;
2093
+ notContaining?: string | undefined;
2094
+ containing?: string | undefined;
1912
2095
  }, {
1913
2096
  kind: "arcMidpoint";
1914
2097
  circle: string;
1915
2098
  a: string;
1916
2099
  b: string;
1917
- notContaining: string;
2100
+ notContaining?: string | undefined;
2101
+ containing?: string | undefined;
1918
2102
  }>, z.ZodObject<{
1919
2103
  kind: z.ZodLiteral<"reflectPoint">;
1920
2104
  of: z.ZodString;
@@ -1951,6 +2135,18 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
1951
2135
  kind: "excenter";
1952
2136
  opposite: string;
1953
2137
  of: [string, string, string];
2138
+ }>, z.ZodObject<{
2139
+ kind: z.ZodLiteral<"mixtilinearPoint">;
2140
+ of: z.ZodTuple<[z.ZodString, z.ZodString, z.ZodString], null>;
2141
+ which: z.ZodUnion<[z.ZodLiteral<"center">, z.ZodLiteral<"touch">]>;
2142
+ }, "strip", z.ZodTypeAny, {
2143
+ kind: "mixtilinearPoint";
2144
+ which: "center" | "touch";
2145
+ of: [string, string, string];
2146
+ }, {
2147
+ kind: "mixtilinearPoint";
2148
+ which: "center" | "touch";
2149
+ of: [string, string, string];
1954
2150
  }>, z.ZodObject<{
1955
2151
  kind: z.ZodLiteral<"rightAngleViewing">;
1956
2152
  a: z.ZodString;
@@ -2064,11 +2260,33 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2064
2260
  scale?: number | undefined;
2065
2261
  offset?: number | undefined;
2066
2262
  };
2263
+ }>, z.ZodObject<{
2264
+ kind: z.ZodLiteral<"commonTangentPoint">;
2265
+ circles: z.ZodTuple<[z.ZodString, z.ZodString], null>;
2266
+ on: z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<1>]>;
2267
+ variant: z.ZodEnum<["external", "internal"]>;
2268
+ side: z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<1>]>;
2269
+ }, "strip", z.ZodTypeAny, {
2270
+ kind: "commonTangentPoint";
2271
+ circles: [string, string];
2272
+ on: 0 | 1;
2273
+ variant: "external" | "internal";
2274
+ side: 0 | 1;
2275
+ }, {
2276
+ kind: "commonTangentPoint";
2277
+ circles: [string, string];
2278
+ on: 0 | 1;
2279
+ variant: "external" | "internal";
2280
+ side: 0 | 1;
2067
2281
  }>]>;
2068
2282
  }, "strip", z.ZodTypeAny, {
2069
2283
  constraint: {
2070
2284
  kind: "midpoint";
2071
2285
  of: string;
2286
+ } | {
2287
+ kind: "onPerpBisector";
2288
+ p1: string;
2289
+ p2: string;
2072
2290
  } | {
2073
2291
  kind: "perpFoot";
2074
2292
  onLine: string;
@@ -2140,7 +2358,8 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2140
2358
  circle: string;
2141
2359
  a: string;
2142
2360
  b: string;
2143
- notContaining: string;
2361
+ notContaining?: string | undefined;
2362
+ containing?: string | undefined;
2144
2363
  } | {
2145
2364
  kind: "reflectPoint";
2146
2365
  through: string;
@@ -2153,6 +2372,10 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2153
2372
  kind: "excenter";
2154
2373
  opposite: string;
2155
2374
  of: [string, string, string];
2375
+ } | {
2376
+ kind: "mixtilinearPoint";
2377
+ which: "center" | "touch";
2378
+ of: [string, string, string];
2156
2379
  } | {
2157
2380
  kind: "rightAngleViewing";
2158
2381
  onLine: string;
@@ -2180,6 +2403,12 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2180
2403
  scale?: number | undefined;
2181
2404
  offset?: number | undefined;
2182
2405
  };
2406
+ } | {
2407
+ kind: "commonTangentPoint";
2408
+ circles: [string, string];
2409
+ on: 0 | 1;
2410
+ variant: "external" | "internal";
2411
+ side: 0 | 1;
2183
2412
  };
2184
2413
  name: string;
2185
2414
  op: "add-point";
@@ -2187,6 +2416,10 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2187
2416
  constraint: {
2188
2417
  kind: "midpoint";
2189
2418
  of: string;
2419
+ } | {
2420
+ kind: "onPerpBisector";
2421
+ p1: string;
2422
+ p2: string;
2190
2423
  } | {
2191
2424
  kind: "perpFoot";
2192
2425
  onLine: string;
@@ -2258,7 +2491,8 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2258
2491
  circle: string;
2259
2492
  a: string;
2260
2493
  b: string;
2261
- notContaining: string;
2494
+ notContaining?: string | undefined;
2495
+ containing?: string | undefined;
2262
2496
  } | {
2263
2497
  kind: "reflectPoint";
2264
2498
  through: string;
@@ -2271,6 +2505,10 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2271
2505
  kind: "excenter";
2272
2506
  opposite: string;
2273
2507
  of: [string, string, string];
2508
+ } | {
2509
+ kind: "mixtilinearPoint";
2510
+ which: "center" | "touch";
2511
+ of: [string, string, string];
2274
2512
  } | {
2275
2513
  kind: "rightAngleViewing";
2276
2514
  onLine: string;
@@ -2298,6 +2536,12 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2298
2536
  scale?: number | undefined;
2299
2537
  offset?: number | undefined;
2300
2538
  };
2539
+ } | {
2540
+ kind: "commonTangentPoint";
2541
+ circles: [string, string];
2542
+ on: 0 | 1;
2543
+ variant: "external" | "internal";
2544
+ side: 0 | 1;
2301
2545
  };
2302
2546
  name: string;
2303
2547
  op: "add-point";
@@ -2331,8 +2575,8 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2331
2575
  op: "draw-circle";
2332
2576
  spec: "diameter" | "centerThrough" | "through3" | "centerRadius" | "inscribedIn";
2333
2577
  points?: [string, string, string] | undefined;
2334
- through?: string | undefined;
2335
2578
  center?: string | undefined;
2579
+ through?: string | undefined;
2336
2580
  radius?: number | undefined;
2337
2581
  triangle?: [string, string, string] | undefined;
2338
2582
  endpoints?: [string, string] | undefined;
@@ -2341,15 +2585,15 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2341
2585
  op: "draw-circle";
2342
2586
  spec: "diameter" | "centerThrough" | "through3" | "centerRadius" | "inscribedIn";
2343
2587
  points?: [string, string, string] | undefined;
2344
- through?: string | undefined;
2345
2588
  center?: string | undefined;
2589
+ through?: string | undefined;
2346
2590
  radius?: number | undefined;
2347
2591
  triangle?: [string, string, string] | undefined;
2348
2592
  endpoints?: [string, string] | undefined;
2349
2593
  }>, z.ZodObject<{
2350
2594
  op: z.ZodLiteral<"draw-line">;
2351
2595
  name: z.ZodString;
2352
- kind: z.ZodEnum<["perpThrough", "parallelThrough", "tangentAt", "tangentFromExt", "angleBisector", "lineThrough", "radicalAxis"]>;
2596
+ kind: z.ZodEnum<["perpThrough", "parallelThrough", "tangentAt", "tangentFromExt", "angleBisector", "lineThrough", "radicalAxis", "perpBisector"]>;
2353
2597
  through: z.ZodOptional<z.ZodString>;
2354
2598
  to: z.ZodOptional<z.ZodString>;
2355
2599
  from: z.ZodOptional<z.ZodString>;
@@ -2362,7 +2606,7 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2362
2606
  vertex: z.ZodOptional<z.ZodString>;
2363
2607
  p2: z.ZodOptional<z.ZodString>;
2364
2608
  }, "strip", z.ZodTypeAny, {
2365
- kind: "angleBisector" | "lineThrough" | "radicalAxis" | "perpThrough" | "parallelThrough" | "tangentAt" | "tangentFromExt";
2609
+ kind: "perpBisector" | "angleBisector" | "lineThrough" | "radicalAxis" | "perpThrough" | "parallelThrough" | "tangentAt" | "tangentFromExt";
2366
2610
  name: string;
2367
2611
  op: "draw-line";
2368
2612
  circle?: string | undefined;
@@ -2377,7 +2621,7 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2377
2621
  which?: "first" | "second" | "both" | undefined;
2378
2622
  to?: string | undefined;
2379
2623
  }, {
2380
- kind: "angleBisector" | "lineThrough" | "radicalAxis" | "perpThrough" | "parallelThrough" | "tangentAt" | "tangentFromExt";
2624
+ kind: "perpBisector" | "angleBisector" | "lineThrough" | "radicalAxis" | "perpThrough" | "parallelThrough" | "tangentAt" | "tangentFromExt";
2381
2625
  name: string;
2382
2626
  op: "draw-line";
2383
2627
  circle?: string | undefined;
@@ -2393,14 +2637,14 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2393
2637
  to?: string | undefined;
2394
2638
  }>, z.ZodObject<{
2395
2639
  op: z.ZodLiteral<"mark-shape">;
2396
- shape: z.ZodEnum<["triangle", "quadrilateral"]>;
2640
+ shape: z.ZodEnum<["triangle", "quadrilateral", "polygon"]>;
2397
2641
  labels: z.ZodArray<z.ZodString, "many">;
2398
2642
  }, "strip", z.ZodTypeAny, {
2399
- shape: "triangle" | "quadrilateral";
2643
+ shape: "polygon" | "triangle" | "quadrilateral";
2400
2644
  op: "mark-shape";
2401
2645
  labels: string[];
2402
2646
  }, {
2403
- shape: "triangle" | "quadrilateral";
2647
+ shape: "polygon" | "triangle" | "quadrilateral";
2404
2648
  op: "mark-shape";
2405
2649
  labels: string[];
2406
2650
  }>]>, "many">>;
@@ -2410,14 +2654,18 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2410
2654
  reason?: string | undefined;
2411
2655
  intents?: ({
2412
2656
  shape: "square" | "rectangle" | "rhombus" | "parallelogram" | "triangle" | "trapezoid" | "quadrilateral";
2657
+ variant: "any" | "equilateral" | "isoceles-AB" | "isoceles-BC" | "isoceles-CA" | "right-at-A" | "right-at-B" | "right-at-C" | "standard" | "wide" | "tall" | "right" | "isoceles" | "general";
2413
2658
  op: "draw-shape";
2414
2659
  labels: string[];
2415
- variant: "any" | "equilateral" | "isoceles-AB" | "isoceles-BC" | "isoceles-CA" | "right-at-A" | "right-at-B" | "right-at-C" | "standard" | "wide" | "tall" | "right" | "isoceles" | "general";
2416
2660
  explicitCoords?: Record<string, [number, number]> | undefined;
2417
2661
  } | {
2418
2662
  constraint: {
2419
2663
  kind: "midpoint";
2420
2664
  of: string;
2665
+ } | {
2666
+ kind: "onPerpBisector";
2667
+ p1: string;
2668
+ p2: string;
2421
2669
  } | {
2422
2670
  kind: "perpFoot";
2423
2671
  onLine: string;
@@ -2489,7 +2737,8 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2489
2737
  circle: string;
2490
2738
  a: string;
2491
2739
  b: string;
2492
- notContaining: string;
2740
+ notContaining?: string | undefined;
2741
+ containing?: string | undefined;
2493
2742
  } | {
2494
2743
  kind: "reflectPoint";
2495
2744
  through: string;
@@ -2502,6 +2751,10 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2502
2751
  kind: "excenter";
2503
2752
  opposite: string;
2504
2753
  of: [string, string, string];
2754
+ } | {
2755
+ kind: "mixtilinearPoint";
2756
+ which: "center" | "touch";
2757
+ of: [string, string, string];
2505
2758
  } | {
2506
2759
  kind: "rightAngleViewing";
2507
2760
  onLine: string;
@@ -2529,6 +2782,12 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2529
2782
  scale?: number | undefined;
2530
2783
  offset?: number | undefined;
2531
2784
  };
2785
+ } | {
2786
+ kind: "commonTangentPoint";
2787
+ circles: [string, string];
2788
+ on: 0 | 1;
2789
+ variant: "external" | "internal";
2790
+ side: 0 | 1;
2532
2791
  };
2533
2792
  name: string;
2534
2793
  op: "add-point";
@@ -2542,13 +2801,13 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2542
2801
  op: "draw-circle";
2543
2802
  spec: "diameter" | "centerThrough" | "through3" | "centerRadius" | "inscribedIn";
2544
2803
  points?: [string, string, string] | undefined;
2545
- through?: string | undefined;
2546
2804
  center?: string | undefined;
2805
+ through?: string | undefined;
2547
2806
  radius?: number | undefined;
2548
2807
  triangle?: [string, string, string] | undefined;
2549
2808
  endpoints?: [string, string] | undefined;
2550
2809
  } | {
2551
- kind: "angleBisector" | "lineThrough" | "radicalAxis" | "perpThrough" | "parallelThrough" | "tangentAt" | "tangentFromExt";
2810
+ kind: "perpBisector" | "angleBisector" | "lineThrough" | "radicalAxis" | "perpThrough" | "parallelThrough" | "tangentAt" | "tangentFromExt";
2552
2811
  name: string;
2553
2812
  op: "draw-line";
2554
2813
  circle?: string | undefined;
@@ -2563,7 +2822,7 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2563
2822
  which?: "first" | "second" | "both" | undefined;
2564
2823
  to?: string | undefined;
2565
2824
  } | {
2566
- shape: "triangle" | "quadrilateral";
2825
+ shape: "polygon" | "triangle" | "quadrilateral";
2567
2826
  op: "mark-shape";
2568
2827
  labels: string[];
2569
2828
  })[] | undefined;
@@ -2580,6 +2839,10 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2580
2839
  constraint: {
2581
2840
  kind: "midpoint";
2582
2841
  of: string;
2842
+ } | {
2843
+ kind: "onPerpBisector";
2844
+ p1: string;
2845
+ p2: string;
2583
2846
  } | {
2584
2847
  kind: "perpFoot";
2585
2848
  onLine: string;
@@ -2651,7 +2914,8 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2651
2914
  circle: string;
2652
2915
  a: string;
2653
2916
  b: string;
2654
- notContaining: string;
2917
+ notContaining?: string | undefined;
2918
+ containing?: string | undefined;
2655
2919
  } | {
2656
2920
  kind: "reflectPoint";
2657
2921
  through: string;
@@ -2664,6 +2928,10 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2664
2928
  kind: "excenter";
2665
2929
  opposite: string;
2666
2930
  of: [string, string, string];
2931
+ } | {
2932
+ kind: "mixtilinearPoint";
2933
+ which: "center" | "touch";
2934
+ of: [string, string, string];
2667
2935
  } | {
2668
2936
  kind: "rightAngleViewing";
2669
2937
  onLine: string;
@@ -2691,6 +2959,12 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2691
2959
  scale?: number | undefined;
2692
2960
  offset?: number | undefined;
2693
2961
  };
2962
+ } | {
2963
+ kind: "commonTangentPoint";
2964
+ circles: [string, string];
2965
+ on: 0 | 1;
2966
+ variant: "external" | "internal";
2967
+ side: 0 | 1;
2694
2968
  };
2695
2969
  name: string;
2696
2970
  op: "add-point";
@@ -2704,13 +2978,13 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2704
2978
  op: "draw-circle";
2705
2979
  spec: "diameter" | "centerThrough" | "through3" | "centerRadius" | "inscribedIn";
2706
2980
  points?: [string, string, string] | undefined;
2707
- through?: string | undefined;
2708
2981
  center?: string | undefined;
2982
+ through?: string | undefined;
2709
2983
  radius?: number | undefined;
2710
2984
  triangle?: [string, string, string] | undefined;
2711
2985
  endpoints?: [string, string] | undefined;
2712
2986
  } | {
2713
- kind: "angleBisector" | "lineThrough" | "radicalAxis" | "perpThrough" | "parallelThrough" | "tangentAt" | "tangentFromExt";
2987
+ kind: "perpBisector" | "angleBisector" | "lineThrough" | "radicalAxis" | "perpThrough" | "parallelThrough" | "tangentAt" | "tangentFromExt";
2714
2988
  name: string;
2715
2989
  op: "draw-line";
2716
2990
  circle?: string | undefined;
@@ -2725,7 +2999,7 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2725
2999
  which?: "first" | "second" | "both" | undefined;
2726
3000
  to?: string | undefined;
2727
3001
  } | {
2728
- shape: "triangle" | "quadrilateral";
3002
+ shape: "polygon" | "triangle" | "quadrilateral";
2729
3003
  op: "mark-shape";
2730
3004
  labels: string[];
2731
3005
  })[] | undefined;
@@ -2734,14 +3008,18 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2734
3008
  reason?: string | undefined;
2735
3009
  intents?: ({
2736
3010
  shape: "square" | "rectangle" | "rhombus" | "parallelogram" | "triangle" | "trapezoid" | "quadrilateral";
3011
+ variant: "any" | "equilateral" | "isoceles-AB" | "isoceles-BC" | "isoceles-CA" | "right-at-A" | "right-at-B" | "right-at-C" | "standard" | "wide" | "tall" | "right" | "isoceles" | "general";
2737
3012
  op: "draw-shape";
2738
3013
  labels: string[];
2739
- variant: "any" | "equilateral" | "isoceles-AB" | "isoceles-BC" | "isoceles-CA" | "right-at-A" | "right-at-B" | "right-at-C" | "standard" | "wide" | "tall" | "right" | "isoceles" | "general";
2740
3014
  explicitCoords?: Record<string, [number, number]> | undefined;
2741
3015
  } | {
2742
3016
  constraint: {
2743
3017
  kind: "midpoint";
2744
3018
  of: string;
3019
+ } | {
3020
+ kind: "onPerpBisector";
3021
+ p1: string;
3022
+ p2: string;
2745
3023
  } | {
2746
3024
  kind: "perpFoot";
2747
3025
  onLine: string;
@@ -2813,7 +3091,8 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2813
3091
  circle: string;
2814
3092
  a: string;
2815
3093
  b: string;
2816
- notContaining: string;
3094
+ notContaining?: string | undefined;
3095
+ containing?: string | undefined;
2817
3096
  } | {
2818
3097
  kind: "reflectPoint";
2819
3098
  through: string;
@@ -2826,6 +3105,10 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2826
3105
  kind: "excenter";
2827
3106
  opposite: string;
2828
3107
  of: [string, string, string];
3108
+ } | {
3109
+ kind: "mixtilinearPoint";
3110
+ which: "center" | "touch";
3111
+ of: [string, string, string];
2829
3112
  } | {
2830
3113
  kind: "rightAngleViewing";
2831
3114
  onLine: string;
@@ -2853,6 +3136,12 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2853
3136
  scale?: number | undefined;
2854
3137
  offset?: number | undefined;
2855
3138
  };
3139
+ } | {
3140
+ kind: "commonTangentPoint";
3141
+ circles: [string, string];
3142
+ on: 0 | 1;
3143
+ variant: "external" | "internal";
3144
+ side: 0 | 1;
2856
3145
  };
2857
3146
  name: string;
2858
3147
  op: "add-point";
@@ -2866,13 +3155,13 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2866
3155
  op: "draw-circle";
2867
3156
  spec: "diameter" | "centerThrough" | "through3" | "centerRadius" | "inscribedIn";
2868
3157
  points?: [string, string, string] | undefined;
2869
- through?: string | undefined;
2870
3158
  center?: string | undefined;
3159
+ through?: string | undefined;
2871
3160
  radius?: number | undefined;
2872
3161
  triangle?: [string, string, string] | undefined;
2873
3162
  endpoints?: [string, string] | undefined;
2874
3163
  } | {
2875
- kind: "angleBisector" | "lineThrough" | "radicalAxis" | "perpThrough" | "parallelThrough" | "tangentAt" | "tangentFromExt";
3164
+ kind: "perpBisector" | "angleBisector" | "lineThrough" | "radicalAxis" | "perpThrough" | "parallelThrough" | "tangentAt" | "tangentFromExt";
2876
3165
  name: string;
2877
3166
  op: "draw-line";
2878
3167
  circle?: string | undefined;
@@ -2887,7 +3176,7 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2887
3176
  which?: "first" | "second" | "both" | undefined;
2888
3177
  to?: string | undefined;
2889
3178
  } | {
2890
- shape: "triangle" | "quadrilateral";
3179
+ shape: "polygon" | "triangle" | "quadrilateral";
2891
3180
  op: "mark-shape";
2892
3181
  labels: string[];
2893
3182
  })[] | undefined;
@@ -2904,6 +3193,10 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2904
3193
  constraint: {
2905
3194
  kind: "midpoint";
2906
3195
  of: string;
3196
+ } | {
3197
+ kind: "onPerpBisector";
3198
+ p1: string;
3199
+ p2: string;
2907
3200
  } | {
2908
3201
  kind: "perpFoot";
2909
3202
  onLine: string;
@@ -2975,7 +3268,8 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2975
3268
  circle: string;
2976
3269
  a: string;
2977
3270
  b: string;
2978
- notContaining: string;
3271
+ notContaining?: string | undefined;
3272
+ containing?: string | undefined;
2979
3273
  } | {
2980
3274
  kind: "reflectPoint";
2981
3275
  through: string;
@@ -2988,6 +3282,10 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
2988
3282
  kind: "excenter";
2989
3283
  opposite: string;
2990
3284
  of: [string, string, string];
3285
+ } | {
3286
+ kind: "mixtilinearPoint";
3287
+ which: "center" | "touch";
3288
+ of: [string, string, string];
2991
3289
  } | {
2992
3290
  kind: "rightAngleViewing";
2993
3291
  onLine: string;
@@ -3015,6 +3313,12 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
3015
3313
  scale?: number | undefined;
3016
3314
  offset?: number | undefined;
3017
3315
  };
3316
+ } | {
3317
+ kind: "commonTangentPoint";
3318
+ circles: [string, string];
3319
+ on: 0 | 1;
3320
+ variant: "external" | "internal";
3321
+ side: 0 | 1;
3018
3322
  };
3019
3323
  name: string;
3020
3324
  op: "add-point";
@@ -3028,13 +3332,13 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
3028
3332
  op: "draw-circle";
3029
3333
  spec: "diameter" | "centerThrough" | "through3" | "centerRadius" | "inscribedIn";
3030
3334
  points?: [string, string, string] | undefined;
3031
- through?: string | undefined;
3032
3335
  center?: string | undefined;
3336
+ through?: string | undefined;
3033
3337
  radius?: number | undefined;
3034
3338
  triangle?: [string, string, string] | undefined;
3035
3339
  endpoints?: [string, string] | undefined;
3036
3340
  } | {
3037
- kind: "angleBisector" | "lineThrough" | "radicalAxis" | "perpThrough" | "parallelThrough" | "tangentAt" | "tangentFromExt";
3341
+ kind: "perpBisector" | "angleBisector" | "lineThrough" | "radicalAxis" | "perpThrough" | "parallelThrough" | "tangentAt" | "tangentFromExt";
3038
3342
  name: string;
3039
3343
  op: "draw-line";
3040
3344
  circle?: string | undefined;
@@ -3049,7 +3353,7 @@ declare const IntentEnvelopeZ: z.ZodEffects<z.ZodObject<{
3049
3353
  which?: "first" | "second" | "both" | undefined;
3050
3354
  to?: string | undefined;
3051
3355
  } | {
3052
- shape: "triangle" | "quadrilateral";
3356
+ shape: "polygon" | "triangle" | "quadrilateral";
3053
3357
  op: "mark-shape";
3054
3358
  labels: string[];
3055
3359
  })[] | undefined;
@@ -3097,6 +3401,13 @@ interface IntentSuccessResult {
3097
3401
  verify: VerifyReport;
3098
3402
  usage: IntentTokenUsage;
3099
3403
  provider: string;
3404
+ /**
3405
+ * Có mặt khi đây là PARTIAL render: rule base chỉ dựng được một phần đề (phần
3406
+ * chắc chắn đúng), `message` là to-do list cho user tự dựng nốt. Vắng = full.
3407
+ */
3408
+ partial?: {
3409
+ message: string;
3410
+ };
3100
3411
  }
3101
3412
  interface IntentFailureResult {
3102
3413
  ok: false;
@@ -3267,6 +3578,10 @@ type AiFigureIntentUiResult = {
3267
3578
  inputTokens: number;
3268
3579
  outputTokens: number;
3269
3580
  };
3581
+ /** Có mặt khi partial render: `message` là to-do list cho user tự dựng nốt. */
3582
+ partial?: {
3583
+ message: string;
3584
+ };
3270
3585
  } | {
3271
3586
  kind: 'refused';
3272
3587
  message: string;
@@ -3309,7 +3624,7 @@ type TryDeterministicResult = {
3309
3624
  detail?: string;
3310
3625
  coverage?: CoverageReport;
3311
3626
  };
3312
- declare function tryDeterministicFigure(problem: string): TryDeterministicResult;
3627
+ declare function tryDeterministicFigure(rawProblem: string): TryDeterministicResult;
3313
3628
 
3314
3629
  interface PartialDeterministicResult {
3315
3630
  /** Intent deterministic từ các clause đã được rule claim (deduped). */