@miadi/ncp-story-studio 0.1.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 (126) hide show
  1. package/LICENSE +21 -0
  2. package/PHASES.md +160 -0
  3. package/README.md +140 -0
  4. package/assets/PROVENANCE.json +5 -0
  5. package/assets/examples/PROVENANCE.json +26 -0
  6. package/assets/examples/anora.json +228 -0
  7. package/assets/examples/example-story.json +112 -0
  8. package/assets/examples/the-shawshank-redemption.json +2068 -0
  9. package/assets/examples/weaver_of_words__the_catalyst_of_change_251101.json +1132 -0
  10. package/assets/ncp-schema.json +794 -0
  11. package/assets/terminology.json +2919 -0
  12. package/dist/agents/adapter.d.ts +60 -0
  13. package/dist/agents/adapter.d.ts.map +1 -0
  14. package/dist/agents/adapter.js +69 -0
  15. package/dist/agents/adapter.js.map +1 -0
  16. package/dist/agents/context.d.ts +19 -0
  17. package/dist/agents/context.d.ts.map +1 -0
  18. package/dist/agents/context.js +49 -0
  19. package/dist/agents/context.js.map +1 -0
  20. package/dist/agents/index.d.ts +5 -0
  21. package/dist/agents/index.d.ts.map +1 -0
  22. package/dist/agents/index.js +7 -0
  23. package/dist/agents/index.js.map +1 -0
  24. package/dist/agents/links.d.ts +41 -0
  25. package/dist/agents/links.d.ts.map +1 -0
  26. package/dist/agents/links.js +76 -0
  27. package/dist/agents/links.js.map +1 -0
  28. package/dist/agents/personas.d.ts +16 -0
  29. package/dist/agents/personas.d.ts.map +1 -0
  30. package/dist/agents/personas.js +34 -0
  31. package/dist/agents/personas.js.map +1 -0
  32. package/dist/fixtures/index.d.ts +27 -0
  33. package/dist/fixtures/index.d.ts.map +1 -0
  34. package/dist/fixtures/index.js +69 -0
  35. package/dist/fixtures/index.js.map +1 -0
  36. package/dist/graph/index.d.ts +60 -0
  37. package/dist/graph/index.d.ts.map +1 -0
  38. package/dist/graph/index.js +97 -0
  39. package/dist/graph/index.js.map +1 -0
  40. package/dist/graph/react/index.d.ts +2 -0
  41. package/dist/graph/react/index.d.ts.map +1 -0
  42. package/dist/graph/react/index.js +5 -0
  43. package/dist/graph/react/index.js.map +1 -0
  44. package/dist/graph/react/story-graph.d.ts +17 -0
  45. package/dist/graph/react/story-graph.d.ts.map +1 -0
  46. package/dist/graph/react/story-graph.js +26 -0
  47. package/dist/graph/react/story-graph.js.map +1 -0
  48. package/dist/graph/tones.d.ts +36 -0
  49. package/dist/graph/tones.d.ts.map +1 -0
  50. package/dist/graph/tones.js +38 -0
  51. package/dist/graph/tones.js.map +1 -0
  52. package/dist/index.d.ts +33 -0
  53. package/dist/index.d.ts.map +1 -0
  54. package/dist/index.js +24 -0
  55. package/dist/index.js.map +1 -0
  56. package/dist/schema/constants.d.ts +3 -0
  57. package/dist/schema/constants.d.ts.map +1 -0
  58. package/dist/schema/constants.js +3 -0
  59. package/dist/schema/constants.js.map +1 -0
  60. package/dist/schema/extensions.d.ts +14 -0
  61. package/dist/schema/extensions.d.ts.map +1 -0
  62. package/dist/schema/extensions.js +61 -0
  63. package/dist/schema/extensions.js.map +1 -0
  64. package/dist/schema/generated-terms.d.ts +7 -0
  65. package/dist/schema/generated-terms.d.ts.map +1 -0
  66. package/dist/schema/generated-terms.js +518 -0
  67. package/dist/schema/generated-terms.js.map +1 -0
  68. package/dist/schema/generated.d.ts +64 -0
  69. package/dist/schema/generated.d.ts.map +1 -0
  70. package/dist/schema/generated.js +497 -0
  71. package/dist/schema/generated.js.map +1 -0
  72. package/dist/schema/index.d.ts +48 -0
  73. package/dist/schema/index.d.ts.map +1 -0
  74. package/dist/schema/index.js +92 -0
  75. package/dist/schema/index.js.map +1 -0
  76. package/dist/schema/normalize.d.ts +20 -0
  77. package/dist/schema/normalize.d.ts.map +1 -0
  78. package/dist/schema/normalize.js +88 -0
  79. package/dist/schema/normalize.js.map +1 -0
  80. package/dist/schema/read.d.ts +31 -0
  81. package/dist/schema/read.d.ts.map +1 -0
  82. package/dist/schema/read.js +640 -0
  83. package/dist/schema/read.js.map +1 -0
  84. package/dist/schema/terms.d.ts +11 -0
  85. package/dist/schema/terms.d.ts.map +1 -0
  86. package/dist/schema/terms.js +80 -0
  87. package/dist/schema/terms.js.map +1 -0
  88. package/dist/schema/types.d.ts +140 -0
  89. package/dist/schema/types.d.ts.map +1 -0
  90. package/dist/schema/types.js +2 -0
  91. package/dist/schema/types.js.map +1 -0
  92. package/dist/schema/validate.d.ts +54 -0
  93. package/dist/schema/validate.d.ts.map +1 -0
  94. package/dist/schema/validate.js +490 -0
  95. package/dist/schema/validate.js.map +1 -0
  96. package/dist/store/index.d.ts +76 -0
  97. package/dist/store/index.d.ts.map +1 -0
  98. package/dist/store/index.js +96 -0
  99. package/dist/store/index.js.map +1 -0
  100. package/dist/store/json.d.ts +35 -0
  101. package/dist/store/json.d.ts.map +1 -0
  102. package/dist/store/json.js +192 -0
  103. package/dist/store/json.js.map +1 -0
  104. package/dist/store/mutations.d.ts +45 -0
  105. package/dist/store/mutations.d.ts.map +1 -0
  106. package/dist/store/mutations.js +181 -0
  107. package/dist/store/mutations.js.map +1 -0
  108. package/dist/store/neon.d.ts +42 -0
  109. package/dist/store/neon.d.ts.map +1 -0
  110. package/dist/store/neon.js +167 -0
  111. package/dist/store/neon.js.map +1 -0
  112. package/dist/terminology/generated.d.ts +3 -0
  113. package/dist/terminology/generated.d.ts.map +1 -0
  114. package/dist/terminology/generated.js +2923 -0
  115. package/dist/terminology/generated.js.map +1 -0
  116. package/dist/terminology/index.d.ts +20 -0
  117. package/dist/terminology/index.d.ts.map +1 -0
  118. package/dist/terminology/index.js +71 -0
  119. package/dist/terminology/index.js.map +1 -0
  120. package/dist/terminology/types.d.ts +25 -0
  121. package/dist/terminology/types.d.ts.map +1 -0
  122. package/dist/terminology/types.js +2 -0
  123. package/dist/terminology/types.js.map +1 -0
  124. package/package.json +117 -0
  125. package/rispecs/README.rise.md +5 -0
  126. package/rispecs/RISPEC.md +9 -0
