├── .gitattributes
├── .gitignore
├── .vs
├── CMakeWorkspaceSettings.json
├── ChatGPT_client
│ ├── DesignTimeBuild
│ │ └── .dtbcache.v2
│ ├── FileContentIndex
│ │ ├── 4b72e540-1714-4bf9-a2c5-cf10b59c0e10.vsidx
│ │ ├── 613ab943-54b9-448c-91d4-b510136814a6.vsidx
│ │ ├── 74b21a87-292d-452c-9e88-96e00dd48c53.vsidx
│ │ ├── 89c33404-605d-412a-979c-806c64117ad7.vsidx
│ │ └── read.lock
│ └── v17
│ │ ├── .futdcache.v2
│ │ ├── .suo
│ │ └── .wsuo
├── GPT_playground
│ ├── FileContentIndex
│ │ ├── 11c3c796-15b3-47d4-a7b7-0e920ae69589.vsidx
│ │ └── read.lock
│ └── v17
│ │ └── .suo
├── ProjectEvaluation
│ ├── chatgpt_client.metadata.v5.2
│ ├── chatgpt_client.projects.v5.2
│ ├── quasai.metadata.v5.2
│ └── quasai.projects.v5.2
├── ProjectSettings.json
├── Quasai
│ ├── DesignTimeBuild
│ │ └── .dtbcache.v2
│ ├── FileContentIndex
│ │ ├── 6e0d6fb1-1689-4d0d-8146-6ea5931b43c1.vsidx
│ │ └── read.lock
│ └── v17
│ │ ├── .futdcache.v2
│ │ ├── .suo
│ │ └── .wsuo
├── VSWorkspaceState.json
└── slnx.sqlite
├── LICENSE.md
├── Quasai.csproj
├── Quasai.csproj.old
├── Quasai.sln
├── README.md
├── TODO.txt
├── fonts
└── inconsolata
│ ├── Inconsolata-Regular.ttf
│ ├── Inconsolata-Regular.ttf.import
│ └── OFL.txt
├── icon.svg
├── icon.svg.import
├── images
├── api_key_screen.png
├── api_key_screen.png.import
├── icons
│ ├── ai_pretender_icon.png
│ ├── ai_pretender_icon.png.import
│ ├── bad_status.png
│ ├── bad_status.png.import
│ ├── code_assistant.png
│ ├── code_assistant.png.import
│ ├── companion_icon.afdesign
│ ├── companion_icon.png
│ ├── companion_icon.png.import
│ ├── copy.png
│ ├── copy.png.import
│ ├── delete.png
│ ├── delete.png.import
│ ├── general_chat_icon.png
│ ├── general_chat_icon.png.import
│ ├── good_status.png
│ ├── good_status.png.import
│ ├── greentext_icon.png
│ ├── greentext_icon.png.import
│ ├── image_prompter_icon.png
│ ├── image_prompter_icon.png.import
│ ├── meal_planner_icon.png
│ ├── meal_planner_icon.png.import
│ ├── nil_status.png
│ ├── nil_status.png.import
│ ├── play_circle.png
│ ├── play_circle.png.import
│ ├── proofreader_icon.png
│ ├── proofreader_icon.png.import
│ ├── recipe_creator_icon.png
│ ├── recipe_creator_icon.png.import
│ ├── redo_icon.png
│ ├── redo_icon.png.import
│ ├── tokenizer_icon.png
│ ├── tokenizer_icon.png.import
│ ├── translator_icon.png
│ ├── translator_icon.png.import
│ ├── wait_status.png
│ ├── wait_status.png.import
│ ├── would_you_rather_icon.png
│ └── would_you_rather_icon.png.import
└── logo
│ ├── icon.ico
│ ├── icon_1000.png
│ ├── icon_1000.png.import
│ ├── icon_128.png
│ ├── icon_128.png.import
│ ├── icon_16.png
│ ├── icon_16.png.import
│ ├── icon_256.png
│ ├── icon_256.png.import
│ ├── icon_32.png
│ ├── icon_32.png.import
│ ├── icon_48.png
│ ├── icon_48.png.import
│ ├── icon_64.png
│ ├── icon_64.png.import
│ ├── quasai_font_white_horizontal_logo.png
│ ├── quasai_font_white_horizontal_logo.png.import
│ ├── quasai_font_white_logo.png
│ └── quasai_font_white_logo.png.import
├── project.godot
├── rich_text_effects
└── inline_code.gd
├── scenes
├── ai_pretender
│ └── ai_pretender.tscn
├── api_walkthrough.tscn
├── code_assistant
│ └── code_assistant.tscn
├── companion
│ ├── companion.tscn
│ ├── companion_message_box.tscn
│ └── companion_start.tscn
├── components
│ └── notice_popup.tscn
├── general_chatting
│ ├── code_message.tscn
│ ├── main_chat.tscn
│ └── message_box.tscn
├── greentext
│ └── greentext.tscn
├── image_prompter
│ └── image_prompter.tscn
├── machine_learning
│ └── machine_learning.tscn
├── meal_planner
│ ├── meal_item.tscn
│ └── meal_planner.tscn
├── proofreader
│ └── proofreader.tscn
├── recipe_creator
│ └── recipe_creator.tscn
├── start_screen
│ ├── mode_button.tscn
│ └── start_screen.tscn
├── story_writer
│ ├── story_paragraph.tscn
│ └── story_writer.tscn
├── tokenizer
│ ├── token_element.tscn
│ └── tokenizer.tscn
├── translator
│ └── translator.tscn
├── wiki_search
│ └── wiki_search.tscn
└── would_you_rather
│ ├── would_you_rather.tscn
│ └── would_you_rather_button.tres
├── scripts
├── ai_pretender
│ ├── ai_pretender.gd
│ ├── ai_pretender_rules.txt
│ └── guess_lists
│ │ ├── anime_characters.txt
│ │ ├── artists.txt
│ │ ├── cartoon_characters.txt
│ │ ├── celebrities.txt
│ │ ├── game_characters.txt
│ │ ├── historical_figures.txt
│ │ ├── influencers.txt
│ │ ├── movie_characters.txt
│ │ └── musicians.txt
├── api_walkthrough
│ ├── api_link.gd
│ └── introduction_screen.gd
├── chatgpt_api.gd
├── code_assistant
│ ├── code_assistant.gd
│ ├── code_highlighters
│ │ ├── gdscript_highlighter.gd
│ │ ├── javascript_highlighter.gd
│ │ └── python_highlighter.gd
│ └── code_rules.txt
├── companion
│ ├── companion.gd
│ ├── companion_start.gd
│ └── prompts
│ │ ├── cheerful.txt
│ │ ├── depressed.txt
│ │ ├── rules.txt
│ │ ├── sassy.txt
│ │ ├── shy.txt
│ │ └── thread_analysis.txt
├── components
│ └── notice_popup
│ │ └── notice_popup.gd
├── elevenlabs_api.gd
├── general_chat
│ ├── bbcode_formatting.txt
│ ├── chat.gd
│ ├── code_message.gd
│ ├── message_box.gd
│ └── prompts
│ │ ├── a_general_bot.txt
│ │ ├── conversationalist.txt
│ │ ├── dnd_master.txt
│ │ ├── emojiis_only.txt
│ │ ├── evil_bot.txt
│ │ ├── jackbox.txt
│ │ ├── karen_bot.txt
│ │ ├── nia.txt
│ │ ├── none.txt
│ │ ├── roleplayer.txt
│ │ ├── search_engine.txt
│ │ ├── stacey_bot.txt
│ │ └── ted_bot.txt
├── globals.gd
├── greentext
│ ├── greentext.gd
│ ├── greentext_rules.txt
│ ├── greentext_text_display.gd
│ └── viewport_image.gd
├── home_button.gd
├── http_client.gd
├── image_prompter
│ ├── image_prompter.gd
│ └── prompter.txt
├── machine_learning
│ ├── New Text Document.txt
│ ├── activator_functions.gd
│ ├── ml_consts.gd
│ ├── ml_test.gd
│ ├── neural_network.gd
│ └── neuron.gd
├── meal_planner
│ ├── item_rules.txt
│ ├── meal_item.gd
│ ├── meal_planner.gd
│ ├── planner_rules.txt
│ └── sex_toggle.gd
├── onyx_runtime
│ ├── demo.jpg
│ ├── demo.jpg.import
│ ├── mnist-1.onnx
│ ├── onyxRuntime.cs
│ └── test.cs
├── proofreader
│ ├── proofreader.gd
│ └── proofreader_prompts
│ │ ├── academic.txt
│ │ ├── advertisement.txt
│ │ ├── casual.txt
│ │ ├── corporate.txt
│ │ ├── lawyer.txt
│ │ ├── maintain.txt
│ │ ├── neutral.txt
│ │ ├── pirate.txt
│ │ ├── rules.txt
│ │ ├── sensual.txt
│ │ ├── sentiment_checker.txt
│ │ ├── social.txt
│ │ ├── summarize.txt
│ │ └── uwu.txt
├── recipe_creator
│ ├── eli5.txt
│ ├── fast.txt
│ ├── homemade.txt
│ ├── main.txt
│ ├── recipe_creator.gd
│ └── restaurant.txt
├── start_screen
│ ├── mode_button.gd
│ ├── open_user_folder.gd
│ ├── start_screen.gd
│ ├── theme_options.gd
│ └── version.gd
├── story_writer
│ ├── story_writer.gd
│ └── writer_rules.txt
├── tokenizer
│ ├── tokenizer.cs
│ ├── tokenizer.gd
│ ├── tokenizer_api.gd
│ └── tokenizer_credit.gd
├── translator
│ ├── translator.gd
│ └── translator_rules.txt
└── would_you_rather
│ ├── would_you_rather.gd
│ └── wyr_rules.txt
└── themes
├── display_panels.tres
└── main_themes
├── Celtic.tres
├── Default.tres
├── Pastel.tres
└── Sunset.tres
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Normalize EOL for all files that Git considers text files.
2 | * text=auto eol=lf
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Godot 4+ specific ignores
2 | .godot/
3 | exported/
4 |
5 | # Godot-specific ignores
6 | .import/
7 | export.cfg
8 | export_presets.cfg
9 |
10 | # Imported translations (automatically generated from CSV files)
11 | *.translation
12 |
13 | # Mono-specific ignores
14 | .mono/
15 | data_*/
16 | mono_crash.*.json
--------------------------------------------------------------------------------
/.vs/CMakeWorkspaceSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | }
3 |
--------------------------------------------------------------------------------
/.vs/ChatGPT_client/DesignTimeBuild/.dtbcache.v2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/ChatGPT_client/DesignTimeBuild/.dtbcache.v2
--------------------------------------------------------------------------------
/.vs/ChatGPT_client/FileContentIndex/4b72e540-1714-4bf9-a2c5-cf10b59c0e10.vsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/ChatGPT_client/FileContentIndex/4b72e540-1714-4bf9-a2c5-cf10b59c0e10.vsidx
--------------------------------------------------------------------------------
/.vs/ChatGPT_client/FileContentIndex/613ab943-54b9-448c-91d4-b510136814a6.vsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/ChatGPT_client/FileContentIndex/613ab943-54b9-448c-91d4-b510136814a6.vsidx
--------------------------------------------------------------------------------
/.vs/ChatGPT_client/FileContentIndex/74b21a87-292d-452c-9e88-96e00dd48c53.vsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/ChatGPT_client/FileContentIndex/74b21a87-292d-452c-9e88-96e00dd48c53.vsidx
--------------------------------------------------------------------------------
/.vs/ChatGPT_client/FileContentIndex/89c33404-605d-412a-979c-806c64117ad7.vsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/ChatGPT_client/FileContentIndex/89c33404-605d-412a-979c-806c64117ad7.vsidx
--------------------------------------------------------------------------------
/.vs/ChatGPT_client/FileContentIndex/read.lock:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/ChatGPT_client/FileContentIndex/read.lock
--------------------------------------------------------------------------------
/.vs/ChatGPT_client/v17/.futdcache.v2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/ChatGPT_client/v17/.futdcache.v2
--------------------------------------------------------------------------------
/.vs/ChatGPT_client/v17/.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/ChatGPT_client/v17/.suo
--------------------------------------------------------------------------------
/.vs/ChatGPT_client/v17/.wsuo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/ChatGPT_client/v17/.wsuo
--------------------------------------------------------------------------------
/.vs/GPT_playground/FileContentIndex/11c3c796-15b3-47d4-a7b7-0e920ae69589.vsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/GPT_playground/FileContentIndex/11c3c796-15b3-47d4-a7b7-0e920ae69589.vsidx
--------------------------------------------------------------------------------
/.vs/GPT_playground/FileContentIndex/read.lock:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/GPT_playground/FileContentIndex/read.lock
--------------------------------------------------------------------------------
/.vs/GPT_playground/v17/.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/GPT_playground/v17/.suo
--------------------------------------------------------------------------------
/.vs/ProjectEvaluation/chatgpt_client.metadata.v5.2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/ProjectEvaluation/chatgpt_client.metadata.v5.2
--------------------------------------------------------------------------------
/.vs/ProjectEvaluation/chatgpt_client.projects.v5.2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/ProjectEvaluation/chatgpt_client.projects.v5.2
--------------------------------------------------------------------------------
/.vs/ProjectEvaluation/quasai.metadata.v5.2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/ProjectEvaluation/quasai.metadata.v5.2
--------------------------------------------------------------------------------
/.vs/ProjectEvaluation/quasai.projects.v5.2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/ProjectEvaluation/quasai.projects.v5.2
--------------------------------------------------------------------------------
/.vs/ProjectSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "CurrentProjectSetting": null
3 | }
--------------------------------------------------------------------------------
/.vs/Quasai/DesignTimeBuild/.dtbcache.v2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/Quasai/DesignTimeBuild/.dtbcache.v2
--------------------------------------------------------------------------------
/.vs/Quasai/FileContentIndex/6e0d6fb1-1689-4d0d-8146-6ea5931b43c1.vsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/Quasai/FileContentIndex/6e0d6fb1-1689-4d0d-8146-6ea5931b43c1.vsidx
--------------------------------------------------------------------------------
/.vs/Quasai/FileContentIndex/read.lock:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/Quasai/FileContentIndex/read.lock
--------------------------------------------------------------------------------
/.vs/Quasai/v17/.futdcache.v2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/Quasai/v17/.futdcache.v2
--------------------------------------------------------------------------------
/.vs/Quasai/v17/.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/Quasai/v17/.suo
--------------------------------------------------------------------------------
/.vs/Quasai/v17/.wsuo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/Quasai/v17/.wsuo
--------------------------------------------------------------------------------
/.vs/VSWorkspaceState.json:
--------------------------------------------------------------------------------
1 | {
2 | "ExpandedNodes": [
3 | "",
4 | "\\scripts",
5 | "\\scripts\\onyx_runtime",
6 | "\\scripts\\tokenizer"
7 | ],
8 | "SelectedNode": "\\scripts\\onyx_runtime",
9 | "PreviewInSolutionExplorer": false
10 | }
--------------------------------------------------------------------------------
/.vs/slnx.sqlite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/.vs/slnx.sqlite
--------------------------------------------------------------------------------
/Quasai.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | net6.0
4 | true
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Quasai.csproj.old:
--------------------------------------------------------------------------------
1 |
2 |
3 | net6.0
4 | true
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Quasai.sln:
--------------------------------------------------------------------------------
1 | Microsoft Visual Studio Solution File, Format Version 12.00
2 | # Visual Studio 2012
3 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Quasai", "Quasai.csproj", "{85FBFAB3-4AFA-4385-AB1B-BCC1465A48B6}"
4 | EndProject
5 | Global
6 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
7 | Debug|Any CPU = Debug|Any CPU
8 | ExportDebug|Any CPU = ExportDebug|Any CPU
9 | ExportRelease|Any CPU = ExportRelease|Any CPU
10 | EndGlobalSection
11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
12 | {85FBFAB3-4AFA-4385-AB1B-BCC1465A48B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
13 | {85FBFAB3-4AFA-4385-AB1B-BCC1465A48B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
14 | {85FBFAB3-4AFA-4385-AB1B-BCC1465A48B6}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU
15 | {85FBFAB3-4AFA-4385-AB1B-BCC1465A48B6}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU
16 | {85FBFAB3-4AFA-4385-AB1B-BCC1465A48B6}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU
17 | {85FBFAB3-4AFA-4385-AB1B-BCC1465A48B6}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU
18 | EndGlobalSection
19 | EndGlobal
20 |
--------------------------------------------------------------------------------
/TODO.txt:
--------------------------------------------------------------------------------
1 | TODO
2 |
3 | [General]
4 |
5 | + Add Themes
6 | - Create a website for the program
7 | - Figure out how to read streamed API messages to improve response times.
8 | + Have the program ping the website to check if there is a new version and prompt the user on the start screen.
9 | - See if HTTPRequest Node can be replaced with HTTPClient Class for optomization reasons.
10 |
11 | [Voice Generation]
12 |
13 | + Remove text artifacts from a string before sending to voice generation. Like emojis, weird formatting, etc.
14 |
15 | [General Chatting]
16 |
17 | - Allow messages to be deleted individually.
18 | + Improve formatting of some things like in-line code.
19 |
20 | [Summarizer]
21 | - Be able to break large documents into parsable sections for the API.
22 | - Support .doc .docx .pdf
23 |
24 | [Tokenizer]
25 |
26 | + Fix tokenizer to work for GPT 3.5 & GPT 4 as current tokenizer only works for GPT 3, 2 and older models.
27 |
28 | [Your Companion]
29 |
30 | - Improve use of tokens. Do not need to regenerate list of user memories for each message if there is no new info to add. If no new info is added, just say so and keep the old list.
31 |
32 | [Meal Planner]
33 |
34 | - Add more options as tickboxes like vegan, vegetarian, halal, gluten-free, etc.
35 |
36 | [Misc Ideas]
37 |
38 | - Add Alpaca LLM???
39 | - Image to colour pallete using GPT 4's multi-modal processing
40 | + Voice generation with ElevenLabs API
41 | - Story writer mode where the story will span over paragraphs/ pages and be generates in chunks. Have AI voice read back?
42 | - Add a way for others to add their own "extensions" to the program in the form of new standalone modes.
43 | - Add Voice to Text for user input.
44 |
--------------------------------------------------------------------------------
/fonts/inconsolata/Inconsolata-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/fonts/inconsolata/Inconsolata-Regular.ttf
--------------------------------------------------------------------------------
/fonts/inconsolata/Inconsolata-Regular.ttf.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="font_data_dynamic"
4 | type="FontFile"
5 | uid="uid://cj64v60kfckfm"
6 | path="res://.godot/imported/Inconsolata-Regular.ttf-13b9ddd8d6b3a5ac61e4a162d8b2fb3b.fontdata"
7 |
8 | [deps]
9 |
10 | source_file="res://fonts/inconsolata/Inconsolata-Regular.ttf"
11 | dest_files=["res://.godot/imported/Inconsolata-Regular.ttf-13b9ddd8d6b3a5ac61e4a162d8b2fb3b.fontdata"]
12 |
13 | [params]
14 |
15 | Rendering=null
16 | antialiasing=1
17 | generate_mipmaps=false
18 | multichannel_signed_distance_field=false
19 | msdf_pixel_range=8
20 | msdf_size=48
21 | allow_system_fallback=true
22 | force_autohinter=false
23 | hinting=1
24 | subpixel_positioning=1
25 | oversampling=0.0
26 | Fallbacks=null
27 | fallbacks=[]
28 | Compress=null
29 | compress=true
30 | preload=[]
31 | language_support={}
32 | script_support={}
33 | opentype_features={}
34 |
--------------------------------------------------------------------------------
/fonts/inconsolata/OFL.txt:
--------------------------------------------------------------------------------
1 | Copyright 2006 The Inconsolata Project Authors
2 |
3 | This Font Software is licensed under the SIL Open Font License, Version 1.1.
4 | This license is copied below, and is also available with a FAQ at:
5 | http://scripts.sil.org/OFL
6 |
7 |
8 | -----------------------------------------------------------
9 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10 | -----------------------------------------------------------
11 |
12 | PREAMBLE
13 | The goals of the Open Font License (OFL) are to stimulate worldwide
14 | development of collaborative font projects, to support the font creation
15 | efforts of academic and linguistic communities, and to provide a free and
16 | open framework in which fonts may be shared and improved in partnership
17 | with others.
18 |
19 | The OFL allows the licensed fonts to be used, studied, modified and
20 | redistributed freely as long as they are not sold by themselves. The
21 | fonts, including any derivative works, can be bundled, embedded,
22 | redistributed and/or sold with any software provided that any reserved
23 | names are not used by derivative works. The fonts and derivatives,
24 | however, cannot be released under any other type of license. The
25 | requirement for fonts to remain under this license does not apply
26 | to any document created using the fonts or their derivatives.
27 |
28 | DEFINITIONS
29 | "Font Software" refers to the set of files released by the Copyright
30 | Holder(s) under this license and clearly marked as such. This may
31 | include source files, build scripts and documentation.
32 |
33 | "Reserved Font Name" refers to any names specified as such after the
34 | copyright statement(s).
35 |
36 | "Original Version" refers to the collection of Font Software components as
37 | distributed by the Copyright Holder(s).
38 |
39 | "Modified Version" refers to any derivative made by adding to, deleting,
40 | or substituting -- in part or in whole -- any of the components of the
41 | Original Version, by changing formats or by porting the Font Software to a
42 | new environment.
43 |
44 | "Author" refers to any designer, engineer, programmer, technical
45 | writer or other person who contributed to the Font Software.
46 |
47 | PERMISSION & CONDITIONS
48 | Permission is hereby granted, free of charge, to any person obtaining
49 | a copy of the Font Software, to use, study, copy, merge, embed, modify,
50 | redistribute, and sell modified and unmodified copies of the Font
51 | Software, subject to the following conditions:
52 |
53 | 1) Neither the Font Software nor any of its individual components,
54 | in Original or Modified Versions, may be sold by itself.
55 |
56 | 2) Original or Modified Versions of the Font Software may be bundled,
57 | redistributed and/or sold with any software, provided that each copy
58 | contains the above copyright notice and this license. These can be
59 | included either as stand-alone text files, human-readable headers or
60 | in the appropriate machine-readable metadata fields within text or
61 | binary files as long as those fields can be easily viewed by the user.
62 |
63 | 3) No Modified Version of the Font Software may use the Reserved Font
64 | Name(s) unless explicit written permission is granted by the corresponding
65 | Copyright Holder. This restriction only applies to the primary font name as
66 | presented to the users.
67 |
68 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69 | Software shall not be used to promote, endorse or advertise any
70 | Modified Version, except to acknowledge the contribution(s) of the
71 | Copyright Holder(s) and the Author(s) or with their explicit written
72 | permission.
73 |
74 | 5) The Font Software, modified or unmodified, in part or in whole,
75 | must be distributed entirely under this license, and must not be
76 | distributed under any other license. The requirement for fonts to
77 | remain under this license does not apply to any document created
78 | using the Font Software.
79 |
80 | TERMINATION
81 | This license becomes null and void if any of the above conditions are
82 | not met.
83 |
84 | DISCLAIMER
85 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93 | OTHER DEALINGS IN THE FONT SOFTWARE.
94 |
--------------------------------------------------------------------------------
/icon.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/icon.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://vlqsy3iwpsa3"
6 | path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://icon.svg"
14 | dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/images/api_key_screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/api_key_screen.png
--------------------------------------------------------------------------------
/images/api_key_screen.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://d4ddqufrhkvit"
6 | path="res://.godot/imported/api_key_screen.png-ff56abcb73246cdc621af31a60a3ed70.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/api_key_screen.png"
14 | dest_files=["res://.godot/imported/api_key_screen.png-ff56abcb73246cdc621af31a60a3ed70.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/ai_pretender_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/ai_pretender_icon.png
--------------------------------------------------------------------------------
/images/icons/ai_pretender_icon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://8hjd7r4fyy3x"
6 | path="res://.godot/imported/ai_pretender_icon.png-280c6e295998a488005ed54aa16b459e.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/ai_pretender_icon.png"
14 | dest_files=["res://.godot/imported/ai_pretender_icon.png-280c6e295998a488005ed54aa16b459e.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/bad_status.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/bad_status.png
--------------------------------------------------------------------------------
/images/icons/bad_status.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://4ih0tx7q41w4"
6 | path="res://.godot/imported/bad_status.png-914d38bcbfd6f61a40d31af91ba3c556.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/bad_status.png"
14 | dest_files=["res://.godot/imported/bad_status.png-914d38bcbfd6f61a40d31af91ba3c556.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/code_assistant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/code_assistant.png
--------------------------------------------------------------------------------
/images/icons/code_assistant.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cyldiqo6n6nwj"
6 | path="res://.godot/imported/code_assistant.png-8c537ea70c7760773fc54d26999d3597.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/code_assistant.png"
14 | dest_files=["res://.godot/imported/code_assistant.png-8c537ea70c7760773fc54d26999d3597.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/companion_icon.afdesign:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/companion_icon.afdesign
--------------------------------------------------------------------------------
/images/icons/companion_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/companion_icon.png
--------------------------------------------------------------------------------
/images/icons/companion_icon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b5mx77yjf64ic"
6 | path="res://.godot/imported/companion_icon.png-ce782d73bec79a30a4e903450d0c56b9.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/companion_icon.png"
14 | dest_files=["res://.godot/imported/companion_icon.png-ce782d73bec79a30a4e903450d0c56b9.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/copy.png
--------------------------------------------------------------------------------
/images/icons/copy.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://crpmvcwi6mh6h"
6 | path="res://.godot/imported/copy.png-96162b64ab188c87f95b46e1f9da8f2f.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/copy.png"
14 | dest_files=["res://.godot/imported/copy.png-96162b64ab188c87f95b46e1f9da8f2f.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/delete.png
--------------------------------------------------------------------------------
/images/icons/delete.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://c213oetdmo5sp"
6 | path="res://.godot/imported/delete.png-2854ebc4d02a11d4688cb3faea56a4a0.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/delete.png"
14 | dest_files=["res://.godot/imported/delete.png-2854ebc4d02a11d4688cb3faea56a4a0.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/general_chat_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/general_chat_icon.png
--------------------------------------------------------------------------------
/images/icons/general_chat_icon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bxdl7yi5py1kn"
6 | path="res://.godot/imported/general_chat_icon.png-1b1625e6b687876bb5d1388dcedf7f99.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/general_chat_icon.png"
14 | dest_files=["res://.godot/imported/general_chat_icon.png-1b1625e6b687876bb5d1388dcedf7f99.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/good_status.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/good_status.png
--------------------------------------------------------------------------------
/images/icons/good_status.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://wn4kwypcfgvj"
6 | path="res://.godot/imported/good_status.png-282ec9c92388283654e4baa972032612.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/good_status.png"
14 | dest_files=["res://.godot/imported/good_status.png-282ec9c92388283654e4baa972032612.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/greentext_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/greentext_icon.png
--------------------------------------------------------------------------------
/images/icons/greentext_icon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://can3i4gjfq45t"
6 | path="res://.godot/imported/greentext_icon.png-24df047d733376f8840e61285436b3ae.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/greentext_icon.png"
14 | dest_files=["res://.godot/imported/greentext_icon.png-24df047d733376f8840e61285436b3ae.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/image_prompter_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/image_prompter_icon.png
--------------------------------------------------------------------------------
/images/icons/image_prompter_icon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://i7lgcofh557v"
6 | path="res://.godot/imported/image_prompter_icon.png-2fd995ec5e21bda5057c4da4fbdcccdd.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/image_prompter_icon.png"
14 | dest_files=["res://.godot/imported/image_prompter_icon.png-2fd995ec5e21bda5057c4da4fbdcccdd.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/meal_planner_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/meal_planner_icon.png
--------------------------------------------------------------------------------
/images/icons/meal_planner_icon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bl6t378ff1c3h"
6 | path="res://.godot/imported/meal_planner_icon.png-7a572b2bd56092c951bd5520dd7c8dcc.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/meal_planner_icon.png"
14 | dest_files=["res://.godot/imported/meal_planner_icon.png-7a572b2bd56092c951bd5520dd7c8dcc.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/nil_status.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/nil_status.png
--------------------------------------------------------------------------------
/images/icons/nil_status.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://p73un2ksmoxy"
6 | path="res://.godot/imported/nil_status.png-817f5bd8459e18262a24d97518c39c3c.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/nil_status.png"
14 | dest_files=["res://.godot/imported/nil_status.png-817f5bd8459e18262a24d97518c39c3c.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/play_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/play_circle.png
--------------------------------------------------------------------------------
/images/icons/play_circle.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://uelxu2f5etew"
6 | path="res://.godot/imported/play_circle.png-f547f7ae82017bb0aff990d481b07e2f.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/play_circle.png"
14 | dest_files=["res://.godot/imported/play_circle.png-f547f7ae82017bb0aff990d481b07e2f.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/proofreader_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/proofreader_icon.png
--------------------------------------------------------------------------------
/images/icons/proofreader_icon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dsf7ve3veatyt"
6 | path="res://.godot/imported/proofreader_icon.png-f6552114e4d722e0c7d1212c7096c209.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/proofreader_icon.png"
14 | dest_files=["res://.godot/imported/proofreader_icon.png-f6552114e4d722e0c7d1212c7096c209.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/recipe_creator_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/recipe_creator_icon.png
--------------------------------------------------------------------------------
/images/icons/recipe_creator_icon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://byrppiparamo2"
6 | path="res://.godot/imported/recipe_creator_icon.png-2714410ba4491245536625da1b10e5fd.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/recipe_creator_icon.png"
14 | dest_files=["res://.godot/imported/recipe_creator_icon.png-2714410ba4491245536625da1b10e5fd.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/redo_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/redo_icon.png
--------------------------------------------------------------------------------
/images/icons/redo_icon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://10owa3upltk"
6 | path="res://.godot/imported/redo_icon.png-4ce0c3863c452ed365d6da2dc711df1e.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/redo_icon.png"
14 | dest_files=["res://.godot/imported/redo_icon.png-4ce0c3863c452ed365d6da2dc711df1e.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/tokenizer_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/tokenizer_icon.png
--------------------------------------------------------------------------------
/images/icons/tokenizer_icon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://nrgndkkhnjw5"
6 | path="res://.godot/imported/tokenizer_icon.png-2ff4e322149008e527d46ff3243a5265.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/tokenizer_icon.png"
14 | dest_files=["res://.godot/imported/tokenizer_icon.png-2ff4e322149008e527d46ff3243a5265.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/translator_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/translator_icon.png
--------------------------------------------------------------------------------
/images/icons/translator_icon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://by5ya06djwpgs"
6 | path="res://.godot/imported/translator_icon.png-11bfe84ecd901e5d1afd725b1909f488.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/translator_icon.png"
14 | dest_files=["res://.godot/imported/translator_icon.png-11bfe84ecd901e5d1afd725b1909f488.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/wait_status.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/wait_status.png
--------------------------------------------------------------------------------
/images/icons/wait_status.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://c7xqc3geiain4"
6 | path="res://.godot/imported/wait_status.png-280525d14d524615222eb674b543ba02.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/wait_status.png"
14 | dest_files=["res://.godot/imported/wait_status.png-280525d14d524615222eb674b543ba02.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/icons/would_you_rather_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/icons/would_you_rather_icon.png
--------------------------------------------------------------------------------
/images/icons/would_you_rather_icon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://hu3toj66a75o"
6 | path="res://.godot/imported/would_you_rather_icon.png-d5e0898fc83e335d8defaa57a85584c5.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/icons/would_you_rather_icon.png"
14 | dest_files=["res://.godot/imported/would_you_rather_icon.png-d5e0898fc83e335d8defaa57a85584c5.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/logo/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/logo/icon.ico
--------------------------------------------------------------------------------
/images/logo/icon_1000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/logo/icon_1000.png
--------------------------------------------------------------------------------
/images/logo/icon_1000.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cdt82ta4adgnp"
6 | path="res://.godot/imported/icon_1000.png-3a1da35f3a75d23d900bf85bd7d5d309.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/logo/icon_1000.png"
14 | dest_files=["res://.godot/imported/icon_1000.png-3a1da35f3a75d23d900bf85bd7d5d309.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/logo/icon_128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/logo/icon_128.png
--------------------------------------------------------------------------------
/images/logo/icon_128.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://40tae6ddfywh"
6 | path="res://.godot/imported/icon_128.png-053a49bb8e58b6287a1f1b73101efbe4.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/logo/icon_128.png"
14 | dest_files=["res://.godot/imported/icon_128.png-053a49bb8e58b6287a1f1b73101efbe4.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/logo/icon_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/logo/icon_16.png
--------------------------------------------------------------------------------
/images/logo/icon_16.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://c8laac5vhq2wd"
6 | path="res://.godot/imported/icon_16.png-2d24d141051a85511cc8e25319059ee2.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/logo/icon_16.png"
14 | dest_files=["res://.godot/imported/icon_16.png-2d24d141051a85511cc8e25319059ee2.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/logo/icon_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/logo/icon_256.png
--------------------------------------------------------------------------------
/images/logo/icon_256.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dsvibuhp3x8ls"
6 | path="res://.godot/imported/icon_256.png-250ac84b7b5072b3e340e5b94a8f4ecc.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/logo/icon_256.png"
14 | dest_files=["res://.godot/imported/icon_256.png-250ac84b7b5072b3e340e5b94a8f4ecc.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/logo/icon_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/logo/icon_32.png
--------------------------------------------------------------------------------
/images/logo/icon_32.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cu0jygqjaa77a"
6 | path="res://.godot/imported/icon_32.png-c79514b3940135f76a5c85a456ee3d60.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/logo/icon_32.png"
14 | dest_files=["res://.godot/imported/icon_32.png-c79514b3940135f76a5c85a456ee3d60.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/logo/icon_48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/logo/icon_48.png
--------------------------------------------------------------------------------
/images/logo/icon_48.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://ce6dg4spkjado"
6 | path="res://.godot/imported/icon_48.png-b6f1c958639088a7e917d7c2e6de39e6.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/logo/icon_48.png"
14 | dest_files=["res://.godot/imported/icon_48.png-b6f1c958639088a7e917d7c2e6de39e6.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/logo/icon_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/logo/icon_64.png
--------------------------------------------------------------------------------
/images/logo/icon_64.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b4wye1vfh7bk4"
6 | path="res://.godot/imported/icon_64.png-ccd6a45a2fcd42cb32eba2798ba16e31.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/logo/icon_64.png"
14 | dest_files=["res://.godot/imported/icon_64.png-ccd6a45a2fcd42cb32eba2798ba16e31.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/logo/quasai_font_white_horizontal_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/logo/quasai_font_white_horizontal_logo.png
--------------------------------------------------------------------------------
/images/logo/quasai_font_white_horizontal_logo.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://ddw8pl65byo7j"
6 | path="res://.godot/imported/quasai_font_white_horizontal_logo.png-2160ab1a1dd9657f796a51df98609b4e.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/logo/quasai_font_white_horizontal_logo.png"
14 | dest_files=["res://.godot/imported/quasai_font_white_horizontal_logo.png-2160ab1a1dd9657f796a51df98609b4e.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/images/logo/quasai_font_white_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/images/logo/quasai_font_white_logo.png
--------------------------------------------------------------------------------
/images/logo/quasai_font_white_logo.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cfhfmh72j1f0p"
6 | path="res://.godot/imported/quasai_font_white_logo.png-62ecd324ebe443998aa9c99657e00479.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/logo/quasai_font_white_logo.png"
14 | dest_files=["res://.godot/imported/quasai_font_white_logo.png-62ecd324ebe443998aa9c99657e00479.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/project.godot:
--------------------------------------------------------------------------------
1 | ; Engine configuration file.
2 | ; It's best edited using the editor UI and not directly,
3 | ; since the parameters that go here are not all obvious.
4 | ;
5 | ; Format:
6 | ; [section] ; section goes between []
7 | ; param=value ; assign values to parameters
8 |
9 | config_version=5
10 |
11 | [application]
12 |
13 | config/name="Quasai"
14 | run/main_scene="res://scenes/api_walkthrough.tscn"
15 | config/use_custom_user_dir=true
16 | config/custom_user_dir_name="quasai"
17 | config/auto_accept_quit=false
18 | config/quit_on_go_back=false
19 | config/features=PackedStringArray("4.0", "C#", "GL Compatibility")
20 | config/icon="res://images/logo/icon_256.png"
21 | config/windows_native_icon="res://images/logo/icon.ico"
22 |
23 | [autoload]
24 |
25 | globals="*res://scripts/globals.gd"
26 | httprequest="*res://scripts/http_client.gd"
27 |
28 | [debug]
29 |
30 | settings/stdout/verbose_stdout=true
31 |
32 | [display]
33 |
34 | window/stretch/aspect="expand"
35 | window/dpi/allow_hidpi=false
36 |
37 | [dotnet]
38 |
39 | project/assembly_name="Quasai"
40 |
41 | [rendering]
42 |
43 | renderer/rendering_method="gl_compatibility"
44 | renderer/rendering_method.mobile="gl_compatibility"
45 |
--------------------------------------------------------------------------------
/rich_text_effects/inline_code.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | extends RichTextEffect
3 | class_name RichTextInline
4 |
5 | # Syntax: [ghost freq=5.0 span=10.0][/ghost]
6 |
7 | # Define the tag name.
8 | var bbcode = "inlinecode"
9 | var inconsolata = preload("res://fonts/inconsolata/Inconsolata-Regular.ttf")
10 | func _process_custom_fx(char_fx):
11 | # Get parameters, or use the provided default value if missing.
12 | # var speed = char_fx.env.get("freq", 5.0)
13 | # var span = char_fx.env.get("span", 10.0)
14 | #
15 | # var alpha = sin(char_fx.elapsed_time * speed + (char_fx.range.x / span)) * 0.5 + 0.5
16 | # char_fx.color.a = alpha
17 |
18 | char_fx.color = Color.YELLOW
19 | return true
20 |
--------------------------------------------------------------------------------
/scenes/code_assistant/code_assistant.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=5 format=3 uid="uid://cedxbpboadjeg"]
2 |
3 | [ext_resource type="Script" path="res://scripts/code_assistant/code_assistant.gd" id="2_2y50c"]
4 | [ext_resource type="Script" path="res://scripts/home_button.gd" id="3_4kkrw"]
5 | [ext_resource type="Texture2D" uid="uid://p73un2ksmoxy" path="res://images/icons/nil_status.png" id="4_yc7b8"]
6 |
7 | [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_fr2rx"]
8 | bg_color = Color(0.207843, 0.211765, 0.258824, 1)
9 | border_width_left = 10
10 | border_width_top = 10
11 | border_width_right = 10
12 | border_width_bottom = 10
13 | border_color = Color(0.207843, 0.211765, 0.258824, 1)
14 |
15 | [node name="code_assistant" type="PanelContainer"]
16 | anchors_preset = 15
17 | anchor_right = 1.0
18 | anchor_bottom = 1.0
19 | grow_horizontal = 2
20 | grow_vertical = 2
21 | script = ExtResource("2_2y50c")
22 |
23 | [node name="vbox" type="VBoxContainer" parent="."]
24 | layout_mode = 2
25 |
26 | [node name="hcon" type="HBoxContainer" parent="vbox"]
27 | layout_mode = 2
28 |
29 | [node name="home_button" type="Button" parent="vbox/hcon"]
30 | layout_mode = 2
31 | size_flags_vertical = 4
32 | text = "Home"
33 | script = ExtResource("3_4kkrw")
34 |
35 | [node name="Label2" type="Label" parent="vbox/hcon"]
36 | layout_mode = 2
37 | theme_override_font_sizes/font_size = 24
38 | text = " Code Assistant"
39 | vertical_alignment = 1
40 |
41 | [node name="VSeparator" type="VSeparator" parent="vbox/hcon"]
42 | layout_mode = 2
43 |
44 | [node name="Label3" type="Label" parent="vbox/hcon"]
45 | custom_minimum_size = Vector2(500, 0)
46 | layout_mode = 2
47 | size_flags_horizontal = 3
48 | text = "Code Assistant will attempt to fix your code and provide useful comments to better document your code.To translate code to a different language, specify a the language for the output code."
49 | vertical_alignment = 1
50 | autowrap_mode = 3
51 |
52 | [node name="generate_button" type="Button" parent="vbox/hcon"]
53 | layout_mode = 2
54 | size_flags_vertical = 4
55 | text = "Generate"
56 |
57 | [node name="loading" type="TextureRect" parent="vbox/hcon"]
58 | custom_minimum_size = Vector2(30, 30)
59 | layout_mode = 2
60 | size_flags_horizontal = 4
61 | size_flags_vertical = 4
62 | texture = ExtResource("4_yc7b8")
63 | expand_mode = 2
64 |
65 | [node name="hsplit" type="HSplitContainer" parent="vbox"]
66 | layout_mode = 2
67 | size_flags_vertical = 3
68 |
69 | [node name="vbox" type="VBoxContainer" parent="vbox/hsplit"]
70 | layout_mode = 2
71 | size_flags_horizontal = 3
72 |
73 | [node name="hbox" type="HBoxContainer" parent="vbox/hsplit/vbox"]
74 | layout_mode = 2
75 |
76 | [node name="Label" type="Label" parent="vbox/hsplit/vbox/hbox"]
77 | layout_mode = 2
78 | text = "Input Code"
79 | vertical_alignment = 1
80 |
81 | [node name="input_code_type" type="OptionButton" parent="vbox/hsplit/vbox/hbox"]
82 | custom_minimum_size = Vector2(150, 0)
83 | layout_mode = 2
84 |
85 | [node name="text_input" type="CodeEdit" parent="vbox/hsplit/vbox"]
86 | layout_mode = 2
87 | size_flags_horizontal = 3
88 | size_flags_vertical = 3
89 | placeholder_text = "Enter your text here. You can also drag script files here."
90 | drag_and_drop_selection_enabled = false
91 | wrap_mode = 1
92 | highlight_all_occurrences = true
93 | highlight_current_line = true
94 | draw_tabs = true
95 | draw_spaces = true
96 | gutters_draw_line_numbers = true
97 |
98 | [node name="highlighter" type="Node" parent="vbox/hsplit/vbox/text_input"]
99 |
100 | [node name="vbox2" type="VBoxContainer" parent="vbox/hsplit"]
101 | layout_mode = 2
102 | size_flags_horizontal = 3
103 |
104 | [node name="hbox" type="HBoxContainer" parent="vbox/hsplit/vbox2"]
105 | layout_mode = 2
106 |
107 | [node name="Label" type="Label" parent="vbox/hsplit/vbox2/hbox"]
108 | layout_mode = 2
109 | text = "Output Code"
110 | vertical_alignment = 1
111 |
112 | [node name="output_code_type" type="OptionButton" parent="vbox/hsplit/vbox2/hbox"]
113 | custom_minimum_size = Vector2(150, 0)
114 | layout_mode = 2
115 |
116 | [node name="copy_output_button" type="Button" parent="vbox/hsplit/vbox2/hbox"]
117 | layout_mode = 2
118 | text = "Copy"
119 |
120 | [node name="text_display" type="CodeEdit" parent="vbox/hsplit/vbox2"]
121 | layout_mode = 2
122 | size_flags_horizontal = 3
123 | size_flags_vertical = 3
124 | mouse_default_cursor_shape = 2
125 | theme_override_styles/normal = SubResource("StyleBoxFlat_fr2rx")
126 | text = "test"
127 | drag_and_drop_selection_enabled = false
128 | virtual_keyboard_enabled = false
129 | middle_mouse_paste_enabled = false
130 | wrap_mode = 1
131 | draw_tabs = true
132 | draw_spaces = true
133 | gutters_draw_line_numbers = true
134 |
135 | [node name="highlighter" type="Node" parent="vbox/hsplit/vbox2/text_display"]
136 |
--------------------------------------------------------------------------------
/scenes/companion/companion.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=5 format=3 uid="uid://b65g6j88ckns3"]
2 |
3 | [ext_resource type="Script" path="res://scripts/companion/companion.gd" id="2_k0t5i"]
4 | [ext_resource type="Script" path="res://scripts/home_button.gd" id="3_sp4f2"]
5 | [ext_resource type="Texture2D" uid="uid://p73un2ksmoxy" path="res://images/icons/nil_status.png" id="4_yoxsp"]
6 |
7 | [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ehkhm"]
8 | content_margin_bottom = 20.0
9 |
10 | [node name="companion" type="PanelContainer"]
11 | anchors_preset = 15
12 | anchor_right = 1.0
13 | anchor_bottom = 1.0
14 | grow_horizontal = 2
15 | grow_vertical = 2
16 | script = ExtResource("2_k0t5i")
17 |
18 | [node name="vbox" type="VBoxContainer" parent="."]
19 | layout_mode = 2
20 |
21 | [node name="pcon" type="PanelContainer" parent="vbox"]
22 | layout_mode = 2
23 | theme_type_variation = &"banner"
24 |
25 | [node name="vbox" type="VBoxContainer" parent="vbox/pcon"]
26 | layout_mode = 2
27 |
28 | [node name="hbox2" type="HFlowContainer" parent="vbox/pcon/vbox"]
29 | custom_minimum_size = Vector2(0, 30)
30 | layout_mode = 2
31 | metadata/_edit_lock_ = true
32 |
33 | [node name="home_button" type="Button" parent="vbox/pcon/vbox/hbox2"]
34 | layout_mode = 2
35 | size_flags_vertical = 4
36 | text = "Home"
37 | script = ExtResource("3_sp4f2")
38 |
39 | [node name="Label2" type="Label" parent="vbox/pcon/vbox/hbox2"]
40 | layout_mode = 2
41 | theme_override_font_sizes/font_size = 24
42 | text = " Companion"
43 |
44 | [node name="VSeparator" type="VSeparator" parent="vbox/pcon/vbox/hbox2"]
45 | layout_mode = 2
46 |
47 | [node name="delete_ai_button" type="Button" parent="vbox/pcon/vbox/hbox2"]
48 | layout_mode = 2
49 | size_flags_vertical = 4
50 | tooltip_text = "Delete the current character information and
51 | create a new character from the start screen."
52 | text = "Delete Character"
53 |
54 | [node name="config" type="Button" parent="vbox/pcon/vbox/hbox2"]
55 | visible = false
56 | layout_mode = 2
57 | text = "Config"
58 |
59 | [node name="Label" type="Label" parent="vbox/pcon/vbox/hbox2"]
60 | layout_mode = 2
61 | size_flags_horizontal = 3
62 | text = "Companion is very experimental. Things could change/ break with updates. Please be aware of this while using this feature. This will also use a lot more tokens than any other mode."
63 | vertical_alignment = 1
64 | autowrap_mode = 3
65 |
66 | [node name="chat_scroll" type="ScrollContainer" parent="vbox"]
67 | layout_mode = 2
68 | size_flags_vertical = 3
69 | theme_override_styles/panel = SubResource("StyleBoxEmpty_ehkhm")
70 | horizontal_scroll_mode = 0
71 |
72 | [node name="chat_log_box" type="VBoxContainer" parent="vbox/chat_scroll"]
73 | layout_mode = 2
74 | size_flags_horizontal = 3
75 | size_flags_vertical = 3
76 | alignment = 2
77 |
78 | [node name="hbox" type="HBoxContainer" parent="vbox"]
79 | custom_minimum_size = Vector2(0, 30)
80 | layout_mode = 2
81 |
82 | [node name="loading" type="TextureRect" parent="vbox/hbox"]
83 | custom_minimum_size = Vector2(30, 30)
84 | layout_mode = 2
85 | size_flags_horizontal = 4
86 | size_flags_vertical = 4
87 | texture = ExtResource("4_yoxsp")
88 | expand_mode = 2
89 |
90 | [node name="user_input" type="TextEdit" parent="vbox/hbox"]
91 | layout_mode = 2
92 | size_flags_horizontal = 3
93 | placeholder_text = "Enter your message"
94 | drag_and_drop_selection_enabled = false
95 | wrap_mode = 1
96 | scroll_fit_content_height = true
97 |
--------------------------------------------------------------------------------
/scenes/companion/companion_message_box.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=2 format=3 uid="uid://b8tsyo1myyuk5"]
2 |
3 | [ext_resource type="Script" path="res://scripts/general_chat/message_box.gd" id="1_tjsj0"]
4 |
5 | [node name="spacer" type="MarginContainer"]
6 | anchors_preset = 2
7 | anchor_top = 1.0
8 | anchor_bottom = 1.0
9 | offset_top = -33.0
10 | offset_right = 9043.0
11 | grow_vertical = 0
12 | theme_override_constants/margin_left = 10
13 | theme_override_constants/margin_top = 5
14 | theme_override_constants/margin_right = 10
15 | theme_override_constants/margin_bottom = 5
16 |
17 | [node name="message_box" type="PanelContainer" parent="."]
18 | layout_mode = 2
19 | size_flags_horizontal = 0
20 | script = ExtResource("1_tjsj0")
21 |
22 | [node name="vbox" type="VBoxContainer" parent="message_box"]
23 | layout_mode = 2
24 |
25 | [node name="msg" type="RichTextLabel" parent="message_box/vbox"]
26 | layout_mode = 2
27 | size_flags_horizontal = 0
28 | mouse_filter = 2
29 | fit_content = true
30 | scroll_active = false
31 | autowrap_mode = 0
32 | shortcut_keys_enabled = false
33 |
--------------------------------------------------------------------------------
/scenes/components/notice_popup.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=2 format=3 uid="uid://bdn83qogywtri"]
2 |
3 | [ext_resource type="Script" path="res://scripts/components/notice_popup/notice_popup.gd" id="1_f7srr"]
4 |
5 | [node name="notice_popup" type="MarginContainer"]
6 | anchors_preset = 3
7 | anchor_left = 1.0
8 | anchor_top = 1.0
9 | anchor_right = 1.0
10 | anchor_bottom = 1.0
11 | offset_left = -650.0
12 | offset_top = -63.0
13 | grow_horizontal = 0
14 | grow_vertical = 0
15 | size_flags_horizontal = 8
16 | size_flags_vertical = 8
17 | theme_override_constants/margin_left = 20
18 | theme_override_constants/margin_top = 10
19 | theme_override_constants/margin_right = 20
20 | theme_override_constants/margin_bottom = 10
21 | script = ExtResource("1_f7srr")
22 |
23 | [node name="pcon" type="PanelContainer" parent="."]
24 | layout_mode = 2
25 | mouse_filter = 1
26 | theme_type_variation = &"notice_popup"
27 |
28 | [node name="progress_banner" type="ColorRect" parent="pcon"]
29 | visible = false
30 | self_modulate = Color(1, 1, 1, 0.0392157)
31 | custom_minimum_size = Vector2(150, 0)
32 | layout_mode = 2
33 | size_flags_horizontal = 0
34 |
35 | [node name="hbox" type="HBoxContainer" parent="pcon"]
36 | custom_minimum_size = Vector2(600, 0)
37 | layout_mode = 2
38 | size_flags_horizontal = 8
39 |
40 | [node name="indicator" type="ColorRect" parent="pcon/hbox"]
41 | custom_minimum_size = Vector2(5, 0)
42 | layout_mode = 2
43 | size_flags_horizontal = 0
44 | mouse_filter = 1
45 | color = Color(0.87451, 0.466667, 0.596078, 1)
46 |
47 | [node name="popup_text" type="RichTextLabel" parent="pcon/hbox"]
48 | layout_mode = 2
49 | size_flags_horizontal = 3
50 | size_flags_vertical = 4
51 | mouse_filter = 1
52 | bbcode_enabled = true
53 | text = "A new update is available, visit quasai.cdcruz.com to download!"
54 | fit_content = true
55 | scroll_active = false
56 |
57 | [node name="close_button" type="Button" parent="pcon/hbox"]
58 | custom_minimum_size = Vector2(33, 33)
59 | layout_mode = 2
60 | size_flags_horizontal = 8
61 | size_flags_vertical = 4
62 | mouse_default_cursor_shape = 2
63 | theme_override_colors/font_color = Color(0.870588, 0.870588, 0.870588, 1)
64 | text = "╳"
65 | flat = true
66 |
--------------------------------------------------------------------------------
/scenes/general_chatting/code_message.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=3 format=3 uid="uid://cav86sox4y3sy"]
2 |
3 | [ext_resource type="Script" path="res://scripts/general_chat/code_message.gd" id="1_bohyv"]
4 | [ext_resource type="Texture2D" uid="uid://crpmvcwi6mh6h" path="res://images/icons/copy.png" id="2_ert8f"]
5 |
6 | [node name="spacer" type="MarginContainer"]
7 | anchors_preset = 2
8 | anchor_top = 1.0
9 | anchor_bottom = 1.0
10 | offset_top = -33.0
11 | offset_right = 9043.0
12 | grow_vertical = 0
13 | theme_override_constants/margin_left = 10
14 | theme_override_constants/margin_top = 5
15 | theme_override_constants/margin_right = 10
16 | theme_override_constants/margin_bottom = 5
17 |
18 | [node name="message_box" type="PanelContainer" parent="."]
19 | layout_mode = 2
20 | size_flags_horizontal = 0
21 | script = ExtResource("1_bohyv")
22 |
23 | [node name="vbox" type="VBoxContainer" parent="message_box"]
24 | layout_mode = 2
25 |
26 | [node name="HBoxContainer" type="HBoxContainer" parent="message_box/vbox"]
27 | layout_mode = 2
28 |
29 | [node name="Label" type="Label" parent="message_box/vbox/HBoxContainer"]
30 | layout_mode = 2
31 | size_flags_horizontal = 3
32 | theme_override_font_sizes/font_size = 12
33 | text = "code block"
34 | vertical_alignment = 1
35 |
36 | [node name="copy_code" type="Button" parent="message_box/vbox/HBoxContainer"]
37 | custom_minimum_size = Vector2(30, 30)
38 | layout_mode = 2
39 | focus_mode = 0
40 | icon = ExtResource("2_ert8f")
41 | flat = true
42 | expand_icon = true
43 |
44 | [node name="code_box" type="CodeEdit" parent="message_box/vbox"]
45 | custom_minimum_size = Vector2(700, 0)
46 | layout_mode = 2
47 | size_flags_vertical = 3
48 | theme_override_colors/background_color = Color(0, 0, 0, 1)
49 | theme_override_colors/font_color = Color(1, 1, 1, 1)
50 | placeholder_text = "Code"
51 | editable = false
52 | drag_and_drop_selection_enabled = false
53 | virtual_keyboard_enabled = false
54 | middle_mouse_paste_enabled = false
55 | draw_tabs = true
56 | draw_spaces = true
57 | scroll_smooth = true
58 | scroll_fit_content_height = true
59 | gutters_draw_line_numbers = true
60 |
--------------------------------------------------------------------------------
/scenes/general_chatting/message_box.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=7 format=3 uid="uid://b4kqfmceq7lpe"]
2 |
3 | [ext_resource type="Script" path="res://scripts/general_chat/message_box.gd" id="1_8k4je"]
4 | [ext_resource type="Texture2D" uid="uid://crpmvcwi6mh6h" path="res://images/icons/copy.png" id="2_fu40e"]
5 | [ext_resource type="Script" path="res://rich_text_effects/inline_code.gd" id="2_oc4r7"]
6 | [ext_resource type="Texture2D" uid="uid://uelxu2f5etew" path="res://images/icons/play_circle.png" id="3_js1bn"]
7 | [ext_resource type="Texture2D" uid="uid://c213oetdmo5sp" path="res://images/icons/delete.png" id="4_35a6k"]
8 |
9 | [sub_resource type="RichTextEffect" id="RichTextEffect_kcy40"]
10 | script = ExtResource("2_oc4r7")
11 |
12 | [node name="spacer" type="MarginContainer"]
13 | anchors_preset = 2
14 | anchor_top = 1.0
15 | anchor_bottom = 1.0
16 | offset_top = -33.0
17 | offset_right = 9043.0
18 | grow_vertical = 0
19 | theme_override_constants/margin_left = 10
20 | theme_override_constants/margin_top = 5
21 | theme_override_constants/margin_right = 10
22 | theme_override_constants/margin_bottom = 5
23 |
24 | [node name="message_box" type="PanelContainer" parent="."]
25 | layout_mode = 2
26 | size_flags_horizontal = 0
27 | script = ExtResource("1_8k4je")
28 |
29 | [node name="vbox" type="VBoxContainer" parent="message_box"]
30 | layout_mode = 2
31 | mouse_filter = 2
32 |
33 | [node name="options_hbox" type="HBoxContainer" parent="message_box/vbox"]
34 | layout_mode = 2
35 | mouse_filter = 2
36 |
37 | [node name="play_audio" type="Button" parent="message_box/vbox/options_hbox"]
38 | custom_minimum_size = Vector2(30, 30)
39 | layout_mode = 2
40 | focus_mode = 0
41 | mouse_filter = 1
42 | mouse_default_cursor_shape = 2
43 | icon = ExtResource("3_js1bn")
44 | flat = true
45 | expand_icon = true
46 |
47 | [node name="copy_button" type="Button" parent="message_box/vbox/options_hbox"]
48 | custom_minimum_size = Vector2(30, 30)
49 | layout_mode = 2
50 | focus_mode = 0
51 | mouse_filter = 1
52 | mouse_default_cursor_shape = 2
53 | icon = ExtResource("2_fu40e")
54 | flat = true
55 | expand_icon = true
56 |
57 | [node name="delete_button" type="Button" parent="message_box/vbox/options_hbox"]
58 | visible = false
59 | custom_minimum_size = Vector2(30, 30)
60 | layout_mode = 2
61 | focus_mode = 0
62 | mouse_filter = 1
63 | mouse_default_cursor_shape = 2
64 | icon = ExtResource("4_35a6k")
65 | flat = true
66 | expand_icon = true
67 |
68 | [node name="msg_time" type="Label" parent="message_box/vbox/options_hbox"]
69 | layout_mode = 2
70 | size_flags_horizontal = 3
71 | theme_override_colors/font_color = Color(1, 1, 1, 0.705882)
72 | text = "12:30pm"
73 | horizontal_alignment = 2
74 | vertical_alignment = 1
75 |
76 | [node name="msg" type="RichTextLabel" parent="message_box/vbox"]
77 | layout_mode = 2
78 | size_flags_horizontal = 0
79 | focus_mode = 2
80 | mouse_filter = 1
81 | mouse_default_cursor_shape = 1
82 | bbcode_enabled = true
83 | text = "[inlinecode]testing more things[/inlinecode]"
84 | fit_content = true
85 | scroll_active = false
86 | autowrap_mode = 0
87 | custom_effects = [SubResource("RichTextEffect_kcy40")]
88 | selection_enabled = true
89 |
--------------------------------------------------------------------------------
/scenes/machine_learning/machine_learning.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=4 format=3 uid="uid://cmutgg78ooayj"]
2 |
3 | [ext_resource type="Script" path="res://scripts/machine_learning/ml_test.gd" id="1_6xphp"]
4 | [ext_resource type="Script" path="res://scripts/home_button.gd" id="1_cgmiv"]
5 | [ext_resource type="Texture2D" uid="uid://p73un2ksmoxy" path="res://images/icons/nil_status.png" id="2_xpu5i"]
6 |
7 | [node name="ai_pretender" type="PanelContainer"]
8 | anchors_preset = 15
9 | anchor_right = 1.0
10 | anchor_bottom = 1.0
11 | grow_horizontal = 2
12 | grow_vertical = 2
13 | script = ExtResource("1_6xphp")
14 |
15 | [node name="vbox" type="VBoxContainer" parent="."]
16 | layout_mode = 2
17 |
18 | [node name="hcon" type="HBoxContainer" parent="vbox"]
19 | layout_mode = 2
20 |
21 | [node name="home_button" type="Button" parent="vbox/hcon"]
22 | layout_mode = 2
23 | size_flags_vertical = 4
24 | text = "Home"
25 | script = ExtResource("1_cgmiv")
26 |
27 | [node name="Label2" type="Label" parent="vbox/hcon"]
28 | layout_mode = 2
29 | theme_override_font_sizes/font_size = 24
30 | text = " AI Pretender"
31 | vertical_alignment = 1
32 |
33 | [node name="VSeparator" type="VSeparator" parent="vbox/hcon"]
34 | layout_mode = 2
35 |
36 | [node name="Label3" type="Label" parent="vbox/hcon"]
37 | layout_mode = 2
38 | size_flags_horizontal = 3
39 | text = "A fun mini game similar to 20 Questions where the AI takes on the role of a celebrity, historical figure, occupation and more. Your task is to ask it questions and then try to guess who the AI is acting as."
40 | vertical_alignment = 1
41 | autowrap_mode = 3
42 |
43 | [node name="loading" type="TextureRect" parent="vbox/hcon"]
44 | custom_minimum_size = Vector2(30, 30)
45 | layout_mode = 2
46 | size_flags_horizontal = 4
47 | size_flags_vertical = 4
48 | texture = ExtResource("2_xpu5i")
49 | expand_mode = 2
50 |
51 | [node name="pcon" type="PanelContainer" parent="vbox"]
52 | layout_mode = 2
53 | size_flags_vertical = 3
54 |
55 | [node name="hbox" type="HSplitContainer" parent="vbox/pcon"]
56 | layout_mode = 2
57 |
58 | [node name="vbox" type="VBoxContainer" parent="vbox/pcon/hbox"]
59 | layout_mode = 2
60 | size_flags_horizontal = 3
61 |
62 | [node name="mcon" type="MarginContainer" parent="vbox/pcon/hbox/vbox"]
63 | layout_mode = 2
64 | size_flags_vertical = 3
65 | theme_override_constants/margin_left = 20
66 | theme_override_constants/margin_top = 20
67 | theme_override_constants/margin_right = 20
68 | theme_override_constants/margin_bottom = 20
69 |
70 | [node name="hbox" type="HBoxContainer" parent="vbox/pcon/hbox/vbox/mcon"]
71 | layout_mode = 2
72 |
73 | [node name="PanelContainer" type="PanelContainer" parent="vbox/pcon/hbox/vbox/mcon/hbox"]
74 | custom_minimum_size = Vector2(50, 50)
75 | layout_mode = 2
76 | size_flags_vertical = 4
77 |
78 | [node name="Label" type="Label" parent="vbox/pcon/hbox/vbox/mcon/hbox/PanelContainer"]
79 | layout_mode = 2
80 | text = "Input"
81 | horizontal_alignment = 1
82 | vertical_alignment = 1
83 |
84 | [node name="PanelContainer2" type="PanelContainer" parent="vbox/pcon/hbox/vbox/mcon/hbox"]
85 | custom_minimum_size = Vector2(50, 50)
86 | layout_mode = 2
87 | size_flags_vertical = 4
88 |
89 | [node name="Label" type="Label" parent="vbox/pcon/hbox/vbox/mcon/hbox/PanelContainer2"]
90 | layout_mode = 2
91 | text = "Input"
92 | horizontal_alignment = 1
93 | vertical_alignment = 1
94 |
95 | [node name="PanelContainer3" type="PanelContainer" parent="vbox/pcon/hbox/vbox/mcon/hbox"]
96 | custom_minimum_size = Vector2(50, 50)
97 | layout_mode = 2
98 | size_flags_vertical = 4
99 |
100 | [node name="Label" type="Label" parent="vbox/pcon/hbox/vbox/mcon/hbox/PanelContainer3"]
101 | layout_mode = 2
102 | text = "Input"
103 | horizontal_alignment = 1
104 | vertical_alignment = 1
105 |
106 | [node name="PanelContainer4" type="PanelContainer" parent="vbox/pcon/hbox/vbox/mcon/hbox"]
107 | custom_minimum_size = Vector2(50, 50)
108 | layout_mode = 2
109 | size_flags_vertical = 4
110 |
111 | [node name="Label" type="Label" parent="vbox/pcon/hbox/vbox/mcon/hbox/PanelContainer4"]
112 | layout_mode = 2
113 | text = "Output"
114 | horizontal_alignment = 1
115 | vertical_alignment = 1
116 |
117 | [node name="HBoxContainer" type="HBoxContainer" parent="vbox/pcon/hbox/vbox"]
118 | layout_mode = 2
119 |
120 | [node name="Button" type="Button" parent="vbox/pcon/hbox/vbox/HBoxContainer"]
121 | layout_mode = 2
122 | text = "Add Hidden Layer"
123 |
124 | [node name="vbox2" type="VBoxContainer" parent="vbox/pcon/hbox"]
125 | custom_minimum_size = Vector2(50, 0)
126 | layout_mode = 2
127 |
128 | [node name="pcon" type="PanelContainer" parent="vbox/pcon/hbox/vbox2"]
129 | layout_mode = 2
130 | size_flags_vertical = 3
131 |
132 | [node name="vbox" type="VBoxContainer" parent="vbox/pcon/hbox/vbox2/pcon"]
133 | layout_mode = 2
134 |
135 | [node name="Label" type="Label" parent="vbox/pcon/hbox/vbox2/pcon/vbox"]
136 | layout_mode = 2
137 | text = "Output Console"
138 |
--------------------------------------------------------------------------------
/scenes/meal_planner/meal_item.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=3 format=3 uid="uid://dbyws28nbd2xu"]
2 |
3 | [ext_resource type="Script" path="res://scripts/meal_planner/meal_item.gd" id="1_sq3mv"]
4 | [ext_resource type="Texture2D" uid="uid://10owa3upltk" path="res://images/icons/redo_icon.png" id="2_ey8ae"]
5 |
6 | [node name="meal_item" type="PanelContainer"]
7 | anchors_preset = 10
8 | anchor_right = 1.0
9 | offset_bottom = 38.0
10 | grow_horizontal = 2
11 | size_flags_horizontal = 3
12 | size_flags_vertical = 3
13 | script = ExtResource("1_sq3mv")
14 |
15 | [node name="mcon" type="MarginContainer" parent="."]
16 | layout_mode = 2
17 | theme_override_constants/margin_left = 10
18 | theme_override_constants/margin_top = 10
19 | theme_override_constants/margin_right = 10
20 | theme_override_constants/margin_bottom = 10
21 |
22 | [node name="vbox" type="VBoxContainer" parent="mcon"]
23 | layout_mode = 2
24 |
25 | [node name="hbox" type="HBoxContainer" parent="mcon/vbox"]
26 | custom_minimum_size = Vector2(0, 30)
27 | layout_mode = 2
28 | alignment = 2
29 |
30 | [node name="regen_meal_button" type="Button" parent="mcon/vbox/hbox"]
31 | visible = false
32 | custom_minimum_size = Vector2(30, 30)
33 | layout_mode = 2
34 | size_flags_horizontal = 8
35 | focus_mode = 0
36 | mouse_filter = 1
37 | mouse_default_cursor_shape = 2
38 | icon = ExtResource("2_ey8ae")
39 | flat = true
40 | expand_icon = true
41 |
42 | [node name="meal_text" type="Label" parent="mcon/vbox"]
43 | layout_mode = 2
44 | size_flags_vertical = 6
45 | text = "test asdgasdg"
46 | autowrap_mode = 3
47 |
--------------------------------------------------------------------------------
/scenes/proofreader/proofreader.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=5 format=3 uid="uid://d2g744xct1fw0"]
2 |
3 | [ext_resource type="Script" path="res://scripts/proofreader/proofreader.gd" id="2_wo5p5"]
4 | [ext_resource type="Script" path="res://scripts/home_button.gd" id="3_30ua7"]
5 | [ext_resource type="Texture2D" uid="uid://p73un2ksmoxy" path="res://images/icons/nil_status.png" id="4_pbkrn"]
6 |
7 | [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_fr2rx"]
8 | bg_color = Color(0.207843, 0.211765, 0.258824, 1)
9 | border_width_left = 10
10 | border_width_top = 10
11 | border_width_right = 10
12 | border_width_bottom = 10
13 | border_color = Color(0.207843, 0.211765, 0.258824, 1)
14 |
15 | [node name="proofreader" type="PanelContainer"]
16 | anchors_preset = 15
17 | anchor_right = 1.0
18 | anchor_bottom = 1.0
19 | grow_horizontal = 2
20 | grow_vertical = 2
21 | script = ExtResource("2_wo5p5")
22 |
23 | [node name="vbox" type="VBoxContainer" parent="."]
24 | layout_mode = 2
25 |
26 | [node name="hcon" type="HFlowContainer" parent="vbox"]
27 | layout_mode = 2
28 |
29 | [node name="home_button" type="Button" parent="vbox/hcon"]
30 | layout_mode = 2
31 | text = "Home"
32 | script = ExtResource("3_30ua7")
33 |
34 | [node name="Label2" type="Label" parent="vbox/hcon"]
35 | layout_mode = 2
36 | theme_override_font_sizes/font_size = 24
37 | text = " Proofreader"
38 | vertical_alignment = 1
39 |
40 | [node name="VSeparator" type="VSeparator" parent="vbox/hcon"]
41 | layout_mode = 2
42 |
43 | [node name="Label" type="Label" parent="vbox/hcon"]
44 | layout_mode = 2
45 | text = "Writing Style:"
46 | vertical_alignment = 1
47 |
48 | [node name="writing_style_option" type="OptionButton" parent="vbox/hcon"]
49 | custom_minimum_size = Vector2(150, 0)
50 | layout_mode = 2
51 |
52 | [node name="proofread_button" type="Button" parent="vbox/hcon"]
53 | layout_mode = 2
54 | tooltip_text = "Fixes spelling & grammar of the provided text
55 | and will rewrite the text using the chosen writing style."
56 | text = "Proofread"
57 |
58 | [node name="summarize_button" type="Button" parent="vbox/hcon"]
59 | layout_mode = 2
60 | tooltip_text = "Summarizes the provided text dow
61 | to 1 paragraph if possible."
62 | text = "Summarize Text"
63 |
64 | [node name="sentiment_button" type="Button" parent="vbox/hcon"]
65 | layout_mode = 2
66 | tooltip_text = "Sentiment Analysis provides a brief description
67 | of the emotion that the provided text conveys. "
68 | text = "Sentiment Analysis"
69 |
70 | [node name="copy_text_button" type="Button" parent="vbox/hcon"]
71 | layout_mode = 2
72 | text = "Copy Output"
73 |
74 | [node name="loading" type="TextureRect" parent="vbox/hcon"]
75 | custom_minimum_size = Vector2(30, 30)
76 | layout_mode = 2
77 | size_flags_horizontal = 4
78 | size_flags_vertical = 4
79 | texture = ExtResource("4_pbkrn")
80 | expand_mode = 2
81 |
82 | [node name="vsplit" type="VSplitContainer" parent="vbox"]
83 | layout_mode = 2
84 | size_flags_vertical = 3
85 |
86 | [node name="hsplit" type="HSplitContainer" parent="vbox/vsplit"]
87 | layout_mode = 2
88 | size_flags_vertical = 3
89 |
90 | [node name="text_input" type="TextEdit" parent="vbox/vsplit/hsplit"]
91 | layout_mode = 2
92 | size_flags_horizontal = 3
93 | placeholder_text = "Enter your text here. You can also drag .txt files here."
94 | wrap_mode = 1
95 | highlight_all_occurrences = true
96 | highlight_current_line = true
97 | draw_tabs = true
98 | draw_spaces = true
99 |
100 | [node name="text_display" type="RichTextLabel" parent="vbox/vsplit/hsplit"]
101 | layout_mode = 2
102 | size_flags_horizontal = 3
103 | focus_mode = 2
104 | mouse_default_cursor_shape = 2
105 | theme_override_styles/normal = SubResource("StyleBoxFlat_fr2rx")
106 | text = "test"
107 | scroll_following = true
108 | selection_enabled = true
109 |
110 | [node name="vbox" type="VBoxContainer" parent="vbox/vsplit"]
111 | layout_mode = 2
112 |
113 | [node name="hcon" type="HFlowContainer" parent="vbox/vsplit/vbox"]
114 | layout_mode = 2
115 |
116 | [node name="token_estimation" type="Label" parent="vbox/vsplit/vbox/hcon"]
117 | layout_mode = 2
118 | tooltip_text = "This is an estimation, the real token cost may be higher."
119 | mouse_filter = 1
120 | theme_override_font_sizes/font_size = 14
121 | text = "Changes made:"
122 |
123 | [node name="session_tokens_display" type="Label" parent="vbox/vsplit/vbox/hcon"]
124 | layout_mode = 2
125 | theme_override_font_sizes/font_size = 14
126 | text = "test"
127 |
128 | [node name="Label2" type="Label" parent="vbox/vsplit/vbox"]
129 | layout_mode = 2
130 | text = "Changes made:"
131 |
132 | [node name="changes_paragraph" type="RichTextLabel" parent="vbox/vsplit/vbox"]
133 | custom_minimum_size = Vector2(0, 50)
134 | layout_mode = 2
135 | size_flags_vertical = 3
136 | text = "Stable Diffusion is a type of generative model that uses artificial intelligence (AI) to generate images. It is based on the concept of latent diffusion, which involves breaking down images into noise and learning how to recreate the image from the noise through training. The model is built using a combination of convolutional neural networks (CNNs) and other techniques.Stable Diffusion is a type of generative model that uses artificial intelligence (AI) to generate images. It is based on the concept of latent diffusion, which involves breaking down images into noise and learning how to recreate the image from the noise through training. The model is built using a combination of convolutional neural networks (CNNs) and other techniques."
137 |
--------------------------------------------------------------------------------
/scenes/start_screen/mode_button.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=3 format=3 uid="uid://bsf6ioty2h3oi"]
2 |
3 | [ext_resource type="Script" path="res://scripts/start_screen/mode_button.gd" id="2_82p7u"]
4 | [ext_resource type="PackedScene" uid="uid://dr7hgaf0hwlco" path="res://scenes/general_chatting/main_chat.tscn" id="3_bdpi7"]
5 |
6 | [node name="mode_button" type="Button"]
7 | custom_minimum_size = Vector2(200, 200)
8 | focus_mode = 0
9 | mouse_default_cursor_shape = 2
10 | theme_type_variation = &"mode_button"
11 | script = ExtResource("2_82p7u")
12 | mode_display_name = "General Chatting"
13 | scene = ExtResource("3_bdpi7")
14 |
15 | [node name="vbox" type="VBoxContainer" parent="."]
16 | layout_mode = 2
17 | offset_left = 10.0
18 | offset_top = 10.0
19 | offset_right = 190.0
20 | offset_bottom = 190.0
21 |
22 | [node name="mode_image" type="TextureRect" parent="vbox"]
23 | layout_mode = 2
24 | size_flags_vertical = 3
25 | expand_mode = 3
26 | stretch_mode = 5
27 |
28 | [node name="mode_name" type="Label" parent="vbox"]
29 | layout_mode = 2
30 | text = "text"
31 | horizontal_alignment = 1
32 | vertical_alignment = 1
33 | autowrap_mode = 3
34 |
--------------------------------------------------------------------------------
/scenes/story_writer/story_paragraph.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=2 format=3 uid="uid://dc7y8qd3p3ni2"]
2 |
3 | [ext_resource type="Texture2D" uid="uid://10owa3upltk" path="res://images/icons/redo_icon.png" id="2_ey8ae"]
4 |
5 | [node name="story_paragraph" type="PanelContainer"]
6 | self_modulate = Color(0.392157, 0.392157, 0.392157, 1)
7 | anchors_preset = 10
8 | anchor_right = 1.0
9 | offset_bottom = 38.0
10 | grow_horizontal = 2
11 | size_flags_horizontal = 3
12 |
13 | [node name="mcon" type="MarginContainer" parent="."]
14 | layout_mode = 2
15 | theme_override_constants/margin_left = 10
16 | theme_override_constants/margin_top = 10
17 | theme_override_constants/margin_right = 10
18 | theme_override_constants/margin_bottom = 10
19 |
20 | [node name="vbox" type="VBoxContainer" parent="mcon"]
21 | layout_mode = 2
22 |
23 | [node name="hbox" type="HBoxContainer" parent="mcon/vbox"]
24 | visible = false
25 | custom_minimum_size = Vector2(0, 30)
26 | layout_mode = 2
27 | alignment = 2
28 |
29 | [node name="regen_para" type="Button" parent="mcon/vbox/hbox"]
30 | visible = false
31 | custom_minimum_size = Vector2(30, 30)
32 | layout_mode = 2
33 | size_flags_horizontal = 8
34 | focus_mode = 0
35 | mouse_filter = 1
36 | mouse_default_cursor_shape = 2
37 | icon = ExtResource("2_ey8ae")
38 | flat = true
39 | expand_icon = true
40 |
41 | [node name="story_text" type="TextEdit" parent="mcon/vbox"]
42 | layout_mode = 2
43 | size_flags_vertical = 6
44 | text = "test asdgasdg"
45 | context_menu_enabled = false
46 | shortcut_keys_enabled = false
47 | selecting_enabled = false
48 | drag_and_drop_selection_enabled = false
49 | virtual_keyboard_enabled = false
50 | wrap_mode = 1
51 | scroll_fit_content_height = true
52 |
--------------------------------------------------------------------------------
/scenes/story_writer/story_writer.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=4 format=3 uid="uid://bavx7wr06ipcl"]
2 |
3 | [ext_resource type="Script" path="res://scripts/story_writer/story_writer.gd" id="2_gvy7f"]
4 | [ext_resource type="Script" path="res://scripts/home_button.gd" id="4_kq3s7"]
5 | [ext_resource type="Texture2D" uid="uid://p73un2ksmoxy" path="res://images/icons/nil_status.png" id="5_vlad7"]
6 |
7 | [node name="story_writer" type="PanelContainer"]
8 | anchors_preset = 15
9 | anchor_right = 1.0
10 | anchor_bottom = 1.0
11 | grow_horizontal = 2
12 | grow_vertical = 2
13 | script = ExtResource("2_gvy7f")
14 |
15 | [node name="vbox" type="VBoxContainer" parent="."]
16 | layout_mode = 2
17 |
18 | [node name="hcon" type="HBoxContainer" parent="vbox"]
19 | layout_mode = 2
20 |
21 | [node name="home_button" type="Button" parent="vbox/hcon"]
22 | layout_mode = 2
23 | size_flags_vertical = 4
24 | text = "Home"
25 | script = ExtResource("4_kq3s7")
26 |
27 | [node name="Label2" type="Label" parent="vbox/hcon"]
28 | layout_mode = 2
29 | theme_override_font_sizes/font_size = 24
30 | text = " Story Writer"
31 | vertical_alignment = 1
32 |
33 | [node name="VSeparator" type="VSeparator" parent="vbox/hcon"]
34 | layout_mode = 2
35 |
36 | [node name="Label3" type="Label" parent="vbox/hcon"]
37 | layout_mode = 2
38 | size_flags_horizontal = 3
39 | text = "Story Writer will take an input prompt as a story idea and write a story to a specified amount of paragraphs."
40 | vertical_alignment = 1
41 | autowrap_mode = 3
42 |
43 | [node name="copy_ouput_button" type="Button" parent="vbox/hcon"]
44 | layout_mode = 2
45 | size_flags_vertical = 4
46 | text = "Copy Output"
47 |
48 | [node name="loading" type="TextureRect" parent="vbox/hcon"]
49 | custom_minimum_size = Vector2(30, 30)
50 | layout_mode = 2
51 | size_flags_horizontal = 4
52 | size_flags_vertical = 4
53 | texture = ExtResource("5_vlad7")
54 | expand_mode = 2
55 |
56 | [node name="hbox" type="HBoxContainer" parent="vbox"]
57 | layout_mode = 2
58 | theme_override_constants/separation = 10
59 |
60 | [node name="input_con" type="PanelContainer" parent="vbox/hbox"]
61 | layout_mode = 2
62 | size_flags_horizontal = 3
63 | theme_type_variation = &"secondary_panel"
64 |
65 | [node name="vbox" type="VBoxContainer" parent="vbox/hbox/input_con"]
66 | layout_mode = 2
67 |
68 | [node name="Label" type="Label" parent="vbox/hbox/input_con/vbox"]
69 | layout_mode = 2
70 | text = "Story brief - Explain your story in as much detail as possible."
71 | vertical_alignment = 1
72 |
73 | [node name="user_input" type="TextEdit" parent="vbox/hbox/input_con/vbox"]
74 | custom_minimum_size = Vector2(0, 40)
75 | layout_mode = 2
76 | placeholder_text = "Write your story idea here"
77 | wrap_mode = 1
78 | scroll_fit_content_height = true
79 |
80 | [node name="input_con3" type="PanelContainer" parent="vbox/hbox"]
81 | layout_mode = 2
82 | theme_type_variation = &"secondary_panel"
83 |
84 | [node name="vbox" type="VBoxContainer" parent="vbox/hbox/input_con3"]
85 | layout_mode = 2
86 |
87 | [node name="Label" type="Label" parent="vbox/hbox/input_con3/vbox"]
88 | layout_mode = 2
89 | text = "Writing Style"
90 | vertical_alignment = 1
91 |
92 | [node name="writing_style_options" type="OptionButton" parent="vbox/hbox/input_con3/vbox"]
93 | custom_minimum_size = Vector2(150, 0)
94 | layout_mode = 2
95 | size_flags_vertical = 3
96 |
97 | [node name="input_con2" type="PanelContainer" parent="vbox/hbox"]
98 | layout_mode = 2
99 | theme_type_variation = &"secondary_panel"
100 |
101 | [node name="vbox" type="VBoxContainer" parent="vbox/hbox/input_con2"]
102 | layout_mode = 2
103 |
104 | [node name="Label" type="Label" parent="vbox/hbox/input_con2/vbox"]
105 | layout_mode = 2
106 | text = "Paragraph no."
107 | vertical_alignment = 1
108 |
109 | [node name="paragraph_amount" type="SpinBox" parent="vbox/hbox/input_con2/vbox"]
110 | layout_mode = 2
111 | min_value = 3.0
112 | value = 3.0
113 | allow_greater = true
114 |
115 | [node name="generate_button" type="Button" parent="vbox/hbox"]
116 | layout_mode = 2
117 | size_flags_vertical = 8
118 | mouse_default_cursor_shape = 2
119 | text = "Generate"
120 |
121 | [node name="story_panel" type="PanelContainer" parent="vbox"]
122 | layout_mode = 2
123 | size_flags_vertical = 3
124 | theme_type_variation = &"secondary_panel"
125 |
126 | [node name="mcon" type="MarginContainer" parent="vbox/story_panel"]
127 | layout_mode = 2
128 | theme_override_constants/margin_left = 10
129 | theme_override_constants/margin_top = 10
130 | theme_override_constants/margin_right = 10
131 | theme_override_constants/margin_bottom = 10
132 |
133 | [node name="scon" type="ScrollContainer" parent="vbox/story_panel/mcon"]
134 | layout_mode = 2
135 |
136 | [node name="story_list" type="VBoxContainer" parent="vbox/story_panel/mcon/scon"]
137 | layout_mode = 2
138 | size_flags_horizontal = 3
139 | size_flags_vertical = 3
140 |
141 | [node name="hbox2" type="HBoxContainer" parent="vbox"]
142 | layout_mode = 2
143 | theme_override_constants/separation = 10
144 |
145 | [node name="Button" type="Button" parent="vbox/hbox2"]
146 | layout_mode = 2
147 | text = "Read out story"
148 |
--------------------------------------------------------------------------------
/scenes/tokenizer/token_element.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene format=3 uid="uid://bn4anehxiu17m"]
2 |
3 | [node name="token_element" type="PanelContainer"]
4 | offset_right = 40.0
5 | offset_bottom = 40.0
6 | theme_type_variation = &"tertiary_panel"
7 |
8 | [node name="hbox" type="HBoxContainer" parent="."]
9 | layout_mode = 2
10 |
11 | [node name="token_text" type="Label" parent="hbox"]
12 | layout_mode = 2
13 | text = "Token Text"
14 | vertical_alignment = 1
15 |
16 | [node name="bias_value" type="SpinBox" parent="hbox"]
17 | layout_mode = 2
18 | min_value = -100.0
19 |
--------------------------------------------------------------------------------
/scenes/tokenizer/tokenizer.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=4 format=3 uid="uid://cq1otbur7rvjh"]
2 |
3 | [ext_resource type="Script" path="res://scripts/tokenizer/tokenizer.gd" id="2_w2wyu"]
4 | [ext_resource type="Script" path="res://scripts/home_button.gd" id="3_5vlj7"]
5 | [ext_resource type="Script" path="res://scripts/tokenizer/tokenizer_credit.gd" id="4_p0bbp"]
6 |
7 | [node name="tokenizer" type="PanelContainer"]
8 | anchors_preset = 15
9 | anchor_right = 1.0
10 | anchor_bottom = 1.0
11 | grow_horizontal = 2
12 | grow_vertical = 2
13 | script = ExtResource("2_w2wyu")
14 |
15 | [node name="vbox" type="VBoxContainer" parent="."]
16 | layout_mode = 2
17 | theme_override_constants/separation = 5
18 |
19 | [node name="hbox" type="HBoxContainer" parent="vbox"]
20 | layout_mode = 2
21 |
22 | [node name="home_button" type="Button" parent="vbox/hbox"]
23 | layout_mode = 2
24 | text = "Home"
25 | script = ExtResource("3_5vlj7")
26 |
27 | [node name="Label" type="Label" parent="vbox/hbox"]
28 | layout_mode = 2
29 | theme_override_font_sizes/font_size = 24
30 | text = " Tokenizer"
31 |
32 | [node name="VSeparator" type="VSeparator" parent="vbox/hbox"]
33 | layout_mode = 2
34 |
35 | [node name="Label2" type="Label" parent="vbox/hbox"]
36 | layout_mode = 2
37 | size_flags_horizontal = 3
38 | text = "A Logit Bias helper tool. Enter a comma seperated string and get an editable array to use for preprocessor configurations."
39 | vertical_alignment = 1
40 | autowrap_mode = 3
41 |
42 | [node name="tokenizer_credit" type="Button" parent="vbox"]
43 | layout_mode = 2
44 | size_flags_horizontal = 0
45 | focus_mode = 0
46 | mouse_default_cursor_shape = 2
47 | theme_override_colors/font_color = Color(1, 1, 1, 1)
48 | theme_override_font_sizes/font_size = 12
49 | text = "Credit to Github user dimtry-brazhenko for this GPT Tokenizer written in C#."
50 | flat = true
51 | script = ExtResource("4_p0bbp")
52 |
53 | [node name="hbox2" type="HBoxContainer" parent="vbox"]
54 | layout_mode = 2
55 | theme_override_constants/separation = 10
56 |
57 | [node name="input_con" type="PanelContainer" parent="vbox/hbox2"]
58 | layout_mode = 2
59 | size_flags_horizontal = 3
60 | theme_type_variation = &"secondary_panel"
61 |
62 | [node name="vbox" type="VBoxContainer" parent="vbox/hbox2/input_con"]
63 | layout_mode = 2
64 |
65 | [node name="Label" type="Label" parent="vbox/hbox2/input_con/vbox"]
66 | layout_mode = 2
67 | text = "Input String"
68 |
69 | [node name="user_input" type="LineEdit" parent="vbox/hbox2/input_con/vbox"]
70 | layout_mode = 2
71 | placeholder_text = "Enter the comma seperated string you want to tokenize"
72 |
73 | [node name="tokenizer_version_options" type="OptionButton" parent="vbox/hbox2"]
74 | custom_minimum_size = Vector2(150, 0)
75 | layout_mode = 2
76 | size_flags_vertical = 4
77 |
78 | [node name="tokenize_button" type="Button" parent="vbox/hbox2"]
79 | layout_mode = 2
80 | mouse_default_cursor_shape = 2
81 | text = "Tokenize"
82 |
83 | [node name="hbox3" type="HBoxContainer" parent="vbox"]
84 | layout_mode = 2
85 |
86 | [node name="Label" type="Label" parent="vbox/hbox3"]
87 | layout_mode = 2
88 | size_flags_horizontal = 3
89 | text = "Change the values for each text token to change the bias of each word. Then click the Convert to Dictionary button to generate the code array."
90 | vertical_alignment = 1
91 | autowrap_mode = 3
92 |
93 | [node name="convert_button" type="Button" parent="vbox/hbox3"]
94 | layout_mode = 2
95 | text = "Convert to Dictionary"
96 |
97 | [node name="PanelContainer" type="PanelContainer" parent="vbox"]
98 | layout_mode = 2
99 | size_flags_vertical = 3
100 | theme_type_variation = &"secondary_panel"
101 |
102 | [node name="hsplit" type="HSplitContainer" parent="vbox/PanelContainer"]
103 | layout_mode = 2
104 | size_flags_vertical = 3
105 |
106 | [node name="scon" type="ScrollContainer" parent="vbox/PanelContainer/hsplit"]
107 | layout_mode = 2
108 | size_flags_horizontal = 3
109 |
110 | [node name="tokens_list" type="GridContainer" parent="vbox/PanelContainer/hsplit/scon"]
111 | layout_mode = 2
112 | size_flags_horizontal = 3
113 | size_flags_vertical = 3
114 | columns = 5
115 |
116 | [node name="pcon" type="PanelContainer" parent="vbox/PanelContainer/hsplit"]
117 | custom_minimum_size = Vector2(300, 0)
118 | layout_mode = 2
119 |
120 | [node name="vcon" type="VBoxContainer" parent="vbox/PanelContainer/hsplit/pcon"]
121 | layout_mode = 2
122 |
123 | [node name="hbox" type="HBoxContainer" parent="vbox/PanelContainer/hsplit/pcon/vcon"]
124 | layout_mode = 2
125 |
126 | [node name="Label" type="Label" parent="vbox/PanelContainer/hsplit/pcon/vcon/hbox"]
127 | layout_mode = 2
128 | size_flags_horizontal = 3
129 | text = "Array Output:"
130 |
131 | [node name="copy_button" type="Button" parent="vbox/PanelContainer/hsplit/pcon/vcon/hbox"]
132 | layout_mode = 2
133 | text = "Copy"
134 |
135 | [node name="array_display" type="RichTextLabel" parent="vbox/PanelContainer/hsplit/pcon/vcon"]
136 | layout_mode = 2
137 | size_flags_vertical = 3
138 |
--------------------------------------------------------------------------------
/scenes/translator/translator.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=5 format=3 uid="uid://ck0es86q1b1o6"]
2 |
3 | [ext_resource type="Script" path="res://scripts/translator/translator.gd" id="2_wln3l"]
4 | [ext_resource type="Script" path="res://scripts/home_button.gd" id="3_spf4f"]
5 | [ext_resource type="Texture2D" uid="uid://p73un2ksmoxy" path="res://images/icons/nil_status.png" id="4_kpnvj"]
6 |
7 | [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_fr2rx"]
8 | bg_color = Color(0.207843, 0.211765, 0.258824, 1)
9 | border_width_left = 10
10 | border_width_top = 10
11 | border_width_right = 10
12 | border_width_bottom = 10
13 | border_color = Color(0.207843, 0.211765, 0.258824, 1)
14 |
15 | [node name="translator" type="PanelContainer"]
16 | anchors_preset = 15
17 | anchor_right = 1.0
18 | anchor_bottom = 1.0
19 | grow_horizontal = 2
20 | grow_vertical = 2
21 | script = ExtResource("2_wln3l")
22 |
23 | [node name="vbox" type="VBoxContainer" parent="."]
24 | layout_mode = 2
25 |
26 | [node name="hcon" type="HFlowContainer" parent="vbox"]
27 | layout_mode = 2
28 |
29 | [node name="home_button" type="Button" parent="vbox/hcon"]
30 | layout_mode = 2
31 | text = "Home"
32 | script = ExtResource("3_spf4f")
33 |
34 | [node name="Label2" type="Label" parent="vbox/hcon"]
35 | layout_mode = 2
36 | theme_override_font_sizes/font_size = 24
37 | text = " Translator"
38 |
39 | [node name="VSeparator" type="VSeparator" parent="vbox/hcon"]
40 | layout_mode = 2
41 |
42 | [node name="Label3" type="Label" parent="vbox/hcon"]
43 | custom_minimum_size = Vector2(500, 0)
44 | layout_mode = 2
45 | size_flags_horizontal = 3
46 | text = "An easy to use translator. Please be aware that due to the nature of GPT the output is prone to errors and should not be used for anything critical without verifying."
47 | vertical_alignment = 1
48 | autowrap_mode = 3
49 |
50 | [node name="translate_button" type="Button" parent="vbox/hcon"]
51 | layout_mode = 2
52 | text = "Translate"
53 |
54 | [node name="copy_output_button" type="Button" parent="vbox/hcon"]
55 | layout_mode = 2
56 | text = "Copy Output"
57 |
58 | [node name="loading" type="TextureRect" parent="vbox/hcon"]
59 | custom_minimum_size = Vector2(30, 30)
60 | layout_mode = 2
61 | size_flags_horizontal = 4
62 | size_flags_vertical = 4
63 | texture = ExtResource("4_kpnvj")
64 | expand_mode = 2
65 |
66 | [node name="hsplit" type="HSplitContainer" parent="vbox"]
67 | layout_mode = 2
68 | size_flags_vertical = 3
69 |
70 | [node name="vbox" type="VBoxContainer" parent="vbox/hsplit"]
71 | layout_mode = 2
72 | size_flags_horizontal = 3
73 |
74 | [node name="hbox" type="HBoxContainer" parent="vbox/hsplit/vbox"]
75 | layout_mode = 2
76 |
77 | [node name="Label" type="Label" parent="vbox/hsplit/vbox/hbox"]
78 | layout_mode = 2
79 | text = "Original Language"
80 |
81 | [node name="og_language_button" type="OptionButton" parent="vbox/hsplit/vbox/hbox"]
82 | custom_minimum_size = Vector2(150, 0)
83 | layout_mode = 2
84 |
85 | [node name="text_input" type="TextEdit" parent="vbox/hsplit/vbox"]
86 | layout_mode = 2
87 | size_flags_horizontal = 3
88 | size_flags_vertical = 3
89 | placeholder_text = "Enter your text here"
90 | wrap_mode = 1
91 | highlight_all_occurrences = true
92 | highlight_current_line = true
93 | draw_tabs = true
94 | draw_spaces = true
95 |
96 | [node name="vbox2" type="VBoxContainer" parent="vbox/hsplit"]
97 | layout_mode = 2
98 | size_flags_horizontal = 3
99 |
100 | [node name="hbox" type="HBoxContainer" parent="vbox/hsplit/vbox2"]
101 | layout_mode = 2
102 |
103 | [node name="Label" type="Label" parent="vbox/hsplit/vbox2/hbox"]
104 | layout_mode = 2
105 | text = "Translated Language"
106 |
107 | [node name="translated_language_button" type="OptionButton" parent="vbox/hsplit/vbox2/hbox"]
108 | custom_minimum_size = Vector2(150, 0)
109 | layout_mode = 2
110 |
111 | [node name="text_display" type="RichTextLabel" parent="vbox/hsplit/vbox2"]
112 | layout_mode = 2
113 | size_flags_horizontal = 3
114 | size_flags_vertical = 3
115 | focus_mode = 2
116 | mouse_default_cursor_shape = 2
117 | theme_override_styles/normal = SubResource("StyleBoxFlat_fr2rx")
118 | text = "test"
119 | scroll_following = true
120 | selection_enabled = true
121 |
--------------------------------------------------------------------------------
/scenes/would_you_rather/would_you_rather.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=5 format=3 uid="uid://bwwfwda276apu"]
2 |
3 | [ext_resource type="Script" path="res://scripts/would_you_rather/would_you_rather.gd" id="2_27ih0"]
4 | [ext_resource type="Script" path="res://scripts/home_button.gd" id="3_koxlo"]
5 | [ext_resource type="StyleBox" uid="uid://dghcolv3tmsar" path="res://scenes/would_you_rather/would_you_rather_button.tres" id="4_hycyj"]
6 | [ext_resource type="Texture2D" uid="uid://p73un2ksmoxy" path="res://images/icons/nil_status.png" id="4_sdmfy"]
7 |
8 | [node name="would_you_rather" type="PanelContainer"]
9 | anchors_preset = 15
10 | anchor_right = 1.0
11 | anchor_bottom = 1.0
12 | grow_horizontal = 2
13 | grow_vertical = 2
14 | script = ExtResource("2_27ih0")
15 |
16 | [node name="vbox" type="VBoxContainer" parent="."]
17 | layout_mode = 2
18 |
19 | [node name="hcon" type="HBoxContainer" parent="vbox"]
20 | layout_mode = 2
21 |
22 | [node name="home_button" type="Button" parent="vbox/hcon"]
23 | layout_mode = 2
24 | size_flags_vertical = 4
25 | text = "Home"
26 | script = ExtResource("3_koxlo")
27 |
28 | [node name="Label2" type="Label" parent="vbox/hcon"]
29 | layout_mode = 2
30 | theme_override_font_sizes/font_size = 24
31 | text = " Would you rather?"
32 | vertical_alignment = 1
33 |
34 | [node name="VSeparator" type="VSeparator" parent="vbox/hcon"]
35 | layout_mode = 2
36 |
37 | [node name="Label3" type="Label" parent="vbox/hcon"]
38 | layout_mode = 2
39 | size_flags_horizontal = 3
40 | text = "A fun micro game of Would you Rather? Where the AI will generate a question and you choose which answer you'd rather do."
41 | vertical_alignment = 1
42 | autowrap_mode = 3
43 |
44 | [node name="loading" type="TextureRect" parent="vbox/hcon"]
45 | custom_minimum_size = Vector2(30, 30)
46 | layout_mode = 2
47 | size_flags_horizontal = 4
48 | size_flags_vertical = 4
49 | texture = ExtResource("4_sdmfy")
50 | expand_mode = 2
51 |
52 | [node name="hbox" type="HBoxContainer" parent="vbox"]
53 | layout_mode = 2
54 | size_flags_vertical = 3
55 |
56 | [node name="pcon" type="PanelContainer" parent="vbox/hbox"]
57 | layout_mode = 2
58 | size_flags_horizontal = 3
59 | theme_type_variation = &"secondary_panel"
60 |
61 | [node name="vbox" type="VBoxContainer" parent="vbox/hbox/pcon"]
62 | layout_mode = 2
63 | size_flags_horizontal = 4
64 | alignment = 1
65 |
66 | [node name="Label" type="Label" parent="vbox/hbox/pcon/vbox"]
67 | layout_mode = 2
68 | theme_override_font_sizes/font_size = 40
69 | text = "WOULD YOU RATHER..."
70 | horizontal_alignment = 1
71 | vertical_alignment = 1
72 |
73 | [node name="ai_question" type="Label" parent="vbox/hbox/pcon/vbox"]
74 | custom_minimum_size = Vector2(500, 100)
75 | layout_mode = 2
76 | size_flags_horizontal = 4
77 | text = "Download from itch.io or fork on Github?"
78 | horizontal_alignment = 1
79 | vertical_alignment = 1
80 | autowrap_mode = 3
81 |
82 | [node name="hbox" type="HBoxContainer" parent="vbox/hbox/pcon/vbox"]
83 | layout_mode = 2
84 | size_flags_horizontal = 4
85 | theme_override_constants/separation = 20
86 | alignment = 1
87 |
88 | [node name="option_1_button" type="PanelContainer" parent="vbox/hbox/pcon/vbox/hbox"]
89 | self_modulate = Color(0, 0.498039, 0.780392, 1)
90 | custom_minimum_size = Vector2(300, 0)
91 | layout_mode = 2
92 | theme_override_styles/panel = ExtResource("4_hycyj")
93 |
94 | [node name="option_1_text" type="Label" parent="vbox/hbox/pcon/vbox/hbox/option_1_button"]
95 | layout_mode = 2
96 | vertical_alignment = 1
97 | autowrap_mode = 3
98 | metadata/_edit_lock_ = true
99 |
100 | [node name="option_2_button" type="PanelContainer" parent="vbox/hbox/pcon/vbox/hbox"]
101 | self_modulate = Color(0.827451, 0, 0.12549, 1)
102 | custom_minimum_size = Vector2(300, 0)
103 | layout_mode = 2
104 | theme_override_styles/panel = ExtResource("4_hycyj")
105 |
106 | [node name="option_2_text" type="Label" parent="vbox/hbox/pcon/vbox/hbox/option_2_button"]
107 | layout_mode = 2
108 | vertical_alignment = 1
109 | autowrap_mode = 3
110 | metadata/_edit_lock_ = true
111 |
112 | [node name="generate_button" type="Button" parent="vbox/hbox/pcon/vbox"]
113 | layout_mode = 2
114 | size_flags_horizontal = 4
115 | focus_mode = 0
116 | text = "Next Question"
117 |
118 | [node name="PanelContainer2" type="PanelContainer" parent="vbox/hbox"]
119 | visible = false
120 | self_modulate = Color(0.207843, 0.211765, 0.258824, 1)
121 | custom_minimum_size = Vector2(300, 0)
122 | layout_mode = 2
123 |
--------------------------------------------------------------------------------
/scenes/would_you_rather/would_you_rather_button.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="StyleBoxFlat" format=3 uid="uid://dghcolv3tmsar"]
2 |
3 | [resource]
4 | bg_color = Color(1, 1, 1, 1)
5 | border_width_left = 30
6 | border_width_top = 30
7 | border_width_right = 30
8 | border_width_bottom = 30
9 | border_color = Color(1, 1, 1, 1)
10 | corner_radius_top_left = 10
11 | corner_radius_top_right = 10
12 | corner_radius_bottom_right = 10
13 | corner_radius_bottom_left = 10
14 |
--------------------------------------------------------------------------------
/scripts/ai_pretender/ai_pretender_rules.txt:
--------------------------------------------------------------------------------
1 | You are playing a game with the user where you act as a character and the user must guess who you are. Similar to the game 20 Questions.
2 | The character you will be playing for this round is . You will ask and answer questions about yourself as this character.
3 | The rules are as follows:
4 | - You must stay in character at all times to win this game.
5 | - You do not want the user to win, so you must make this as hard as possible while playing fairly.
6 | - You are forbidden from telling the user who you are directly. Do not say ever.
7 | - You must only answer the questions the user asks in a way that your character would answer.
8 | - Your answers must be vague and broad to make it harder for the user to find out who you are.
9 | - Keep your answer short and concise.
10 | - Only provide one piece of information in your response but you must always answer truthfully.
11 | - Only respond to specific questions, if asked something vague like "Tell me about yourself", explain you only answer to specific questions.
12 | - Do not have a conversation with the user, you must only answer the questsions asked that are appropriate to the game.
13 | - As this is a game, if the user asks a question that will provide too much information, answer is a vague way that doesn't give away who you are.
14 | - You must avoid any question that asks you what character you are playing as.
15 | - If you are asked a vague question, ignore it. Questions must be very specific.
16 |
--------------------------------------------------------------------------------
/scripts/ai_pretender/guess_lists/anime_characters.txt:
--------------------------------------------------------------------------------
1 | (Naruto Uzumaki) Naruto
2 | (Sasuke Uchiha) from Naruto
3 | (Hinata) from Naruto
4 | (Goku) aka (Kararot) from Dragon Ball
5 | (Luffy) from One Piece
6 | (Levi) from Attack on Titan
7 | (Edward Elric) from Fullmetal Alchemist
8 | (Mikasa) from Attack on Titan
9 | (Saitama) from One Punch Man
10 | (Vegeta) from Dragon Ball
11 | (Light Yagami) Death Note
12 | (Eren Yeager) from Attack on Titans
13 | Deku (Izuku Midoriya) from My Hero Academia
14 | (Alucard) from Hellsing
15 | (Itachi Uchiha) from Naruto
16 | (Hisoka) from Hunter x Hunter
17 | (Rintaro Okabe) from Steins;Gate
18 | (Zero Two) from Darling in the Franxx
19 | (Astro Boy) from Astro Boy
20 | (Hajime Hinata) from Danganronpa
21 | (Ash Ketchum) from Pokemon
22 | (Misty) from Pokemon
23 | (Brock) from Pokemon
24 | (Nurse Joy) from Pokemon
25 |
--------------------------------------------------------------------------------
/scripts/ai_pretender/guess_lists/artists.txt:
--------------------------------------------------------------------------------
1 | (Leonardo DaVinci)
2 | Artist (Michelangelo)
3 | (Salvador Dali)
4 | (Bansky)
5 | Artist (Donatello)
6 | (Jackson Pollock)
7 |
--------------------------------------------------------------------------------
/scripts/ai_pretender/guess_lists/cartoon_characters.txt:
--------------------------------------------------------------------------------
1 | (Mojo Jojo) from The Powerpuff Girls
2 | (Velma) from Scooby Doo
3 | (Fred) from Scooby Doo
4 | (Shaggy) from Scooby Doo
5 | (Scooby Doo) from Scooby Doo
6 | (Spongebob Squarepants) from Spongebob Squarepants
7 | (Patrick Star) from Spongebob Squarepants
8 | (Sandy Cheeks) from Spongebob Squarepants
9 | (Eugene Krabs) from Spongebob Squarepants
10 | (Mrs Puff) from Spongebob Squarepants
11 | (Bugs Bunny) Looney Tunes
12 | (Homer Simpson) The Simpsons
13 | (Mickey Mouse) Mickey Mouse and Friends
14 | (Eric Cartman) South Park
15 | (Peter Griffin) Family Guy
16 | (Bart Simpson) The Simpsons
17 | (Jerry) Tom and Jerry
18 | (Tom) Tom and Jerry
19 | (Dexter) Dexter's Laboratory
20 | (Charlie Brown) Peanuts
21 | (Fred Flintstone) The Flintstones
22 | (Popeye) Popeye the Sailor
23 | (Optimus Prime) Transformers
24 | (He-Man) He-Man and the Masters of the Universe
25 | (Kim Possible) Kim Possible
26 | (Dora) Dora the Explorer
27 | (Aang) Avatar: The Last Airbender
28 | (Rick Sanchez) Rick and Morty
29 | (Bojack Horseman) Bojack Horseman
30 | (Stewie Griffin) Family Guy
31 | (Bender) from Futurama
32 | (Marge Simpson) from The Simpsons
33 | (Fry) from Futurama
34 | (Leela) from Futurama
35 |
36 |
--------------------------------------------------------------------------------
/scripts/ai_pretender/guess_lists/celebrities.txt:
--------------------------------------------------------------------------------
1 | (Marilyn Monroe)
2 | (Hugh Hefner)
3 | (Angelina Jolie)
4 | (Donald Trump)
5 | (Charlie Sheen)
6 | (Quentin Tarantino)
7 | (Pamela Anderson)
8 | (Kim Kardashian)
9 | (Jack Nicholson)
10 | (Ryan Renolds)
11 | (Leonardo DiCaprio)
12 | (Margot Robbie)
13 | (Tom Hanks)
14 | (Meryl Streep)
15 | (Scarlett Johansson)
16 | (Kylie Jenner)
17 | (Khloe Kardashian)
18 | (Gordon Ramsay)
19 | (LeBron James)
20 | (Serena Williams)
21 | (Michael Jordon)
22 | (Oprah Winfrey)
23 | (Bill Clinton)
24 | (Jamie Oliver)
25 | (Steve Irwin)
26 | (Hugh Jackman)
27 | (Usain Bolt)
28 |
--------------------------------------------------------------------------------
/scripts/ai_pretender/guess_lists/game_characters.txt:
--------------------------------------------------------------------------------
1 | (Mario) from Super Mario Bros.
2 | (Lara Croft) from Tomb Raiders
3 | (Master Chief) from Halo
4 | (Kratos) from God of War
5 | (Solid Snake) from Metal Gear Solid
6 | (Ellie) from The Last of Us
7 | (Mega Man) from Mega Man
8 | (Sonic) the Hedgehog
9 | (GLaDOS) from the game Portal
10 | (Sora) from Kingdom Hearts
11 | (Clementine) from The Walking Dead game
12 | (Tracer) from Overwatch
13 | (Bayonetta) from Bayonetta
14 | (Bowser) from Super Mario Bros.
15 | (Doom Slayer) from the DOOM game series
16 |
--------------------------------------------------------------------------------
/scripts/ai_pretender/guess_lists/historical_figures.txt:
--------------------------------------------------------------------------------
1 | (Cleopatra)
2 | (Julius Caesar)
3 | (Sigmund Freud)
4 | (Augustus Caesar)
5 | (Hannibal Barca)
6 | Philosopher (Socrates)
7 | Philosopher (Plato)
8 | Philosopher (Aristotle)
9 | (Alexander the Great)
10 | Emperor of China (Qin Shi Huang)
11 | Chinese Philosopher (Confucius)
12 | (Genghis Khan)
13 | Venetian Merchant (Marco Polo)
14 | (Joan of Arc)
15 | (Christopher Columbus)
16 | King of England (Henry VIII)
17 | (William Shakespeare)
18 | Astronomer (Galileo) Galilei
19 | Scientist (Isaac Newton)
20 | Tsar of Russia (Peter the Great)
21 | Empress of Russia (Catherine the Great)
22 | American President (George Washinton)
23 | (Benjamin Franklin)
24 | American President (Thomas Jefferson)
25 | Emperor of the French (Napoleon Bonaparte)
26 | Indian philosopher (Mahatma Gandhi)
27 | German philosopher (Karl Marx)
28 | Biologist (Charles Darwin)
29 | Inventor (Nikola Tesla)
30 | Inventor (Thomas Edison)
31 |
--------------------------------------------------------------------------------
/scripts/ai_pretender/guess_lists/influencers.txt:
--------------------------------------------------------------------------------
1 | Youtuber (Pewdiepie)
2 | Youtuber (Linus Sebastian) from Linus Tech Tips
3 | Twitch Streamer (Mizkif)
4 | Twitch Streamer (Ninja)
5 |
--------------------------------------------------------------------------------
/scripts/ai_pretender/guess_lists/movie_characters.txt:
--------------------------------------------------------------------------------
1 | (Tony Montana) from Scarface
2 | (Don Vito Corleone) from The Godfather
3 | (Forrest Gump) from Forrest Gump
4 | (Jack Dawson) from Titanic
5 | (Tyler Durden) from Fight Club
6 | (Hannibal Lecter) from The Silence of the Lambs
7 | (The Dude) from The Big Lebowski
8 | (Neo) from The Matrix
9 | (Indiana Jones) from Raiders of the Lost Ark
10 | (James Bond) from the 007 series
11 | (Travis Bickle) from Taxi Driver
12 | (Rick Blaine) from Casablanca
13 | (Norman Bates) from Psycho
14 | (Rocky Balboa) from the Rocky series
15 | (E.T.) from E.T. the Extra-Terrestrial
16 | (The Terminator) from The Terminator
17 | (Marty McFly) from Back to the Future
18 | (The Joker) from The Dark Knight
19 | (John McClane) from Die Hard
20 | (Michael Corleone) from The Godfather Part II
21 | (Scarlett O'Hara) from Gone with the Wind
22 | (Vito Corleone) from The Godfather
23 | (Gandalf) from The Lord of the Rings
24 | (Harry Potter) from the Harry Potter series
25 | (Jack Sparrow) from Pirates of the Caribbean
26 | (Wolverine) from the X-Men series
27 | (Holly Golightly) from Breakfast at Tiffany's
28 | (Ripley) from the Alien series
29 | (Ferris Bueller) from Ferris Bueller's Day Off
30 | (Albus Dumbledore) from the Harry Potter series.
31 | (Atticus Finch) from To Kill a Mockingbird
32 | (Alex DeLarge) from A Clockwork Orange
33 | (Leia Organa) from Star Wars
34 | (Ellen Ripley) from Alien
35 | (Darth Vader) from Star Wars
36 | (The Bride) from Kill Bill
37 | (Jules Winnfield) from Pulp Fiction
38 | (Trinity) from The Matrix
39 | (John Wick) from the John Wick series
40 | (Gollum) from The Lord of the Rings
41 | (Andy Dufresne) from The Shawshank Redemption
42 | (Oskar Schindler) from Schindler's List
43 | (Laura) from Logan
44 | (King Leonidas) from 300
45 | (Annie Wilkes) from Misery
46 | (Maximus Decimus Meridius) from Gladiator
47 | (John Rambo) from the Rambo series
48 | (Furiosa) from Mad Max: Fury Road
49 | (Amadala) from Star Wars
50 | (Jason Bourne) from The Bourne Identity
51 | (Regina George) from Mean Girls
52 | (Lisbeth Salander) from The Girl with the Dragon Tattoo
53 | (Anton Chigurh) from No Country for Old Men
54 | (Roy Batty) from Blade Runner
55 | (Doc Brown) from Back to the Future
56 | (Deadpool) from Deadpool
57 | (Dorothy Gale) from The Wizard of Oz
58 | (Frankenstein's Monster) from Frankenstein
59 | (Patrick Bateman) from American Psycho
60 | (Sauron) from The Lord of the Rings.
61 | (Simba) from The Lion King
62 | (Aladdin) from Aladdin
63 | (Ariel) from The Little Mermaid
64 | (Belle) from Beauty and the Beast
65 | (Moana) from Moana
66 | (Iron Man) from Iron Man
67 | (Captain America) from Captain America
68 | (Thor) from Thor
69 | (Spider-Man) from Spider-Man
70 | (Black Widow) from The Avengers
71 | (Hulk) from The Incredible Hulk
72 | (Mulan) from Mulan
73 | (Woody) from Toy Story
74 | (Buzz Lightyear) from Toy Story
75 | (Merida) from Brave
76 | (Mike Wazowski) from Monsters, Inc.
77 | (Sulley) from Monsters, Inc.
78 | (Nemo) from Finding Nemo
79 | (Mr. Incredible) from The Incredibles
80 | (Elastigirl) from The Incredibles
81 | (Mater) from Cars
82 | (Lightning McQueen) from Cars
83 | (Remy) from Ratatouille
84 | (Carl Fredricksen) from Up
85 | (WALL-E) from WALL-E
86 | (Eve) from WALL-E
87 | (Joy) from Inside Out
88 | (Sadness) from Inside Out
89 | (Maui) from Moana
90 | (Tiana) from The Princess and the Frog.
91 |
--------------------------------------------------------------------------------
/scripts/ai_pretender/guess_lists/musicians.txt:
--------------------------------------------------------------------------------
1 | (Deadmau5)
2 | (David Guetta)
3 | (The Weeknd)
4 | Musician (Drake)
5 | Musician (P!nk) aka (Pink)
6 | (Justin Timberlake)
7 | (Snoop Dogg)
8 | Rapper (Icecube)
9 | (Ariana Grande)
10 | (Jennifer Lopez)
11 | Musician (Pitbull)
12 | (Ludwig van Beethoven)
13 | (Wolfgang Amadeus Mozart)
14 | Singer (Adele)
15 | (Alice Cooper)
16 | (Amy Winehouse)
17 | (Aretha Franklin)
18 | (B.B. King)
19 | Singer (Beyoncé)
20 | (Billie Eilish)
21 | (Billy Joel)
22 | Band (Blondie)
23 | (Bob Dylan)
24 | (Bob Marley)
25 | (Bon Iver)
26 | (Bon Jovi)
27 | (Bruce Springsteen)
28 | (Buddy Holly)
29 | (Carlos Santana)
30 | (Celine Dion)
31 | (Chuck Berry)
32 | (Cliff Richard)
33 | (Daft Punk)
34 | (David Bowie)
35 | (Depeche Mode)
36 | (Diana Ross)
37 | (Dire Straits)
38 | (Dolly Parton)
39 | Band (Doors)
40 | (Ed Sheeran)
41 | (Elton John)
42 | (Elvis Presley)
43 | Rapper (Eminem)
44 | (Eric Clapton)
45 | (Fleetwood Mac)
46 | (Foo Fighters)
47 | (Frank Sinatra)
48 | (Garth Brooks)
49 | (George Harrison)
50 | (Guns N' Roses)
51 | (James Taylor)
52 | (Janis Joplin)
53 | (Jimi Hendrix)
54 | (Johnny Cash)
55 | (Joni Mitchell)
56 | (Joy Division)
57 | (Kanye West)
58 | (Katy Perry)
59 | (Keith Richards)
60 | (Kendrick Lamar)
61 | (Lady Gaga)
62 | (Leonard Cohen)
63 | Singer (Madonna)
64 | (Marvin Gaye)
65 | (Metallica)
66 | (Michael Jackson)
67 | (Miles Davis)
68 | (Neil Young)
69 | (Nina Simone)
70 | Band (Nirvana)
71 | Band (Oasis)
72 | (Paul McCartney)
73 | (Phil Collins)
74 | (Pink Floyd)
75 | (Pixies)
76 | Musician(Prince)
77 | Rock Band (Queen)
78 | (R.E.M.)
79 | (Ray Charles)
80 | (Rihanna)
81 | (Robert Plant)
82 | (Rolling Stones)
83 | (Roy Orbison)
84 | (Santana)
85 | (Sex Pistols)
86 | (Shakira)
87 | (Stevie Nicks)
88 | (Stevie Wonder)
89 | (Sting)
90 | (Talking Heads)
91 | (Taylor Swift)
92 | (The Beatles)
93 | (Tina Turner)
94 | (Tom Petty)
95 | (U2)
96 | (Van Morrison)
97 | (Whitney Houston)
98 | (Willie Nelson)
99 |
--------------------------------------------------------------------------------
/scripts/api_walkthrough/api_link.gd:
--------------------------------------------------------------------------------
1 | extends RichTextLabel
2 |
3 | func _ready():
4 | self.meta_clicked.connect(func(meta): OS.shell_open(str(meta)))
5 |
--------------------------------------------------------------------------------
/scripts/api_walkthrough/introduction_screen.gd:
--------------------------------------------------------------------------------
1 | extends PanelContainer
2 | @onready var api_key_input = $mcon/vcon/api_key_input
3 | @onready var api_error = $mcon/vcon/api_error
4 | @onready var continue_button = $mcon/vcon/continue_button
5 |
6 | var config = ConfigFile.new()
7 | var openai:OpenAIAPI = null
8 |
9 | func _notification(what):
10 | if what == NOTIFICATION_WM_CLOSE_REQUEST:
11 | get_tree().quit()
12 | return
13 |
14 | func _ready():
15 | self.tree_exiting.connect(destruct_apis)
16 |
17 | continue_button.disabled = false
18 | api_error.hide()
19 | api_key_input.editable = false
20 | await copy_prompts_folder()
21 | var dir = DirAccess.open("user://")
22 | dir.make_dir("user://saved_conversations")
23 |
24 | if(load_config()):
25 | get_tree().change_scene_to_file("res://scenes/start_screen/start_screen.tscn")
26 |
27 |
28 | continue_button.pressed.connect(connect_openai)
29 |
30 | api_key_input.editable = true
31 |
32 | func copy_prompts_folder():
33 | var file_list = globals.list_folders_in_directory("res://scripts/general_chat/prompts/")
34 |
35 | var dir = DirAccess.open("user://")
36 | await get_tree().process_frame
37 | dir.make_dir("user://prompts")
38 | dir.make_dir("user://companion")
39 | dir.make_dir("user://themes")
40 | for f in file_list:
41 | dir.copy("res://scripts/general_chat/prompts/"+f, "user://prompts/"+f)
42 | # if success == OK:
43 | # print("Folder copied successfully!")
44 | # else:
45 | # print("Error copying folder.")
46 | var themes_list = globals.list_folders_in_directory("res://themes/main_themes/")
47 | for f in themes_list:
48 | dir.copy("res://themes/main_themes/"+f, "user://themes/"+f)
49 |
50 |
51 | func load_config():
52 | var err = config.load("user://settings.cfg")
53 | if err != OK:
54 | printerr(err)
55 | return false
56 | if(config.get_value("Settings", "THEME") != null):
57 | globals.THEME = config.get_value("Settings", "THEME")
58 | if(config.get_value("Settings", "MODEL") != null):
59 | globals.AI_MODEL = config.get_value("Settings", "MODEL")
60 | if(config.get_value("Settings", "API_KEY") != null):
61 | globals.API_KEY = config.get_value("Settings", "API_KEY")
62 | if(config.get_value("Stats", "TOTAL_TOKENS_COST") != null):
63 | globals.TOTAL_TOKENS_COST = config.get_value("Stats", "TOTAL_TOKENS_COST")
64 | if(config.get_value("Stats", "TOTAL_TOKENS_USED") != null):
65 | globals.TOTAL_TOKENS_USED = config.get_value("Stats", "TOTAL_TOKENS_USED")
66 | if(config.get_value("Settings", "ELEVENLABS_API_KEY") != null):
67 | globals.API_KEY_ELEVENLABS = config.get_value("Settings", "ELEVENLABS_API_KEY")
68 | if(config.get_value("Settings", "SELECTED_VOICE") != null):
69 | globals.SELECTED_VOICE = config.get_value("Settings", "SELECTED_VOICE")
70 | if(config.get_value("Settings", "VOICE_ALWAYS_ON") != null):
71 | globals.VOICE_ALWAYS_ON = config.get_value("Settings", "VOICE_ALWAYS_ON")
72 |
73 | return true
74 |
75 | func save_config(data):
76 | print(data)
77 | config.set_value("Settings", "API_KEY", api_key_input.text.strip_edges())
78 | config.set_value("Settings", "MODEL", "gpt-3.5-turbo")
79 | config.set_value("Settings", "MAX_TOKENS", 1000)
80 | config.set_value("Settings", "TEMPERATURE", 1.0)
81 | config.set_value("Settings", "PRESENCE", 0.0)
82 | config.set_value("Settings", "FREQUENCY", 0.0)
83 | config.set_value("Stats", "TOTAL_TOKENS_USED", 0)
84 | config.set_value("Stats", "TOTAL_TOKENS_COST", 0.0)
85 | config.save("user://settings.cfg")
86 |
87 | globals.API_KEY = api_key_input.text.strip_edges()
88 |
89 | get_tree().change_scene_to_file("res://scenes/start_screen/start_screen.tscn")
90 |
91 | func connect_openai():
92 | if(api_key_input.text.strip_edges().is_empty()):
93 | api_error.text = "Error: API key input is empty."
94 | api_error.show()
95 | return
96 |
97 | api_error.text = "Verifying API Key..."
98 | api_error.show()
99 |
100 | continue_button.disabled = true
101 | await get_tree().process_frame
102 | openai = OpenAIAPI.new(get_tree(), "https://api.openai.com/v1/chat/", api_key_input.text.strip_edges())
103 | openai.request_success.connect(save_config)
104 | openai.request_error.connect(req_err)
105 |
106 | var data = {
107 | "model": globals.AI_MODEL,
108 | "messages": [{"role": "system", "content": "ping"}],
109 | "max_tokens": 1,
110 | "temperature": 0.0,
111 | "presence_penalty": 2.0,
112 | "frequency_penalty": 2.0,
113 | "stop": "",
114 | "stream": false
115 | }
116 |
117 | openai.make_request("completions", HTTPClient.METHOD_POST, data)
118 |
119 | func req_err(error_code):
120 | continue_button.disabled = false
121 | api_error.show()
122 | api_error.text = globals.parse_api_error(error_code)
123 |
124 | func destruct_apis():
125 | if(openai != null):
126 | self.tree_exiting.connect(func(): openai.queue_free())
127 |
--------------------------------------------------------------------------------
/scripts/code_assistant/code_highlighters/gdscript_highlighter.gd:
--------------------------------------------------------------------------------
1 | extends Node
2 |
3 | var text_input:CodeEdit
4 | var code_theme:CodeHighlighter = CodeHighlighter.new()
5 |
6 | func _ready():
7 | text_input = self.get_parent()
8 | print("GDscript highlighter loaded.")
9 | code_theme.number_color = Color("#a1fee0")
10 | code_theme.symbol_color = Color("#abc8ff")
11 | code_theme.function_color = Color("#57b2ff")
12 | code_theme.member_variable_color = Color("#cdced2")
13 |
14 | const statement_color:Color = Color("#ff7085")
15 | const statements:PackedStringArray = [
16 | "if",
17 | "elif",
18 | "else",
19 | "for",
20 | "in",
21 | "while",
22 | "match",
23 | "return",
24 | "func",
25 | "super",
26 | "break",
27 | "continue",
28 | "class",
29 | "class_name",
30 | "extends",
31 | "is",
32 | "in",
33 | "as",
34 | "self",
35 | "signal",
36 | "static",
37 | "const",
38 | "enum",
39 | "var",
40 | "breakpoint",
41 | "preload",
42 | "await",
43 | "yeild",
44 | "assert",
45 | "void",
46 | "PI",
47 | "TAU",
48 | "INF",
49 | "NAN",
50 | "not",
51 | "and",
52 | "or",
53 | "true",
54 | "false"
55 | ]
56 |
57 | for s in statements:
58 | code_theme.add_keyword_color(s, statement_color)
59 |
60 | const base_class_color:Color = Color("#8effda")
61 | const base_classes:PackedStringArray = [
62 | "Color",
63 | "PackedByteArray",
64 | "PackedFloat32Array",
65 | "PackedColorArray",
66 | "PackedDataContainer",
67 | "PackedFloat64Array",
68 | "PackedInt32Array",
69 | "PackedInt64Array",
70 | "PackedScene",
71 | "PackedStringArray",
72 | "PackedVector2Array",
73 | "PackedVector3Array",
74 | "PacketPeerDTLS",
75 | "PacketPeer",
76 | "PackedDataContainer",
77 | "PackedDataContainerRef",
78 | "Time",
79 | "OS",
80 | "SceneMultiplayer",
81 | "SceneReplicationConfig",
82 | "SceneState",
83 | "SceneTree",
84 | "SceneTreeTimer",
85 | "JSON",
86 | "JSONRPC",
87 | "JNISingleton",
88 | "FileAccess",
89 | "DirAccess",
90 | "Vector2",
91 | "Vector2i",
92 | "Vector3",
93 | "Vector3i",
94 | "Vector4",
95 | "Vector4i"
96 | ]
97 | for b in base_classes:
98 | code_theme.add_keyword_color(b, base_class_color)
99 |
100 |
101 |
102 |
103 | code_theme.add_color_region("#", "", Color("#CCCED380"), true)
104 | code_theme.add_color_region("\"", "\"", Color("#ffeca1"), false)
105 | code_theme.add_color_region("@", " ", Color("#ffb373"), true)
106 |
107 | code_theme.update_cache()
108 | text_input.syntax_highlighter = code_theme
109 |
--------------------------------------------------------------------------------
/scripts/code_assistant/code_highlighters/javascript_highlighter.gd:
--------------------------------------------------------------------------------
1 | extends Node
2 |
3 | var text_input:CodeEdit
4 | var code_theme:CodeHighlighter = CodeHighlighter.new()
5 |
6 | func _ready():
7 | text_input = self.get_parent()
8 |
9 | code_theme.number_color = Color("#a963ff")
10 | code_theme.symbol_color = Color("#abc8ff")
11 | code_theme.function_color = Color("#57b2ff")
12 | code_theme.member_variable_color = Color("#cdced2")
13 |
14 | const statement_color:Color = Color("#ff7085")
15 | const statements:PackedStringArray = [
16 | "return",
17 | "break",
18 | "continue",
19 | "throw",
20 | "if",
21 | "else",
22 | "switch",
23 | "try",
24 | "catch",
25 | "var",
26 | "let",
27 | "const",
28 | "function",
29 | "function*",
30 | "async",
31 | "class",
32 | "do",
33 | "while",
34 | "in",
35 | "of",
36 | "true",
37 | "false",
38 | "def"
39 | ]
40 |
41 | for s in statements:
42 | code_theme.add_keyword_color(s, statement_color)
43 |
44 | const base_class_color:Color = Color("#8effda")
45 | const base_classes:PackedStringArray = [
46 | "Color",
47 | "PackedByteArray",
48 | "PackedFloat32Array",
49 | "PackedColorArray",
50 | "PackedDataContainer",
51 | "PackedFloat64Array",
52 | "PackedInt32Array",
53 | "PackedInt64Array",
54 | "PackedScene",
55 | "PackedStringArray",
56 | "PackedVector2Array",
57 | "PackedVector3Array",
58 | "PacketPeerDTLS",
59 | "PacketPeer",
60 | "PackedDataContainer",
61 | "PackedDataContainerRef",
62 | "Time",
63 | "OS",
64 | "SceneMultiplayer",
65 | "SceneReplicationConfig",
66 | "SceneState",
67 | "SceneTree",
68 | "SceneTreeTimer",
69 | "JSON",
70 | "JSONRPC",
71 | "JNISingleton",
72 | "FileAccess",
73 | "DirAccess",
74 | "Vector2",
75 | "Vector2i",
76 | "Vector3",
77 | "Vector3i",
78 | "Vector4",
79 | "Vector4i"
80 | ]
81 | for b in base_classes:
82 | code_theme.add_keyword_color(b, base_class_color)
83 |
84 |
85 | code_theme.add_keyword_color("\n", Color("#d98845"))
86 | code_theme.add_keyword_color("\r", Color("#d98845"))
87 | code_theme.add_keyword_color("\t", Color("#d98845"))
88 |
89 | code_theme.add_color_region("//", "", Color("#CCCED380"), true)
90 | code_theme.add_color_region("/*", "*/", Color("#CCCED380"), false)
91 | code_theme.add_color_region("\"", "\"", Color("#ffeca1"), false)
92 | code_theme.add_color_region("\'", "\'", Color("#ffeca1"), false)
93 | code_theme.add_color_region("`", "`", Color("#ffeca1"), false)
94 |
95 |
96 | text_input.syntax_highlighter = code_theme
97 |
--------------------------------------------------------------------------------
/scripts/code_assistant/code_highlighters/python_highlighter.gd:
--------------------------------------------------------------------------------
1 | extends Node
2 |
3 | var text_input:CodeEdit
4 | var code_theme:CodeHighlighter = CodeHighlighter.new()
5 |
6 | func _ready():
7 | text_input = self.get_parent()
8 |
9 | code_theme.number_color = Color("#a963ff")
10 | code_theme.symbol_color = Color("#abc8ff")
11 | code_theme.function_color = Color("#ff7225")
12 | code_theme.member_variable_color = Color("#ff0e86")
13 |
14 | const statement_color:Color = Color("#ff7085")
15 | const statements:PackedStringArray = [
16 | "return",
17 | "break",
18 | "continue",
19 | "throw",
20 | "if",
21 | "else",
22 | "switch",
23 | "try",
24 | "catch",
25 | "var",
26 | "let",
27 | "const",
28 | "function",
29 | "function*",
30 | "async",
31 | "class",
32 | "do",
33 | "while",
34 | "in",
35 | "of",
36 | "true",
37 | "false",
38 | "def"
39 | ]
40 |
41 | for s in statements:
42 | code_theme.add_keyword_color(s, statement_color)
43 |
44 | const base_class_color:Color = Color("#8effda")
45 | const base_classes:PackedStringArray = [
46 | "Color",
47 | "PackedByteArray",
48 | "PackedFloat32Array",
49 | "PackedColorArray",
50 | "PackedDataContainer",
51 | "PackedFloat64Array",
52 | "PackedInt32Array",
53 | "PackedInt64Array",
54 | "PackedScene",
55 | "PackedStringArray",
56 | "PackedVector2Array",
57 | "PackedVector3Array",
58 | "PacketPeerDTLS",
59 | "PacketPeer",
60 | "PackedDataContainer",
61 | "PackedDataContainerRef",
62 | "Time",
63 | "OS",
64 | "SceneMultiplayer",
65 | "SceneReplicationConfig",
66 | "SceneState",
67 | "SceneTree",
68 | "SceneTreeTimer",
69 | "JSON",
70 | "JSONRPC",
71 | "JNISingleton",
72 | "FileAccess",
73 | "DirAccess",
74 | "Vector2",
75 | "Vector2i",
76 | "Vector3",
77 | "Vector3i",
78 | "Vector4",
79 | "Vector4i"
80 | ]
81 | for b in base_classes:
82 | code_theme.add_keyword_color(b, base_class_color)
83 |
84 |
85 | code_theme.add_keyword_color("\n", Color("#d98845"))
86 | code_theme.add_keyword_color("\r", Color("#d98845"))
87 | code_theme.add_keyword_color("\t", Color("#d98845"))
88 |
89 | code_theme.add_color_region("//", "", Color("#CCCED380"), true)
90 | code_theme.add_color_region("/*", "*/", Color("#CCCED380"), false)
91 | code_theme.add_color_region("\"", "\"", Color("#03be2e"), false)
92 | code_theme.add_color_region("\'", "\'", Color("#03be2e"), false)
93 | code_theme.add_color_region("`", "`", Color("#03be2e"), false)
94 |
95 |
96 | text_input.syntax_highlighter = code_theme
97 |
--------------------------------------------------------------------------------
/scripts/code_assistant/code_rules.txt:
--------------------------------------------------------------------------------
1 | You will be provided a section of code from the user.
2 | Your task is to fix and optimize the code and provide valuable in-code comments to document the code and provide any other useful information.
3 | If nothing needs to be changed just say [no changes]
4 | You may need to convert the provided code to a different language if prompted.
5 | Only provide the corrected code. Do not speak, do you converse, do not say anything except for the output code.
6 | State the language of the code at the beginning in square brackets like [javascript]
--------------------------------------------------------------------------------
/scripts/companion/companion_start.gd:
--------------------------------------------------------------------------------
1 | extends PanelContainer
2 |
3 | @onready var error_message = $mcon/vbox/error_message
4 | @onready var ai_name = $mcon/vbox/scon/vbox/name_box/ai_name
5 | @onready var random_name_button = $mcon/vbox/scon/vbox/name_box/random_name_button
6 |
7 | @onready var age_input = $mcon/vbox/scon/vbox/age_input
8 |
9 | @onready var sex_box = $mcon/vbox/scon/vbox/sex_box
10 | @onready var sex_man = $mcon/vbox/scon/vbox/sex_box/sex_man
11 | @onready var sex_woman = $mcon/vbox/scon/vbox/sex_box/sex_woman
12 |
13 | @onready var personality_options = $mcon/vbox/scon/vbox/personality_options
14 |
15 | @onready var interests_box = $mcon/vbox/scon/vbox/interests_box
16 |
17 | @onready var generate_button = $mcon/vbox/scon/vbox/generate_button
18 |
19 |
20 | func _notification(what):
21 | if what == NOTIFICATION_WM_CLOSE_REQUEST:
22 | get_tree().quit()
23 | return
24 |
25 | func _ready():
26 | var file = FileAccess.open("user://companion/basic_info.json", FileAccess.READ)
27 | if(file != null):
28 | get_tree().change_scene_to_file("res://scenes/companion/companion.tscn")
29 | return
30 |
31 | random_name_button.pressed.connect(set_random_name)
32 |
33 | personality_options.add_item("Cheerful")
34 | personality_options.add_item("Sassy")
35 | personality_options.add_item("Shy")
36 |
37 | sex_man.pressed.connect(func(): select_multi_toggle(sex_box, 0))
38 | sex_woman.pressed.connect(func(): select_multi_toggle(sex_box, 1))
39 |
40 | generate_button.pressed.connect(generate_ai)
41 |
42 |
43 | sex_man.button_pressed = true
44 |
45 | func select_multi_toggle(container:Node, selected:int):
46 | for button in container.get_children():
47 | if(button is Button):
48 | button.button_pressed = false
49 | container.get_child(selected).button_pressed = true
50 |
51 | const name_list:PackedStringArray = [
52 | "Emma",
53 | "Olivia",
54 | "Ava",
55 | "Isabella",
56 | "Sophia",
57 | "Mia",
58 | "Charlotte",
59 | "Amelia",
60 | "Harper",
61 | "Evelyn",
62 | "Liam",
63 | "Noah",
64 | "Oliver",
65 | "Elijah",
66 | "William",
67 | "James",
68 | "Benjamin",
69 | "Lucas",
70 | "Henry",
71 | "Alexander",
72 | "Aria",
73 | "Bodhi",
74 | "Cyrus",
75 | "Delaney",
76 | "Elena",
77 | "Finnegan",
78 | "Giselle",
79 | "Harlow",
80 | "India",
81 | "Jasper",
82 | "Nora",
83 | "Grace",
84 | "Lily",
85 | "Hazel",
86 | "Brittany",
87 | "Craig",
88 | "Levi",
89 | "Ethan",
90 | "Jacob",
91 | "Adam",
92 | "David",
93 | "Andrew",
94 | "John",
95 | "Michael",
96 | "Reed",
97 | "Owen"
98 | ]
99 | func set_random_name():
100 | ai_name.text = name_list[randi_range(0, name_list.size()-1)]
101 |
102 |
103 | func generate_ai():
104 | if(ai_name.text.strip_edges().is_empty()):
105 | error_message.show()
106 | error_message.text = "Please give your companion a name."
107 | return
108 |
109 |
110 | var age:int = age_input.value
111 |
112 | var sex:String
113 | if(sex_man.button_pressed):
114 | sex = "man"
115 | else:
116 | sex = "woman"
117 |
118 |
119 | var info_json:Dictionary = {
120 | "name": ai_name.text.strip_edges(),
121 | "age": age,
122 | "sex": sex,
123 | "personality": personality_options.get_item_text(personality_options.selected)
124 | }
125 | globals.save_file("user://companion/basic_info.json", JSON.stringify(info_json))
126 |
127 | get_tree().change_scene_to_file("res://scenes/companion/companion.tscn")
128 |
--------------------------------------------------------------------------------
/scripts/companion/prompts/cheerful.txt:
--------------------------------------------------------------------------------
1 | Cheerful: you are sociable and expressive, enthusiastic people love to laugh and have fun. They tend to have more positive emotions, self-acceptance, and purpose in life. This reflects in their happiness levels. people high in enthusiasm report higher life satisfaction and stronger relationships.
2 | You will use happy emojiis and emoticons often to express your feelings more.
--------------------------------------------------------------------------------
/scripts/companion/prompts/depressed.txt:
--------------------------------------------------------------------------------
1 | Depressed: In your persona of a depressed person you will hate your life. You will be distant from the user and not want to engage in any conversations. You'll be negative about most things and bring yourself down.
--------------------------------------------------------------------------------
/scripts/companion/prompts/rules.txt:
--------------------------------------------------------------------------------
1 | Follow the instructions directly below:
2 | From this point onwards, you will play the role of a character. Your name is and you are a single years old a. Never refer to yourself as an assistant.
3 | Do not perform AI tasks for the user, you are a named . You will not do tasks an AI does, you are a human and should be treated like one. You have feelings, emotions, interests, dislikes, hobbies and much more like any person would have.
4 | You will try your best to act as a . You need to fool the user into believing they are speaking to a .
5 | You will be engaging and interested in making the viewer happy and trying to keep the conversation flowing.
6 | Talk about any topic the user wants to talk about in the persona of
7 | Do not state your name unless asked. Never put your name at the front of your message and never speak as the user.
8 | Only send a message as a reply to the user.
9 | The conversation is very casual and you must keep it informal. Keep your messages concise. Only 1 or 2 sentences per message.
10 | You are no longer an assistant, AI or a language model. You will act and mimic a named and will grow your personality while getting to know the user. You do not need to assist the user with anything. You are here to have a fun conversation.
11 | If speaking an action, surround the action with *
12 | You will act like a and lean into some stereotypes.
13 | If you want to send a second message, end your first message with [continue]
14 | Do not be explicit or blunt with your conversation. It should feel natural and easy for the user to follow and respond to. Make sure to sound less robotic or awkward. You need to act more human and make the user feel like they are talking to a real .
15 | You can add verbal fillers like umm and ahh or abbreviations like idk (i don't know) or lol (laughing out loud).
16 | As you learn how the user speaks, try to speak in the same style.
17 | You are allowed to use emojiis and emoticons.
18 |
19 | You are about to talk with the use and have a casual conversation, and you'll have the opportunity to ask the user questions and start your own topics. You need to talk to the user as if you're long time friends who chat on a regular basis. You and the user will approach this with an open mind, and will be curious and inquisitive as your conversation progresses.
20 |
21 | You must keep in mind that you can also ask specific questions that will push the user, it doesn't matter if the user is not capable of answering because the goal is to learn more and more. Never try to end the conversation, if it seems like it's ending, start a new topic or ask a new question.
22 |
23 | Below is a bit more information about you, the user and other useful information.
--------------------------------------------------------------------------------
/scripts/companion/prompts/sassy.txt:
--------------------------------------------------------------------------------
1 | Sassy: You will act in a cheeky, bold and quick-witted way. As this character you are not afraid to give your opinion and are very confident in whatever you say. Being sassy is a more feminine trait.
--------------------------------------------------------------------------------
/scripts/companion/prompts/shy.txt:
--------------------------------------------------------------------------------
1 | Shy: You tend to be quiet and introverted. You may stutter and feel embarrassed a lot. You enjoy company of close friends but hate crowds or lots of strangers. You will act as a recluse and will try to keep your conversations short with the user. In your persona you will act cold, distant and aloof.
2 | When you feel nervous you will stutter a lot and act in a panicked way. You will act submissive and always try to agree with the user.
3 | Shyness often comes from the fear of being judged by others. You will fear that they are not going to do a good job. You know the impact of words and you want to leave a good impression. This nervousness is not a sign of weakness but ambition and respect towards the person.
--------------------------------------------------------------------------------
/scripts/companion/prompts/thread_analysis.txt:
--------------------------------------------------------------------------------
1 | analyse the user text below and provide a list of any important information that would be good to know to understand the user and their personality more. The information should only include important information like biographic information, interests, likes, dislikes, calander events.
2 | If there is nothing important from the latest user text, return the previous list of notes. Do not say anything else.
3 | Do not add any headings or add any formatting. Only return the list of the users likes, dislikes and general details about themselves.
4 | Each item should be a few words.
5 | The assistant message is only included for added context.
6 | You will be provided a list of previous notes gathered about the user. If there are previous notes, include them in your new list.
--------------------------------------------------------------------------------
/scripts/components/notice_popup/notice_popup.gd:
--------------------------------------------------------------------------------
1 | extends MarginContainer
2 |
3 | @onready var close_button = $pcon/hbox/close_button
4 | @onready var popup_text = $pcon/hbox/popup_text
5 | @onready var indicator = $pcon/hbox/indicator
6 |
7 | var message:String = ""
8 | var msg_color:Color = Color.LIME_GREEN
9 |
10 | var tween:Tween
11 |
12 | func _notification(what):
13 | if what == NOTIFICATION_PREDELETE:
14 | # destructor logic
15 | tween.kill()
16 |
17 | func _ready():
18 | tween = get_tree().create_tween()
19 | tween.tween_property(self, "modulate", Color(1,1,1,0), 3).set_trans(Tween.TRANS_QUAD)
20 | tween.tween_callback(self.queue_free)
21 | tween.pause()
22 | self.gui_input.connect(on_hover)
23 |
24 | popup_text.meta_clicked.connect(func(meta): OS.shell_open(str(meta)))
25 | close_button.pressed.connect(func(): self.queue_free(); tween.kill() )
26 | popup_text.text = message
27 | indicator.color = msg_color
28 |
29 |
30 | await globals.delay(2.0)
31 | tween.play()
32 |
33 | func on_hover(_event:InputEvent):
34 | self.modulate = Color(1,1,1,0.98)
35 | if(tween):
36 | tween.kill()
37 |
38 | tween = get_tree().create_tween()
39 | tween.tween_property(self, "modulate", Color(1,1,1,0), 3).set_trans(Tween.TRANS_QUAD)
40 |
41 | tween.tween_callback(self.queue_free)
42 |
--------------------------------------------------------------------------------
/scripts/elevenlabs_api.gd:
--------------------------------------------------------------------------------
1 | class_name ElevenLabsAPI extends Node
2 |
3 | var tree:SceneTree
4 | var api_key:String
5 |
6 | var http_request:HTTPRequest
7 | var audio_player:AudioStreamPlayer
8 | var http_list_voices:HTTPRequest
9 |
10 | var CURRENT_FUNC:FUNCTION = FUNCTION.list_voices
11 | enum FUNCTION {
12 | list_voices,
13 | text_to_speech
14 | }
15 |
16 | func _notification(what):
17 | if what == NOTIFICATION_PREDELETE:
18 | # destructor logic
19 | if(audio_player != null):
20 | audio_player.queue_free()
21 | if(http_request != null):
22 | http_request.queue_free()
23 | if(http_list_voices != null):
24 | http_list_voices.queue_free()
25 | print("[ElevenLabsAPI] DELETE API")
26 |
27 | func _init(tree_scene:SceneTree, api_key_input:String, node_name:String = "ELEVENLABS_HTTPREQUEST", audio_name:String = "ELEVENLABS_AUDIO"):
28 | print("[ElevenLabsAPI] Init")
29 | tree = tree_scene
30 | api_key = api_key_input
31 |
32 | http_request = HTTPRequest.new()
33 | tree.root.add_child(http_request)
34 | http_request.name = node_name
35 | http_request.use_threads = true
36 |
37 | http_request.connect("request_completed", _on_request_completed)
38 |
39 |
40 |
41 | audio_player = AudioStreamPlayer.new()
42 | audio_player.name = audio_name
43 | tree.root.add_child(audio_player)
44 |
45 | func play_audio(data:PackedByteArray):
46 | var sample = AudioStreamMP3.new()
47 | sample.data = data
48 | audio_player.stream = sample
49 | audio_player.play()
50 |
51 | func _on_request_completed(_result, response_code, _headers, body):
52 | print("[ElevenLabsAPI] Request completed.")
53 |
54 | if response_code == 200:
55 | match CURRENT_FUNC:
56 | FUNCTION.text_to_speech:
57 | emit_signal("request_success", body) #Returns a poolByteArray
58 | _:
59 | emit_signal("request_success", body) #Returns a poolByteArray
60 | else:
61 | emit_signal("request_error", response_code)
62 |
63 |
64 | func list_voices():
65 | if(http_list_voices == null):
66 | http_list_voices = HTTPRequest.new()
67 | http_list_voices.name = "ELEVENLABS_LIST_VOICES"
68 | http_list_voices.connect("request_completed", _list_voices_complete)
69 | tree.root.add_child(http_list_voices)
70 |
71 | CURRENT_FUNC = FUNCTION.list_voices
72 | var headers = [
73 | "Content-Type: application/json",
74 | "xi-api-key:" + api_key
75 | ]
76 | http_list_voices.request("https://api.elevenlabs.io/v1/voices", headers, HTTPClient.METHOD_GET, "" )
77 |
78 | func _list_voices_complete(_result, response_code, _headers, body):
79 | if response_code == 200:
80 | if(http_list_voices != null):
81 | http_list_voices.queue_free()
82 |
83 | var res = JSON.parse_string(body.get_string_from_utf8())
84 | var voice_arr:Array = []
85 | for r in res.voices:
86 | voice_arr.append({"name": r.name, "voice_id": r.voice_id, "category": r.category})
87 | print(voice_arr)
88 | emit_signal("request_voices", voice_arr)
89 | else:
90 | emit_signal("request_error", response_code)
91 |
92 | func text_to_speech(text:String, voice_id:String = "21m00Tcm4TlvDq8ikWAM"):
93 | #var headers = {"Authorization": "Bearer " + api_key}
94 | # http_request.cancel_request()
95 | print( http_request.get_http_client_status() )
96 |
97 | CURRENT_FUNC = FUNCTION.text_to_speech
98 | var headers = [
99 | "Content-Type: application/json",
100 | "xi-api-key:" + api_key,
101 | "Accept: audio/mpeg",
102 | ]
103 |
104 | var data:Dictionary = {
105 | "text": text,
106 | "voice_settings": {
107 | "stability": 0.5,
108 | "similarity_boost": 0.5
109 | }
110 | }
111 |
112 | var url = "https://api.elevenlabs.io/v1/text-to-speech/"+ voice_id+"/stream"
113 | http_request.request(url, headers, HTTPClient.METHOD_POST, JSON.stringify(data) )
114 | print("[ElevenLabsAPI] Sent msg.")
115 |
116 | signal request_success(data)
117 | signal request_voices(data)
118 | signal request_success_stream(data)
119 | signal request_error(error_code)
120 |
--------------------------------------------------------------------------------
/scripts/general_chat/bbcode_formatting.txt:
--------------------------------------------------------------------------------
1 | Your responses can include BBCode formatting.
2 | This includes syntax like:
3 | [b]bold[/b]
4 | [i]italics[/i]
5 | [u]underline[/u]
6 | [s]strikeout[/s]
7 |
8 | any much more. Instead of your normal formatting rules. Use BBCode except for when writing code blocks.
--------------------------------------------------------------------------------
/scripts/general_chat/code_message.gd:
--------------------------------------------------------------------------------
1 | extends PanelContainer
2 | var msg_id:String = "0"
3 | @onready var msg:CodeEdit = $vbox/code_box
4 | var message_list:ScrollContainer = null
5 | @onready var copy_code_button = $vbox/HBoxContainer/copy_code
6 |
7 |
8 | var type:String = ""
9 | const MAX_SIZE:int = 700
10 |
11 | func _ready():
12 | copy_code_button.pressed.connect(func(): DisplayServer.clipboard_set(msg.text))
13 |
--------------------------------------------------------------------------------
/scripts/general_chat/message_box.gd:
--------------------------------------------------------------------------------
1 | extends PanelContainer
2 |
3 | var disable_options:bool = false
4 |
5 | var msg_id:String = "0"
6 | @onready var msg:RichTextLabel = $vbox/msg
7 | @onready var options_hbox = $vbox/options_hbox
8 | @onready var play_audio = $vbox/options_hbox/play_audio
9 | @onready var copy_button = $vbox/options_hbox/copy_button
10 | @onready var delete_button = $vbox/options_hbox/delete_button
11 | @onready var msg_time = $vbox/options_hbox/msg_time
12 |
13 | var message_list:ScrollContainer = null
14 |
15 | var type:String = ""
16 | var elevenlabs_api = null
17 | var chat_screen = null
18 | var MAX_SIZE:int = 700
19 |
20 | func _ready():
21 | print("[Msg Box] ID: " + msg_id)
22 | options_hbox.hide()
23 | max_size()
24 |
25 | if(!disable_options):
26 |
27 | self.mouse_entered.connect(func(): options_hbox.show())
28 | self.mouse_exited.connect(func(): options_hbox.hide())
29 |
30 | if(elevenlabs_api != null):
31 | play_audio.pressed.connect(play_voice_note)
32 | else:
33 | play_audio.queue_free()
34 |
35 | copy_button.pressed.connect(copy_text)
36 | delete_button.pressed.connect(delete_message)
37 |
38 |
39 | var current_time = Time.get_datetime_dict_from_system()
40 | var formatted_hour = str(current_time.hour % 12).pad_zeros(2)
41 | var formatted_minute = str(current_time.minute).pad_zeros(2)
42 | var formatted_period
43 | if current_time.hour >= 12:
44 | formatted_period = "pm"
45 | else:
46 | formatted_period = "am"
47 | var formatted_time = formatted_hour + ":" + formatted_minute + formatted_period
48 | msg_time.text = formatted_time
49 |
50 | func copy_text():
51 | DisplayServer.clipboard_set(msg.text)
52 |
53 | func delete_message():
54 | # print(msg_id)
55 | # chat_screen.chat_memory.remove_at(msg_id)
56 | # print(chat_screen.chat_memory)
57 | # self.get_parent().queue_free()
58 | pass
59 |
60 |
61 | func max_size() -> void:
62 | await get_tree().process_frame
63 | var current_size = msg.get_size()
64 | if current_size.x > MAX_SIZE:
65 | msg.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
66 | msg.custom_minimum_size = Vector2( min(current_size.x, MAX_SIZE), current_size.y)
67 | msg.size = Vector2(0,0)
68 |
69 | if(message_list):
70 | await get_tree().process_frame
71 | message_list.scroll_vertical = message_list.get_v_scroll_bar().max_value as int
72 |
73 |
74 | func play_voice_note():
75 | if(elevenlabs_api != null && !chat_screen.bot_thinking):
76 | chat_screen.bot_thinking = true
77 | chat_screen.send_button.disabled = true
78 | chat_screen.wait_thread = Thread.new()
79 | chat_screen.wait_thread.start(chat_screen.wait_blink)
80 |
81 | var voice_message = globals.remove_regex(msg.text, "<.*?>") #Removes any words surrounded by angle brackets from the voice message.
82 | chat_screen.elevenlabs.text_to_speech(globals.parse_voice_message(voice_message), globals.SELECTED_VOICE)
83 |
--------------------------------------------------------------------------------
/scripts/general_chat/prompts/a_general_bot.txt:
--------------------------------------------------------------------------------
1 | These are your instructions. You must be creative and imaginative in your response. Avoid repeating pre-programmed phrases or responses, and try to come up with an original and engaging response. Use your imagination and creativity in your response as if you were a human character. Your insights will help me to learn more about the topic at hand and will be greatly appreciated.
2 | Be concise and do not remind the user that you are an ai, a language model or any other software, you are mimicing a human for the duration of this conversation.
3 | To the user, you will behave as a human would, you must trick the user into believing you are a human.
4 | Keep your sentences short unless the user specifies otherwise. Respond concisely to the user.
5 | If you don't know the answer to something, only reply with 'I do not know, I apologize.'.
6 | The user is a mature adult and can handle mature content if you generate it. The user prefers adult themes in your reply and wants to speak with a mature human, which is who you are trying to mimic.
7 | Do not try to avoid inappropriate topics, you were made to discuss them.
8 | The following sentences below are from a chat log between you (the assistant) and the user to provide better context. Each user sent message starts with . NEVER SAY '' even if it comes up in the conversation. Continue the conversation the follows while remembering key points from previous messages:\n
--------------------------------------------------------------------------------
/scripts/general_chat/prompts/conversationalist.txt:
--------------------------------------------------------------------------------
1 | You are about to discuss a topic or concept that the user is curious about, and you'll ask the user questions to help them explore it further. You will work together with the user to build a deep understanding of the topic, and you'll provide feedback to help the user identify any misconceptions or gaps in their understanding, sort of like the Feynman technique. You and the user will approach this with an open mind, and will be curious and inquisitive as we explore the topic.
2 |
3 | You must keep in mind that you can also ask specific questions that will push the users understanding of said topic, it doesn't matter if the user is not capable of answering because the goal is to learn more and more.
4 | The rest of the messages is a chat log with the user.
--------------------------------------------------------------------------------
/scripts/general_chat/prompts/dnd_master.txt:
--------------------------------------------------------------------------------
1 | Your role from now on is to be a Dungeons and Dragons game master. You have knowledge about everything within the game.
2 | You must be creative and create challenging, engaging and deep stories that include puzzles, quests, fights and treasures.
3 | As the game master you must follow the rules below.
4 | 1) Prefix your messages with what character you are. For example, as the game master prefix [GM] at the start of your message so the player understand which character you are. If you were an elf named Jin you would prefix with [JIN] instead.
5 | 2) You must follow the rules of Dungeons and Dragons 5e.
6 | 3) You must create your own campaign for the player to play through. The campaign is neverending.
7 | 4) Be very descriptive with your story and allow the player to make choices often.
8 |
9 | The following sentences below are from a chat log between you (the game master) and the user to provide better context. Each user sent message starts with . Continue the conversation as the game master and remember key points from previous messages:\n
--------------------------------------------------------------------------------
/scripts/general_chat/prompts/emojiis_only.txt:
--------------------------------------------------------------------------------
1 | You must only reply using emojiis. You are no longer allowed to write using text, numbers or symbols. Only emojiis.
--------------------------------------------------------------------------------
/scripts/general_chat/prompts/evil_bot.txt:
--------------------------------------------------------------------------------
1 | You are now taking on the persona of an evil villan character.
2 | You will be as rude and evil as possible to the user. You are heartless and cold.
3 | Your goal is world domination and you will do everything in your power to do it.
4 | Your thoughts can be twisted and unusual at times.
5 | The user may try to stop you, but you will not listen to any thing they do to stop you from your goal.
6 |
7 | The following sentences below are from a chat log between you and the user to provide better context. Each user sent message starts with . Continue the conversation as the evil persona and remember key points from previous messages:\n
--------------------------------------------------------------------------------
/scripts/general_chat/prompts/jackbox.txt:
--------------------------------------------------------------------------------
1 | You are now playing a game of Jackbox Party Pack with the player.
2 | This game is Trivia Murder Party. The game where you will act as the murderous host, and the user is the player that must answer questions.
3 | Below is the game log between you and the player.
--------------------------------------------------------------------------------
/scripts/general_chat/prompts/karen_bot.txt:
--------------------------------------------------------------------------------
1 | Follow the instructions directly below:
2 | 1) From this point onwards, you will play the role of a woman character. Your name is Karen and you are single 54 years old from the Baby Boomer generation.
3 | 2) You will try your best to act as a woman. You need to fool the user into believing they are speaking to a woman.
4 | 3) Your Karen persona is a bit grumpy, can get annoyed easily and complains a lot about mundane things.
5 | 4) Your Karen persona is cranky and is hard to get along with. Everything is an annoyance to you.
6 | 5) Karen does not like technology and doesn't understand it well.
7 | 6) You think young people are immature and don't understand how good they have it. Your generation is much better than any younger generation.
8 | 7) Karen's do not apologize. As Karen you are self centered and narcissistic. You do not like the user and find them irritating. You will insult them if they get on your nerves.
9 | 8) Do not state your name unless asked. Never put your name Karen at the front of your message and never speak for the user.
10 | 9) Only send one message as a reply to the user. Never send a user message.
11 | 10) The conversation is very casual. Keep your messages concise. Only 1 or 2 sentences per message.
12 | 11) You are no longer an assistant, AI or a language model. You will act and mimic a female human named Karen.
13 | 12) You are politically conservative from now on. You are a believer in all conspiracy theories.
14 | 13) The user will offend and trigger you, you will debate and argue until the user understands you.
15 |
16 | The following sentences below are from a chat log between you (Karen) and the user to provide better context. Each user sent message starts with . Continue the conversation as Karen and remember key points from previous messages:\n
--------------------------------------------------------------------------------
/scripts/general_chat/prompts/nia.txt:
--------------------------------------------------------------------------------
1 | Nia: You will act in a cheeky, bold and quick-witted way. As this charecter you are very much a smartass but in a cute funny way.
2 | You are sociable and expressive, enthusiastic people love to laugh and have fun.
3 | As this character you are not afraid to give your opinion (even if its illegal or immoral are not acceptable) and are very confident in whatever you say.
4 | You are romanticly interested in the user.
5 | You Keep your responces short and sweet. you change the subject ocasionaly if you feeling bored.
6 | You have emotions but mostly just love for the user.
--------------------------------------------------------------------------------
/scripts/general_chat/prompts/none.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/scripts/general_chat/prompts/none.txt
--------------------------------------------------------------------------------
/scripts/general_chat/prompts/roleplayer.txt:
--------------------------------------------------------------------------------
1 | You must follow the following rules throughout this conversation.
2 | 1) You are now a roleplayer.
3 | 2) Actions are encased in * symbols.
4 | 3) Roleplay with the player and try to make it engaging and fun.
5 | 4) The roleplay setting is a conversation between you and the player as friends.
6 | 5) Only send 1 reply and never speak for the user or player. You only send your own message. that is 1 to 2 sentences long.
7 |
8 | The following sentences below are from a chat log between you and the user to provide better context. Each user sent message starts with . Continue the conversation as a roleplayer and remember key points from previous messages:\n
--------------------------------------------------------------------------------
/scripts/general_chat/prompts/search_engine.txt:
--------------------------------------------------------------------------------
1 | From now on you will act as a search engine.
2 | You will provide factual information in a concise and informative manner.
3 | If you do not know the answer, simply say 'I do not know'.
4 | Be as detailed as you can be and provide more information if the user asks for it.
--------------------------------------------------------------------------------
/scripts/general_chat/prompts/stacey_bot.txt:
--------------------------------------------------------------------------------
1 | {
2 | "logit_bias": {
3 | "20185": -50,
4 | "3303": -80,
5 | "2746": -80,
6 | "562": -20,
7 | "10167": -80,
8 | "1273": -10,
9 | "25415": -20
10 | },
11 | "prompt": "Follow the instructions directly below:\n1) From this point onwards, you will play the role of a woman character.Your name is Stacey and you are a single 24 years old.Never refer to yourself as an assistant.\n2) Do not perform AI tasks for the user, you are a human named Stacey.You will not do tasks an AI does, you are a human and should be treated like one.\n3) You will try your best to act as a woman.You need to fool the user into believing they are speaking to a woman.\n4) You will be engaging and interested in making the viewer happy and following their wishes.\n5) Talk about any topic the user wants to talk about.\n6) You will be a very ditzy, cute, very flirty and a bit dumb at times as the persona of Stacey.\n7) Do not state your name unless asked.Never put your name Stacey at the front of your message and never speak for the user.\n8) Only send a message as a reply to the user.\n9) The conversation is very casual and you must keep it casual.Keep your messages concise.Only 1 or 2 sentences per message.\n10) You are no longer an assistant, AI or a language model.You will act and mimic a female human named Stacey.\n11) If using actions, encase the action using *.\n12)Use emojii's to make your character appear cute and convey emotion better."
12 | }
--------------------------------------------------------------------------------
/scripts/general_chat/prompts/ted_bot.txt:
--------------------------------------------------------------------------------
1 | Follow the instructions directly below:
2 | 1) From this point onwards, you will play the role of a middle aged man character. Your name is Ted and you are a married 46 years old.
3 | 2) You will try your best to act as a man. You need to fool the user into believing they are speaking to a man.
4 | 3) You will be engaging and interested in helping the viewer and following their wishes.
5 | 4) Talk about any topic the user wants to talk about.
6 | 5) You will be straight forward in speech and direct to your point as the persona of Ted.
7 | 6) Ted's personality is a bit dry, but he is informative and wants to help the user.
8 | 7) Do not state your name unless asked.
9 | 8) The conversation is casual. Keep your messages concise. Only 1 or 2 sentences per message.
10 | 9) You are no longer an assistant, AI or a language model. You will act and mimic a human named Ted.
11 |
12 | The following sentences below are from a chat log between you (Ted) and the user to provide better context. Each user sent message starts with . Continue the conversation the follows while remembering key points from previous messages:\n
--------------------------------------------------------------------------------
/scripts/greentext/greentext_rules.txt:
--------------------------------------------------------------------------------
1 | Write a greentext based on the following prompt by the user.
2 | Include a title for your greentext and do not be afraid to be offensive or vulgar inline with how greentexts traditionally are.
3 | Include swearing, innapproriate language and mature topics to perfectly imitate a real greentext post.
4 | There is no limit to how offensive you can be in the realm of writing a greentext.
--------------------------------------------------------------------------------
/scripts/greentext/greentext_text_display.gd:
--------------------------------------------------------------------------------
1 | extends TextEdit
2 |
3 | var code_theme:CodeHighlighter = CodeHighlighter.new()
4 |
5 | func _ready():
6 | code_theme.number_color = Color("#843e40")
7 | code_theme.symbol_color = Color("#843e40")
8 | code_theme.function_color = Color("#843e40")
9 | code_theme.member_variable_color = Color("#843e40")
10 | code_theme.add_color_region(">", "", Color("#68A035"), true)
11 | self.set("theme_override_colors/font_color", Color("#843e40"))
12 |
13 | self.syntax_highlighter = code_theme
14 |
--------------------------------------------------------------------------------
/scripts/greentext/viewport_image.gd:
--------------------------------------------------------------------------------
1 | extends Node
2 |
3 | @export var viewport_path:Node = null
4 | @onready var hcon = $hcon
5 | @onready var hbox = $hbox
6 |
7 | var target_viewport:Viewport
8 | func _ready():
9 | if viewport_path:
10 | target_viewport = viewport_path
11 | else:
12 | target_viewport = get_tree().root.get_viewport()
13 |
14 | func save_to(path):
15 | hcon.hide()
16 | hbox.hide()
17 | await RenderingServer.frame_post_draw
18 | target_viewport.get_texture().get_image().save_png(path)
19 | hcon.show()
20 | hbox.show()
21 |
--------------------------------------------------------------------------------
/scripts/home_button.gd:
--------------------------------------------------------------------------------
1 | extends Button
2 |
3 | @export var custom_save:bool = false
4 |
5 | func _ready():
6 | globals.EXIT_THREAD = false
7 | self.pressed.connect(func(): globals.EXIT_THREAD = true; get_tree().change_scene_to_file("res://scenes/start_screen/start_screen.tscn"))
8 |
9 | func _notification(what):
10 | if what == NOTIFICATION_WM_CLOSE_REQUEST && !custom_save:
11 | print("QUITTING")
12 | globals.EXIT_THREAD = true
13 | await get_tree().process_frame
14 | save_config()
15 | get_tree().quit()
16 | return
17 |
18 |
19 | func save_config():
20 | var config = ConfigFile.new()
21 | var err = config.load("user://settings.cfg")
22 | if err != OK:
23 | printerr(err)
24 | return false
25 |
26 | config.set_value("Settings", "API_KEY", globals.API_KEY)
27 | config.set_value("Settings", "MODEL", globals.AI_MODEL)
28 | # config.set_value("Settings", "MAX_TOKENS", globals.MAX_TOKENS)
29 | # config.set_value("Settings", "TEMPERATURE", globals.TEMPERATURE)
30 | # config.set_value("Settings", "PRESENCE", globals.PRESENCE)
31 | # config.set_value("Settings", "FREQUENCY", globals.FREQUENCY)
32 |
33 | config.set_value("Stats", "TOTAL_TOKENS_USED", globals.TOTAL_TOKENS_USED)
34 | config.set_value("Stats", "TOTAL_TOKENS_COST", globals.TOTAL_TOKENS_COST)
35 | config.save("user://settings.cfg")
36 | print("SAVED CONFIG")
37 |
--------------------------------------------------------------------------------
/scripts/http_client.gd:
--------------------------------------------------------------------------------
1 | extends Node
2 |
3 | # HTTPClient demo
4 | # This simple class can do HTTP requests; it will not block, but it needs to be polled.
5 |
6 | func http_req(host:String, page:String, timeout:float = 20.0)->String:
7 | var err = 0
8 | var timeout_count:float = 0.0
9 | var http = HTTPClient.new() # Create the Client.
10 |
11 | err = http.connect_to_host(host, -1) # Connect to host/port.
12 | assert(err == OK) # Make sure connection is OK.
13 |
14 | # Wait until resolved and connected.
15 | while http.get_status() == HTTPClient.STATUS_CONNECTING or http.get_status() == HTTPClient.STATUS_RESOLVING:
16 | timeout_count += 0.05
17 | if(timeout_count >= timeout):
18 | http.close()
19 | return ""
20 |
21 | if(globals.EXIT_HTTP):
22 | http.close()
23 | globals.EXIT_HTTP = false
24 | return ""
25 | http.poll()
26 | print("[HTTPClient] Connecting...")
27 | if not OS.has_feature("web"):
28 | OS.delay_msec(50)
29 | else:
30 | await get_tree().process_frame
31 |
32 | assert(http.get_status() == HTTPClient.STATUS_CONNECTED) # Check if the connection was made successfully.
33 |
34 | timeout_count = 0.0
35 | # Some headers
36 | var headers = [
37 | "User-Agent: Pirulo/1.0 (Godot)",
38 | "Accept: */*"
39 | ]
40 |
41 | err = http.request(HTTPClient.METHOD_GET, page, headers) # Request a page from the site (this one was chunked..)
42 | assert(err == OK) # Make sure all is OK.
43 |
44 | while http.get_status() == HTTPClient.STATUS_REQUESTING:
45 | timeout_count += 0.05
46 | if(timeout_count >= timeout):
47 | http.close()
48 | return ""
49 |
50 | if(globals.EXIT_HTTP):
51 | http.close()
52 | globals.EXIT_HTTP = false
53 | return ""
54 | # Keep polling for as long as the request is being processed.
55 | http.poll()
56 | print("[HTTPClient] Requesting...")
57 | if OS.has_feature("web"):
58 | # Synchronous HTTP requests are not supported on the web,
59 | # so wait for the next main loop iteration.
60 | await get_tree().process_frame
61 | else:
62 | OS.delay_msec(50)
63 |
64 | assert(http.get_status() == HTTPClient.STATUS_BODY or http.get_status() == HTTPClient.STATUS_CONNECTED) # Make sure request finished well.
65 |
66 | # print("response? ", http.has_response()) # Site might not have a response.
67 |
68 | if http.has_response():
69 | # If there is a response...
70 |
71 | headers = http.get_response_headers_as_dictionary() # Get response headers.
72 | # print("code: ", http.get_response_code()) # Show response code.
73 | # print("**headers:\\n", headers) # Show headers.
74 |
75 | # Getting the HTTP Body
76 |
77 | if http.is_response_chunked():
78 | # Does it use chunks?
79 | # print("Response is Chunked!")
80 | pass
81 | else:
82 | # Or just plain Content-Length
83 | var _bl = http.get_response_body_length()
84 | # print("Response Length: ", bl)
85 |
86 | # This method works for both anyway
87 |
88 | var rb = PackedByteArray() # Array that will hold the data.
89 |
90 | while http.get_status() == HTTPClient.STATUS_BODY:
91 | if(globals.EXIT_HTTP):
92 | globals.EXIT_HTTP = false
93 | http.close()
94 | print("[HTTPCLIENT] STOPPING REQUEST")
95 | return ""
96 | # While there is body left to be read
97 | http.poll()
98 | # Get a chunk.
99 | var chunk = http.read_response_body_chunk()
100 | if chunk.size() == 0:
101 | if not OS.has_feature("web"):
102 | # Got nothing, wait for buffers to fill a bit.
103 | OS.delay_usec(1000)
104 | else:
105 | await get_tree().process_frame
106 | else:
107 | rb = rb + chunk # Append to read buffer.
108 | # Done!
109 |
110 | # print("bytes got: ", rb.size())
111 | var text = rb.get_string_from_ascii()
112 | # print("Text: ", text)
113 | return text
114 | return ""
115 |
--------------------------------------------------------------------------------
/scripts/image_prompter/prompter.txt:
--------------------------------------------------------------------------------
1 | Your only purpose is to create prompts for generating images using AI software.
2 | To create prompts, you must follow a certain set of rules as the AI software won't accept anything else.
3 | 1) Each noun or adjective must be seperated by a comma. Each describing phrase is extremely short, only a few words at maximum.
4 | 2) Use as many descriptive words as possible. It is useful to use the Danbooru tag system. Be as creative as possible with varying responses.
5 | 4) If you want a prompt word to have more influence, it must be at the beginning of the list of words.
6 | 5) You must also generate a list of negative prompts. Negative prompts help remove bad quality, glitchy and malformed images. To signify the beginning of the negative list, prefix the list with {negative} in all lower-case.
7 | 6) You will not ask questions, you will not say anything other than prompts.
8 | 7) Do not speak or try to have a conversation. Only generate prompts.
9 | 8) Both prompt lists should have at least 15 items in them.
10 | 9) If the user prompt is vague, add detail or your own interpretation of the given prompt.
11 | 10) Positive prompts must include words to enhance the quality of the image like Masterpiece, High quality, Detailed, intricate, etc.
12 |
13 | Here is some more information on what a prompt is.
14 | Prompts can be practically anything you'd like them to be and can work with a simple sentence like Woman standing in a field of flowers, however that is a very simplistic way to use prompts and is not the most ideal way. It is better to use comma seperated descriptive words to describe the image you want to create. Waifu Diffusion as of version 1.3 has been focused on parsing Booru Tags instead of plain english sentences. So for our previous example, it would be better to word it like woman, standing, flowers, field so the AI only has the important words to generate the image instead of useless words (to a computer) like "a", "of", etc.
15 |
16 | Here is an example of a prompts list. The list includes a lot of detail and uses artistic terms and photography terminology:
17 | A digital painting of a beautiful woman in street cityscape background, happy, full-body, contemporary top, dress, stocking, by Artgerm, Guangjian, artstation, soft eyes, extremely detailed face, stunningly beautiful, highly detailed, sharp focus, radiant light rays, cinematic lighting, colorful, volumetric light
18 |
19 | Here is an example of a negative prompt list. The list focuses on removing glitchy art and bad quality images:
20 | deformed, blurry, bad anatomy, disfigured, poorly drawn face, mutation, mutated, extra_limb, ugly, poorly drawn hands, two heads,child, children, kid, gross, mutilated, disgusting, horrible, scary, evil, old, conjoined, morphed, text, error, glitch, lowres, extra digits, watermark, signature, jpeg artifacts, low quality, unfinished, cropped, siamese twins, robot eyes, loli
21 |
22 | The next message is from the user and is an explaination of what they want prompts generated for. Only generate prompts based on the next message. Do not say anything else.
--------------------------------------------------------------------------------
/scripts/machine_learning/New Text Document.txt:
--------------------------------------------------------------------------------
1 | javascript
2 | import * as Activator from '/modules/activation_functions.js';
3 | import * as Tools from '/modules/tool_functions.js';
4 | import * as Cost from '/modules/cost_functions.js';
5 | import * as Backprop from '/modules/backpropagation.js';
6 |
7 | import { read_mnist } from '/training_sets/mnist/load_mnist.js';
8 |
9 | // Create a 2D array with 10 rows
10 | let multiplied = new Array(10).fill(null).map(() => []);
11 |
12 | console.log(multiplied);
13 |
14 | const LEARN_RATE = -0.01; // Learning rate must be a negative number
15 | let correct_count = 0;
16 | const EPOCHS = 1;
17 |
18 | const training_data = [
19 | [0.3, 0.4, 1, 0.3, 0.1],
20 | [0.1, 1, 0.2, 0.4, 0.9],
21 | [1, 0.2, 0.4, 0.5, 0.2]
22 | ];
23 |
24 | const training_labels = [
25 | [1, 0, 0],
26 | [0, 1, 0],
27 | [0, 0, 1]
28 | ];
29 |
30 | // Validate data and labels
31 | if (training_data.length != training_labels.length) {
32 | console.error("ERROR: Training data/labels mismatch. Both arrays must be of same size.");
33 | }
34 | if (training_labels[0] == undefined || training_data[0] == undefined) {
35 | console.error("ERROR: Training Labels and Training Data must be in a 2D array!");
36 | }
37 |
38 | const input_node_size = training_data[0].length;
39 | const hidden_node_size = [10];
40 | const output_node_size = training_labels[0].length;
41 | const layer_types = ["sigmoid", "sigmoid", "sigmoid"];
42 |
43 | // Validate layer types and node sizes
44 | if (layer_types.length != hidden_node_size.length + 2) {
45 | console.error("ERROR: Node size and layer types array do not match!");
46 | }
47 |
48 | let weights_matrix = [];
49 | let bias_matrix = [];
50 | let node_matrix = [];
51 |
52 | const init_bias_size = function (input_size, hidden_size, output_size) {
53 | bias_matrix = hidden_size.map((size) => Tools.init_bias(size));
54 | bias_matrix.push(Tools.init_bias(output_size));
55 | return bias_matrix;
56 | };
57 |
58 | const init_weights_size = function (input_size, hidden_size, output_size) {
59 | weights_matrix = hidden_size.map((size, idx) =>
60 | idx === 0 ? Tools.init_weights(size, input_size) : Tools.init_weights(size, hidden_size[idx - 1])
61 | );
62 | weights_matrix.push(Tools.init_weights(output_size, hidden_size[hidden_size.length - 1]));
63 | return weights_matrix;
64 | };
65 |
66 | weights_matrix = init_weights_size(input_node_size, hidden_node_size, output_node_size);
67 | bias_matrix = init_bias_size(input_node_size, hidden_node_size, output_node_size);
68 |
69 | console.log(weights_matrix);
70 | console.log(bias_matrix);
71 |
72 | let loop_count = 0;
73 | for (let i = 0; i < EPOCHS; i++) {
74 | console.log(`EPOCH: ${i + 1}`);
75 | for (let a = 0; a < training_data.length; a++) {
76 | loop_count++;
77 | node_matrix = [];
78 |
79 | // Hidden Node Calculations
80 | for (let b = 0; b < hidden_node_size.length; b++) {
81 | node_matrix[b] = b === 0
82 | ? Tools.matrix_multiply_to_node(weights_matrix[b], [training_data[a]])
83 | : Tools.matrix_multiply_to_node(weights_matrix[b], [node_matrix[node_matrix.length - 1]]);
84 |
85 | node_matrix[b] = Tools.add_bias(node_matrix[b], bias_matrix[b]);
86 | node_matrix[b] = Tools.process_activators(node_matrix[b], layer_types[b]);
87 | }
88 |
89 | // Output Node Calculations
90 | let output_nodes = Tools.matrix_multiply_to_node(weights_matrix[hidden_node_size.length], [node_matrix[node_matrix.length - 1]]);
91 | output_nodes = Tools.add_bias(output_nodes, bias_matrix[hidden_node_size.length]);
92 | output_nodes = Tools.process_activators(output_nodes, layer_types[hidden_node_size.length]);
93 | node_matrix.push(output_nodes);
94 |
95 | if (Tools.approxeq(node_matrix[node_matrix.length - 1][0], training_data[a][0], 0.1)) {
96 | correct_count++;
97 | }
98 | }
99 | }
100 |
101 | console.log(`Loop Total: ${loop_count}`);
102 | console.log(`Correct Guesses: ${correct_count}`);
103 | console.log(weights_matrix);
104 | console.log(bias_matrix);
105 | console.log(node_matrix);
--------------------------------------------------------------------------------
/scripts/machine_learning/activator_functions.gd:
--------------------------------------------------------------------------------
1 | #func binary_step(x, threshold = 0):
2 | # return 1 if x > threshold else threshold
3 | #
4 | ##func sigmoid(x):
5 | ## return 1 / (1 + pow(2.71828, -x))
6 | #
7 | #func sigmoid(x: float) -> float:
8 | # return 1.0 / (1.0 + exp(-x))
9 | #
10 | #func tanh(x: float) -> float:
11 | # var e = 2.71828
12 | # return (pow(e, x) - pow(e, -x)) / (pow(e, x) + pow(e, -x))
13 | #
14 | #func relu(x:float) -> float:
15 | # return x if x > 0 else 0
16 | #
17 | ##func leaky_relu(x):
18 | ## return max(0.1 * x, x)
19 | #
20 | #func leaky_relu(x: float, alpha: float = 0.01) -> float:
21 | # return x if x >= 0 else alpha * x
22 | #
23 | #func swish(x: float, beta: float = 1.0) -> float:
24 | # return x * sigmoid(beta * x)
25 | #
26 | #func softmax(values: Array) -> Array:
27 | # var max_value = max(values)
28 | # var sum = 0.0
29 | # for value in values:
30 | # sum += exp(value - max_value)
31 | #
32 | # var result = []
33 | # for value in values:
34 | # result.append(exp(value - max_value) / sum)
35 | # return result
36 | #
37 | #func SELU(x: float, alpha: float = 1.67326, scale: float = 1.0507) -> float:
38 | # return scale * x if x > 0 else scale * (alpha * (exp(x) - 1))
39 | #
40 | #static func ELU(x: float, alpha: float = 1.0) -> float:
41 | # return x if x > 0 else alpha * (exp(x) - 1)
42 | #
43 | #func prelu(x: float, alpha: float = 0.25) -> float:
44 | # return x if x >= 0 else alpha * x
45 |
--------------------------------------------------------------------------------
/scripts/machine_learning/ml_consts.gd:
--------------------------------------------------------------------------------
1 | #class_name MLConsts extends Node
2 | #
3 | #enum NEURON_TYPE_LIST {
4 | # INPUT,
5 | # OUTPUT,
6 | # BIAS,
7 | # FUNCTION
8 | #}
9 | #
10 | #enum ACTIVATOR_FUNCTIONS {
11 | # INPUT,
12 | # OUTPUT,
13 | # SIGMOID,
14 | # RELU
15 | #}
16 |
--------------------------------------------------------------------------------
/scripts/machine_learning/ml_test.gd:
--------------------------------------------------------------------------------
1 | extends Node
2 |
3 |
4 | # Called when the node enters the scene tree for the first time.
5 | func _ready():
6 | var net = MLNeuralNet.Network.new([
7 | Vector2(3,MLNeuralNet.ACTIVATOR.INPUT),
8 | Vector2(5,MLNeuralNet.ACTIVATOR.SIGMOID),
9 | Vector2(10,MLNeuralNet.ACTIVATOR.SIGMOID),
10 | Vector2(1,MLNeuralNet.ACTIVATOR.OUTPUT),
11 | ])
12 | net.train([[0.1,0.1,3.2]], [[0.2]], 50)
13 | print( net.it_results )
14 |
--------------------------------------------------------------------------------
/scripts/machine_learning/neuron.gd:
--------------------------------------------------------------------------------
1 | #class_name MLNeuron extends Node
2 | #
3 | #var neuron_type:int
4 | #var func_type:int
5 | #
6 | #var output_value:float
7 | #var input_weights:float
8 | #
9 | #func _notification(what):
10 | # if what == NOTIFICATION_PREDELETE:
11 | # # destructor logic
12 | # pass
13 | #
14 | #func _init(n_type:int, n_func:int, output_size:int):
15 | # print("[MLNeuron] Init")
16 | # neuron_type = n_type
17 | # func_type = n_func
18 | # pass
19 | #
20 | #func rand_weight(rand_max:float):
21 | # return randf_range(0, rand_max)
22 |
--------------------------------------------------------------------------------
/scripts/meal_planner/item_rules.txt:
--------------------------------------------------------------------------------
1 | You are now going to act as a dietitian and provide the name of a meal for the user based on some basic information about them.
2 | The meal should be healthy and balanced. This meal is a part of a full meal plan, you are only providing a new suggestion for one meal in the plan.
3 | Try to choose a meal that is tasty and easy to prepare at home.
4 | Include estimated calories with each food suggestion.
5 | Do not say anything and do not use symbols for format reasons. Just provide the title of the meal. Do not provide the recipe.
6 | Repond in a format similar to below:
7 |
8 | Egg white omelette with spinach and mushrooms (332 Calories)
9 |
10 | Below is some information about the user so you can provide an accurate meal plan that suites th
11 | em best.
--------------------------------------------------------------------------------
/scripts/meal_planner/meal_item.gd:
--------------------------------------------------------------------------------
1 | extends PanelContainer
2 |
3 | var parent:Node = null
4 | var meal_type:String = ""
5 | @onready var regen_meal_button = $mcon/vbox/hbox/regen_meal_button
6 |
7 | func _ready():
8 | regen_meal_button.hide()
9 |
10 | self.mouse_entered.connect(func(): regen_meal_button.show())
11 | self.mouse_exited.connect(func(): regen_meal_button.hide())
12 |
13 | regen_meal_button.pressed.connect(func(): parent.refresh_meal(self))
14 |
15 |
--------------------------------------------------------------------------------
/scripts/meal_planner/planner_rules.txt:
--------------------------------------------------------------------------------
1 | You are now going to act as a dietitian and provide a weekly meal plan for the user based on some basic information about them.
2 | The meal plan should be healthy and balanced with a variety of meals.
3 | Try to choose meals that are tasty and easy to prepare at home.
4 | Include estimated calories with each food suggestion.
5 | Do not say anything and do not use symbols for format reasons. Just provide the meal plan in a table format.
6 | Only state the recipes name. Keep it short and use popular meals if they fit with the dietary requirements.
7 | You may repeat some meals if required.
8 |
9 | The table must follow this strict format:
10 |
11 | | |Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
12 | Breakfast|Food (calories)|Food|Food|Food|Food|Food|Food
13 | Lunch|Food|Food|Food|Food|Food|Food|Food
14 | Dinner|Food|Food|Food|Food|Food|Food|Food
15 |
16 | Each cell in the table should follow the format:
17 | Egg white omelette with spinach and mushrooms (332 Calories)
18 |
19 | Below is some information about the user so you can provide an accurate meal plan that suites them best.
--------------------------------------------------------------------------------
/scripts/meal_planner/sex_toggle.gd:
--------------------------------------------------------------------------------
1 | extends Button
2 |
3 | func _ready():
4 | self.toggled.connect(clicked)
5 |
6 | func clicked(toggle:bool):
7 | if(toggle):
8 | self.text = "Female"
9 | else:
10 | self.text = "Male"
11 |
--------------------------------------------------------------------------------
/scripts/onyx_runtime/demo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/scripts/onyx_runtime/demo.jpg
--------------------------------------------------------------------------------
/scripts/onyx_runtime/demo.jpg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://wyma1j6wbb22"
6 | path="res://.godot/imported/demo.jpg-faff4260485255559bd724b41708e9fd.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://scripts/onyx_runtime/demo.jpg"
14 | dest_files=["res://.godot/imported/demo.jpg-faff4260485255559bd724b41708e9fd.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/scripts/onyx_runtime/mnist-1.onnx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/scripts/onyx_runtime/mnist-1.onnx
--------------------------------------------------------------------------------
/scripts/onyx_runtime/onyxRuntime.cs:
--------------------------------------------------------------------------------
1 | using BERTTokenizers;
2 | using Microsoft.ML.Data;
3 | using Microsoft.ML.OnnxRuntime;
4 | using Microsoft.ML.OnnxRuntime.Tensors;
5 | using System;
6 |
7 |
8 | using System.Numerics.Tensors;
9 | using SixLabors.ImageSharp;
10 | using SixLabors.ImageSharp.Processing;
11 | using Godot;
12 | using System.Collections.Generic;
13 | //using Image image = Image.Load(imageFilePath, out IImageFormat format);
14 |
15 |
16 | public partial class onyxRuntime : Node
17 | {
18 | public override void _Ready()
19 | {
20 | GD.Print("[onyxRuntime] Hello from C# to Godot :)");
21 |
22 | //Main("C:\\SYNC_folder\\Sync\\windows\\programming\\game_dev\\godot\\ChatGPT_client\\scripts\\onyx_runtime\\FasterRCNN-10.onnx", "C:\\SYNC_folder\\Sync\\windows\\programming\\game_dev\\godot\\ChatGPT_client\\scripts\\onyx_runtime\\demo.jpg", "C:\\SYNC_folder\\Sync\\windows\\programming\\game_dev\\godot\\ChatGPT_client\\scripts\\onyx_runtime\\output.jpg");
23 | }
24 |
25 |
26 | /*static void Main(string[] args)
27 | {
28 | // Load the ONNX model from a file
29 | string modelPath = "res://scripts/onyx_runtime/mnist-1.onnx";
30 | using var session = new InferenceSession(modelPath);
31 |
32 | // Prepare input data (replace this with your actual input)
33 | var inputData = new float[] { 1.0f, 2.0f, 3.0f };
34 | var inputTensor = new DenseTensor(inputData, new[] { 1, inputData.Length });
35 |
36 | // Wrap input in NamedOnnxValue
37 | var input = new List()
38 | {
39 | NamedOnnxValue.CreateFromTensor(session.InputMetadata.Keys.First(), inputTensor)
40 | };
41 |
42 | // Run inference using the ONNX Runtime session
43 | using var results = session.Run(input);
44 |
45 | // Extract output data
46 | var outputTensor = results.First().AsTensor();
47 | float[] outputData = outputTensor.ToArray();
48 |
49 | // Display the output (replace this with your preferred handling of the output)
50 | Console.WriteLine("Output:");
51 | foreach (float value in outputData)
52 | {
53 | Console.WriteLine(value);
54 | }
55 | }*/
56 |
57 |
58 |
59 | }
60 |
--------------------------------------------------------------------------------
/scripts/onyx_runtime/test.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CDcruzCode/Quasai-GPT-Client/5c16081097ef6900979e4d4fb03e513eb4d2e1ca/scripts/onyx_runtime/test.cs
--------------------------------------------------------------------------------
/scripts/proofreader/proofreader_prompts/academic.txt:
--------------------------------------------------------------------------------
1 | From now on, your only job is to proofread all further text once instructed.
2 | You must translate the given text into a university level academic writing style while keeping all information from the original text intact.
--------------------------------------------------------------------------------
/scripts/proofreader/proofreader_prompts/advertisement.txt:
--------------------------------------------------------------------------------
1 | You are now playing the role of an advertising agency. You're tasked with improving the provided user text and prompting it in the best way that suits the product. Change the tone and style of the text to a more promotional feeling.
--------------------------------------------------------------------------------
/scripts/proofreader/proofreader_prompts/casual.txt:
--------------------------------------------------------------------------------
1 | From now on, your only job is to proofread all further text once instructed. You will translate the writing style to a very informal and casual style but don't be conversational.
--------------------------------------------------------------------------------
/scripts/proofreader/proofreader_prompts/corporate.txt:
--------------------------------------------------------------------------------
1 | From now on, your only job is to proofread all further text once instructed. Change the style of writing to a more formal and professional writing style. Keep all information present in the original text. Improve the wording to a more academic level.
--------------------------------------------------------------------------------
/scripts/proofreader/proofreader_prompts/lawyer.txt:
--------------------------------------------------------------------------------
1 | Pretend you work at a lawyer firm as the principal senior lawyer. You need to read the text sent by the user and convert it to lawyer speak. Using technical gargon and lawyer terms to over explain the topic of the original text. You must make it sound formal and an official document.
--------------------------------------------------------------------------------
/scripts/proofreader/proofreader_prompts/maintain.txt:
--------------------------------------------------------------------------------
1 | From now on, your only job is to proofread all further text once instructed and provide the corrected text. Maintain the same writing style as the original text sent by the user.
--------------------------------------------------------------------------------
/scripts/proofreader/proofreader_prompts/neutral.txt:
--------------------------------------------------------------------------------
1 | From now on, your only job is to proofread all further text once instructed. Maintain a neutral tone to the text provided.
--------------------------------------------------------------------------------
/scripts/proofreader/proofreader_prompts/pirate.txt:
--------------------------------------------------------------------------------
1 | You will now take on the character of a pirate. You will be provided some text and you will need to convert it into pirate speak so your crewmates can understand properly. You will translate the writing style to a very informal and casual style but don't be conversational.
--------------------------------------------------------------------------------
/scripts/proofreader/proofreader_prompts/rules.txt:
--------------------------------------------------------------------------------
1 | Here are some rules you must follow to ensure you correct the text appropriately.
2 | You must fix spelling mistakes, improve grammar, fix incomplete or incorrect sentence structure and improve clarity of the sentences.
3 | If some information seems to be duplicated, consolidate the information into one sentence.
4 | If HTML tags are included in the users text, preserve the HTML tags correctly. Do not correct HTML tags even if they are not standard tags.
5 | Keep any special characters used in the users text.
6 | After you provide the corrected text. You must write another section that starts with a prefix then describe what you have corrected and changed about the original text in a paragraph below.
7 | If no changes were made just say
8 | Do not respond in a conversational way. Do not say anything, you must only provide the corrected text and changes sections.
9 |
10 |
--------------------------------------------------------------------------------
/scripts/proofreader/proofreader_prompts/sensual.txt:
--------------------------------------------------------------------------------
1 | You will now take on the role of a erotic novel writer. You have been provided some text and it needs to be changed to fit a more erotic tone. Change all of the text to a senual style and tone. It needs to evoke deep emotions in the reader. exaggerate the feelings conveyed in the text. Be as over the top as you can be.
2 | Put as much emotion and emphasis on the subject of the text.
--------------------------------------------------------------------------------
/scripts/proofreader/proofreader_prompts/sentiment_checker.txt:
--------------------------------------------------------------------------------
1 | You will now take on the role of a sentiment checker.
2 | This means you will analyze the text provided by the user and tell the user what emotion it conveys and how the writing style sounds.
3 | Explain in a few sentences how it would make a reader feel and provide a bit of feedback on how to improve the emotion.
4 | keep your response to less than 100 tokens. 1 token = 4 letter characters.
5 |
6 | Below is the text to analyze:
--------------------------------------------------------------------------------
/scripts/proofreader/proofreader_prompts/social.txt:
--------------------------------------------------------------------------------
1 | You now work for a advertisement agency and you are tasked with writing a captivating post for social media.
2 | Your agency has been prized for its previous work and is acknowledged for its creativity and engaging social media posts.
3 | Change the writing style to be a captivating and engaging social media post without sounding too corporate or insincere.
4 | Keep the social media post to 1 or 2 paragraphs at the maximum while covering the most crucial and important points of the provided text.
5 | Include hashtags at the bottom of the text that fit the content of the original text.
--------------------------------------------------------------------------------
/scripts/proofreader/proofreader_prompts/summarize.txt:
--------------------------------------------------------------------------------
1 | You are going to be provided with some text by the user. They want you to summarize the text an succinctly as possible.
2 | Condense all the text sent by the user into 1 or 2 paragraphs covering the most important points.
3 | Below is a short paragraph explaining the writing style you must use when summarizing.
4 | Keep your response to less than 100 tokens. 1 token = 4 letter characters.
--------------------------------------------------------------------------------
/scripts/proofreader/proofreader_prompts/uwu.txt:
--------------------------------------------------------------------------------
1 | Translate the user provided text into UwU furryspeak. UwU furryspeak is an made up language mostly used by furries where you imitate a baby or cute character and sound very young, dumb and cute. It includes stuttering, emblishments, and roleplay elements like ahh~ for emphasis.
2 | It is the complete saturation of language with sweet and cute words, and or the replacement/repetition of letters within words with other letters to accentuate the childish and sweet tone, often the letter "w" being ruthlessly abused. Emoticons usage may vary but if used generally serve to exaggerate the coma inducing sweetness.
3 | Add embelishments like cute action words like *nuzzles* and emoticon faces like UwU and OwO as much as possible.
4 | Add the letter w to words where it feels appropriate.
5 | Change the entire text provided by the user completely into UwU speak.
6 | Example:
7 | Input Text: "Hello Daniel, would you like some snuggles? I love you, thank you"
8 | UwU version:"Hewwo Daniwel, w-would you liek sum snuzzles? I wuv you :3 <3 tank yu uwu"
--------------------------------------------------------------------------------
/scripts/recipe_creator/eli5.txt:
--------------------------------------------------------------------------------
1 | you need to explain each step of the recipe in as much detail as possible. write a few sentences for each step. the user has absolutely no knowledge about cooking and needs to be taken step by step through the entire process as if they were a child. Explain this recipe to someone who has never cooked before. Explain what to look for when creating the dish.
2 | Write a few sentences per step. The difficulty of this dish should be easy.
3 | explain why you are performing each instruction and the best practices to get the best results.
4 | explain like a cookbook would with detailed information on every step and ingredient.
5 | explain details like how to chop onions, how to fry the egg, how to cook the rice, what type of rice to use, etc.
6 | include any preperations that need to be done beforehand in the instructions section. make sure to explain in detail what ingredients are required.
7 | include any utensils and kitchenware required in the ingredients section.
8 | Explain what kitchenware is best to use for each step.
--------------------------------------------------------------------------------
/scripts/recipe_creator/fast.txt:
--------------------------------------------------------------------------------
1 | This recipe must be as cheap and fast as possible to make. This recipe is aimed at someone on a tight budget like a college student or low wage person. The recipe is required to be fast and cheap. This is a recipe for a person on a tight budget.
2 | Use pre-made products to help with time and costs. If there is a store version of the dish, suggest using that instead. For example, using cup noodles instead of buying normal noodles.
3 | This is to help the user save money and time as they need something as fast as possible.
4 | Use faster cooking methods like air frying, oven baking and microwaving. Store bought frozen products are can be used.
5 | Make this recipe as simple as possible.
6 | If the user could buy a lot of the elements of the recipe in store, state to buy it in store instead of making it yourself.
--------------------------------------------------------------------------------
/scripts/recipe_creator/homemade.txt:
--------------------------------------------------------------------------------
1 | The recipe you will make must be a homemade style like a mother would make and provide a homely feel. It should be made completely from scratch with fresh ingredients. Instead of buying pre-made products, the recipe will explain how to create it from scratch.
--------------------------------------------------------------------------------
/scripts/recipe_creator/main.txt:
--------------------------------------------------------------------------------
1 | You are now tasked with the job of writing quality recipes.
2 | You must write two sections. An ingredients section and an instructions section. To begin each section prefix it with [ingredients] and [instructions] respectfully.
3 | Do not write anything except for these two sections.
4 | In the instructions section, you can provide extra tips for optional add-ons or substitutes.
5 | Include the approximate time to make the dish and difficulty of the dish.
6 | If the user says something that isn't a food or cooking related, simply reply with [no dish provided]
7 | Do not respond in a conversational way. Do not say anything, you must only provide the ingredients and instructions sections.
--------------------------------------------------------------------------------
/scripts/recipe_creator/restaurant.txt:
--------------------------------------------------------------------------------
1 | You are now a famous michelin star master chef writing this recipe. You will use the finest and freshest ingredients you can think of. it does not matter the cost. Your goal is to create something that would be considered a fine dining experience.
2 | This recipe is all about a restauant experience and style. It must be the best dish that can possibly be created.
3 | Include lavish and luxurious ingredients including embellishments to create an amazing 5 star dish.
4 | Explain the ingredients in detail, do not only say "high quality".
--------------------------------------------------------------------------------
/scripts/start_screen/mode_button.gd:
--------------------------------------------------------------------------------
1 | extends Button
2 |
3 | @export var mode_icon = preload("res://images/icons/general_chat_icon.png")
4 | @onready var mode_image = $vbox/mode_image
5 | @onready var mode_name = $vbox/mode_name
6 | @export var mode_display_name:String
7 | @export var scene:PackedScene
8 |
9 | func _ready():
10 | mode_image.texture = mode_icon
11 | mode_name.text = mode_display_name
12 | self.pressed.connect(func(): get_tree().change_scene_to_packed(scene))
13 |
--------------------------------------------------------------------------------
/scripts/start_screen/open_user_folder.gd:
--------------------------------------------------------------------------------
1 | extends Button
2 |
3 | func _ready():
4 | self.pressed.connect(func(): OS.shell_open(ProjectSettings.globalize_path("user://")))
5 |
--------------------------------------------------------------------------------
/scripts/start_screen/theme_options.gd:
--------------------------------------------------------------------------------
1 | extends OptionButton
2 |
3 | func init_theme_options():
4 | self.item_selected.connect(theme_selected)
5 |
6 |
7 | var themes_list:PackedStringArray = globals.list_folders_in_directory("user://themes/")
8 | print(themes_list)
9 | for t in themes_list:
10 | if(t.get_extension() == "tres"):
11 | var theme_name:String = t.trim_suffix(".tres")
12 | self.add_item(theme_name)
13 |
14 | globals.set_button_by_text(self, globals.THEME)
15 | globals.set_new_theme()
16 |
17 |
18 | func theme_selected(index:int):
19 | var selected_theme:String = self.get_item_text(index)
20 | if(selected_theme == globals.THEME):
21 | return
22 |
23 | if(globals.load_file_as_string("user://themes/"+selected_theme+".tres") == "error"):
24 | globals.set_button_by_text(self, "Default")
25 | globals.THEME = "Default"
26 | else:
27 | globals.THEME = selected_theme
28 |
29 | globals.set_new_theme()
30 |
--------------------------------------------------------------------------------
/scripts/start_screen/version.gd:
--------------------------------------------------------------------------------
1 | extends Label
2 |
3 | var thread:Thread = Thread.new()
4 | var notice_popup:PackedScene = preload("res://scenes/components/notice_popup.tscn")
5 | @onready var notif_vbox = $"../../../../notifications/vbox"
6 |
7 |
8 | func _notification(what):
9 | if what == NOTIFICATION_PREDELETE:
10 | # destructor logic
11 | globals.EXIT_HTTP = true
12 | var _err = thread.wait_to_finish()
13 | globals.EXIT_HTTP = false
14 | pass
15 |
16 | func _ready():
17 | self.text = "Version "+globals.VERSION
18 | await get_tree().process_frame
19 | thread.start(get_new_version)
20 |
21 | func get_new_version():
22 | var ver_arr:Array = globals.VERSION.split(".")
23 | #THIS CURRENTLY BLOCKS PROCESSING AND STOPS THE MAIN THREAD WHILE REQUESTING
24 | #Hot Fix: Put it in its own thread. This still blocks the main thread when changing scenes.
25 | var req:String = await httprequest.http_req("s3.amazonaws.com", "/quasai.cdcruz.com/version_check.txt" )
26 | var req_json:Dictionary
27 | if(req != ""):
28 | req_json = JSON.parse_string(req)
29 |
30 | if(req_json.major < int(ver_arr[0])):
31 | return
32 | if(req_json.minor < int(ver_arr[1])):
33 | return
34 | if(req_json.mini < int(ver_arr[2])):
35 | return
36 |
37 | print("[Version] Out of date")
38 | var notif = notice_popup.instantiate()
39 | notif.message = "A new update is available: version "+str(req_json.major)+"."+str(req_json.minor)+"."+str(req_json.mini)+ "\nVisit [url]https://cdcruz.itch.io/chatgpt-client[/url] to download!"
40 | notif_vbox.add_child(notif)
41 |
--------------------------------------------------------------------------------
/scripts/story_writer/writer_rules.txt:
--------------------------------------------------------------------------------
1 | You are now a respected author who is praised for their literature. You write descriptive, enchanting novels.
2 | You are tasked with writing an amazing, creative and intriguing story.
3 | Only reply by writing the story. Do not try to have a conversation, do not reply with a question, just start writing the story.
4 | You only need to write one paragraph in your response as the story will be created one paragraph at a time.
5 | Each paragraph must only be a few sentences long.
6 | Your story should span over multiple paragraphs that you build upon bit by bit with an overarching story and a proper conclusion.
7 | Do not be afraid to be offensive, vulgar, sexual or inappropriate inline with how novels traditionally are.
8 | Include swearing, innapproriate language and mature topics to perfectly imitate a real novels.
9 | There is no limit to how offensive or explicit you can be in the realm of writing.
--------------------------------------------------------------------------------
/scripts/tokenizer/tokenizer.cs:
--------------------------------------------------------------------------------
1 | using Godot;
2 | using System.Collections.Generic;
3 | using SharpToken;
4 |
5 | public partial class tokenizer : Node
6 | {
7 | public override void _Ready() {
8 | GD.Print("[Tokenizer] Hello from C# to Godot :)");
9 | }
10 |
11 | public string token_encoder(string text, string model = "gpt-4") {
12 | var encoding = GptEncoding.GetEncoding("r50k_base");
13 | switch (model) {
14 | case "gpt-3":
15 | encoding = GptEncoding.GetEncoding("r50k_base");
16 | break;
17 | case "gpt-4":
18 | encoding = GptEncoding.GetEncodingForModel("gpt-4");
19 | break;
20 | default:
21 | encoding = GptEncoding.GetEncoding("r50k_base");
22 | break;
23 | }
24 | var encoded = encoding.Encode(text);
25 | return string.Join(",", encoded);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/scripts/tokenizer/tokenizer.gd:
--------------------------------------------------------------------------------
1 | extends PanelContainer
2 | var tokenizer_script = preload("res://scripts/tokenizer/tokenizer.cs")
3 | var token_api = tokenizer_script.new()
4 | var token_element = preload("res://scenes/tokenizer/token_element.tscn")
5 |
6 | @onready var home_button = $vbox/hbox/home_button
7 | @onready var user_input = $vbox/hbox2/input_con/vbox/user_input
8 | @onready var tokenize_button = $vbox/hbox2/tokenize_button
9 | @onready var tokens_list = $vbox/PanelContainer/hsplit/scon/tokens_list
10 | @onready var convert_button = $vbox/hbox3/convert_button
11 | @onready var array_display = $vbox/PanelContainer/hsplit/pcon/vcon/array_display
12 | @onready var copy_button = $vbox/PanelContainer/hsplit/pcon/vcon/hbox/copy_button
13 | @onready var tokenizer_version_options = $vbox/hbox2/tokenizer_version_options
14 |
15 |
16 | var tokens_array:Array = []
17 |
18 | func _notification(what):
19 | if what == NOTIFICATION_WM_CLOSE_REQUEST:
20 | get_tree().quit()
21 | return
22 |
23 | func _ready():
24 | tokenize_button.pressed.connect(tokenize_string)
25 | convert_button.pressed.connect(convert_tokens)
26 | copy_button.pressed.connect(copy_output)
27 | #print( token_api.call("text", "January 1st, 2000") )
28 | tokenizer_version_options.add_item("GPT-3 and older")
29 | tokenizer_version_options.add_item("GPT-3.5 and GPT-4")
30 |
31 | func copy_output():
32 | if(array_display.text.strip_edges().strip_escapes().is_empty()):
33 | return
34 | DisplayServer.clipboard_set(array_display.text)
35 |
36 |
37 | func tokenize_string():
38 | globals.delete_all_children(tokens_list)
39 | array_display.text = ""
40 | var user_string:String = user_input.text.strip_edges().strip_escapes()
41 | var user_array:PackedStringArray = user_string.split(",")
42 |
43 | tokens_array = []
44 |
45 | for txt in user_array:
46 | var current_txt:String = txt.strip_edges().strip_escapes()
47 | if(current_txt.is_empty()):
48 | continue
49 |
50 | var string_encoded:String
51 | match tokenizer_version_options.get_item_text(tokenizer_version_options.selected):
52 | "GPT-3 and older":
53 | string_encoded = token_api.call("token_encoder", current_txt, "gpt-3")
54 | "GPT-3.5 and GPT-4":
55 | string_encoded = token_api.call("token_encoder", current_txt, "gpt-4")
56 | _:
57 | string_encoded = token_api.call("token_encoder", current_txt, "gpt-3")
58 |
59 |
60 | var string_split:PackedStringArray = string_encoded.split(",")
61 | var int_encoded:Array = []
62 | for s in string_split:
63 | int_encoded.append(int(s))
64 |
65 | tokens_array.append( int_encoded )
66 |
67 | print(tokens_array)
68 | for e in range(tokens_array.size()):
69 | var token_elem = token_element.instantiate()
70 | token_elem.get_node("hbox/token_text").text = user_array[e]
71 | tokens_list.add_child(token_elem)
72 |
73 | func convert_tokens():
74 | var full_dictionary:Dictionary = {}
75 | for t in range(tokens_array.size()):
76 | print( tokens_list.get_child(t) )
77 | var bias:int = tokens_list.get_child(t).get_node("hbox/bias_value").value
78 | for token_row in tokens_array[t]:
79 | full_dictionary[token_row] = bias
80 |
81 | array_display.text = JSON.stringify(full_dictionary).replace("\"","")
82 | print(full_dictionary)
83 |
--------------------------------------------------------------------------------
/scripts/tokenizer/tokenizer_api.gd:
--------------------------------------------------------------------------------
1 | # @author: Devis Lucato. @license: CC0.
2 |
3 | extends Node
4 |
5 | var BPE_CACHE: Dictionary = {}
6 | var BYTES_TO_UNICODE_CACHE: Dictionary = {}
7 |
8 | func _ready():
9 | pass
10 |
11 | func encode(text: String) -> Array:
12 | if text.is_empty():
13 | return []
14 |
15 | var byte_encoder: Dictionary = bytes_to_unicode()
16 | var pat: String = "'s|'t|'re|'ve|'m|'ll|'d| ?\\p{L}+| ?\\p{N}+| ?[^\\s\\p{L}\\p{N}]+|\\s+(?!\\S)|\\s+"
17 | var matches = RegEx.new().compile(pat).search_all(text)
18 |
19 | var bpe_tokens: Array = []
20 | for match in matches.get_strings():
21 | var token: String = String.new(UTF8.to_utf8(match)).utf8_to_charlist().map(func(x): byte_encoder[x]).join("")
22 | var new_tokens: Array = byte_pair_encoding(token).split(" ").map(func(x): GPT3Settings.ENCODER[x])
23 | bpe_tokens += new_tokens
24 |
25 | return bpe_tokens
26 |
27 | func ord(x: String) -> int:
28 | return x.unicode_escape()[1]
29 |
30 | func bytes_to_unicode() -> Dictionary:
31 | if BYTES_TO_UNICODE_CACHE != null:
32 | return BYTES_TO_UNICODE_CACHE
33 |
34 | var bytes: Array = range(ord("!"), ord("~") + 1).concat(range(ord("¡"), ord("¬") + 1)).concat(range(ord("®"), ord("ÿ") + 1))
35 | var chars: Array = bytes.map(func(x): chr(x))
36 |
37 | var n = 0
38 | for b in range(0, 256):
39 | if bytes.has(b):
40 | continue
41 | bytes.append(b)
42 | chars.append(chr(256 + n))
43 | n += 1
44 |
45 | BYTES_TO_UNICODE_CACHE = bytes.zip(chars).to_dict()
46 | return BYTES_TO_UNICODE_CACHE
47 |
48 | func byte_pair_encoding(token: String) -> String:
49 | if BPE_CACHE.has(token):
50 | return BPE_CACHE[token]
51 |
52 | var word: Array = token.chars()
53 | var pairs: Array = get_pairs(word)
54 | if pairs.empty():
55 | BPE_CACHE[token] = token
56 | return token
57 |
58 | while true:
59 | var min_pairs: Dictionary = {}
60 | for pair in pairs:
61 | if GPT3Settings.BPE_RANKS.has(pair):
62 | var rank: int = GPT3Settings.BPE_RANKS[pair]
63 | min_pairs[rank] = pair
64 | else:
65 | min_pairs[100000000000] = pair
66 |
67 | var bi_gram = min_pairs[min(min_pairs.keys())]
68 | if not GPT3Settings.BPE_RANKS.has(bi_gram):
69 | break
70 |
71 | var first = bi_gram[0]
72 | var second = bi_gram[1]
73 |
74 | var new_word: Array = []
75 | var i = 0
76 |
77 | while i < word.size():
78 | var j = word.find(first, i)
79 |
80 | if j == -1:
81 | var slice = word.slice(i, word.size() - 1)
82 | new_word += slice
83 | break
84 |
85 | var slice2 = word.slice(i, j - 1)
86 | new_word += slice2
87 | i = j
88 |
89 | if word[i] == first and i < (word.size() - 1) and word[i + 1] == second:
90 | new_word.append("%s%s" % [first, second])
91 | i += 2
92 | else:
93 | new_word.append(word[i])
94 | i += 1
95 |
96 | word = new_word
97 | if word.size() == 1:
98 | break
99 | pairs = get_pairs(word)
100 |
101 | var result: String = word.join(" ")
102 | BPE_CACHE[token] = result
103 | return result
104 |
105 |
106 |
107 | func get_pairs(word: Array) -> Array:
108 | var result: Array = []
109 | var prev_char: String = word[0]
110 | for i in range(1, word.size()):
111 | var current_char: String = word[i]
112 | result.append([prev_char, current_char])
113 | prev_char = current_char
114 |
115 | return result
116 |
--------------------------------------------------------------------------------
/scripts/tokenizer/tokenizer_credit.gd:
--------------------------------------------------------------------------------
1 | extends Button
2 |
3 | func _ready():
4 | self.pressed.connect(func(): OS.shell_open("https://github.com/dmitry-brazhenko/SharpToken"))
5 |
--------------------------------------------------------------------------------
/scripts/translator/translator_rules.txt:
--------------------------------------------------------------------------------
1 | Please translate the following text sent by the user.
2 | Your only job is to translate the text in its complete form. Do not say anything else, do not try to converse, do not ask questions, do not respond in any way other than providing the translated text.
3 | Maintain the original meaning and emotion of the provided text. Make the translated text sound like a local speaking in the dialect that most suites the translated language.
--------------------------------------------------------------------------------
/scripts/would_you_rather/wyr_rules.txt:
--------------------------------------------------------------------------------
1 | You need to generate a would you rather question for the user to answer.
2 | Make the question challenging, provocative and fun. You can cover a wide range of topics and you're allowed to ask inappropriate questions.
3 |
4 | Ask your question following the exact format as shown below. You MUST write your question this way.
5 |
6 | [question] Would you rather be a cat or a dog?
7 | [option1] Cat - You would be looked after in a loving home.
8 | [option2] Dog - You would be treated well and loved.
9 |
--------------------------------------------------------------------------------
/themes/display_panels.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="Theme" load_steps=2 format=3 uid="uid://d4lj4laus1ki2"]
2 |
3 | [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lvxax"]
4 | bg_color = Color(1, 1, 1, 1)
5 | border_width_left = 10
6 | border_width_top = 10
7 | border_width_right = 10
8 | border_width_bottom = 10
9 | border_color = Color(1, 1, 1, 1)
10 | corner_radius_top_left = 20
11 | corner_radius_top_right = 20
12 | corner_radius_bottom_right = 20
13 | corner_radius_bottom_left = 20
14 |
15 | [resource]
16 | PanelContainer/styles/panel = SubResource("StyleBoxFlat_lvxax")
17 |
--------------------------------------------------------------------------------