{
  "$defs": {
    "Achievement": {
      "additionalProperties": false,
      "properties": {
        "artwork_asset_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Artwork Asset Id",
          "type": "string"
        },
        "badge_id": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Badge Id"
        },
        "description": {
          "maxLength": 2000,
          "minLength": 1,
          "pattern": "\\S",
          "title": "Description",
          "type": "string"
        },
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "title": {
          "maxLength": 200,
          "minLength": 1,
          "pattern": "\\S",
          "title": "Title",
          "type": "string"
        },
        "visibility": {
          "enum": [
            "visible",
            "hidden"
          ],
          "title": "Visibility",
          "type": "string"
        },
        "when": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "When"
        }
      },
      "required": [
        "id",
        "visibility",
        "title",
        "description",
        "when",
        "artwork_asset_id"
      ],
      "title": "Achievement",
      "type": "object"
    },
    "AssetInput": {
      "additionalProperties": false,
      "properties": {
        "asset_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Asset Id",
          "type": "string"
        },
        "sha256": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Sha256",
          "type": "string"
        }
      },
      "required": [
        "asset_id",
        "sha256"
      ],
      "title": "AssetInput",
      "type": "object"
    },
    "BackgroundBinding": {
      "additionalProperties": false,
      "properties": {
        "asset_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Asset Id",
          "type": "string"
        },
        "role": {
          "const": "background",
          "title": "Role",
          "type": "string"
        },
        "subject": {
          "$ref": "#/$defs/StageSubject"
        },
        "time_of_day": {
          "default": "unspecified",
          "enum": [
            "dawn",
            "day",
            "dusk",
            "night",
            "unspecified"
          ],
          "title": "Time Of Day",
          "type": "string"
        }
      },
      "required": [
        "role",
        "subject",
        "asset_id"
      ],
      "title": "BackgroundBinding",
      "type": "object"
    },
    "Badge": {
      "additionalProperties": false,
      "properties": {
        "collectible": {
          "$ref": "#/$defs/PinBadge"
        },
        "description": {
          "maxLength": 2000,
          "minLength": 1,
          "pattern": "\\S",
          "title": "Description",
          "type": "string"
        },
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "title": {
          "maxLength": 200,
          "minLength": 1,
          "pattern": "\\S",
          "title": "Title",
          "type": "string"
        }
      },
      "required": [
        "id",
        "title",
        "description",
        "collectible"
      ],
      "title": "Badge",
      "type": "object"
    },
    "BooleanObservation": {
      "additionalProperties": false,
      "properties": {
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "question": {
          "minLength": 1,
          "title": "Question",
          "type": "string"
        },
        "type": {
          "const": "boolean",
          "title": "Type",
          "type": "string"
        }
      },
      "required": [
        "type",
        "id",
        "question"
      ],
      "title": "BooleanObservation",
      "type": "object"
    },
    "BooleanSchema": {
      "additionalProperties": false,
      "properties": {
        "type": {
          "const": "boolean",
          "title": "Type",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "title": "BooleanSchema",
      "type": "object"
    },
    "CharacterCasting": {
      "additionalProperties": false,
      "properties": {
        "actor_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Actor Id",
          "type": "string"
        },
        "character_id": {
          "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
          "title": "Character Id",
          "type": "string"
        },
        "character_revision": {
          "maximum": 9007199254740991,
          "minimum": 1,
          "title": "Character Revision",
          "type": "integer"
        },
        "deeds": {
          "items": {
            "$ref": "#/$defs/CharacterDeed"
          },
          "maxItems": 32,
          "title": "Deeds",
          "type": "array"
        },
        "entry_ids": {
          "items": {
            "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
            "type": "string"
          },
          "maxItems": 8,
          "title": "Entry Ids",
          "type": "array"
        },
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "knowledge": {
          "items": {
            "$ref": "#/$defs/CharacterKnowledge"
          },
          "maxItems": 24,
          "title": "Knowledge",
          "type": "array"
        },
        "player_actor_id": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Player Actor Id"
        },
        "when": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "When"
        }
      },
      "required": [
        "id",
        "actor_id",
        "character_id",
        "character_revision",
        "when"
      ],
      "title": "CharacterCasting",
      "type": "object"
    },
    "CharacterDeed": {
      "additionalProperties": false,
      "properties": {
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "when": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "When"
        }
      },
      "required": [
        "id",
        "when"
      ],
      "title": "CharacterDeed",
      "type": "object"
    },
    "CharacterKnowledge": {
      "additionalProperties": false,
      "properties": {
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "text": {
          "maxLength": 600,
          "minLength": 1,
          "pattern": "\\S",
          "title": "Text",
          "type": "string"
        },
        "when": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "When"
        }
      },
      "required": [
        "id",
        "text",
        "when"
      ],
      "title": "CharacterKnowledge",
      "type": "object"
    },
    "CharacterPerformance": {
      "additionalProperties": false,
      "properties": {
        "idle_asset_id": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Idle Asset Id"
        },
        "reactions": {
          "additionalProperties": {
            "$ref": "#/$defs/CharacterReaction"
          },
          "maxProperties": 10,
          "propertyNames": {
            "enum": [
              "smile",
              "laugh",
              "surprised",
              "sad",
              "angry",
              "shy",
              "thinking",
              "worried",
              "teasing",
              "moved"
            ]
          },
          "title": "Reactions",
          "type": "object"
        },
        "speaking_asset_id": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Speaking Asset Id"
        }
      },
      "title": "CharacterPerformance",
      "type": "object"
    },
    "CharacterReaction": {
      "additionalProperties": false,
      "properties": {
        "asset_id": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Asset Id"
        },
        "note": {
          "additionalProperties": {
            "maxLength": 600,
            "minLength": 1,
            "pattern": "\\S",
            "type": "string"
          },
          "maxProperties": 2,
          "propertyNames": {
            "enum": [
              "en",
              "zh"
            ]
          },
          "title": "Note",
          "type": "object"
        }
      },
      "title": "CharacterReaction",
      "type": "object"
    },
    "ChoiceObservation": {
      "additionalProperties": false,
      "properties": {
        "choices": {
          "minProperties": 2,
          "patternProperties": {
            "^[A-Za-z][A-Za-z0-9_.-]{0,79}$": {
              "minLength": 1,
              "type": "string"
            }
          },
          "title": "Choices",
          "type": "object"
        },
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "question": {
          "minLength": 1,
          "title": "Question",
          "type": "string"
        },
        "type": {
          "const": "choice",
          "title": "Type",
          "type": "string"
        }
      },
      "required": [
        "type",
        "id",
        "question",
        "choices"
      ],
      "title": "ChoiceObservation",
      "type": "object"
    },
    "Comparison": {
      "additionalProperties": false,
      "properties": {
        "op": {
          "enum": [
            "eq",
            "ne",
            "gt",
            "gte",
            "lt",
            "lte",
            "contains"
          ],
          "title": "Op",
          "type": "string"
        },
        "path": {
          "title": "Path",
          "type": "string"
        },
        "value": {
          "$ref": "#/$defs/JsonValue"
        }
      },
      "required": [
        "op",
        "path",
        "value"
      ],
      "title": "Comparison",
      "type": "object"
    },
    "Content": {
      "additionalProperties": false,
      "properties": {
        "entry_ids": {
          "items": {
            "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
            "type": "string"
          },
          "title": "Entry Ids",
          "type": "array"
        },
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "selection": {
          "enum": [
            "always",
            "jev"
          ],
          "title": "Selection",
          "type": "string"
        },
        "text": {
          "minLength": 1,
          "title": "Text",
          "type": "string"
        },
        "when": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "When"
        }
      },
      "required": [
        "id",
        "text",
        "selection"
      ],
      "title": "Content",
      "type": "object"
    },
    "Crop": {
      "additionalProperties": false,
      "properties": {
        "height": {
          "exclusiveMinimum": 0,
          "maximum": 1,
          "title": "Height",
          "type": "number"
        },
        "width": {
          "exclusiveMinimum": 0,
          "maximum": 1,
          "title": "Width",
          "type": "number"
        },
        "x": {
          "maximum": 1,
          "minimum": 0,
          "title": "X",
          "type": "number"
        },
        "y": {
          "maximum": 1,
          "minimum": 0,
          "title": "Y",
          "type": "number"
        }
      },
      "required": [
        "x",
        "y",
        "width",
        "height"
      ],
      "title": "Crop",
      "type": "object"
    },
    "Definition": {
      "additionalProperties": false,
      "properties": {
        "entries": {
          "items": {
            "$ref": "#/$defs/Entry"
          },
          "minItems": 1,
          "title": "Entries",
          "type": "array"
        },
        "observations": {
          "items": {
            "discriminator": {
              "mapping": {
                "boolean": "#/$defs/BooleanObservation",
                "choice": "#/$defs/ChoiceObservation"
              },
              "propertyName": "type"
            },
            "oneOf": [
              {
                "$ref": "#/$defs/BooleanObservation"
              },
              {
                "$ref": "#/$defs/ChoiceObservation"
              }
            ]
          },
          "title": "Observations",
          "type": "array"
        },
        "rules": {
          "items": {
            "discriminator": {
              "mapping": {
                "guidance": "#/$defs/GuidanceRule",
                "update": "#/$defs/UpdateRule"
              },
              "propertyName": "kind"
            },
            "oneOf": [
              {
                "$ref": "#/$defs/UpdateRule"
              },
              {
                "$ref": "#/$defs/GuidanceRule"
              }
            ]
          },
          "title": "Rules",
          "type": "array"
        },
        "runtime_id": {
          "const": "storyorbit.state/1",
          "title": "Runtime Id",
          "type": "string"
        },
        "state": {
          "$ref": "#/$defs/StateDefinition"
        }
      },
      "required": [
        "runtime_id",
        "state",
        "entries"
      ],
      "title": "Definition",
      "type": "object"
    },
    "Display": {
      "additionalProperties": false,
      "properties": {
        "group": {
          "default": "",
          "title": "Group",
          "type": "string"
        },
        "label": {
          "minLength": 1,
          "title": "Label",
          "type": "string"
        },
        "unit": {
          "default": "",
          "title": "Unit",
          "type": "string"
        }
      },
      "required": [
        "label"
      ],
      "title": "Display",
      "type": "object"
    },
    "Ending": {
      "additionalProperties": false,
      "properties": {
        "artwork_asset_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Artwork Asset Id",
          "type": "string"
        },
        "badge_id": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Badge Id"
        },
        "closing_text": {
          "maxLength": 2000,
          "minLength": 1,
          "pattern": "\\S",
          "title": "Closing Text",
          "type": "string"
        },
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "priority": {
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "title": "Priority",
          "type": "integer"
        },
        "title": {
          "maxLength": 200,
          "minLength": 1,
          "pattern": "\\S",
          "title": "Title",
          "type": "string"
        },
        "when": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "When"
        }
      },
      "required": [
        "id",
        "priority",
        "title",
        "when",
        "closing_text",
        "artwork_asset_id"
      ],
      "title": "Ending",
      "type": "object"
    },
    "Entry": {
      "additionalProperties": false,
      "properties": {
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "initial_state": {
          "additionalProperties": {
            "$ref": "#/$defs/JsonValue"
          },
          "title": "Initial State",
          "type": "object"
        }
      },
      "required": [
        "id"
      ],
      "title": "Entry",
      "type": "object"
    },
    "EntrySuggestions": {
      "additionalProperties": false,
      "description": "The pinned entry chooses authored selection or same-call generation.",
      "properties": {
        "count": {
          "default": 0,
          "maximum": 3,
          "minimum": 0,
          "title": "Count",
          "type": "integer"
        },
        "items": {
          "items": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "maxItems": 4096,
          "title": "Items",
          "type": "array"
        },
        "mode": {
          "default": "disabled",
          "enum": [
            "disabled",
            "semantic_match",
            "inline_llm"
          ],
          "title": "Mode",
          "type": "string"
        }
      },
      "title": "EntrySuggestions",
      "type": "object"
    },
    "EnumSchema": {
      "additionalProperties": false,
      "properties": {
        "enum": {
          "items": {
            "anyOf": [
              {
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "minItems": 1,
          "title": "Enum",
          "type": "array"
        }
      },
      "required": [
        "enum"
      ],
      "title": "EnumSchema",
      "type": "object"
    },
    "GenerationRecord": {
      "additionalProperties": false,
      "properties": {
        "input_assets": {
          "items": {
            "$ref": "#/$defs/AssetInput"
          },
          "title": "Input Assets",
          "type": "array"
        },
        "model": {
          "minLength": 1,
          "title": "Model",
          "type": "string"
        },
        "output_sha256": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Output Sha256",
          "type": "string"
        },
        "prompt": {
          "minLength": 1,
          "title": "Prompt",
          "type": "string"
        },
        "provider": {
          "minLength": 1,
          "title": "Provider",
          "type": "string"
        }
      },
      "required": [
        "provider",
        "model",
        "prompt",
        "output_sha256"
      ],
      "title": "GenerationRecord",
      "type": "object"
    },
    "GroupCondition": {
      "additionalProperties": false,
      "properties": {
        "conditions": {
          "items": {
            "discriminator": {
              "mapping": {
                "all": "#/$defs/GroupCondition",
                "any": "#/$defs/GroupCondition",
                "contains": "#/$defs/Comparison",
                "eq": "#/$defs/Comparison",
                "gt": "#/$defs/Comparison",
                "gte": "#/$defs/Comparison",
                "literal": "#/$defs/LiteralCondition",
                "lt": "#/$defs/Comparison",
                "lte": "#/$defs/Comparison",
                "ne": "#/$defs/Comparison",
                "not": "#/$defs/NotCondition",
                "observed": "#/$defs/ObservationCondition"
              },
              "propertyName": "op"
            },
            "oneOf": [
              {
                "$ref": "#/$defs/LiteralCondition"
              },
              {
                "$ref": "#/$defs/Comparison"
              },
              {
                "$ref": "#/$defs/ObservationCondition"
              },
              {
                "$ref": "#/$defs/GroupCondition"
              },
              {
                "$ref": "#/$defs/NotCondition"
              }
            ]
          },
          "minItems": 1,
          "title": "Conditions",
          "type": "array"
        },
        "op": {
          "enum": [
            "all",
            "any"
          ],
          "title": "Op",
          "type": "string"
        }
      },
      "required": [
        "op",
        "conditions"
      ],
      "title": "GroupCondition",
      "type": "object"
    },
    "Guidance": {
      "additionalProperties": false,
      "properties": {
        "next_step": {
          "maxLength": 2000,
          "minLength": 1,
          "pattern": "\\S",
          "title": "Next Step",
          "type": "string"
        },
        "requirements": {
          "items": {
            "$ref": "#/$defs/Requirement"
          },
          "maxItems": 64,
          "minItems": 1,
          "title": "Requirements",
          "type": "array"
        },
        "summary": {
          "maxLength": 2000,
          "minLength": 1,
          "pattern": "\\S",
          "title": "Summary",
          "type": "string"
        }
      },
      "required": [
        "summary",
        "next_step",
        "requirements"
      ],
      "title": "Guidance",
      "type": "object"
    },
    "GuidanceRule": {
      "additionalProperties": false,
      "properties": {
        "completion": {
          "anyOf": [
            {
              "discriminator": {
                "mapping": {
                  "all": "#/$defs/GroupCondition",
                  "any": "#/$defs/GroupCondition",
                  "contains": "#/$defs/Comparison",
                  "eq": "#/$defs/Comparison",
                  "gt": "#/$defs/Comparison",
                  "gte": "#/$defs/Comparison",
                  "literal": "#/$defs/LiteralCondition",
                  "lt": "#/$defs/Comparison",
                  "lte": "#/$defs/Comparison",
                  "ne": "#/$defs/Comparison",
                  "not": "#/$defs/NotCondition",
                  "observed": "#/$defs/ObservationCondition"
                },
                "propertyName": "op"
              },
              "oneOf": [
                {
                  "$ref": "#/$defs/LiteralCondition"
                },
                {
                  "$ref": "#/$defs/Comparison"
                },
                {
                  "$ref": "#/$defs/ObservationCondition"
                },
                {
                  "$ref": "#/$defs/GroupCondition"
                },
                {
                  "$ref": "#/$defs/NotCondition"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Completion"
        },
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "instruction": {
          "minLength": 1,
          "title": "Instruction",
          "type": "string"
        },
        "kind": {
          "const": "guidance",
          "title": "Kind",
          "type": "string"
        },
        "when": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "When"
        }
      },
      "required": [
        "kind",
        "id",
        "when",
        "instruction"
      ],
      "title": "GuidanceRule",
      "type": "object"
    },
    "GuidedAchievement": {
      "additionalProperties": false,
      "properties": {
        "artwork_asset_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Artwork Asset Id",
          "type": "string"
        },
        "badge_id": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Badge Id"
        },
        "description": {
          "maxLength": 2000,
          "minLength": 1,
          "pattern": "\\S",
          "title": "Description",
          "type": "string"
        },
        "guidance": {
          "$ref": "#/$defs/Guidance"
        },
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "title": {
          "maxLength": 200,
          "minLength": 1,
          "pattern": "\\S",
          "title": "Title",
          "type": "string"
        },
        "when": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "When"
        }
      },
      "required": [
        "id",
        "title",
        "when",
        "artwork_asset_id",
        "guidance",
        "description"
      ],
      "title": "GuidedAchievement",
      "type": "object"
    },
    "GuidedEnding": {
      "additionalProperties": false,
      "properties": {
        "artwork_asset_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Artwork Asset Id",
          "type": "string"
        },
        "badge_id": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Badge Id"
        },
        "closing_text": {
          "maxLength": 2000,
          "minLength": 1,
          "pattern": "\\S",
          "title": "Closing Text",
          "type": "string"
        },
        "guidance": {
          "$ref": "#/$defs/Guidance"
        },
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "priority": {
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "title": "Priority",
          "type": "integer"
        },
        "title": {
          "maxLength": 200,
          "minLength": 1,
          "pattern": "\\S",
          "title": "Title",
          "type": "string"
        },
        "when": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "When"
        }
      },
      "required": [
        "id",
        "title",
        "when",
        "artwork_asset_id",
        "guidance",
        "priority",
        "closing_text"
      ],
      "title": "GuidedEnding",
      "type": "object"
    },
    "GuidedProgression": {
      "additionalProperties": false,
      "properties": {
        "achievements": {
          "items": {
            "$ref": "#/$defs/GuidedAchievement"
          },
          "maxItems": 128,
          "title": "Achievements",
          "type": "array"
        },
        "badges": {
          "items": {
            "$ref": "#/$defs/Badge"
          },
          "maxItems": 128,
          "title": "Badges",
          "type": "array"
        },
        "endings": {
          "items": {
            "$ref": "#/$defs/GuidedEnding"
          },
          "maxItems": 64,
          "title": "Endings",
          "type": "array"
        },
        "protocol": {
          "const": "storyorbit.progression/2",
          "title": "Protocol",
          "type": "string"
        }
      },
      "required": [
        "protocol"
      ],
      "title": "GuidedProgression",
      "type": "object"
    },
    "IdSchema": {
      "additionalProperties": false,
      "properties": {
        "enum": {
          "items": {
            "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
            "type": "string"
          },
          "minItems": 1,
          "title": "Enum",
          "type": "array"
        }
      },
      "required": [
        "enum"
      ],
      "title": "IdSchema",
      "type": "object"
    },
    "IllustrationRule": {
      "additionalProperties": false,
      "properties": {
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "illustration_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Illustration Id",
          "type": "string"
        },
        "match": {
          "maxLength": 1000,
          "minLength": 1,
          "pattern": "\\S",
          "title": "Match",
          "type": "string"
        },
        "priority": {
          "default": 0,
          "maximum": 1000,
          "minimum": -1000,
          "title": "Priority",
          "type": "integer"
        },
        "when": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "When"
        }
      },
      "required": [
        "id",
        "illustration_id",
        "when",
        "match"
      ],
      "title": "IllustrationRule",
      "type": "object"
    },
    "Increment": {
      "additionalProperties": false,
      "properties": {
        "by": {
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "title": "By",
          "type": "integer"
        },
        "limit": {
          "anyOf": [
            {
              "maximum": 9007199254740991,
              "minimum": -9007199254740991,
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Limit"
        },
        "op": {
          "const": "increment",
          "title": "Op",
          "type": "string"
        },
        "overflow": {
          "default": "clamp",
          "enum": [
            "clamp",
            "reject"
          ],
          "title": "Overflow",
          "type": "string"
        },
        "path": {
          "title": "Path",
          "type": "string"
        }
      },
      "required": [
        "op",
        "path",
        "by"
      ],
      "title": "Increment",
      "type": "object"
    },
    "IntegerSchema": {
      "additionalProperties": false,
      "properties": {
        "maximum": {
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "title": "Maximum",
          "type": "integer"
        },
        "minimum": {
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "title": "Minimum",
          "type": "integer"
        },
        "type": {
          "const": "integer",
          "title": "Type",
          "type": "string"
        }
      },
      "required": [
        "type",
        "minimum",
        "maximum"
      ],
      "title": "IntegerSchema",
      "type": "object"
    },
    "JsonValue": {},
    "LiteralCondition": {
      "additionalProperties": false,
      "properties": {
        "op": {
          "const": "literal",
          "title": "Op",
          "type": "string"
        },
        "value": {
          "title": "Value",
          "type": "boolean"
        }
      },
      "required": [
        "op",
        "value"
      ],
      "title": "LiteralCondition",
      "type": "object"
    },
    "Manifest": {
      "additionalProperties": false,
      "properties": {
        "language": {
          "enum": [
            "zh",
            "zh-CN",
            "en"
          ],
          "title": "Language",
          "type": "string"
        },
        "pack_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Pack Id",
          "type": "string"
        },
        "revision": {
          "maximum": 9007199254740991,
          "minimum": 1,
          "title": "Revision",
          "type": "integer"
        },
        "source_documents": {
          "items": {
            "$ref": "#/$defs/SourceDocument"
          },
          "title": "Source Documents",
          "type": "array"
        },
        "title": {
          "minLength": 1,
          "title": "Title",
          "type": "string"
        }
      },
      "required": [
        "pack_id",
        "revision",
        "title",
        "language"
      ],
      "title": "Manifest",
      "type": "object"
    },
    "MembershipEffect": {
      "additionalProperties": false,
      "properties": {
        "op": {
          "enum": [
            "add",
            "remove"
          ],
          "title": "Op",
          "type": "string"
        },
        "path": {
          "title": "Path",
          "type": "string"
        },
        "value": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Value",
          "type": "string"
        }
      },
      "required": [
        "op",
        "path",
        "value"
      ],
      "title": "MembershipEffect",
      "type": "object"
    },
    "NotCondition": {
      "additionalProperties": false,
      "properties": {
        "condition": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "Condition"
        },
        "op": {
          "const": "not",
          "title": "Op",
          "type": "string"
        }
      },
      "required": [
        "op",
        "condition"
      ],
      "title": "NotCondition",
      "type": "object"
    },
    "ObjectSchema": {
      "additionalProperties": false,
      "properties": {
        "additionalProperties": {
          "const": false,
          "title": "Additionalproperties",
          "type": "boolean"
        },
        "properties": {
          "minProperties": 1,
          "patternProperties": {
            "^[A-Za-z][A-Za-z0-9_.-]{0,79}$": {
              "anyOf": [
                {
                  "$ref": "#/$defs/IntegerSchema"
                },
                {
                  "$ref": "#/$defs/BooleanSchema"
                },
                {
                  "$ref": "#/$defs/EnumSchema"
                },
                {
                  "$ref": "#/$defs/SetSchema"
                },
                {
                  "$ref": "#/$defs/ObjectSchema"
                }
              ]
            }
          },
          "title": "Properties",
          "type": "object"
        },
        "required": {
          "items": {
            "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
            "type": "string"
          },
          "title": "Required",
          "type": "array"
        },
        "type": {
          "const": "object",
          "title": "Type",
          "type": "string"
        }
      },
      "required": [
        "type",
        "properties",
        "required",
        "additionalProperties"
      ],
      "title": "ObjectSchema",
      "type": "object"
    },
    "ObservationCondition": {
      "additionalProperties": false,
      "properties": {
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "op": {
          "const": "observed",
          "title": "Op",
          "type": "string"
        },
        "value": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "minLength": 1,
              "type": "string"
            }
          ],
          "title": "Value"
        }
      },
      "required": [
        "op",
        "id",
        "value"
      ],
      "title": "ObservationCondition",
      "type": "object"
    },
    "OpeningIllustration": {
      "additionalProperties": false,
      "properties": {
        "after_paragraph_index": {
          "maximum": 31,
          "minimum": 0,
          "title": "After Paragraph Index",
          "type": "integer"
        },
        "illustration_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Illustration Id",
          "type": "string"
        },
        "paragraph_digest": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Paragraph Digest",
          "type": "string"
        }
      },
      "required": [
        "after_paragraph_index",
        "paragraph_digest",
        "illustration_id"
      ],
      "title": "OpeningIllustration",
      "type": "object"
    },
    "OpeningStage": {
      "additionalProperties": false,
      "properties": {
        "background_asset_id": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Background Asset Id"
        },
        "cast": {
          "items": {
            "$ref": "#/$defs/StageActor"
          },
          "maxItems": 4,
          "title": "Cast",
          "type": "array"
        },
        "location": {
          "maxLength": 200,
          "minLength": 1,
          "title": "Location",
          "type": "string"
        },
        "paragraph_digest": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Paragraph Digest",
          "type": "string"
        },
        "paragraph_index": {
          "maximum": 255,
          "minimum": 0,
          "title": "Paragraph Index",
          "type": "integer"
        },
        "subject": {
          "anyOf": [
            {
              "$ref": "#/$defs/StageSubject"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "time_label": {
          "default": "",
          "maxLength": 80,
          "title": "Time Label",
          "type": "string"
        },
        "time_of_day": {
          "default": "unspecified",
          "enum": [
            "dawn",
            "day",
            "dusk",
            "night",
            "unspecified"
          ],
          "title": "Time Of Day",
          "type": "string"
        }
      },
      "required": [
        "paragraph_index",
        "paragraph_digest",
        "location",
        "subject",
        "time_of_day",
        "time_label",
        "cast"
      ],
      "title": "OpeningStage",
      "type": "object"
    },
    "PerformanceAsset": {
      "additionalProperties": false,
      "properties": {
        "access": {
          "default": "standard",
          "enum": [
            "standard",
            "reward_only"
          ],
          "title": "Access",
          "type": "string"
        },
        "byte_size": {
          "maximum": 32000000,
          "minimum": 1,
          "title": "Byte Size",
          "type": "integer"
        },
        "description": {
          "minLength": 1,
          "title": "Description",
          "type": "string"
        },
        "generation_record": {
          "anyOf": [
            {
              "$ref": "#/$defs/GenerationRecord"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "kind": {
          "enum": [
            "image",
            "audio",
            "video"
          ],
          "title": "Kind",
          "type": "string"
        },
        "mime_type": {
          "enum": [
            "image/png",
            "image/jpeg",
            "image/webp",
            "image/apng",
            "audio/wav",
            "audio/mpeg",
            "video/mp4"
          ],
          "title": "Mime Type",
          "type": "string"
        },
        "reference_only": {
          "default": false,
          "title": "Reference Only",
          "type": "boolean"
        },
        "reveal_when": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "Reveal When"
        },
        "sha256": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Sha256",
          "type": "string"
        },
        "source_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Source Url"
        },
        "uri": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Uri"
        }
      },
      "required": [
        "id",
        "kind",
        "mime_type",
        "sha256",
        "byte_size",
        "description",
        "reveal_when"
      ],
      "title": "PerformanceAsset",
      "type": "object"
    },
    "PinBadge": {
      "additionalProperties": false,
      "properties": {
        "crop": {
          "$ref": "#/$defs/Crop"
        },
        "effect_mask_asset_id": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Effect Mask Asset Id"
        },
        "finish": {
          "enum": [
            "gloss/1",
            "matte/1",
            "holo/1"
          ],
          "title": "Finish",
          "type": "string"
        },
        "front_asset_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Front Asset Id",
          "type": "string"
        },
        "model": {
          "const": "round-pin/1",
          "title": "Model",
          "type": "string"
        },
        "protocol": {
          "const": "storyorbit.pin-badge/1",
          "title": "Protocol",
          "type": "string"
        }
      },
      "required": [
        "protocol",
        "model",
        "front_asset_id",
        "crop",
        "finish"
      ],
      "title": "PinBadge",
      "type": "object"
    },
    "Progression": {
      "additionalProperties": false,
      "properties": {
        "achievements": {
          "items": {
            "$ref": "#/$defs/Achievement"
          },
          "maxItems": 128,
          "title": "Achievements",
          "type": "array"
        },
        "badges": {
          "items": {
            "$ref": "#/$defs/Badge"
          },
          "maxItems": 128,
          "title": "Badges",
          "type": "array"
        },
        "endings": {
          "items": {
            "$ref": "#/$defs/Ending"
          },
          "maxItems": 64,
          "title": "Endings",
          "type": "array"
        },
        "protocol": {
          "const": "storyorbit.progression/1",
          "title": "Protocol",
          "type": "string"
        }
      },
      "required": [
        "protocol"
      ],
      "title": "Progression",
      "type": "object"
    },
    "Provenance": {
      "additionalProperties": false,
      "properties": {
        "basis": {
          "enum": [
            "original",
            "source-derived"
          ],
          "title": "Basis",
          "type": "string"
        },
        "path": {
          "title": "Path",
          "type": "string"
        },
        "review": {
          "enum": [
            "accepted",
            "pending"
          ],
          "title": "Review",
          "type": "string"
        },
        "source_refs": {
          "items": {
            "$ref": "#/$defs/SourceRef"
          },
          "title": "Source Refs",
          "type": "array"
        }
      },
      "required": [
        "path",
        "basis",
        "review"
      ],
      "title": "Provenance",
      "type": "object"
    },
    "Publication": {
      "additionalProperties": false,
      "description": "Explicit public metadata, independent of private narrative instructions.",
      "properties": {
        "age_rating": {
          "default": "general",
          "enum": [
            "general",
            "adult"
          ],
          "title": "Age Rating",
          "type": "string"
        },
        "comments_enabled": {
          "default": false,
          "title": "Comments Enabled",
          "type": "boolean"
        },
        "content_warnings": {
          "items": {
            "minLength": 1,
            "type": "string"
          },
          "maxItems": 64,
          "title": "Content Warnings",
          "type": "array"
        },
        "cover_asset_id": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Cover Asset Id"
        },
        "cover_motion_asset_id": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Cover Motion Asset Id"
        },
        "creator_credit": {
          "maxLength": 200,
          "minLength": 1,
          "title": "Creator Credit",
          "type": "string"
        },
        "description": {
          "maxLength": 10000,
          "minLength": 1,
          "title": "Description",
          "type": "string"
        },
        "genres": {
          "items": {
            "minLength": 1,
            "type": "string"
          },
          "maxItems": 64,
          "title": "Genres",
          "type": "array"
        },
        "rights": {
          "$ref": "#/$defs/PublicationRights"
        },
        "tagline": {
          "maxLength": 200,
          "minLength": 1,
          "title": "Tagline",
          "type": "string"
        },
        "tags": {
          "items": {
            "minLength": 1,
            "type": "string"
          },
          "maxItems": 64,
          "title": "Tags",
          "type": "array"
        },
        "target_audience": {
          "items": {
            "minLength": 1,
            "type": "string"
          },
          "maxItems": 64,
          "title": "Target Audience",
          "type": "array"
        },
        "visibility": {
          "default": "private",
          "enum": [
            "public",
            "unlisted",
            "private"
          ],
          "title": "Visibility",
          "type": "string"
        }
      },
      "required": [
        "tagline",
        "description",
        "creator_credit",
        "rights"
      ],
      "title": "Publication",
      "type": "object"
    },
    "PublicationRights": {
      "additionalProperties": false,
      "properties": {
        "basis": {
          "enum": [
            "original",
            "licensed",
            "public_domain",
            "unknown"
          ],
          "title": "Basis",
          "type": "string"
        },
        "statement": {
          "minLength": 1,
          "title": "Statement",
          "type": "string"
        }
      },
      "required": [
        "basis",
        "statement"
      ],
      "title": "PublicationRights",
      "type": "object"
    },
    "ReaderCard": {
      "additionalProperties": false,
      "description": "Reviewed public presentation, independent of inferred memory identities.",
      "properties": {
        "avatar": {
          "anyOf": [
            {
              "$ref": "#/$defs/ReaderCardAvatar"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "display_name": {
          "maxLength": 100,
          "minLength": 1,
          "title": "Display Name",
          "type": "string"
        },
        "entry_ids": {
          "items": {
            "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
            "type": "string"
          },
          "maxItems": 8,
          "title": "Entry Ids",
          "type": "array"
        },
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "image": {
          "anyOf": [
            {
              "$ref": "#/$defs/ReaderCardImage"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "introduction": {
          "maxLength": 600,
          "minLength": 1,
          "title": "Introduction",
          "type": "string"
        },
        "kind": {
          "default": "actor",
          "enum": [
            "actor",
            "scene",
            "prop"
          ],
          "title": "Kind",
          "type": "string"
        },
        "relationships": {
          "items": {
            "$ref": "#/$defs/ReaderCardRelationship"
          },
          "maxItems": 32,
          "title": "Relationships",
          "type": "array"
        },
        "reveal_when": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "Reveal When"
        }
      },
      "required": [
        "id",
        "display_name",
        "introduction",
        "reveal_when"
      ],
      "title": "ReaderCard",
      "type": "object"
    },
    "ReaderCardAvatar": {
      "additionalProperties": false,
      "properties": {
        "asset_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Asset Id",
          "type": "string"
        },
        "crop": {
          "$ref": "#/$defs/Crop"
        },
        "reveal_when": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "Reveal When"
        }
      },
      "required": [
        "asset_id",
        "crop"
      ],
      "title": "ReaderCardAvatar",
      "type": "object"
    },
    "ReaderCardImage": {
      "additionalProperties": false,
      "properties": {
        "asset_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Asset Id",
          "type": "string"
        },
        "reveal_when": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "Reveal When"
        }
      },
      "required": [
        "asset_id",
        "reveal_when"
      ],
      "title": "ReaderCardImage",
      "type": "object"
    },
    "ReaderCardRelationship": {
      "additionalProperties": false,
      "properties": {
        "actor_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Actor Id",
          "type": "string"
        },
        "label": {
          "maxLength": 200,
          "minLength": 1,
          "title": "Label",
          "type": "string"
        },
        "reveal_when": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "Reveal When"
        }
      },
      "required": [
        "actor_id",
        "label",
        "reveal_when"
      ],
      "title": "ReaderCardRelationship",
      "type": "object"
    },
    "Requirement": {
      "additionalProperties": false,
      "properties": {
        "condition_ref": {
          "maxLength": 512,
          "pattern": "^(?:/conditions/(?:0|[1-9][0-9]*))*$",
          "title": "Condition Ref",
          "type": "string"
        },
        "hint": {
          "maxLength": 2000,
          "minLength": 1,
          "pattern": "\\S",
          "title": "Hint",
          "type": "string"
        },
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "label": {
          "maxLength": 200,
          "minLength": 1,
          "pattern": "\\S",
          "title": "Label",
          "type": "string"
        }
      },
      "required": [
        "id",
        "condition_ref",
        "label",
        "hint"
      ],
      "title": "Requirement",
      "type": "object"
    },
    "SetSchema": {
      "additionalProperties": false,
      "properties": {
        "items": {
          "$ref": "#/$defs/IdSchema"
        },
        "type": {
          "const": "array",
          "title": "Type",
          "type": "string"
        },
        "uniqueItems": {
          "const": true,
          "title": "Uniqueitems",
          "type": "boolean"
        }
      },
      "required": [
        "type",
        "items",
        "uniqueItems"
      ],
      "title": "SetSchema",
      "type": "object"
    },
    "SetValue": {
      "additionalProperties": false,
      "properties": {
        "op": {
          "const": "set",
          "title": "Op",
          "type": "string"
        },
        "path": {
          "title": "Path",
          "type": "string"
        },
        "value": {
          "$ref": "#/$defs/JsonValue"
        }
      },
      "required": [
        "op",
        "path",
        "value"
      ],
      "title": "SetValue",
      "type": "object"
    },
    "SourceDocument": {
      "additionalProperties": false,
      "properties": {
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "locator": {
          "minLength": 1,
          "title": "Locator",
          "type": "string"
        },
        "title": {
          "minLength": 1,
          "title": "Title",
          "type": "string"
        }
      },
      "required": [
        "id",
        "title",
        "locator"
      ],
      "title": "SourceDocument",
      "type": "object"
    },
    "SourceRef": {
      "additionalProperties": false,
      "properties": {
        "document_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Document Id",
          "type": "string"
        },
        "locator": {
          "minLength": 1,
          "title": "Locator",
          "type": "string"
        }
      },
      "required": [
        "document_id",
        "locator"
      ],
      "title": "SourceRef",
      "type": "object"
    },
    "SpriteAnimation": {
      "additionalProperties": false,
      "description": "Read-only compatibility for immutable pre-performance pack revisions.",
      "properties": {
        "blink": {
          "items": {
            "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
            "type": "string"
          },
          "maxItems": 4,
          "title": "Blink",
          "type": "array"
        },
        "protocol": {
          "const": "storyorbit.sprite-frames/1",
          "default": "storyorbit.sprite-frames/1",
          "title": "Protocol",
          "type": "string"
        },
        "talk": {
          "items": {
            "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
            "type": "string"
          },
          "maxItems": 4,
          "title": "Talk",
          "type": "array"
        }
      },
      "title": "SpriteAnimation",
      "type": "object"
    },
    "SpriteBinding": {
      "additionalProperties": false,
      "properties": {
        "animation": {
          "anyOf": [
            {
              "$ref": "#/$defs/SpriteAnimation"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "asset_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Asset Id",
          "type": "string"
        },
        "expression": {
          "default": "neutral",
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Expression",
          "type": "string"
        },
        "performance": {
          "anyOf": [
            {
              "$ref": "#/$defs/CharacterPerformance"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "role": {
          "const": "sprite",
          "title": "Role",
          "type": "string"
        },
        "subject": {
          "$ref": "#/$defs/StageSubject"
        }
      },
      "required": [
        "role",
        "subject",
        "asset_id"
      ],
      "title": "SpriteBinding",
      "type": "object"
    },
    "StageActor": {
      "additionalProperties": false,
      "properties": {
        "actor_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Actor Id",
          "type": "string"
        },
        "expression": {
          "default": "neutral",
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Expression",
          "type": "string"
        }
      },
      "required": [
        "actor_id"
      ],
      "title": "StageActor",
      "type": "object"
    },
    "StageSubject": {
      "additionalProperties": false,
      "properties": {
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "kind": {
          "enum": [
            "reader_card",
            "visual_anchor"
          ],
          "title": "Kind",
          "type": "string"
        }
      },
      "required": [
        "kind",
        "id"
      ],
      "title": "StageSubject",
      "type": "object"
    },
    "StateDefinition": {
      "additionalProperties": false,
      "properties": {
        "defaults": {
          "additionalProperties": {
            "$ref": "#/$defs/JsonValue"
          },
          "title": "Defaults",
          "type": "object"
        },
        "display": {
          "additionalProperties": {
            "$ref": "#/$defs/Display"
          },
          "title": "Display",
          "type": "object"
        },
        "schema": {
          "$ref": "#/$defs/ObjectSchema"
        }
      },
      "required": [
        "schema",
        "defaults"
      ],
      "title": "StateDefinition",
      "type": "object"
    },
    "UpdateRule": {
      "additionalProperties": false,
      "properties": {
        "effects": {
          "items": {
            "discriminator": {
              "mapping": {
                "add": "#/$defs/MembershipEffect",
                "increment": "#/$defs/Increment",
                "remove": "#/$defs/MembershipEffect",
                "set": "#/$defs/SetValue"
              },
              "propertyName": "op"
            },
            "oneOf": [
              {
                "$ref": "#/$defs/Increment"
              },
              {
                "$ref": "#/$defs/SetValue"
              },
              {
                "$ref": "#/$defs/MembershipEffect"
              }
            ]
          },
          "minItems": 1,
          "title": "Effects",
          "type": "array"
        },
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "kind": {
          "const": "update",
          "title": "Kind",
          "type": "string"
        },
        "when": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "When"
        }
      },
      "required": [
        "kind",
        "id",
        "when",
        "effects"
      ],
      "title": "UpdateRule",
      "type": "object"
    },
    "VNIllustration": {
      "additionalProperties": false,
      "properties": {
        "actor_ids": {
          "items": {
            "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
            "type": "string"
          },
          "maxItems": 64,
          "title": "Actor Ids",
          "type": "array"
        },
        "alt": {
          "maxLength": 600,
          "minLength": 1,
          "title": "Alt",
          "type": "string"
        },
        "asset_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Asset Id",
          "type": "string"
        },
        "entry_ids": {
          "items": {
            "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
            "type": "string"
          },
          "maxItems": 8,
          "title": "Entry Ids",
          "type": "array"
        },
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "variant_asset_ids": {
          "items": {
            "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
            "type": "string"
          },
          "maxItems": 8,
          "title": "Variant Asset Ids",
          "type": "array"
        }
      },
      "required": [
        "id",
        "asset_id",
        "alt"
      ],
      "title": "VNIllustration",
      "type": "object"
    },
    "VNOpeningTextAnnotations": {
      "additionalProperties": false,
      "properties": {
        "annotations": {
          "items": {
            "$ref": "#/$defs/VNTextAnnotation"
          },
          "title": "Annotations",
          "type": "array"
        },
        "paragraph_digest": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Paragraph Digest",
          "type": "string"
        },
        "paragraph_index": {
          "minimum": 0,
          "title": "Paragraph Index",
          "type": "integer"
        }
      },
      "required": [
        "paragraph_index",
        "paragraph_digest",
        "annotations"
      ],
      "title": "VNOpeningTextAnnotations",
      "type": "object"
    },
    "VNPackEntry": {
      "additionalProperties": false,
      "properties": {
        "hero_asset_id": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Hero Asset Id"
        },
        "hero_motion_asset_id": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Hero Motion Asset Id"
        },
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "opening": {
          "items": {
            "minLength": 1,
            "type": "string"
          },
          "maxItems": 32,
          "minItems": 1,
          "title": "Opening",
          "type": "array"
        },
        "opening_illustrations": {
          "items": {
            "$ref": "#/$defs/OpeningIllustration"
          },
          "maxItems": 32,
          "title": "Opening Illustrations",
          "type": "array"
        },
        "opening_stages": {
          "items": {
            "$ref": "#/$defs/OpeningStage"
          },
          "maxItems": 32,
          "title": "Opening Stages",
          "type": "array"
        },
        "opening_suggestions": {
          "items": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "maxItems": 3,
          "title": "Opening Suggestions",
          "type": "array"
        },
        "suggestions": {
          "$ref": "#/$defs/EntrySuggestions"
        },
        "text_annotations": {
          "items": {
            "$ref": "#/$defs/VNOpeningTextAnnotations"
          },
          "maxItems": 32,
          "title": "Text Annotations",
          "type": "array"
        },
        "title": {
          "minLength": 1,
          "title": "Title",
          "type": "string"
        }
      },
      "required": [
        "id",
        "title",
        "opening"
      ],
      "title": "VNPackEntry",
      "type": "object"
    },
    "VNPerformance": {
      "additionalProperties": false,
      "properties": {
        "expression": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Expression"
        },
        "focus": {
          "default": true,
          "title": "Focus",
          "type": "boolean"
        }
      },
      "title": "VNPerformance",
      "type": "object"
    },
    "VNPresentation": {
      "additionalProperties": false,
      "properties": {
        "bindings": {
          "items": {
            "discriminator": {
              "mapping": {
                "background": "#/$defs/BackgroundBinding",
                "sprite": "#/$defs/SpriteBinding"
              },
              "propertyName": "role"
            },
            "oneOf": [
              {
                "$ref": "#/$defs/BackgroundBinding"
              },
              {
                "$ref": "#/$defs/SpriteBinding"
              }
            ]
          },
          "maxItems": 128,
          "title": "Bindings",
          "type": "array"
        },
        "illustration_rules": {
          "items": {
            "$ref": "#/$defs/IllustrationRule"
          },
          "maxItems": 128,
          "title": "Illustration Rules",
          "type": "array"
        },
        "protocol": {
          "const": "storyorbit.vn/1",
          "title": "Protocol",
          "type": "string"
        }
      },
      "required": [
        "protocol"
      ],
      "title": "VNPresentation",
      "type": "object"
    },
    "VNTextAnnotation": {
      "additionalProperties": false,
      "properties": {
        "actor_id": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Actor Id"
        },
        "kind": {
          "enum": [
            "mention",
            "dialogue",
            "emphasis"
          ],
          "title": "Kind",
          "type": "string"
        },
        "occurrence": {
          "anyOf": [
            {
              "minimum": 1,
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Occurrence"
        },
        "performance": {
          "anyOf": [
            {
              "$ref": "#/$defs/VNPerformance"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "quote": {
          "minLength": 1,
          "title": "Quote",
          "type": "string"
        }
      },
      "required": [
        "kind",
        "quote"
      ],
      "title": "VNTextAnnotation",
      "type": "object"
    },
    "VisualAnchor": {
      "additionalProperties": false,
      "properties": {
        "description": {
          "maxLength": 600,
          "minLength": 1,
          "title": "Description",
          "type": "string"
        },
        "entry_ids": {
          "items": {
            "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
            "type": "string"
          },
          "maxItems": 8,
          "title": "Entry Ids",
          "type": "array"
        },
        "id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Id",
          "type": "string"
        },
        "invariants": {
          "items": {
            "minLength": 1,
            "type": "string"
          },
          "maxItems": 32,
          "title": "Invariants",
          "type": "array"
        },
        "kind": {
          "enum": [
            "character",
            "environment",
            "object"
          ],
          "title": "Kind",
          "type": "string"
        },
        "name": {
          "maxLength": 100,
          "minLength": 1,
          "title": "Name",
          "type": "string"
        },
        "references": {
          "items": {
            "$ref": "#/$defs/VisualReference"
          },
          "maxItems": 10,
          "minItems": 1,
          "title": "References",
          "type": "array"
        },
        "reveal_when": {
          "discriminator": {
            "mapping": {
              "all": "#/$defs/GroupCondition",
              "any": "#/$defs/GroupCondition",
              "contains": "#/$defs/Comparison",
              "eq": "#/$defs/Comparison",
              "gt": "#/$defs/Comparison",
              "gte": "#/$defs/Comparison",
              "literal": "#/$defs/LiteralCondition",
              "lt": "#/$defs/Comparison",
              "lte": "#/$defs/Comparison",
              "ne": "#/$defs/Comparison",
              "not": "#/$defs/NotCondition",
              "observed": "#/$defs/ObservationCondition"
            },
            "propertyName": "op"
          },
          "oneOf": [
            {
              "$ref": "#/$defs/LiteralCondition"
            },
            {
              "$ref": "#/$defs/Comparison"
            },
            {
              "$ref": "#/$defs/ObservationCondition"
            },
            {
              "$ref": "#/$defs/GroupCondition"
            },
            {
              "$ref": "#/$defs/NotCondition"
            }
          ],
          "title": "Reveal When"
        }
      },
      "required": [
        "id",
        "kind",
        "name",
        "description",
        "reveal_when",
        "references"
      ],
      "title": "VisualAnchor",
      "type": "object"
    },
    "VisualReference": {
      "additionalProperties": false,
      "properties": {
        "asset_id": {
          "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,79}$",
          "title": "Asset Id",
          "type": "string"
        },
        "view": {
          "minLength": 1,
          "title": "View",
          "type": "string"
        }
      },
      "required": [
        "asset_id",
        "view"
      ],
      "title": "VisualReference",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "assets": {
      "items": {
        "$ref": "#/$defs/PerformanceAsset"
      },
      "maxItems": 128,
      "title": "Assets",
      "type": "array"
    },
    "character_castings": {
      "items": {
        "$ref": "#/$defs/CharacterCasting"
      },
      "maxItems": 64,
      "title": "Character Castings",
      "type": "array"
    },
    "content": {
      "items": {
        "$ref": "#/$defs/Content"
      },
      "maxItems": 128,
      "title": "Content",
      "type": "array"
    },
    "entries": {
      "items": {
        "$ref": "#/$defs/VNPackEntry"
      },
      "maxItems": 8,
      "minItems": 1,
      "title": "Entries",
      "type": "array"
    },
    "illustrations": {
      "items": {
        "$ref": "#/$defs/VNIllustration"
      },
      "maxItems": 128,
      "title": "Illustrations",
      "type": "array"
    },
    "instructions": {
      "minLength": 1,
      "title": "Instructions",
      "type": "string"
    },
    "manifest": {
      "$ref": "#/$defs/Manifest"
    },
    "presentation": {
      "$ref": "#/$defs/VNPresentation"
    },
    "progression": {
      "discriminator": {
        "mapping": {
          "storyorbit.progression/1": "#/$defs/Progression",
          "storyorbit.progression/2": "#/$defs/GuidedProgression"
        },
        "propertyName": "protocol"
      },
      "oneOf": [
        {
          "$ref": "#/$defs/Progression"
        },
        {
          "$ref": "#/$defs/GuidedProgression"
        }
      ],
      "title": "Progression"
    },
    "protocol_version": {
      "const": "0.5",
      "title": "Protocol Version",
      "type": "string"
    },
    "provenance": {
      "items": {
        "$ref": "#/$defs/Provenance"
      },
      "minItems": 1,
      "title": "Provenance",
      "type": "array"
    },
    "publication": {
      "anyOf": [
        {
          "$ref": "#/$defs/Publication"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "reader_cards": {
      "items": {
        "$ref": "#/$defs/ReaderCard"
      },
      "maxItems": 128,
      "title": "Reader Cards",
      "type": "array"
    },
    "runtime": {
      "$ref": "#/$defs/Definition"
    },
    "visual_anchors": {
      "items": {
        "$ref": "#/$defs/VisualAnchor"
      },
      "maxItems": 64,
      "title": "Visual Anchors",
      "type": "array"
    }
  },
  "required": [
    "protocol_version",
    "manifest",
    "runtime",
    "instructions",
    "entries",
    "provenance",
    "progression",
    "presentation"
  ],
  "title": "CreatorPackV05",
  "type": "object"
}