@@ -0,0 +1,794 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Narrative Context Protcol Schema",
4
+ "description": "A standardized protocol for structuring narrative elements in a complete story for use in multi-agentic systems.",
5
+ "type": "object",
6
+ "properties": {
7
+ "schema_version": {
8
+ "type": "string",
9
+ "description": "1.0"
10
+ },
11
+ "story": {
12
+ "type": "object",
13
+ "properties": {
14
+ "id": {
15
+ "type": "string"
16
+ },
17
+ "title": {
18
+ "type": "string"
19
+ },
20
+ "genre": {
21
+ "type": "string"
22
+ },
23
+ "logline": {
24
+ "type": "string"
25
+ },
26
+ "created_at": {
27
+ "type": "string",
28
+ "format": "date-time"
29
+ },
30
+ "narratives": {
31
+ "type": "array",
32
+ "items": {
33
+ "type": "object",
34
+ "properties": {
35
+ "id": {
36
+ "type": "string"
37
+ },
38
+ "title": {
39
+ "type": "string"
40
+ },
41
+ "subtext": {
42
+ "type": "object",
43
+ "properties": {
44
+ "perspectives": {
45
+ "type": "array",
46
+ "items": {
47
+ "type": "object",
48
+ "properties": {
49
+ "id": {
50
+ "type": "string"
51
+ },
52
+ "author_structural_pov": {
53
+ "type": "string",
54
+ "enum": [
55
+ "i",
56
+ "you",
57
+ "we",
58
+ "they"
59
+ ]
60
+ },
61
+ "summary": {
62
+ "type": "string"
63
+ },
64
+ "storytelling": {
65
+ "type": "string"
66
+ }
67
+ },
68
+ "required": [
69
+ "id",
70
+ "pov",
71
+ "summary",
72
+ "storytelling"
73
+ ]
74
+ }
75
+ },
76
+ "players": {
77
+ "type": "array",
78
+ "items": {
79
+ "type": "object",
80
+ "properties": {
81
+ "id": {
82
+ "type": "string"
83
+ },
84
+ "name": {
85
+ "type": "string"
86
+ },
87
+ "role": {
88
+ "type": "string"
89
+ },
90
+ "visual": {
91
+ "type": "string"
92
+ },
93
+ "audio": {
94
+ "type": "string"
95
+ },
96
+ "summary": {
97
+ "type": "string"
98
+ },
99
+ "storytelling": {
100
+ "type": "string"
101
+ },
102
+ "perspectives": {
103
+ "type": "array",
104
+ "items": {
105
+ "type": "object",
106
+ "properties": {
107
+ "perspective_id": {
108
+ "type": "string"
109
+ }
110
+ },
111
+ "required": [
112
+ "perspective_id"
113
+ ]
114
+ }
115
+ }
116
+ },
117
+ "required": [
118
+ "id",
119
+ "name",
120
+ "role",
121
+ "visual",
122
+ "audio",
123
+ "summary",
124
+ "storytelling",
125
+ "perspectives"
126
+ ]
127
+ }
128
+ },
129
+ "dynamics": {
130
+ "type": "array",
131
+ "items": {
132
+ "type": "object",
133
+ "properties": {
134
+ "id": {
135
+ "type": "string"
136
+ },
137
+ "dynamic": {
138
+ "type": "string",
139
+ "enum": [
140
+ "main_character_resolve",
141
+ "influence_character_resolve",
142
+ "main_character_growth",
143
+ "main_character_approach",
144
+ "problem_solving_style",
145
+ "story_limit",
146
+ "story_driver",
147
+ "story_outcome",
148
+ "story_judgment"
149
+ ]
150
+ },
151
+ "vector": {
152
+ "type": "string",
153
+ "enum": [
154
+ "change",
155
+ "steadfast",
156
+ "stop",
157
+ "start",
158
+ "do_er",
159
+ "be_er",
160
+ "linear",
161
+ "holistic",
162
+ "optionlock",
163
+ "timelock",
164
+ "action",
165
+ "decision",
166
+ "success",
167
+ "failure",
168
+ "good",
169
+ "bad"
170
+ ]
171
+ },
172
+ "summary": {
173
+ "type": "string"
174
+ },
175
+ "storytelling": {
176
+ "type": "string"
177
+ }
178
+ },
179
+ "required": [
180
+ "id",
181
+ "dynamic",
182
+ "vector",
183
+ "summary",
184
+ "storytelling"
185
+ ]
186
+ }
187
+ },
188
+ "storypoints": {
189
+ "type": "array",
190
+ "items": {
191
+ "type": "object",
192
+ "properties": {
193
+ "id": {
194
+ "type": "string"
195
+ },
196
+ "appreciation": {
197
+ "type": "string",
198
+ "enum": [
199
+ "domain",
200
+ "concern",
201
+ "issue",
202
+ "problem",
203
+ "solution",
204
+ "symptom",
205
+ "response",
206
+ "catalyst",
207
+ "inhibitor",
208
+ "unique_ability",
209
+ "critical_flaw",
210
+ "benchmark",
211
+ "story_goal",
212
+ "story_requirements",
213
+ "story_prerequisites",
214
+ "story_preconditions",
215
+ "story_costs",
216
+ "story_dividends",
217
+ "story_forewarnings",
218
+ "story_consequence",
219
+ "pivotal_element",
220
+ "initial_story_driver",
221
+ "second_story_driver",
222
+ "midpoint_story_driver",
223
+ "fourth_story_driver",
224
+ "concluding_story_driver",
225
+ "signpost",
226
+ "progression",
227
+ "event"
228
+ ]
229
+ },
230
+ "narrative_function": {
231
+ "type": "string",
232
+ "enum": [
233
+ "universe",
234
+ "physics",
235
+ "psychology",
236
+ "mind",
237
+ "past",
238
+ "understanding",
239
+ "conceptualizing",
240
+ "memory",
241
+ "progress",
242
+ "doing",
243
+ "being",
244
+ "preconscious",
245
+ "future",
246
+ "obtaining",
247
+ "becoming",
248
+ "subconscious",
249
+ "present",
250
+ "learning",
251
+ "conceiving",
252
+ "conscious",
253
+ "fate",
254
+ "prediction",
255
+ "interdiction",
256
+ "destiny",
257
+ "instinct",
258
+ "senses",
259
+ "interpretation",
260
+ "conditioning",
261
+ "fact",
262
+ "security",
263
+ "threat",
264
+ "fantasy",
265
+ "wisdom",
266
+ "skill",
267
+ "experience",
268
+ "enlightenment",
269
+ "openness",
270
+ "delay",
271
+ "choice",
272
+ "preconception",
273
+ "approach",
274
+ "self_interest",
275
+ "altruism",
276
+ "attitude",
277
+ "work",
278
+ "attraction",
279
+ "repulsion",
280
+ "attempt",
281
+ "qualification",
282
+ "strategy",
283
+ "analysis",
284
+ "stipulation",
285
+ "truth",
286
+ "evidence",
287
+ "suspicion",
288
+ "falsehood",
289
+ "state_of_being",
290
+ "situation",
291
+ "circumstances",
292
+ "sense_of_self",
293
+ "value",
294
+ "confidence",
295
+ "worry",
296
+ "worth",
297
+ "knowing",
298
+ "able",
299
+ "driven",
300
+ "thinking",
301
+ "closure",
302
+ "hope",
303
+ "dream",
304
+ "denial",
305
+ "rationalization",
306
+ "commitment",
307
+ "responsibility",
308
+ "obligation",
309
+ "investigation",
310
+ "appraisal",
311
+ "reappraisal",
312
+ "doubt",
313
+ "permission",
314
+ "need",
315
+ "expediency",
316
+ "deficiency",
317
+ "ability",
318
+ "acceptance",
319
+ "accurate",
320
+ "actuality",
321
+ "avoid",
322
+ "aware",
323
+ "cause",
324
+ "certainty",
325
+ "change",
326
+ "chaos",
327
+ "conscience",
328
+ "consider",
329
+ "control",
330
+ "deduction",
331
+ "desire",
332
+ "determination",
333
+ "disbelief",
334
+ "effect",
335
+ "ending",
336
+ "equity",
337
+ "evaluation",
338
+ "expectation",
339
+ "faith",
340
+ "feeling",
341
+ "help",
342
+ "hinder",
343
+ "hunch",
344
+ "inaction",
345
+ "induction",
346
+ "inequity",
347
+ "inertia",
348
+ "knowledge",
349
+ "logic",
350
+ "rejection",
351
+ "deviation",
352
+ "oppose",
353
+ "order",
354
+ "perception",
355
+ "possibility",
356
+ "potentiality",
357
+ "proaction",
358
+ "probability",
359
+ "process",
360
+ "production",
361
+ "projection",
362
+ "protection",
363
+ "proven",
364
+ "pursuit",
365
+ "re_evaluation",
366
+ "reaction",
367
+ "reconsider",
368
+ "reduction",
369
+ "result",
370
+ "self_aware",
371
+ "speculation",
372
+ "support",
373
+ "temptation",
374
+ "test",
375
+ "theory",
376
+ "thought",
377
+ "trust",
378
+ "uncontrolled",
379
+ "continuing",
380
+ "presumption"
381
+ ]
382
+ },
383
+ "illustration": {
384
+ "type": "string"
385
+ },
386
+ "summary": {
387
+ "type": "string"
388
+ },
389
+ "storytelling": {
390
+ "type": "string"
391
+ },
392
+ "perspectives": {
393
+ "type": "array",
394
+ "items": {
395
+ "type": "object",
396
+ "properties": {
397
+ "perspective_id": {
398
+ "type": "string"
399
+ }
400
+ },
401
+ "required": [
402
+ "perspective_id"
403
+ ]
404
+ }
405
+ }
406
+ },
407
+ "required": [
408
+ "id",
409
+ "appreciation",
410
+ "narrative_function",
411
+ "illustration",
412
+ "summary",
413
+ "storytelling",
414
+ "perspectives"
415
+ ]
416
+ }
417
+ },
418
+ "storybeats": {
419
+ "type": "array",
420
+ "items": {
421
+ "type": "object",
422
+ "properties": {
423
+ "id": {
424
+ "type": "string"
425
+ },
426
+ "appreciation": {
427
+ "type": "string",
428
+ "enum": [
429
+ "signpost",
430
+ "progression",
431
+ "event"
432
+ ]
433
+ },
434
+ "sequence": {
435
+ "oneOf": [
436
+ {
437
+ "type": "integer",
438
+ "minimum": 1,
439
+ "maximum": 4,
440
+ "description": "For Signposts (1-4)"
441
+ },
442
+ {
443
+ "type": "integer",
444
+ "minimum": 1,
445
+ "maximum": 16,
446
+ "description": "For Progressions (1-16)"
447
+ },
448
+ {
449
+ "type": "integer",
450
+ "minimum": 1,
451
+ "maximum": 64,
452
+ "description": "For Events (1-64)"
453
+ }
454
+ ]
455
+ },
456
+ "narrative_function": {
457
+ "type": "string",
458
+ "enum": [
459
+ "past",
460
+ "understanding",
461
+ "conceptualizing",
462
+ "memory",
463
+ "progress",
464
+ "doing",
465
+ "being",
466
+ "preconscious",
467
+ "future",
468
+ "obtaining",
469
+ "becoming",
470
+ "subconscious",
471
+ "present",
472
+ "learning",
473
+ "conceiving",
474
+ "conscious",
475
+ "fate",
476
+ "prediction",
477
+ "interdiction",
478
+ "destiny",
479
+ "instinct",
480
+ "senses",
481
+ "interpretation",
482
+ "conditioning",
483
+ "fact",
484
+ "security",
485
+ "threat",
486
+ "fantasy",
487
+ "wisdom",
488
+ "skill",
489
+ "experience",
490
+ "enlightenment",
491
+ "openness",
492
+ "delay",
493
+ "choice",
494
+ "preconception",
495
+ "approach",
496
+ "self_interest",
497
+ "altruism",
498
+ "attitude",
499
+ "work",
500
+ "attraction",
501
+ "repulsion",
502
+ "attempt",
503
+ "qualification",
504
+ "strategy",
505
+ "analysis",
506
+ "stipulation",
507
+ "truth",
508
+ "evidence",
509
+ "suspicion",
510
+ "falsehood",
511
+ "state_of_being",
512
+ "situation",
513
+ "circumstances",
514
+ "sense_of_self",
515
+ "value",
516
+ "confidence",
517
+ "worry",
518
+ "worth",
519
+ "knowing",
520
+ "able",
521
+ "driven",
522
+ "thinking",
523
+ "closure",
524
+ "hope",
525
+ "dream",
526
+ "denial",
527
+ "rationalization",
528
+ "commitment",
529
+ "responsibility",
530
+ "obligation",
531
+ "investigation",
532
+ "appraisal",
533
+ "reappraisal",
534
+ "doubt",
535
+ "permission",
536
+ "need",
537
+ "expediency",
538
+ "deficiency",
539
+ "ability",
540
+ "acceptance",
541
+ "accurate",
542
+ "actuality",
543
+ "avoid",
544
+ "aware",
545
+ "cause",
546
+ "certainty",
547
+ "change",
548
+ "chaos",
549
+ "conscience",
550
+ "consider",
551
+ "control",
552
+ "deduction",
553
+ "desire",
554
+ "determination",
555
+ "disbelief",
556
+ "effect",
557
+ "ending",
558
+ "equity",
559
+ "evaluation",
560
+ "expectation",
561
+ "faith",
562
+ "feeling",
563
+ "help",
564
+ "hinder",
565
+ "hunch",
566
+ "inaction",
567
+ "induction",
568
+ "inequity",
569
+ "inertia",
570
+ "knowledge",
571
+ "logic",
572
+ "rejection",
573
+ "deviation",
574
+ "oppose",
575
+ "order",
576
+ "perception",
577
+ "possibility",
578
+ "potentiality",
579
+ "proaction",
580
+ "probability",
581
+ "process",
582
+ "production",
583
+ "projection",
584
+ "protection",
585
+ "proven",
586
+ "pursuit",
587
+ "re_evaluation",
588
+ "reaction",
589
+ "reconsider",
590
+ "reduction",
591
+ "result",
592
+ "self_aware",
593
+ "speculation",
594
+ "support",
595
+ "temptation",
596
+ "test",
597
+ "theory",
598
+ "thought",
599
+ "trust",
600
+ "abandon",
601
+ "continuing",
602
+ "presumption"
603
+ ]
604
+ },
605
+ "illustration": {
606
+ "type": "string"
607
+ },
608
+ "summary": {
609
+ "type": "string"
610
+ },
611
+ "storytelling": {
612
+ "type": "string"
613
+ },
614
+ "tones": {
615
+ "type": "object",
616
+ "properties": {
617
+ "abstraction": {
618
+ "type": "string",
619
+ "enum": [
620
+ "situation",
621
+ "action",
622
+ "justification",
623
+ "opinion"
624
+ ]
625
+ },
626
+ "spatial": {
627
+ "type": "string",
628
+ "enum": [
629
+ "potential",
630
+ "resistance",
631
+ "current",
632
+ "power"
633
+ ]
634
+ },
635
+ "temporal": {
636
+ "type": "string",
637
+ "enum": [
638
+ "expression",
639
+ "experimentation",
640
+ "integration",
641
+ "transcendence"
642
+ ]
643
+ }
644
+ },
645
+ "required": [
646
+ "abstraction",
647
+ "spatial",
648
+ "temporal"
649
+ ]
650
+ },
651
+ "perspectives": {
652
+ "type": "array",
653
+ "items": {
654
+ "type": "object",
655
+ "properties": {
656
+ "perspective_id": {
657
+ "type": "string"
658
+ }
659
+ },
660
+ "required": [
661
+ "perspective_id"
662
+ ]
663
+ }
664
+ }
665
+ },
666
+ "required": [
667
+ "id",
668
+ "appreciation",
669
+ "sequence",
670
+ "narrative_function",
671
+ "illustration",
672
+ "summary",
673
+ "storytelling",
674
+ "tones",
675
+ "perspectives"
676
+ ]
677
+ }
678
+ }
679
+ },
680
+ "required": [
681
+ "perspectives",
682
+ "players",
683
+ "dynamics",
684
+ "storypoints",
685
+ "storybeats"
686
+ ]
687
+ },
688
+ "storytelling": {
689
+ "type": "object",
690
+ "properties": {
691
+ "overviews": {
692
+ "type": "array"
693
+ },
694
+ "moments": {
695
+ "type": "array",
696
+ "items": {
697
+ "type": "object",
698
+ "properties": {
699
+ "id": {
700
+ "type": "string"
701
+ },
702
+ "summary": {
703
+ "type": "string"
704
+ },
705
+ "synopsis": {
706
+ "type": "string"
707
+ },
708
+ "setting": {
709
+ "type": "string"
710
+ },
711
+ "timing": {
712
+ "type": "string"
713
+ },
714
+ "imperatives": {
715
+ "type": "string"
716
+ },
717
+ "fabric": {
718
+ "type": "array",
719
+ "items": {
720
+ "type": "object",
721
+ "properties": {
722
+ "type": {
723
+ "type": "string",
724
+ "enum": [
725
+ "space",
726
+ "time"
727
+ ]
728
+ },
729
+ "limit": {
730
+ "type": "integer"
731
+ }
732
+ },
733
+ "required": [
734
+ "type",
735
+ "limit"
736
+ ],
737
+ "additionalProperties": false
738
+ }
739
+ },
740
+ "audience_experiential_pov": {
741
+ "type": "string",
742
+ "enum": [
743
+ "first_person_central",
744
+ "first_person_peripheral",
745
+ "second_person",
746
+ "third_person_limited",
747
+ "third_person_objective",
748
+ "third_person_omniscient"
749
+ ]
750
+ },
751
+ "storybeats": {
752
+ "type": "array",
753
+ "items": {
754
+ "type": "object",
755
+ "properties": {
756
+ "sequence": {
757
+ "type": "integer"
758
+ },
759
+ "storybeat_id": {
760
+ "type": "string"
761
+ }
762
+ }
763
+ }
764
+ }
765
+ }
766
+ }
767
+ }
768
+ }
769
+ }
770
+ },
771
+ "required": [
772
+ "id",
773
+ "title",
774
+ "subtext",
775
+ "storytelling"
776
+ ]
777
+ }
778
+ }
779
+ },
780
+ "required": [
781
+ "id",
782
+ "title",
783
+ "genre",
784
+ "logline",
785
+ "created_at",
786
+ "narratives"
787
+ ]
788
+ }
789
+ },
790
+ "required": [
791
+ "schema_version",
792
+ "story"
793
+ ]
794
+ }