'tome:cast-spells':c.object{title: 'Cast Spells',description: 'Published when spells are cast',required: ['spells','preload','realTime','submissionCount','flagHistory','difficulty','god']},
'tome:manual-cast-denied':c.object{title: 'Manual Cast Denied',description: 'Published when player attempts to submit for real-time playback, but must wait after a replayable level failure.',required: ['timeUntilResubmit']},
'tome:spell-created':c.object{title: 'Spell Created',description: 'Published after a new spell has been created',required: ['spell']},
spell: {type: 'object'}
'tome:spell-has-changed-significantly-calculation':c.object{title: 'Has Changed Significantly Calculation',description: 'Let anyone know that the spell has changed significantly.',required: ['hasChangedSignificantly']},
'tome:spell-debug-property-hovered':c.object{title: 'Spell Debug Property Hovered',description: 'Published when you hover over a spell property',required: []},
'tome:spell-debug-value-request':c.object{title: 'Spell Debug Value Request',description: 'Published when the SpellDebugView wants to retrieve a debug value.',required: ['thangID','spellID','variableChain','frame']},
'tome:palette-hovered':c.object{title: 'Palette Hovered',description: 'Published when you hover over a Thang in the spell palette',required: ['thang','prop','entry']},
'tome:palette-pin-toggled':c.object{title: 'Palette Pin Toggled',description: 'Published when you pin or unpin the spell palette',required: ['entry','pinned']},
'tome:palette-clicked':c.object{title: 'Palette Clicked',description: 'Published when you click on the spell palette',required: ['thang','prop','entry']},
'tome:spell-statement-index-updated':c.object{title: 'Spell Statement Index Updated',description: 'Published when the spell index is updated',required: ['statementIndex','ace']},
'tome:problems-updated':c.object{title: 'Problems Updated',description: 'Published when problems have been updated',required: ['spell','problems','isCast']},
'tome:change-language':c.object{title: 'Tome Change Language',description: 'Published when the Tome should update its programming language',required: ['language']},
'tome:spell-changed-language':c.object{title: 'Spell Changed Language',description: 'Published when an individual spell has updated its code language',required: ['spell']},
'tome:update-snippets':c.object{title: 'Update Snippets',description: 'Published when we need to add autocomplete snippets',required: ['propGroups','allDocs']},
'tome:insert-snippet':c.object{title: 'Insert Snippet',description: 'Published when we need to insert a autocomplete snippet',required: ['doc','language','formatted']},
'tome:required-code-fragment-deleted':c.object{title: 'Required Code Fragment Deleted',description: 'Published when a required code fragment is deleted from the sample code.',required: ['codeFragment']},
'tome:suspect-code-fragment-added':c.object{title: 'Suspect Code Fragment Added',description: 'Published when a suspect code fragment is added to the sample code.',required: ['codeFragment']},
'tome:suspect-code-fragment-deleted':c.object{title: 'Suspect Code Fragment Deleted',description: 'Published when a suspect code fragment is deleted from the sample code.',required: ['codeFragment']},
'tome:winnability-updated':c.object{title: 'Winnability Updated',description: 'When we think we can now win (or can no longer win), we may want to emphasize the submit button versus the run button (or vice versa), so this fires when we get new goal states (even preloaded goal states) suggesting success or failure change.',required: ['winnable']},