@jokerized/decksmith 0.3.0 → 0.3.1

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.
@@ -352,6 +352,33 @@ export declare const insideSchema: z.ZodObject<{
352
352
  element: z.ZodString;
353
353
  label: z.ZodOptional<z.ZodString>;
354
354
  }, z.core.$strip>;
355
+ /**
356
+ * The structural job a beat does in a paper-shaped deck.
357
+ *
358
+ * A ROLE IS NOT AN ARCHETYPE AND NOT A HEADING. Position and archetype cannot
359
+ * tell these beats apart — a limitation and a conclusion are both naturally a
360
+ * `callout`, and the prompt lists both under one tell — and a check on headline
361
+ * wording is the failure `scanHeadlines` documents, where a sharpened rule was
362
+ * answered by swapping one verb. So the plan SAYS which beat is which, and
363
+ * everything downstream reads the declaration rather than guessing at prose.
364
+ *
365
+ * AN ENUM, DELIBERATELY, AND THAT IS WHY IT MAY BE SHOWN TO THE MODEL.
366
+ * `forStructuredOutput` strips numeric and length bounds, which is how `tilt`
367
+ * came to be required as an unbounded number that `safeParse` then rejected,
368
+ * discarding whole runs. `enum` is not in that stripped set, so the model sees
369
+ * exactly the values `storyboardSchema` will accept and cannot cross a bound it
370
+ * was never shown.
371
+ *
372
+ * Optional, and hidden from the planner's schema entirely unless the paper arc
373
+ * was asked for — see `plannerInvisible` in src/plan/codex.ts. A deck that did
374
+ * not ask for the arc is byte-for-byte what it was.
375
+ */
376
+ export declare const beatRoleSchema: z.ZodEnum<{
377
+ intro: "intro";
378
+ background: "background";
379
+ limitations: "limitations";
380
+ conclusion: "conclusion";
381
+ }>;
355
382
  export declare const beatSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
356
383
  narration: z.ZodOptional<z.ZodString>;
357
384
  archetype: z.ZodLiteral<"title">;
@@ -362,6 +389,12 @@ export declare const beatSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
362
389
  }, z.core.$strip>;
363
390
  id: z.ZodString;
364
391
  intent: z.ZodString;
392
+ role: z.ZodOptional<z.ZodEnum<{
393
+ intro: "intro";
394
+ background: "background";
395
+ limitations: "limitations";
396
+ conclusion: "conclusion";
397
+ }>>;
365
398
  inside: z.ZodOptional<z.ZodObject<{
366
399
  beat: z.ZodString;
367
400
  element: z.ZodString;
@@ -394,6 +427,12 @@ export declare const beatSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
394
427
  }, z.core.$strip>;
395
428
  id: z.ZodString;
396
429
  intent: z.ZodString;
430
+ role: z.ZodOptional<z.ZodEnum<{
431
+ intro: "intro";
432
+ background: "background";
433
+ limitations: "limitations";
434
+ conclusion: "conclusion";
435
+ }>>;
397
436
  inside: z.ZodOptional<z.ZodObject<{
398
437
  beat: z.ZodString;
399
438
  element: z.ZodString;
@@ -431,6 +470,12 @@ export declare const beatSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
431
470
  }, z.core.$strip>;
432
471
  id: z.ZodString;
433
472
  intent: z.ZodString;
473
+ role: z.ZodOptional<z.ZodEnum<{
474
+ intro: "intro";
475
+ background: "background";
476
+ limitations: "limitations";
477
+ conclusion: "conclusion";
478
+ }>>;
434
479
  inside: z.ZodOptional<z.ZodObject<{
435
480
  beat: z.ZodString;
436
481
  element: z.ZodString;
@@ -469,6 +514,12 @@ export declare const beatSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
469
514
  }, z.core.$strip>;
470
515
  id: z.ZodString;
471
516
  intent: z.ZodString;
