CatShem Engine

Notes:
TODO: implement fetching of current models

TODO: Modules class

TODO: Add Abstractions

TODO: Add variables and function calling for getting and manipulating the variables.

TODO: Implement and Force AutoAppend on. When a message is selected, it is put in the preview box and the previous messages are in abstractions called previous $role messages. When edited, it shifts them all up to that point out of the abstraction to be submitted as one big new text.

TODO: Implement Tree narrative where later messages can be cycled out when children are edited.


Final UI

TODO: Tabs for Game, Console, Main Loop and Abstraction Stack, Sound, Display, GameSpeed, Monitors, User Preferences

Game -> Final User Interface for players. Has functions for saving and loading games, allowing one file to populate the other tabs.

Console -> Listed CatShem operations, for trouble shooting and aiding in the loop and stack

Main Loop and Abstraction Stack -> Visualization and Manipulation of priority of apiCalls to ensure computational work is performed in an order most conducive to the game. Has abstractions of abstractions for simplified readability. 

Sound -> Interface for interacting with the sound engine, including uploading sounds, adding context for why a sound would be played, and file manipulation of sounds. Incorporates sound file version number system of 0.0.0 (userVersion.#Changelog.#NewAdditions)

Display -> Interface for adding models to be drawn on the screen in the Game tab. Works similar to Sound. Has further options for adding CSS for Console tab

GameSpeed -> Manipulates how much CatShem writes about a particular moment. Can variably change based on user inputed actions, but otherwise, has an action log with expected times and allowed varied time ranges for specific actions, like brushing teeth or frying an egg. CatShem can intelligently decide reasonable time frames, but User input helps ensure specific narrative focuses. Imagine slowing time down to be conducive of a cutscene, and speeding time up to be more representative of a montage.

Monitors -> Screen for manipulating Monitors (Post Module api-Calls), that allows for selectively deciding if and when to exclude or additionally include Monitor calls between steps in the Main Loop and Abstraction Stack. 

User Preferences -> Options augmenting how the CatShem Engine is interacted with, such as allowing drag and drop blocks for the MLAS or changing default options when clicking on some element, etc. Probably include CSS presets here that populate in the Console.