Spaces:
Paused
Paused
| const PUBLIC_DIRECTORIES = { | |
| images: 'public/img/', | |
| backups: 'backups/', | |
| sounds: 'public/sounds', | |
| extensions: 'public/scripts/extensions', | |
| }; | |
| const DEFAULT_AVATAR = '/img/ai4.png'; | |
| const SETTINGS_FILE = 'settings.json'; | |
| /** | |
| * @type {import('./users').UserDirectoryList} | |
| * @readonly | |
| * @enum {string} | |
| */ | |
| const USER_DIRECTORY_TEMPLATE = Object.freeze({ | |
| root: '', | |
| thumbnails: 'thumbnails', | |
| thumbnailsBg: 'thumbnails/bg', | |
| thumbnailsAvatar: 'thumbnails/avatar', | |
| worlds: 'worlds', | |
| user: 'user', | |
| avatars: 'User Avatars', | |
| userImages: 'user/images', | |
| groups: 'groups', | |
| groupChats: 'group chats', | |
| chats: 'chats', | |
| characters: 'characters', | |
| backgrounds: 'backgrounds', | |
| novelAI_Settings: 'NovelAI Settings', | |
| koboldAI_Settings: 'KoboldAI Settings', | |
| openAI_Settings: 'OpenAI Settings', | |
| textGen_Settings: 'TextGen Settings', | |
| themes: 'themes', | |
| movingUI: 'movingUI', | |
| extensions: 'extensions', | |
| instruct: 'instruct', | |
| context: 'context', | |
| quickreplies: 'QuickReplies', | |
| assets: 'assets', | |
| comfyWorkflows: 'user/workflows', | |
| files: 'user/files', | |
| vectors: 'vectors', | |
| backups: 'backups', | |
| }); | |
| /** | |
| * @type {import('./users').User} | |
| * @readonly | |
| */ | |
| const DEFAULT_USER = Object.freeze({ | |
| handle: 'default-user', | |
| name: 'User', | |
| created: Date.now(), | |
| password: '', | |
| admin: true, | |
| enabled: true, | |
| salt: '', | |
| }); | |
| const UNSAFE_EXTENSIONS = [ | |
| '.php', | |
| '.exe', | |
| '.com', | |
| '.dll', | |
| '.pif', | |
| '.application', | |
| '.gadget', | |
| '.msi', | |
| '.jar', | |
| '.cmd', | |
| '.bat', | |
| '.reg', | |
| '.sh', | |
| '.py', | |
| '.js', | |
| '.jse', | |
| '.jsp', | |
| '.pdf', | |
| '.html', | |
| '.htm', | |
| '.hta', | |
| '.vb', | |
| '.vbs', | |
| '.vbe', | |
| '.cpl', | |
| '.msc', | |
| '.scr', | |
| '.sql', | |
| '.iso', | |
| '.img', | |
| '.dmg', | |
| '.ps1', | |
| '.ps1xml', | |
| '.ps2', | |
| '.ps2xml', | |
| '.psc1', | |
| '.psc2', | |
| '.msh', | |
| '.msh1', | |
| '.msh2', | |
| '.mshxml', | |
| '.msh1xml', | |
| '.msh2xml', | |
| '.scf', | |
| '.lnk', | |
| '.inf', | |
| '.reg', | |
| '.doc', | |
| '.docm', | |
| '.docx', | |
| '.dot', | |
| '.dotm', | |
| '.dotx', | |
| '.xls', | |
| '.xlsm', | |
| '.xlsx', | |
| '.xlt', | |
| '.xltm', | |
| '.xltx', | |
| '.xlam', | |
| '.ppt', | |
| '.pptm', | |
| '.pptx', | |
| '.pot', | |
| '.potm', | |
| '.potx', | |
| '.ppam', | |
| '.ppsx', | |
| '.ppsm', | |
| '.pps', | |
| '.ppam', | |
| '.sldx', | |
| '.sldm', | |
| '.ws', | |
| ]; | |
| const GEMINI_SAFETY = [ | |
| { | |
| category: 'HARM_CATEGORY_HARASSMENT', | |
| threshold: 'BLOCK_NONE', | |
| }, | |
| { | |
| category: 'HARM_CATEGORY_HATE_SPEECH', | |
| threshold: 'BLOCK_NONE', | |
| }, | |
| { | |
| category: 'HARM_CATEGORY_SEXUALLY_EXPLICIT', | |
| threshold: 'BLOCK_NONE', | |
| }, | |
| { | |
| category: 'HARM_CATEGORY_DANGEROUS_CONTENT', | |
| threshold: 'BLOCK_NONE', | |
| }, | |
| ]; | |
| const BISON_SAFETY = [ | |
| { | |
| category: 'HARM_CATEGORY_DEROGATORY', | |
| threshold: 'BLOCK_NONE', | |
| }, | |
| { | |
| category: 'HARM_CATEGORY_TOXICITY', | |
| threshold: 'BLOCK_NONE', | |
| }, | |
| { | |
| category: 'HARM_CATEGORY_VIOLENCE', | |
| threshold: 'BLOCK_NONE', | |
| }, | |
| { | |
| category: 'HARM_CATEGORY_SEXUAL', | |
| threshold: 'BLOCK_NONE', | |
| }, | |
| { | |
| category: 'HARM_CATEGORY_MEDICAL', | |
| threshold: 'BLOCK_NONE', | |
| }, | |
| { | |
| category: 'HARM_CATEGORY_DANGEROUS', | |
| threshold: 'BLOCK_NONE', | |
| }, | |
| ]; | |
| const CHAT_COMPLETION_SOURCES = { | |
| OPENAI: 'openai', | |
| WINDOWAI: 'windowai', | |
| CLAUDE: 'claude', | |
| SCALE: 'scale', | |
| OPENROUTER: 'openrouter', | |
| AI21: 'ai21', | |
| MAKERSUITE: 'makersuite', | |
| MISTRALAI: 'mistralai', | |
| CUSTOM: 'custom', | |
| COHERE: 'cohere', | |
| PERPLEXITY: 'perplexity', | |
| GROQ: 'groq', | |
| ZEROONEAI: '01ai', | |
| BLOCKENTROPY: 'blockentropy', | |
| }; | |
| /** | |
| * Path to multer file uploads under the data root. | |
| */ | |
| const UPLOADS_DIRECTORY = '_uploads'; | |
| // TODO: this is copied from the client code; there should be a way to de-duplicate it eventually | |
| const TEXTGEN_TYPES = { | |
| OOBA: 'ooba', | |
| MANCER: 'mancer', | |
| VLLM: 'vllm', | |
| APHRODITE: 'aphrodite', | |
| TABBY: 'tabby', | |
| KOBOLDCPP: 'koboldcpp', | |
| TOGETHERAI: 'togetherai', | |
| LLAMACPP: 'llamacpp', | |
| OLLAMA: 'ollama', | |
| INFERMATICAI: 'infermaticai', | |
| DREAMGEN: 'dreamgen', | |
| OPENROUTER: 'openrouter', | |
| FEATHERLESS: 'featherless', | |
| HUGGINGFACE: 'huggingface', | |
| }; | |
| const INFERMATICAI_KEYS = [ | |
| 'model', | |
| 'prompt', | |
| 'max_tokens', | |
| 'temperature', | |
| 'top_p', | |
| 'top_k', | |
| 'repetition_penalty', | |
| 'stream', | |
| 'stop', | |
| 'presence_penalty', | |
| 'frequency_penalty', | |
| 'min_p', | |
| 'seed', | |
| 'ignore_eos', | |
| 'n', | |
| 'best_of', | |
| 'min_tokens', | |
| 'spaces_between_special_tokens', | |
| 'skip_special_tokens', | |
| 'logprobs', | |
| ]; | |
| const FEATHERLESS_KEYS = [ | |
| 'model', | |
| 'prompt', | |
| 'best_of', | |
| 'echo', | |
| 'frequency_penalty', | |
| 'logit_bias', | |
| 'logprobs', | |
| 'max_tokens', | |
| 'n', | |
| 'presence_penalty', | |
| 'seed', | |
| 'stop', | |
| 'stream', | |
| 'suffix', | |
| 'temperature', | |
| 'top_p', | |
| 'user', | |
| 'use_beam_search', | |
| 'top_k', | |
| 'min_p', | |
| 'repetition_penalty', | |
| 'length_penalty', | |
| 'early_stopping', | |
| 'stop_token_ids', | |
| 'ignore_eos', | |
| 'min_tokens', | |
| 'skip_special_tokens', | |
| 'spaces_between_special_tokens', | |
| 'truncate_prompt_tokens', | |
| 'include_stop_str_in_output', | |
| 'response_format', | |
| 'guided_json', | |
| 'guided_regex', | |
| 'guided_choice', | |
| 'guided_grammar', | |
| 'guided_decoding_backend', | |
| 'guided_whitespace_pattern', | |
| ]; | |
| // https://dreamgen.com/docs/api#openai-text | |
| const DREAMGEN_KEYS = [ | |
| 'model', | |
| 'prompt', | |
| 'max_tokens', | |
| 'temperature', | |
| 'top_p', | |
| 'top_k', | |
| 'min_p', | |
| 'repetition_penalty', | |
| 'frequency_penalty', | |
| 'presence_penalty', | |
| 'stop', | |
| 'stream', | |
| 'minimum_message_content_tokens', | |
| ]; | |
| // https://docs.together.ai/reference/completions | |
| const TOGETHERAI_KEYS = [ | |
| 'model', | |
| 'prompt', | |
| 'max_tokens', | |
| 'temperature', | |
| 'top_p', | |
| 'top_k', | |
| 'repetition_penalty', | |
| 'min_p', | |
| 'presence_penalty', | |
| 'frequency_penalty', | |
| 'stream', | |
| 'stop', | |
| ]; | |
| // https://github.com/jmorganca/ollama/blob/main/docs/api.md#request-with-options | |
| const OLLAMA_KEYS = [ | |
| 'num_predict', | |
| 'num_ctx', | |
| 'stop', | |
| 'temperature', | |
| 'repeat_penalty', | |
| 'presence_penalty', | |
| 'frequency_penalty', | |
| 'top_k', | |
| 'top_p', | |
| 'tfs_z', | |
| 'typical_p', | |
| 'seed', | |
| 'repeat_last_n', | |
| 'mirostat', | |
| 'mirostat_tau', | |
| 'mirostat_eta', | |
| 'min_p', | |
| ]; | |
| const AVATAR_WIDTH = 512; | |
| const AVATAR_HEIGHT = 768; | |
| const OPENROUTER_HEADERS = { | |
| 'HTTP-Referer': 'https://sillytavern.app', | |
| 'X-Title': 'SillyTavern', | |
| }; | |
| const FEATHERLESS_HEADERS = { | |
| 'HTTP-Referer': 'https://sillytavern.app', | |
| 'X-Title': 'SillyTavern', | |
| }; | |
| const OPENROUTER_KEYS = [ | |
| 'max_tokens', | |
| 'temperature', | |
| 'top_k', | |
| 'top_p', | |
| 'presence_penalty', | |
| 'frequency_penalty', | |
| 'repetition_penalty', | |
| 'min_p', | |
| 'top_a', | |
| 'seed', | |
| 'logit_bias', | |
| 'model', | |
| 'stream', | |
| 'prompt', | |
| 'stop', | |
| 'provider', | |
| ]; | |
| // https://github.com/vllm-project/vllm/blob/0f8a91401c89ac0a8018def3756829611b57727f/vllm/entrypoints/openai/protocol.py#L220 | |
| const VLLM_KEYS = [ | |
| 'model', | |
| 'prompt', | |
| 'best_of', | |
| 'echo', | |
| 'frequency_penalty', | |
| 'logit_bias', | |
| 'logprobs', | |
| 'max_tokens', | |
| 'n', | |
| 'presence_penalty', | |
| 'seed', | |
| 'stop', | |
| 'stream', | |
| 'suffix', | |
| 'temperature', | |
| 'top_p', | |
| 'user', | |
| 'use_beam_search', | |
| 'top_k', | |
| 'min_p', | |
| 'repetition_penalty', | |
| 'length_penalty', | |
| 'early_stopping', | |
| 'stop_token_ids', | |
| 'ignore_eos', | |
| 'min_tokens', | |
| 'skip_special_tokens', | |
| 'spaces_between_special_tokens', | |
| 'truncate_prompt_tokens', | |
| 'include_stop_str_in_output', | |
| 'response_format', | |
| 'guided_json', | |
| 'guided_regex', | |
| 'guided_choice', | |
| 'guided_grammar', | |
| 'guided_decoding_backend', | |
| 'guided_whitespace_pattern', | |
| ]; | |
| module.exports = { | |
| DEFAULT_USER, | |
| DEFAULT_AVATAR, | |
| SETTINGS_FILE, | |
| PUBLIC_DIRECTORIES, | |
| USER_DIRECTORY_TEMPLATE, | |
| UNSAFE_EXTENSIONS, | |
| UPLOADS_DIRECTORY, | |
| GEMINI_SAFETY, | |
| BISON_SAFETY, | |
| TEXTGEN_TYPES, | |
| CHAT_COMPLETION_SOURCES, | |
| AVATAR_WIDTH, | |
| AVATAR_HEIGHT, | |
| TOGETHERAI_KEYS, | |
| OLLAMA_KEYS, | |
| INFERMATICAI_KEYS, | |
| DREAMGEN_KEYS, | |
| OPENROUTER_HEADERS, | |
| OPENROUTER_KEYS, | |
| VLLM_KEYS, | |
| FEATHERLESS_KEYS, | |
| FEATHERLESS_HEADERS, | |
| }; | |