517
+ role: z.ZodOptional<z.ZodEnum<{
518
+ intro: "intro";
519
+ background: "background";
520
+ limitations: "limitations";
521
+ conclusion: "conclusion";
522
+ }>>;
472
523
  inside: z.ZodOptional<z.ZodObject<{
473
524
  beat: z.ZodString;
474
525
  element: z.ZodString;
@@ -507,6 +558,12 @@ export declare const beatSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
507
558
  }, z.core.$strip>;
508
559
  id: z.ZodString;
509
560
  intent: z.ZodString;
561
+ role: z.ZodOptional<z.ZodEnum<{
562
+ intro: "intro";
563
+ background: "background";
564
+ limitations: "limitations";
565
+ conclusion: "conclusion";
566
+ }>>;
510
567
  inside: z.ZodOptional<z.ZodObject<{
511
568
  beat: z.ZodString;
512
569
  element: z.ZodString;
@@ -541,6 +598,12 @@ export declare const beatSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
541
598
  }, z.core.$strip>;
542
599
  id: z.ZodString;
543
600
  intent: z.ZodString;
601
+ role: z.ZodOptional<z.ZodEnum<{
602
+ intro: "intro";
603
+ background: "background";
604
+ limitations: "limitations";
605
+ conclusion: "conclusion";
606
+ }>>;
544
607
  inside: z.ZodOptional<z.ZodObject<{
545
608
  beat: z.ZodString;
546
609
  element: z.ZodString;
@@ -572,6 +635,12 @@ export declare const beatSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
572
635
  }, z.core.$strip>;
573
636
  id: z.ZodString;
574
637
  intent: z.ZodString;
638
+ role: z.ZodOptional<z.ZodEnum<{
639
+ intro: "intro";
640
+ background: "background";
641
+ limitations: "limitations";
642
+ conclusion: "conclusion";
643
+ }>>;
575
644
  inside: z.ZodOptional<z.ZodObject<{
576
645
  beat: z.ZodString;
577
646
  element: z.ZodString;
@@ -614,6 +683,12 @@ export declare const beatSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
614
683
  }, z.core.$strip>;
615
684
  id: z.ZodString;
616
685
  intent: z.ZodString;
686
+ role: z.ZodOptional<z.ZodEnum<{
687
+ intro: "intro";
688
+ background: "background";
689
+ limitations: "limitations";
690
+ conclusion: "conclusion";
691
+ }>>;
617
692
  inside: z.ZodOptional<z.ZodObject<{
618
693
  beat: z.ZodString;
619
694
  element: z.ZodString;
@@ -658,6 +733,12 @@ export declare const beatSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
658
733
  }, z.core.$strip>;
659
734
  id: z.ZodString;
660
735
  intent: z.ZodString;
736
+ role: z.ZodOptional<z.ZodEnum<{
737
+ intro: "intro";
738
+ background: "background";
739
+ limitations: "limitations";
740
+ conclusion: "conclusion";
741
+ }>>;
661
742
  inside: z.ZodOptional<z.ZodObject<{
662
743
  beat: z.ZodString;
663
744
  element: z.ZodString;
@@ -700,6 +781,12 @@ export declare const beatSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
700
781
  }, z.core.$strip>;
701
782
  id: z.ZodString;
702
783
  intent: z.ZodString;
784
+ role: z.ZodOptional<z.ZodEnum<{
785
+ intro: "intro";
786
+ background: "background";
787
+ limitations: "limitations";
788
+ conclusion: "conclusion";
789
+ }>>;
703
790
  inside: z.ZodOptional<z.ZodObject<{
704
791
  beat: z.ZodString;
705
792
  element: z.ZodString;
@@ -738,6 +825,12 @@ export declare const beatSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
738
825
  }, z.core.$strip>;
739
826
  id: z.ZodString;
740
827
  intent: z.ZodString;
828
+ role: z.ZodOptional<z.ZodEnum<{
829
+ intro: "intro";
830
+ background: "background";
831
+ limitations: "limitations";
832
+ conclusion: "conclusion";
833
+ }>>;
741
834
  inside: z.ZodOptional<z.ZodObject<{
742
835
  beat: z.ZodString;
743
836
  element: z.ZodString;
@@ -770,6 +863,12 @@ export declare const beatSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
770
863
  }, z.core.$strip>;
771
864
  id: z.ZodString;
772
865
  intent: z.ZodString;
866
+ role: z.ZodOptional<z.ZodEnum<{
867
+ intro: "intro";
868
+ background: "background";
869
+ limitations: "limitations";
870
+ conclusion: "conclusion";
871
+ }>>;
773
872
  inside: z.ZodOptional<z.ZodObject<{
774
873
  beat: z.ZodString;
775
874
  element: z.ZodString;
@@ -815,6 +914,12 @@ export declare const beatSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
815
914
  }, z.core.$strip>;
816
915
  id: z.ZodString;
817
916
  intent: z.ZodString;
917
+ role: z.ZodOptional<z.ZodEnum<{
918
+ intro: "intro";
919
+ background: "background";
920
+ limitations: "limitations";
921
+ conclusion: "conclusion";
922
+ }>>;
818
923
  inside: z.ZodOptional<z.ZodObject<{
819
924
  beat: z.ZodString;
820
925
  element: z.ZodString;
@@ -883,6 +988,12 @@ export declare const storyboardSchema: z.ZodObject<{
883
988
  }, z.core.$strip>;
884
989
  id: z.ZodString;
885
990
  intent: z.ZodString;
991
+ role: z.ZodOptional<z.ZodEnum<{
992
+ intro: "intro";
993
+ background: "background";
994
+ limitations: "limitations";
995
+ conclusion: "conclusion";
996
+ }>>;
886
997
  inside: z.ZodOptional<z.ZodObject<{
887
998
  beat: z.ZodString;
888
999
  element: z.ZodString;
@@ -915,6 +1026,12 @@ export declare const storyboardSchema: z.ZodObject<{
915
1026
  }, z.core.$strip>;
916
1027
  id: z.ZodString;
917
1028
  intent: z.ZodString;
1029
+ role: z.ZodOptional<z.ZodEnum<{
1030
+ intro: "intro";
1031
+ background: "background";
1032
+ limitations: "limitations";
1033
+ conclusion: "conclusion";
1034
+ }>>;
918
1035
  inside: z.ZodOptional<z.ZodObject<{
919
1036
  beat: z.ZodString;
920
1037
  element: z.ZodString;
@@ -952,6 +1069,12 @@ export declare const storyboardSchema: z.ZodObject<{
952
1069
  }, z.core.$strip>;
953
1070
  id: z.ZodString;
954
1071
  intent: z.ZodString;
1072
+ role: z.ZodOptional<z.ZodEnum<{
1073
+ intro: "intro";
1074
+ background: "background";
1075
+ limitations: "limitations";
1076
+ conclusion: "conclusion";
1077
+ }>>;
955
1078
  inside: z.ZodOptional<z.ZodObject<{
956
1079
  beat: z.ZodString;
957
1080
  element: z.ZodString;
@@ -990,6 +1113,12 @@ export declare const storyboardSchema: z.ZodObject<{
990
1113
  }, z.core.$strip>;
991
1114
  id: z.ZodString;
992
1115
  intent: z.ZodString;
1116
+ role: z.ZodOptional<z.ZodEnum<{
1117
+ intro: "intro";
1118
+ background: "background";
1119
+ limitations: "limitations";
1120
+ conclusion: "conclusion";
1121
+ }>>;
993
1122
  inside: z.ZodOptional<z.ZodObject<{
994
1123
  beat: z.ZodString;
995
1124
  element: z.ZodString;
@@ -1028,6 +1157,12 @@ export declare const storyboardSchema: z.ZodObject<{
1028
1157
  }, z.core.$strip>;
1029
1158
  id: z.ZodString;
1030
1159
  intent: z.ZodString;
1160
+ role: z.ZodOptional<z.ZodEnum<{
1161
+ intro: "intro";
1162
+ background: "background";
1163
+ limitations: "limitations";
1164
+ conclusion: "conclusion";
1165
+ }>>;
1031
1166
  inside: z.ZodOptional<z.ZodObject<{
1032
1167
  beat: z.ZodString;
1033
1168
  element: z.ZodString;
@@ -1062,6 +1197,12 @@ export declare const storyboardSchema: z.ZodObject<{
1062
1197
  }, z.core.$strip>;
1063
1198
  id: z.ZodString;
1064
1199
  intent: z.ZodString;
1200
+ role: z.ZodOptional<z.ZodEnum<{
1201
+ intro: "intro";
1202
+ background: "background";
1203
+ limitations: "limitations";
1204
+ conclusion: "conclusion";
1205
+ }>>;
1065
1206
  inside: z.ZodOptional<z.ZodObject<{
1066
1207
  beat: z.ZodString;
1067
1208
  element: z.ZodString;
@@ -1093,6 +1234,12 @@ export declare const storyboardSchema: z.ZodObject<{
1093
1234
  }, z.core.$strip>;
1094
1235
  id: z.ZodString;
1095
1236
  intent: z.ZodString;
1237
+ role: z.ZodOptional<z.ZodEnum<{
1238
+ intro: "intro";
1239
+ background: "background";
1240
+ limitations: "limitations";
1241
+ conclusion: "conclusion";
1242
+ }>>;
1096
1243
  inside: z.ZodOptional<z.ZodObject<{
1097
1244
  beat: z.ZodString;
1098
1245
  element: z.ZodString;
@@ -1135,6 +1282,12 @@ export declare const storyboardSchema: z.ZodObject<{
1135
1282
  }, z.core.$strip>;
1136
1283
  id: z.ZodString;
1137
1284
  intent: z.ZodString;
1285
+ role: z.ZodOptional<z.ZodEnum<{
1286
+ intro: "intro";
1287
+ background: "background";
1288
+ limitations: "limitations";
1289
+ conclusion: "conclusion";
1290
+ }>>;
1138
1291
  inside: z.ZodOptional<z.ZodObject<{
1139
1292
  beat: z.ZodString;
1140
1293
  element: z.ZodString;
@@ -1179,6 +1332,12 @@ export declare const storyboardSchema: z.ZodObject<{
1179
1332
  }, z.core.$strip>;
1180
1333
  id: z.ZodString;
1181
1334
  intent: z.ZodString;
1335
+ role: z.ZodOptional<z.ZodEnum<{
1336
+ intro: "intro";
1337
+ background: "background";
1338
+ limitations: "limitations";
1339
+ conclusion: "conclusion";
1340
+ }>>;
1182
1341
  inside: z.ZodOptional<z.ZodObject<{
1183
1342
  beat: z.ZodString;
1184
1343
  element: z.ZodString;
@@ -1221,6 +1380,12 @@ export declare const storyboardSchema: z.ZodObject<{
1221
1380
  }, z.core.$strip>;
1222
1381
  id: z.ZodString;
1223
1382
  intent: z.ZodString;
1383
+ role: z.ZodOptional<z.ZodEnum<{
1384
+ intro: "intro";
1385
+ background: "background";
1386
+ limitations: "limitations";
1387
+ conclusion: "conclusion";
1388
+ }>>;
1224
1389
  inside: z.ZodOptional<z.ZodObject<{
1225
1390
  beat: z.ZodString;
1226
1391
  element: z.ZodString;
@@ -1259,6 +1424,12 @@ export declare const storyboardSchema: z.ZodObject<{
1259
1424
  }, z.core.$strip>;
1260
1425
  id: z.ZodString;
1261
1426
  intent: z.ZodString;
1427
+ role: z.ZodOptional<z.ZodEnum<{
1428
+ intro: "intro";
1429
+ background: "background";
1430
+ limitations: "limitations";
1431
+ conclusion: "conclusion";
1432
+ }>>;
1262
1433
  inside: z.ZodOptional<z.ZodObject<{
1263
1434
  beat: z.ZodString;
1264
1435
  element: z.ZodString;
@@ -1291,6 +1462,12 @@ export declare const storyboardSchema: z.ZodObject<{
1291
1462
  }, z.core.$strip>;
1292
1463
  id: z.ZodString;
1293
1464
  intent: z.ZodString;
1465
+ role: z.ZodOptional<z.ZodEnum<{
1466
+ intro: "intro";
1467
+ background: "background";
1468
+ limitations: "limitations";
1469
+ conclusion: "conclusion";
1470
+ }>>;
1294
1471
  inside: z.ZodOptional<z.ZodObject<{
1295
1472
  beat: z.ZodString;
1296
1473
  element: z.ZodString;
@@ -1336,6 +1513,12 @@ export declare const storyboardSchema: z.ZodObject<{
1336
1513
  }, z.core.$strip>;
1337
1514
  id: z.ZodString;
1338
1515
  intent: z.ZodString;
1516
+ role: z.ZodOptional<z.ZodEnum<{
1517
+ intro: "intro";
1518
+ background: "background";
1519
+ limitations: "limitations";
1520
+ conclusion: "conclusion";
1521
+ }>>;
1339
1522
  inside: z.ZodOptional<z.ZodObject<{
1340
1523
  beat: z.ZodString;
1341
1524
  element: z.ZodString;
@@ -1376,6 +1559,10 @@ export declare const prefsSchema: z.ZodObject<{
1376
1559
  normal: "normal";
1377
1560
  dense: "dense";
1378
1561
  }>>;
1562
+ genre: z.ZodDefault<z.ZodEnum<{
1563
+ general: "general";
1564
+ paper: "paper";
1565
+ }>>;
1379
1566
  duration: z.ZodOptional<z.ZodNumber>;
1380
1567
  theme: z.ZodDefault<z.ZodString>;
1381
1568
  animationSpeed: z.ZodDefault<z.ZodNumber>;
@@ -1490,6 +1677,10 @@ export declare const packSchema: z.ZodObject<{
1490
1677
  normal: "normal";
1491
1678
  dense: "dense";
1492
1679
  }>>;
1680
+ genre: z.ZodDefault<z.ZodEnum<{
1681
+ general: "general";
1682
+ paper: "paper";
1683
+ }>>;
1493
1684
  duration: z.ZodOptional<z.ZodNumber>;
1494
1685
  theme: z.ZodDefault<z.ZodString>;
1495
1686
  animationSpeed: z.ZodDefault<z.ZodNumber>;
@@ -1563,6 +1754,12 @@ export declare const packSchema: z.ZodObject<{
1563
1754
  }, z.core.$strip>;
1564
1755
  id: z.ZodString;
1565
1756
  intent: z.ZodString;
1757
+ role: z.ZodOptional<z.ZodEnum<{
1758
+ intro: "intro";
1759
+ background: "background";
1760
+ limitations: "limitations";
1761
+ conclusion: "conclusion";
1762
+ }>>;
1566
1763
  inside: z.ZodOptional<z.ZodObject<{
1567
1764
  beat: z.ZodString;
1568
1765
  element: z.ZodString;
@@ -1595,6 +1792,12 @@ export declare const packSchema: z.ZodObject<{
1595
1792
  }, z.core.$strip>;
1596
1793
  id: z.ZodString;
1597
1794
  intent: z.ZodString;
1795
+ role: z.ZodOptional<z.ZodEnum<{
1796
+ intro: "intro";
1797
+ background: "background";
1798
+ limitations: "limitations";
1799
+ conclusion: "conclusion";
1800
+ }>>;
1598
1801
  inside: z.ZodOptional<z.ZodObject<{
1599
1802
  beat: z.ZodString;
1600
1803
  element: z.ZodString;
@@ -1632,6 +1835,12 @@ export declare const packSchema: z.ZodObject<{
1632
1835
  }, z.core.$strip>;
1633
1836
  id: z.ZodString;
1634
1837
  intent: z.ZodString;
1838
+ role: z.ZodOptional<z.ZodEnum<{
1839
+ intro: "intro";
1840
+ background: "background";
1841
+ limitations: "limitations";
1842
+ conclusion: "conclusion";
1843
+ }>>;
1635
1844
  inside: z.ZodOptional<z.ZodObject<{
1636
1845
  beat: z.ZodString;
1637
1846
  element: z.ZodString;
@@ -1670,6 +1879,12 @@ export declare const packSchema: z.ZodObject<{
1670
1879
  }, z.core.$strip>;
1671
1880
  id: z.ZodString;
1672
1881
  intent: z.ZodString;
1882
+ role: z.ZodOptional<z.ZodEnum<{
1883
+ intro: "intro";
1884
+ background: "background";
1885
+ limitations: "limitations";
1886
+ conclusion: "conclusion";
1887
+ }>>;
1673
1888
  inside: z.ZodOptional<z.ZodObject<{
1674
1889
  beat: z.ZodString;
1675
1890
  element: z.ZodString;
@@ -1708,6 +1923,12 @@ export declare const packSchema: z.ZodObject<{
1708
1923
  }, z.core.$strip>;
1709
1924
  id: z.ZodString;
1710
1925
  intent: z.ZodString;
1926
+ role: z.ZodOptional<z.ZodEnum<{
1927
+ intro: "intro";
1928
+ background: "background";
1929
+ limitations: "limitations";
1930
+ conclusion: "conclusion";
1931
+ }>>;
1711
1932
  inside: z.ZodOptional<z.ZodObject<{
1712
1933
  beat: z.ZodString;
1713
1934
  element: z.ZodString;
@@ -1742,6 +1963,12 @@ export declare const packSchema: z.ZodObject<{
1742
1963
  }, z.core.$strip>;
1743
1964
  id: z.ZodString;
1744
1965
  intent: z.ZodString;
1966
+ role: z.ZodOptional<z.ZodEnum<{
1967
+ intro: "intro";
1968
+ background: "background";
1969
+ limitations: "limitations";
1970
+ conclusion: "conclusion";
1971
+ }>>;
1745
1972
  inside: z.ZodOptional<z.ZodObject<{
1746
1973
  beat: z.ZodString;
1747
1974
  element: z.ZodString;
@@ -1773,6 +2000,12 @@ export declare const packSchema: z.ZodObject<{
1773
2000
  }, z.core.$strip>;
1774
2001
  id: z.ZodString;
1775
2002
  intent: z.ZodString;
2003
+ role: z.ZodOptional<z.ZodEnum<{
2004
+ intro: "intro";
2005
+ background: "background";
2006
+ limitations: "limitations";
2007
+ conclusion: "conclusion";
2008
+ }>>;
1776
2009
  inside: z.ZodOptional<z.ZodObject<{
1777
2010
  beat: z.ZodString;
1778
2011
  element: z.ZodString;
@@ -1815,6 +2048,12 @@ export declare const packSchema: z.ZodObject<{
1815
2048
  }, z.core.$strip>;
1816
2049
  id: z.ZodString;
1817
2050
  intent: z.ZodString;
2051
+ role: z.ZodOptional<z.ZodEnum<{
2052
+ intro: "intro";
2053
+ background: "background";
2054
+ limitations: "limitations";
2055
+ conclusion: "conclusion";
2056
+ }>>;
1818
2057
  inside: z.ZodOptional<z.ZodObject<{
1819
2058
  beat: z.ZodString;
1820
2059
  element: z.ZodString;
@@ -1859,6 +2098,12 @@ export declare const packSchema: z.ZodObject<{
1859
2098
  }, z.core.$strip>;
1860
2099
  id: z.ZodString;
1861
2100
  intent: z.ZodString;
2101
+ role: z.ZodOptional<z.ZodEnum<{
2102
+ intro: "intro";
2103
+ background: "background";
2104
+ limitations: "limitations";
2105
+ conclusion: "conclusion";
2106
+ }>>;
1862
2107
  inside: z.ZodOptional<z.ZodObject<{
1863
2108
  beat: z.ZodString;
1864
2109
  element: z.ZodString;
@@ -1901,6 +2146,12 @@ export declare const packSchema: z.ZodObject<{
1901
2146
  }, z.core.$strip>;
1902
2147
  id: z.ZodString;
1903
2148
  intent: z.ZodString;
2149
+ role: z.ZodOptional<z.ZodEnum<{
2150
+ intro: "intro";
2151
+ background: "background";
2152
+ limitations: "limitations";
2153
+ conclusion: "conclusion";
2154
+ }>>;
1904
2155
  inside: z.ZodOptional<z.ZodObject<{
1905
2156
  beat: z.ZodString;
1906
2157
  element: z.ZodString;
@@ -1939,6 +2190,12 @@ export declare const packSchema: z.ZodObject<{
1939
2190
  }, z.core.$strip>;
1940
2191
  id: z.ZodString;
1941
2192
  intent: z.ZodString;
2193
+ role: z.ZodOptional<z.ZodEnum<{
2194
+ intro: "intro";
2195
+ background: "background";
2196
+ limitations: "limitations";
2197
+ conclusion: "conclusion";
2198
+ }>>;
1942
2199
  inside: z.ZodOptional<z.ZodObject<{
1943
2200
  beat: z.ZodString;
1944
2201
  element: z.ZodString;
@@ -1971,6 +2228,12 @@ export declare const packSchema: z.ZodObject<{
1971
2228
  }, z.core.$strip>;
1972
2229
  id: z.ZodString;
1973
2230
  intent: z.ZodString;
2231
+ role: z.ZodOptional<z.ZodEnum<{
2232
+ intro: "intro";
2233
+ background: "background";
2234
+ limitations: "limitations";
2235
+ conclusion: "conclusion";
2236
+ }>>;
1974
2237
  inside: z.ZodOptional<z.ZodObject<{
1975
2238
  beat: z.ZodString;
1976
2239
  element: z.ZodString;
@@ -2016,6 +2279,12 @@ export declare const packSchema: z.ZodObject<{
2016
2279
  }, z.core.$strip>;
2017
2280
  id: z.ZodString;
2018
2281
  intent: z.ZodString;
2282
+ role: z.ZodOptional<z.ZodEnum<{
2283
+ intro: "intro";
2284
+ background: "background";
2285
+ limitations: "limitations";
2286
+ conclusion: "conclusion";
2287
+ }>>;
2019
2288
  inside: z.ZodOptional<z.ZodObject<{
2020
2289
  beat: z.ZodString;
2021
2290
  element: z.ZodString;
@@ -2273,6 +2542,7 @@ export type Illustration = z.infer<typeof illustrationSchema>;
2273
2542
  /** The `images` block of the preferences, resolved. What `illustrate` reads. */
2274
2543
  export type ImagesPrefs = z.infer<typeof prefsSchema>["images"];
2275
2544
  export type Beat = z.infer<typeof beatSchema>;
2545
+ export type BeatRole = z.infer<typeof beatRoleSchema>;
2276
2546
  export type Inside = z.infer<typeof insideSchema>;
2277
2547
  export type Archetype = Beat["archetype"];
2278
2548
  export type Storyboard = z.infer<typeof storyboardSchema>;
@@ -242,6 +242,70 @@ export declare function scanUnusedFigures(storyboard: Storyboard, source: Source
242
242
  * decision cannot be made by accident.
243
243
  */
244
244
  export declare function scanBeatCount(storyboard: Storyboard, prefs: Prefs): Finding[];
245
+ /**
246
+ * Where a paper-shaped deck missed the shape it was asked for.
247
+ *
248
+ * SILENT UNLESS THE ARC WAS DECLARED. `prefs.genre` defaults to `general`, so
249
+ * every deck built before this existed, and every deck whose author did not say
250
+ * `--genre paper`, gets exactly nothing from this scan. That is not timidity: a
251
+ * ten-role heading lexicon over all 351 markdown files in this repository found
252
+ * 345 with zero hits, so there is no honest way to infer the genre, and a scan
253
+ * that guessed would mislabel the Korean fixture and every hypepaper analysis
254
+ * the tool actually ingests.
255
+ *
256
+ * REPORTED, NEVER REPAIRED, and a WARNING. It joins the four scans that already
257
+ * take that shape, and `scanBeatCount`'s header settles the class: `build`
258
+ * prints every content loss and fails on none of them, because the alternative
259
+ * is re-asking, and the only possible second instruction — "return more" — is a
260
+ * padding request with extra steps. Promoting this one is a decision about all
261
+ * of them.
262
+ *
263
+ * WHAT IT CANNOT DO. It cannot tell whether a beat labelled `limitations` really
264
+ * discusses one; `role` is the plan's own declaration, and a declaration can be
265
+ * false. What it checks instead is the part that is mechanical and that no
266
+ * committed plan has ever got right on its own: that the roles exist, that they
267
+ * are unique, that the ending is in the right ORDER, and that the closing pair
268
+ * does not collapse into two of the same picture. A rule about wording would be
269
+ * met cosmetically, exactly as `scanHeadlines` records a sharpened rule being
270
+ * answered by swapping one verb.
271
+ */
272
+ export declare function scanPaperArc(storyboard: Storyboard, prefs: Prefs): Finding[];
273
+ /**
274
+ * Narration that belongs to a different version of this storyboard.
275
+ *
276
+ * `narration.json` is keyed by BEAT ID and carries nothing that ties it to the
277
+ * plan it was made for, so an id that still exists is an id `build` will happily
278
+ * speak — even when the beat behind it has been replaced. Renumbering is the way
279
+ * in: inserting one beat and shifting the ids after it leaves every later id
280
+ * pointing at its neighbour's voice.
281
+ *
282
+ * FOUND IN THE SHIPPED DEMO, and it is the seventh green-gate case this project
283
+ * has recorded. A thirteenth beat was inserted at position six and the rest
284
+ * renumbered; the audio on disk predated it, so beats six through twelve each
285
+ * spoke the slide after them and the thirteenth spoke nothing. `build` reported
286
+ * `PASS — 0 error(s), 0 warning(s)`, because every id it looked for was present
287
+ * and nothing compared what was SAID against what the beat says it says.
288
+ *
289
+ * AN ERROR, NOT A WARNING, and it is the one member of this family that earns
290
+ * it. The other storyboard scans are editorial judgements only an author can
291
+ * settle; this is a string comparison between two authored fields that must
292
+ * agree, and the artifact it lets through is a video whose voice describes the
293
+ * wrong pictures. Missing narration audio is already an error here, and audio
294
+ * that is present and wrong is not the better failure.
295
+ *
296
+ * NARROW ON PURPOSE. It compares only beats that have BOTH a narration text and
297
+ * segments, so a deck narrated at a lower density — where some beats are
298
+ * deliberately silent — says nothing, and the existing missing-audio error keeps
299
+ * its own case. Whitespace is normalised because the splitter re-joins sentences
300
+ * at stop boundaries; on the demo's thirteen beats the concatenation reproduces
301
+ * the authored text exactly, which is what makes the comparison safe to make
302
+ * fatal.
303
+ */
304
+ export declare function scanNarrationDrift(storyboard: Storyboard, narration: {
305
+ beats: Record<string, {
306
+ text: string;
307
+ }[]>;
308
+ }): Finding[];
245
309
  /**
246
310
  * How far a name may precede the thing it names before a viewer notices.
247
311
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jokerized/decksmith",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Turn a source document into an animated explanation deck.",
5
5
  "type": "module",
6
6
  "license": "MIT",