diff --git a/.chainlit/config.toml b/.chainlit/config.toml
new file mode 100644
index 0000000..7b19fab
--- /dev/null
+++ b/.chainlit/config.toml
@@ -0,0 +1,157 @@
+[project]
+# List of environment variables to be provided by each user to use the app.
+user_env = []
+
+# Duration (in seconds) during which the session is saved when the connection is lost
+session_timeout = 3600
+
+# Duration (in seconds) of the user session expiry
+user_session_timeout = 1296000 # 15 days
+
+# Enable third parties caching (e.g., LangChain cache)
+cache = false
+
+# Whether to persist user environment variables (API keys) to the database
+# Set to true to store user env vars in DB, false to exclude them for security
+persist_user_env = false
+
+# Whether to mask user environment variables (API keys) in the UI with password type
+# Set to true to show API keys as ***, false to show them as plain text
+mask_user_env = false
+
+# Authorized origins
+allow_origins = ["*"]
+
+[features]
+# Process and display HTML in messages. This can be a security risk (see https://stackoverflow.com/questions/19603097/why-is-it-dangerous-to-render-user-generated-html-or-javascript)
+unsafe_allow_html = false
+
+# Process and display mathematical expressions. This can clash with "$" characters in messages.
+latex = false
+
+# Autoscroll new user messages at the top of the window
+user_message_autoscroll = true
+
+# Automatically tag threads with the current chat profile (if a chat profile is used)
+auto_tag_thread = true
+
+# Allow users to edit their own messages
+edit_message = true
+
+# Allow users to share threads (backend + UI). Requires an app-defined on_shared_thread_view callback.
+allow_thread_sharing = false
+
+[features.slack]
+# Add emoji reaction when message is received (requires reactions:write OAuth scope)
+reaction_on_message_received = false
+
+# Authorize users to spontaneously upload files with messages
+[features.spontaneous_file_upload]
+ enabled = false
+ # Define accepted file types using MIME types
+ # Examples:
+ # 1. For specific file types:
+ # accept = ["image/jpeg", "image/png", "application/pdf"]
+ # 2. For all files of certain type:
+ # accept = ["image/*", "audio/*", "video/*"]
+ # 3. For specific file extensions:
+ # accept = { "application/octet-stream" = [".xyz", ".pdb"] }
+ # Note: Using "*/*" is not recommended as it may cause browser warnings
+ #accept = ["*/*"]
+ #max_files = 0
+ #max_size_mb = 0
+
+[features.audio]
+ # Enable audio features
+ enabled = false
+ # Sample rate of the audio
+ sample_rate = 24000
+
+[features.mcp]
+ # Enable Model Context Protocol (MCP) features
+ enabled = false
+
+[features.mcp.sse]
+ enabled = false
+
+[features.mcp.streamable-http]
+ enabled = false
+
+[features.mcp.stdio]
+ enabled = false
+ # Only the executables in the allow list can be used for MCP stdio server.
+ # Only need the base name of the executable, e.g. "npx", not "/usr/bin/npx".
+ # Please don't comment this line for now, we need it to parse the executable name.
+ allowed_executables = [ "npx", "uvx" ]
+
+[UI]
+# Name of the assistant.
+name = "Legal AI Assistant"
+
+default_theme = "dark"
+
+# Force a specific language for all users (e.g., "en-US", "he-IL", "fr-FR")
+# If not set, the browser's language will be used
+language = "en-US"
+
+layout = "wide"
+
+default_sidebar_state = "closed"
+
+# Description of the assistant. This is used for HTML tags.
+# description = ""
+
+# Chain of Thought (CoT) display mode. Can be "hidden", "tool_call" or "full".
+cot = "full"
+
+# Specify a CSS file that can be used to customize the user interface.
+# The CSS file can be served from the public directory or via an external link.
+custom_css = "/public/styles.css"
+
+# Specify additional attributes for a custom CSS file
+# custom_css_attributes = "media=\"print\""
+
+# Specify a JavaScript file that can be used to customize the user interface.
+# The JavaScript file can be served from the public directory.
+#custom_js = "/public/test.js"
+
+# The style of alert boxes. Can be "classic" or "modern".
+alert_style = "modern"
+
+# Specify additional attributes for custom JS file
+# custom_js_attributes = "async type = \"module\""
+
+# Custom login page image, relative to public directory or external URL
+# login_page_image = "/public/custom-background.jpg"
+
+# Custom login page image filter (Tailwind internal filters, no dark/light variants)
+# login_page_image_filter = "brightness-50 grayscale"
+# login_page_image_dark_filter = "contrast-200 blur-sm"
+
+# Specify a custom meta URL (used for meta tags like og:url)
+# custom_meta_url = "https://github.com/Chainlit/chainlit"
+
+# Specify a custom meta image url.
+# custom_meta_image_url = "https://chainlit-cloud.s3.eu-west-3.amazonaws.com/logo/chainlit_banner.png"
+
+# Load assistant logo directly from URL.
+logo_file_url = ""
+
+# Load assistant avatar image directly from URL.
+default_avatar_file_url = ""
+
+# Specify a custom build directory for the frontend.
+# This can be used to customize the frontend code.
+# Be careful: If this is a relative path, it should not start with a slash.
+# custom_build = "./public/build"
+
+# Specify optional one or more custom links in the header.
+# [[UI.header_links]]
+# name = "Issues"
+# display_name = "Report Issue"
+# icon_url = "https://avatars.githubusercontent.com/u/128686189?s=200&v=4"
+# url = "https://github.com/Chainlit/chainlit/issues"
+# target = "_blank" (default) # Optional: "_self", "_parent", "_top".
+
+[meta]
+generated_by = "2.9.3"
diff --git a/.chainlit/translations/bn.json b/.chainlit/translations/bn.json
new file mode 100644
index 0000000..50353d9
--- /dev/null
+++ b/.chainlit/translations/bn.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "\u09ac\u09be\u09a4\u09bf\u09b2 \u0995\u09b0\u09c1\u09a8",
+ "confirm": "\u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u0995\u09b0\u09c1\u09a8",
+ "continue": "\u099a\u09be\u09b2\u09bf\u09af\u09bc\u09c7 \u09af\u09be\u09a8",
+ "goBack": "\u09aa\u09bf\u099b\u09a8\u09c7 \u09af\u09be\u09a8",
+ "reset": "\u09b0\u09bf\u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8",
+ "submit": "\u099c\u09ae\u09be \u09a6\u09bf\u09a8"
+ },
+ "status": {
+ "loading": "\u09b2\u09cb\u09a1 \u09b9\u099a\u09cd\u099b\u09c7...",
+ "error": {
+ "default": "\u098f\u0995\u099f\u09bf \u09a4\u09cd\u09b0\u09c1\u099f\u09bf \u0998\u099f\u09c7\u099b\u09c7",
+ "serverConnection": "\u09b8\u09be\u09b0\u09cd\u09ad\u09be\u09b0\u09c7\u09b0 \u09b8\u09be\u09a5\u09c7 \u09b8\u0982\u09af\u09cb\u0997 \u0995\u09b0\u09be \u09af\u09be\u099a\u09cd\u099b\u09c7 \u09a8\u09be"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "\u0985\u09cd\u09af\u09be\u09aa\u09cd\u09b2\u09bf\u0995\u09c7\u09b6\u09a8 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09a4\u09c7 \u09b2\u0997\u0987\u09a8 \u0995\u09b0\u09c1\u09a8",
+ "form": {
+ "email": {
+ "label": "\u0987\u09ae\u09c7\u0987\u09b2 \u09a0\u09bf\u0995\u09be\u09a8\u09be",
+ "required": "\u0987\u09ae\u09c7\u0987\u09b2 \u098f\u0995\u099f\u09bf \u0986\u09ac\u09b6\u09cd\u09af\u0995 \u0995\u09cd\u09b7\u09c7\u09a4\u09cd\u09b0",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "\u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1",
+ "required": "\u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 \u098f\u0995\u099f\u09bf \u0986\u09ac\u09b6\u09cd\u09af\u0995 \u0995\u09cd\u09b7\u09c7\u09a4\u09cd\u09b0"
+ },
+ "actions": {
+ "signin": "\u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09c1\u09a8"
+ },
+ "alternativeText": {
+ "or": "\u0985\u09a5\u09ac\u09be"
+ }
+ },
+ "errors": {
+ "default": "\u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09be \u09b8\u09ae\u09cd\u09ad\u09ac \u09b9\u099a\u09cd\u099b\u09c7 \u09a8\u09be",
+ "signin": "\u0985\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f \u09a6\u09bf\u09af\u09bc\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09be\u09b0 \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09c1\u09a8",
+ "oauthSignin": "\u0985\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f \u09a6\u09bf\u09af\u09bc\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09be\u09b0 \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09c1\u09a8",
+ "redirectUriMismatch": "\u09b0\u09bf\u09a1\u09be\u0987\u09b0\u09c7\u0995\u09cd\u099f URI \u0993\u0986\u09a5 \u0985\u09cd\u09af\u09be\u09aa \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8\u09c7\u09b0 \u09b8\u09be\u09a5\u09c7 \u09ae\u09bf\u09b2\u099b\u09c7 \u09a8\u09be",
+ "oauthCallback": "\u0985\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f \u09a6\u09bf\u09af\u09bc\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09be\u09b0 \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09c1\u09a8",
+ "oauthCreateAccount": "\u0985\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f \u09a6\u09bf\u09af\u09bc\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09be\u09b0 \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09c1\u09a8",
+ "emailCreateAccount": "\u0985\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f \u09a6\u09bf\u09af\u09bc\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09be\u09b0 \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09c1\u09a8",
+ "callback": "\u0985\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f \u09a6\u09bf\u09af\u09bc\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09be\u09b0 \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09c1\u09a8",
+ "oauthAccountNotLinked": "\u0986\u09aa\u09a8\u09be\u09b0 \u09aa\u09b0\u09bf\u099a\u09af\u09bc \u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u0995\u09b0\u09a4\u09c7, \u0986\u09aa\u09a8\u09bf \u09af\u09c7 \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f\u099f\u09bf \u09ae\u09c2\u09b2\u09a4 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09c7\u099b\u09bf\u09b2\u09c7\u09a8 \u09b8\u09c7\u099f\u09bf \u09a6\u09bf\u09af\u09bc\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09c1\u09a8",
+ "emailSignin": "\u0987\u09ae\u09c7\u0987\u09b2 \u09aa\u09be\u09a0\u09be\u09a8\u09cb \u09af\u09be\u09af\u09bc\u09a8\u09bf",
+ "emailVerify": "\u0985\u09a8\u09c1\u0997\u09cd\u09b0\u09b9 \u0995\u09b0\u09c7 \u0986\u09aa\u09a8\u09be\u09b0 \u0987\u09ae\u09c7\u0987\u09b2 \u09af\u09be\u099a\u09be\u0987 \u0995\u09b0\u09c1\u09a8, \u098f\u0995\u099f\u09bf \u09a8\u09a4\u09c1\u09a8 \u0987\u09ae\u09c7\u0987\u09b2 \u09aa\u09be\u09a0\u09be\u09a8\u09cb \u09b9\u09af\u09bc\u09c7\u099b\u09c7",
+ "credentialsSignin": "\u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u09ac\u09cd\u09af\u09b0\u09cd\u09a5 \u09b9\u09af\u09bc\u09c7\u099b\u09c7\u0964 \u0986\u09aa\u09a8\u09be\u09b0 \u09a6\u09c7\u0993\u09af\u09bc\u09be \u09a4\u09a5\u09cd\u09af \u09b8\u09a0\u09bf\u0995 \u0995\u09bf\u09a8\u09be \u09af\u09be\u099a\u09be\u0987 \u0995\u09b0\u09c1\u09a8",
+ "sessionRequired": "\u098f\u0987 \u09aa\u09c3\u09b7\u09cd\u09a0\u09be \u09a6\u09c7\u0996\u09a4\u09c7 \u0985\u09a8\u09c1\u0997\u09cd\u09b0\u09b9 \u0995\u09b0\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09c1\u09a8"
+ }
+ },
+ "provider": {
+ "continue": "{{provider}} \u09a6\u09bf\u09af\u09bc\u09c7 \u099a\u09be\u09b2\u09bf\u09af\u09bc\u09c7 \u09af\u09be\u09a8"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "\u0986\u09aa\u09a8\u09be\u09b0 \u09ac\u09be\u09b0\u09cd\u09a4\u09be \u098f\u0996\u09be\u09a8\u09c7 \u099f\u09be\u0987\u09aa \u0995\u09b0\u09c1\u09a8...",
+ "actions": {
+ "send": "\u09ac\u09be\u09b0\u09cd\u09a4\u09be \u09aa\u09be\u09a0\u09be\u09a8",
+ "stop": "\u0995\u09be\u099c \u09ac\u09a8\u09cd\u09a7 \u0995\u09b0\u09c1\u09a8",
+ "attachFiles": "\u09ab\u09be\u0987\u09b2 \u09b8\u0982\u09af\u09c1\u0995\u09cd\u09a4 \u0995\u09b0\u09c1\u09a8"
+ }
+ },
+ "speech": {
+ "start": "\u09b0\u09c7\u0995\u09b0\u09cd\u09a1\u09bf\u0982 \u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09c1\u09a8",
+ "stop": "\u09b0\u09c7\u0995\u09b0\u09cd\u09a1\u09bf\u0982 \u09ac\u09a8\u09cd\u09a7 \u0995\u09b0\u09c1\u09a8",
+ "connecting": "\u09b8\u0982\u09af\u09cb\u0997 \u0995\u09b0\u09be \u09b9\u099a\u09cd\u099b\u09c7"
+ },
+ "commands": {
+ "button": "\u099f\u09c1\u09b2\u09b8",
+ "changeTool": "\u099f\u09c1\u09b2 \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u0995\u09b0\u09c1\u09a8",
+ "availableTools": "\u0989\u09aa\u09b2\u09ac\u09cd\u09a7 \u099f\u09c1\u09b2\u09b8"
+ },
+ "fileUpload": {
+ "dragDrop": "\u098f\u0996\u09be\u09a8\u09c7 \u09ab\u09be\u0987\u09b2 \u099f\u09c7\u09a8\u09c7 \u0986\u09a8\u09c1\u09a8",
+ "browse": "\u09ab\u09be\u0987\u09b2 \u09ac\u09cd\u09b0\u09be\u0989\u099c \u0995\u09b0\u09c1\u09a8",
+ "sizeLimit": "\u09b8\u09c0\u09ae\u09be:",
+ "errors": {
+ "failed": "\u0986\u09aa\u09b2\u09cb\u09a1 \u09ac\u09cd\u09af\u09b0\u09cd\u09a5 \u09b9\u09af\u09bc\u09c7\u099b\u09c7",
+ "cancelled": "\u0986\u09aa\u09b2\u09cb\u09a1 \u09ac\u09be\u09a4\u09bf\u09b2 \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7"
+ },
+ "actions": {
+ "cancelUpload": "\u0986\u09aa\u09b2\u09cb\u09a1 \u09ac\u09be\u09a4\u09bf\u09b2 \u0995\u09b0\u09c1\u09a8",
+ "removeAttachment": "\u09b8\u0982\u09af\u09c1\u0995\u09cd\u09a4\u09bf \u09ae\u09c1\u099b\u09c7 \u09ab\u09c7\u09b2\u09c1\u09a8"
+ }
+ },
+ "messages": {
+ "status": {
+ "using": "\u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u099b\u09c7",
+ "used": "\u09ac\u09cd\u09af\u09ac\u09b9\u09c3\u09a4"
+ },
+ "actions": {
+ "copy": {
+ "button": "\u0995\u09cd\u09b2\u09bf\u09aa\u09ac\u09cb\u09b0\u09cd\u09a1\u09c7 \u0995\u09aa\u09bf \u0995\u09b0\u09c1\u09a8",
+ "success": "\u0995\u09aa\u09bf \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7!"
+ }
+ },
+ "feedback": {
+ "positive": "\u09b8\u09b9\u09be\u09af\u09bc\u0995",
+ "negative": "\u09b8\u09b9\u09be\u09af\u09bc\u0995 \u09a8\u09af\u09bc",
+ "edit": "\u09aa\u09cd\u09b0\u09a4\u09bf\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u09b8\u09ae\u09cd\u09aa\u09be\u09a6\u09a8\u09be \u0995\u09b0\u09c1\u09a8",
+ "dialog": {
+ "title": "\u09ae\u09a8\u09cd\u09a4\u09ac\u09cd\u09af \u09af\u09cb\u0997 \u0995\u09b0\u09c1\u09a8",
+ "submit": "\u09aa\u09cd\u09b0\u09a4\u09bf\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u099c\u09ae\u09be \u09a6\u09bf\u09a8",
+ "yourFeedback": "\u0986\u09aa\u09a8\u09be\u09b0 \u09aa\u09cd\u09b0\u09a4\u09bf\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be..."
+ },
+ "status": {
+ "updating": "\u09b9\u09be\u09b2\u09a8\u09be\u0997\u09be\u09a6 \u0995\u09b0\u09be \u09b9\u099a\u09cd\u099b\u09c7",
+ "updated": "\u09aa\u09cd\u09b0\u09a4\u09bf\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u09b9\u09be\u09b2\u09a8\u09be\u0997\u09be\u09a6 \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7"
+ }
+ }
+ },
+ "history": {
+ "title": "\u09b8\u09b0\u09cd\u09ac\u09b6\u09c7\u09b7 \u0987\u09a8\u09aa\u09c1\u099f",
+ "empty": "\u0995\u09cb\u09a8\u09cb \u09a4\u09a5\u09cd\u09af \u09a8\u09c7\u0987...",
+ "show": "\u0987\u09a4\u09bf\u09b9\u09be\u09b8 \u09a6\u09c7\u0996\u09c1\u09a8"
+ },
+ "settings": {
+ "title": "\u09b8\u09c7\u099f\u09bf\u0982\u09b8 \u09aa\u09cd\u09af\u09be\u09a8\u09c7\u09b2",
+ "customize": "\u098f\u0996\u09be\u09a8\u09c7 \u0986\u09aa\u09a8\u09be\u09b0 \u099a\u09cd\u09af\u09be\u099f \u09b8\u09c7\u099f\u09bf\u0982\u09b8 \u0995\u09be\u09b8\u09cd\u099f\u09ae\u09be\u0987\u099c \u0995\u09b0\u09c1\u09a8"
+ },
+ "watermark": "\u098f\u09b2\u098f\u09b2\u098f\u09ae \u09ad\u09c1\u09b2 \u0995\u09b0\u09a4\u09c7 \u09aa\u09be\u09b0\u09c7\u0964 \u0997\u09c1\u09b0\u09c1\u09a4\u09cd\u09ac\u09aa\u09c2\u09b0\u09cd\u09a3 \u09a4\u09a5\u09cd\u09af \u09af\u09be\u099a\u09be\u0987 \u0995\u09b0\u09be\u09b0 \u0995\u09a5\u09be \u09ac\u09bf\u09ac\u09c7\u099a\u09a8\u09be \u0995\u09b0\u09c1\u09a8\u0964"
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "\u09aa\u09c2\u09b0\u09cd\u09ac\u09ac\u09b0\u09cd\u09a4\u09c0 \u099a\u09cd\u09af\u09be\u099f",
+ "filters": {
+ "search": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8",
+ "placeholder": "Search conversations..."
+ },
+ "timeframes": {
+ "today": "\u0986\u099c",
+ "yesterday": "\u0997\u09a4\u0995\u09be\u09b2",
+ "previous7days": "\u0997\u09a4 \u09ed \u09a6\u09bf\u09a8",
+ "previous30days": "\u0997\u09a4 \u09e9\u09e6 \u09a6\u09bf\u09a8"
+ },
+ "empty": "\u0995\u09cb\u09a8\u09cb \u09a5\u09cd\u09b0\u09c7\u09a1 \u09aa\u09be\u0993\u09af\u09bc\u09be \u09af\u09be\u09af\u09bc\u09a8\u09bf",
+ "actions": {
+ "close": "\u09b8\u09be\u0987\u09a1\u09ac\u09be\u09b0 \u09ac\u09a8\u09cd\u09a7 \u0995\u09b0\u09c1\u09a8",
+ "open": "\u09b8\u09be\u0987\u09a1\u09ac\u09be\u09b0 \u0996\u09c1\u09b2\u09c1\u09a8"
+ }
+ },
+ "thread": {
+ "untitled": "\u09b6\u09bf\u09b0\u09cb\u09a8\u09be\u09ae\u09b9\u09c0\u09a8 \u0986\u09b2\u09cb\u099a\u09a8\u09be",
+ "menu": {
+ "rename": "\u09aa\u09c1\u09a8\u0983\u09a8\u09be\u09ae\u0995\u09b0\u09a3",
+ "share": "\u09b6\u09c7\u09af\u09bc\u09be\u09b0",
+ "delete": "Delete"
+ },
+ "actions": {
+ "share": {
+ "title": "\u099a\u09cd\u09af\u09be\u099f\u09c7\u09b0 \u09b2\u09bf\u0999\u09cd\u0995 \u09b6\u09c7\u09af\u09bc\u09be\u09b0 \u0995\u09b0\u09c1\u09a8",
+ "button": "\u09b6\u09c7\u09af\u09bc\u09be\u09b0",
+ "status": {
+ "copied": "\u09b2\u09bf\u0999\u09cd\u0995 \u0995\u09aa\u09bf \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7",
+ "created": "\u09b6\u09c7\u09af\u09bc\u09be\u09b0 \u09b2\u09bf\u0999\u09cd\u0995 \u09a4\u09c8\u09b0\u09bf \u09b9\u09af\u09bc\u09c7\u099b\u09c7!",
+ "unshared": "\u098f\u0987 \u09a5\u09cd\u09b0\u09c7\u09a1\u09c7\u09b0 \u099c\u09a8\u09cd\u09af \u09b6\u09c7\u09af\u09bc\u09be\u09b0\u09bf\u0982 \u0985\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7"
+ },
+ "error": {
+ "create": "\u09b6\u09c7\u09af\u09bc\u09be\u09b0 \u09b2\u09bf\u0999\u09cd\u0995 \u09a4\u09c8\u09b0\u09bf \u0995\u09b0\u09a4\u09c7 \u09ac\u09cd\u09af\u09b0\u09cd\u09a5",
+ "unshare": "\u09a5\u09cd\u09b0\u09c7\u09a1\u09c7\u09b0 \u09b6\u09c7\u09af\u09bc\u09be\u09b0\u09bf\u0982 \u09ac\u09a8\u09cd\u09a7 \u0995\u09b0\u09a4\u09c7 \u09ac\u09cd\u09af\u09b0\u09cd\u09a5"
+ }
+ },
+ "delete": {
+ "title": "\u09ae\u09c1\u099b\u09c7 \u09ab\u09c7\u09b2\u09be \u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u0995\u09b0\u09c1\u09a8",
+ "description": "\u098f\u099f\u09bf \u09a5\u09cd\u09b0\u09c7\u09a1 \u098f\u09ac\u0982 \u098f\u09b0 \u09ac\u09be\u09b0\u09cd\u09a4\u09be \u0993 \u0989\u09aa\u09be\u09a6\u09be\u09a8\u0997\u09c1\u09b2\u09bf \u09ae\u09c1\u099b\u09c7 \u09ab\u09c7\u09b2\u09ac\u09c7\u0964 \u098f\u0987 \u0995\u09be\u099c\u099f\u09bf \u09aa\u09c2\u09b0\u09cd\u09ac\u09be\u09ac\u09b8\u09cd\u09a5\u09be\u09af\u09bc \u09ab\u09c7\u09b0\u09be\u09a8\u09cb \u09af\u09be\u09ac\u09c7 \u09a8\u09be",
+ "success": "\u099a\u09cd\u09af\u09be\u099f \u09ae\u09c1\u099b\u09c7 \u09ab\u09c7\u09b2\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7",
+ "inProgress": "\u099a\u09cd\u09af\u09be\u099f \u09ae\u09c1\u099b\u09c7 \u09ab\u09c7\u09b2\u09be \u09b9\u099a\u09cd\u099b\u09c7"
+ },
+ "rename": {
+ "title": "\u09a5\u09cd\u09b0\u09c7\u09a1\u09c7\u09b0 \u09a8\u09be\u09ae \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u0995\u09b0\u09c1\u09a8",
+ "description": "\u098f\u0987 \u09a5\u09cd\u09b0\u09c7\u09a1\u09c7\u09b0 \u099c\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u09a8\u09a4\u09c1\u09a8 \u09a8\u09be\u09ae \u09a6\u09bf\u09a8",
+ "form": {
+ "name": {
+ "label": "\u09a8\u09be\u09ae",
+ "placeholder": "\u09a8\u09a4\u09c1\u09a8 \u09a8\u09be\u09ae \u09b2\u09bf\u0996\u09c1\u09a8"
+ }
+ },
+ "success": "\u09a5\u09cd\u09b0\u09c7\u09a1\u09c7\u09b0 \u09a8\u09be\u09ae \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7!",
+ "inProgress": "\u09a5\u09cd\u09b0\u09c7\u09a1\u09c7\u09b0 \u09a8\u09be\u09ae \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u0995\u09b0\u09be \u09b9\u099a\u09cd\u099b\u09c7"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "\u099a\u09cd\u09af\u09be\u099f",
+ "readme": "\u09b0\u09bf\u09a1\u09ae\u09bf",
+ "theme": {
+ "light": "Light Theme",
+ "dark": "Dark Theme",
+ "system": "Follow System"
+ }
+ },
+ "newChat": {
+ "button": "\u09a8\u09a4\u09c1\u09a8 \u099a\u09cd\u09af\u09be\u099f",
+ "dialog": {
+ "title": "\u09a8\u09a4\u09c1\u09a8 \u099a\u09cd\u09af\u09be\u099f \u09a4\u09c8\u09b0\u09bf \u0995\u09b0\u09c1\u09a8",
+ "description": "\u098f\u099f\u09bf \u0986\u09aa\u09a8\u09be\u09b0 \u09ac\u09b0\u09cd\u09a4\u09ae\u09be\u09a8 \u099a\u09cd\u09af\u09be\u099f \u0987\u09a4\u09bf\u09b9\u09be\u09b8 \u09ae\u09c1\u099b\u09c7 \u09ab\u09c7\u09b2\u09ac\u09c7\u0964 \u0986\u09aa\u09a8\u09bf \u0995\u09bf \u099a\u09be\u09b2\u09bf\u09af\u09bc\u09c7 \u09af\u09c7\u09a4\u09c7 \u099a\u09be\u09a8?",
+ "tooltip": "\u09a8\u09a4\u09c1\u09a8 \u099a\u09cd\u09af\u09be\u099f"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "\u09b8\u09c7\u099f\u09bf\u0982\u09b8",
+ "settingsKey": "S",
+ "apiKeys": "\u098f\u09aa\u09bf\u0986\u0987 \u0995\u09c0",
+ "logout": "\u09b2\u0997\u0986\u0989\u099f"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "\u09aa\u09cd\u09b0\u09af\u09bc\u09cb\u099c\u09a8\u09c0\u09af\u09bc \u098f\u09aa\u09bf\u0986\u0987 \u0995\u09c0",
+ "description": "\u098f\u0987 \u0985\u09cd\u09af\u09be\u09aa\u09cd\u09b2\u09bf\u0995\u09c7\u09b6\u09a8 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09a4\u09c7 \u09a8\u09bf\u09ae\u09cd\u09a8\u09b2\u09bf\u0996\u09bf\u09a4 \u098f\u09aa\u09bf\u0986\u0987 \u0995\u09c0 \u09aa\u09cd\u09b0\u09af\u09bc\u09cb\u099c\u09a8\u0964 \u0995\u09c0\u0997\u09c1\u09b2\u09bf \u0986\u09aa\u09a8\u09be\u09b0 \u09a1\u09bf\u09ad\u09be\u0987\u09b8\u09c7\u09b0 \u09b2\u09cb\u0995\u09be\u09b2 \u09b8\u09cd\u099f\u09cb\u09b0\u09c7\u099c\u09c7 \u09b8\u0982\u09b0\u0995\u09cd\u09b7\u09bf\u09a4 \u09a5\u09be\u0995\u09c7\u0964",
+ "success": {
+ "saved": "\u09b8\u09ab\u09b2\u09ad\u09be\u09ac\u09c7 \u09b8\u0982\u09b0\u0995\u09cd\u09b7\u09bf\u09a4 \u09b9\u09af\u09bc\u09c7\u099b\u09c7"
+ }
+ },
+ "alerts": {
+ "info": "Info",
+ "note": "Note",
+ "tip": "Tip",
+ "important": "Important",
+ "warning": "Warning",
+ "caution": "Caution",
+ "debug": "Debug",
+ "example": "Example",
+ "success": "Success",
+ "help": "Help",
+ "idea": "Idea",
+ "pending": "Pending",
+ "security": "Security",
+ "beta": "Beta",
+ "best-practice": "Best Practice"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "\u09ac\u09c7\u099b\u09c7 \u09a8\u09bf\u09a8..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/de-DE.json b/.chainlit/translations/de-DE.json
new file mode 100644
index 0000000..5153df6
--- /dev/null
+++ b/.chainlit/translations/de-DE.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "Abbrechen",
+ "confirm": "Best\u00e4tigen",
+ "continue": "Fortfahren",
+ "goBack": "Zur\u00fcck",
+ "reset": "Zur\u00fccksetzen",
+ "submit": "Absenden"
+ },
+ "status": {
+ "loading": "L\u00e4dt...",
+ "error": {
+ "default": "Ein Fehler ist aufgetreten",
+ "serverConnection": "Server konnte nicht erreicht werden"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "Melde dich an, um auf die App zuzugreifen",
+ "form": {
+ "email": {
+ "label": "E-Mail Adresse",
+ "required": "E-Mail Adresse ist ein Pflichtfeld",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "Passwort",
+ "required": "Passwort ist ein Pflichtfeld"
+ },
+ "actions": {
+ "signin": "Anmelden"
+ },
+ "alternativeText": {
+ "or": "ODER"
+ }
+ },
+ "errors": {
+ "default": "Anmeldung fehlgeschlagen",
+ "signin": "Versuche dich mit einem anderen Konto anzumelden",
+ "oauthSignin": "Versuche dich mit einem anderen Konto anzumelden",
+ "redirectUriMismatch": "Der Redirect-URI stimmt nicht mit der Konfiguration der Oauth-Anwendung \u00fcberein",
+ "oauthCallback": "Versuche dich mit einem anderen Konto anzumelden",
+ "oauthCreateAccount": "Versuche dich mit einem anderen Konto anzumelden",
+ "emailCreateAccount": "Versuche dich mit einem anderen Konto anzumelden",
+ "callback": "Versuche dich mit einem anderen Konto anzumelden",
+ "oauthAccountNotLinked": "Um die Identit\u00e4t zu best\u00e4tigen, melde dich mit demselben Konto an, das du urspr\u00fcnglich verwendet hast",
+ "emailSignin": "Die E-Mail konnte nicht gesendet werden",
+ "emailVerify": "Es wurde eine neue E-Mail versandt. Bitte \u00fcberpr\u00fcfe dein E-Mail Postfach",
+ "credentialsSignin": "Anmeldung fehlgeschlagen. \u00dcberpr\u00fcfe, ob die angegebenen Benutzerdaten korrekt sind",
+ "sessionRequired": "Bitte melde dich an, um auf diese Seite zuzugreifen"
+ }
+ },
+ "provider": {
+ "continue": "Fortfahren mit {{provider}}"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "Nachricht eingeben...",
+ "actions": {
+ "send": "Nachricht senden",
+ "stop": "Aufgabe stoppen",
+ "attachFiles": "Dateien anh\u00e4ngen"
+ }
+ },
+ "commands": {
+ "button": "Tools",
+ "changeTool": "Tool wechseln",
+ "availableTools": "Verf\u00fcgbare Tools"
+ },
+ "speech": {
+ "start": "Aufnahme starten",
+ "stop": "Aufnahme stoppen",
+ "connecting": "Verbinde"
+ },
+ "fileUpload": {
+ "dragDrop": "Ziehe deine Dateien hierher",
+ "browse": "Dateien durchsuchen",
+ "sizeLimit": "Limit:",
+ "errors": {
+ "failed": "Hochladen fehlgeschlagen",
+ "cancelled": "Abbruch des hochladens von"
+ },
+ "actions": {
+ "cancelUpload": "Upload abbrechen",
+ "removeAttachment": "Anhang entfernen"
+ }
+ },
+ "messages": {
+ "status": {
+ "using": "Verwendet",
+ "used": "Verwendete"
+ },
+ "actions": {
+ "copy": {
+ "button": "In Zwischenablage kopieren",
+ "success": "Kopiert!"
+ }
+ },
+ "feedback": {
+ "positive": "Hilfreich",
+ "negative": "Nicht hilfreich",
+ "edit": "Feedback editieren",
+ "dialog": {
+ "title": "F\u00fcge einen Kommentar hinzu",
+ "submit": "Feedback absenden",
+ "yourFeedback": "Dein Feedback..."
+ },
+ "status": {
+ "updating": "Aktualisiert",
+ "updated": "Feedback aktualisiert"
+ }
+ }
+ },
+ "history": {
+ "title": "Vergangene Eingaben",
+ "empty": "Leer...",
+ "show": "Historie anzeigen"
+ },
+ "settings": {
+ "title": "Einstellungen",
+ "customize": "Passe die Chat Einstellungen hier an"
+ },
+ "watermark": "LLMs k\u00f6nnen Fehler machen. \u00dcberpr\u00fcfe bitte stets die Inhalte."
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "Vergangene Chats",
+ "filters": {
+ "search": "Suche",
+ "placeholder": "Suche konversationen..."
+ },
+ "timeframes": {
+ "today": "Heute",
+ "yesterday": "Gestern",
+ "previous7days": "Vor 7 Tagen",
+ "previous30days": "Vor 30 Tagen"
+ },
+ "empty": "Kein Chat gefunden",
+ "actions": {
+ "close": "Seitenleiste schlie\u00dfen",
+ "open": "Seitenleiste \u00f6ffnen"
+ }
+ },
+ "thread": {
+ "untitled": "Unbenannter Thread",
+ "menu": {
+ "rename": "Umbenennen",
+ "share": "Teilen",
+ "delete": "L\u00f6schen"
+ },
+ "actions": {
+ "share": {
+ "title": "Thread l\u00f6schen best\u00e4tigen",
+ "button": "Teilen",
+ "status": {
+ "copied": "Link kopiert",
+ "created": "Freigabelink erstellt!",
+ "unshared": "Teilen ist f\u00fcr diesen Thread deaktiviert"
+ },
+ "error": {
+ "create": "Fehler beim Erstellen des Freigabelinks",
+ "unshare": "Freigabe des Threads konnte nicht aufgehoben werden"
+ }
+ },
+ "delete": {
+ "title": "L\u00f6schen best\u00e4tigen",
+ "description": "Dies wird den Thread sowie seine Nachrichten und Elemente l\u00f6schen. Dies kann nicht r\u00fcckg\u00e4ngig gemacht werden",
+ "success": "Chat gel\u00f6scht",
+ "inProgress": "Chat wird gel\u00f6scht"
+ },
+ "rename": {
+ "title": "Thread umbenennen",
+ "description": "Gebe einen neuen Namen f\u00fcr den Thread ein",
+ "form": {
+ "name": {
+ "label": "Name",
+ "placeholder": "Neuen Namen eingeben"
+ }
+ },
+ "success": "Thread umbenannt!",
+ "inProgress": "Thread wird umbenannt"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "Chat",
+ "readme": "Anleitung",
+ "theme": {
+ "light": "Helles Design",
+ "dark": "Dunkles Design",
+ "system": "System Design"
+ }
+ },
+ "newChat": {
+ "button": "Neuer Chat",
+ "dialog": {
+ "title": "M\u00f6chtest du einen neuen Chat erstellen?",
+ "description": "Es werden die aktuellen Nachrichten gel\u00f6scht und ein neuer Chat ge\u00f6ffnet.",
+ "tooltip": "Neuer Chat"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "Einstellungen",
+ "settingsKey": "S",
+ "apiKeys": "API Schl\u00fcssel",
+ "logout": "Abmelden"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "Ben\u00f6tigte API Schl\u00fcssel",
+ "description": "Um diese App zu nutzen, werden die folgenden API Schl\u00fcssel ben\u00f6tigt. Die Schl\u00fcssel werden im lokalen Speicher Ihres Ger\u00e4ts gespeichert.",
+ "success": {
+ "saved": "Erfolgreich gespeichert"
+ }
+ },
+ "alerts": {
+ "info": "Info",
+ "note": "Hinweis",
+ "tip": "Tipp",
+ "important": "Wichtig",
+ "warning": "Warnung",
+ "caution": "Vorsicht",
+ "debug": "Debug",
+ "example": "Beispiel",
+ "success": "Erfolg",
+ "help": "Hilfe",
+ "idea": "Idee",
+ "pending": "Ausstehend",
+ "security": "Sicherheit",
+ "beta": "Beta",
+ "best-practice": "Bew\u00e4hrte Praxis"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "W\u00e4hle aus..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/el-GR.json b/.chainlit/translations/el-GR.json
new file mode 100644
index 0000000..103963b
--- /dev/null
+++ b/.chainlit/translations/el-GR.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "\u0386\u03ba\u03c5\u03c1\u03bf",
+ "confirm": "\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7",
+ "continue": "\u03a3\u03c5\u03bd\u03ad\u03c7\u03b5\u03b9\u03b1",
+ "goBack": "\u0395\u03c0\u03b9\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae",
+ "reset": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac",
+ "submit": "\u03a5\u03c0\u03bf\u03b2\u03bf\u03bb\u03ae"
+ },
+ "status": {
+ "loading": "\u03a6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7...",
+ "error": {
+ "default": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1",
+ "serverConnection": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03af\u03b1 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "\u03a3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03ba\u03c4\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae",
+ "form": {
+ "email": {
+ "label": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03bd\u03b9\u03ba\u03bf\u03cd \u03c4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b5\u03af\u03bf\u03c5",
+ "required": "\u03a4\u03bf email \u03b5\u03af\u03bd\u03b1\u03b9 \u03c5\u03c0\u03bf\u03c7\u03c1\u03b5\u03c9\u03c4\u03b9\u03ba\u03cc \u03c0\u03b5\u03b4\u03af\u03bf",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2",
+ "required": "\u039f \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c5\u03c0\u03bf\u03c7\u03c1\u03b5\u03c9\u03c4\u03b9\u03ba\u03cc \u03c0\u03b5\u03b4\u03af\u03bf"
+ },
+ "actions": {
+ "signin": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7"
+ },
+ "alternativeText": {
+ "or": "\u03ae"
+ }
+ },
+ "errors": {
+ "default": "\u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7",
+ "signin": "\u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03b4\u03b9\u03b1\u03c6\u03bf\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc",
+ "oauthSignin": "\u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03b4\u03b9\u03b1\u03c6\u03bf\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc",
+ "redirectUriMismatch": "\u039f \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2 \u03b1\u03bd\u03b1\u03ba\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7\u03c2 \u03b4\u03b5\u03bd \u03c4\u03b1\u03b9\u03c1\u03b9\u03ac\u03b6\u03b5\u03b9 \u03bc\u03b5 \u03c4\u03b7 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b1\u03c5\u03b8\u03b5\u03bd\u03c4\u03b9\u03ba\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b7\u03c2 \u03c4\u03b7\u03c2 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2",
+ "oauthCallback": "\u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03b4\u03b9\u03b1\u03c6\u03bf\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc",
+ "oauthCreateAccount": "\u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03b4\u03b9\u03b1\u03c6\u03bf\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc",
+ "emailCreateAccount": "\u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03b4\u03b9\u03b1\u03c6\u03bf\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc",
+ "callback": "\u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03b4\u03b9\u03b1\u03c6\u03bf\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc",
+ "oauthAccountNotLinked": "\u0393\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03ac \u03c3\u03b1\u03c2, \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03af\u03b4\u03b9\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b1\u03c4\u03b5 \u03b1\u03c1\u03c7\u03b9\u03ba\u03ac",
+ "emailSignin": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b1\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ae \u03c4\u03bf\u03c5 email",
+ "emailVerify": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03c0\u03b1\u03bb\u03b7\u03b8\u03b5\u03cd\u03c3\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03bd\u03b9\u03ba\u03bf\u03cd \u03c4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b5\u03af\u03bf\u03c5 \u03c3\u03b1\u03c2, \u03ad\u03bd\u03b1 \u03bd\u03ad\u03bf email \u03c3\u03b1\u03c2 \u03ad\u03c7\u03b5\u03b9 \u03c3\u03c4\u03b1\u03bb\u03b5\u03af",
+ "credentialsSignin": "\u0397 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5. \u0395\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03c0\u03bf\u03c5 \u03b4\u03ce\u03c3\u03b1\u03c4\u03b5 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03c9\u03c3\u03c4\u03ac",
+ "sessionRequired": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03ba\u03c4\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1"
+ }
+ },
+ "provider": {
+ "continue": "\u03a3\u03c5\u03bd\u03ad\u03c7\u03b5\u03b9\u03b1 \u03bc\u03b5 {{provider}}"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "\u03a0\u03bb\u03b7\u03ba\u03c4\u03c1\u03bf\u03bb\u03bf\u03b3\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03bc\u03ae\u03bd\u03c5\u03bc\u03ac \u03c3\u03b1\u03c2 \u03b5\u03b4\u03ce...",
+ "actions": {
+ "send": "\u0391\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ae \u03bc\u03b7\u03bd\u03cd\u03bc\u03b1\u03c4\u03bf\u03c2",
+ "stop": "\u0394\u03b9\u03b1\u03ba\u03bf\u03c0\u03ae \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2",
+ "attachFiles": "\u0395\u03c0\u03b9\u03c3\u03cd\u03bd\u03b1\u03c8\u03b7 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd"
+ }
+ },
+ "commands": {
+ "button": "\u0395\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03b1",
+ "changeTool": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ae \u0395\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03bf\u03c5",
+ "availableTools": "\u0394\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b1 \u0395\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03b1"
+ },
+ "speech": {
+ "start": "\u0388\u03bd\u03b1\u03c1\u03be\u03b7 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2",
+ "stop": "\u0394\u03b9\u03b1\u03ba\u03bf\u03c0\u03ae \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2",
+ "connecting": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7"
+ },
+ "fileUpload": {
+ "dragDrop": "\u03a3\u03cd\u03c1\u03b5\u03c4\u03b5 \u03b1\u03c1\u03c7\u03b5\u03af\u03b1 \u03b5\u03b4\u03ce",
+ "browse": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd",
+ "sizeLimit": "\u038c\u03c1\u03b9\u03bf:",
+ "errors": {
+ "failed": "\u0397 \u03bc\u03b5\u03c4\u03b1\u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5",
+ "cancelled": "\u0391\u03ba\u03c5\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5 \u03b7 \u03bc\u03b5\u03c4\u03b1\u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5"
+ },
+ "actions": {
+ "cancelUpload": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7 \u03bc\u03b5\u03c4\u03b1\u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7\u03c2",
+ "removeAttachment": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03b5\u03c0\u03b9\u03c3\u03cd\u03bd\u03b1\u03c8\u03b7\u03c2"
+ }
+ },
+ "messages": {
+ "status": {
+ "using": "\u039c\u03b5 \u03c4\u03b7 \u03c7\u03c1\u03ae\u03c3\u03b7",
+ "used": "\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03b8\u03b7\u03ba\u03b5"
+ },
+ "actions": {
+ "copy": {
+ "button": "\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03c3\u03c4\u03bf \u03c0\u03c1\u03cc\u03c7\u03b5\u03b9\u03c1\u03bf",
+ "success": "\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03ac\u03c6\u03b7\u03ba\u03b5!"
+ }
+ },
+ "feedback": {
+ "positive": "\u03a7\u03c1\u03ae\u03c3\u03b9\u03bc\u03bf\u03c2",
+ "negative": "\u039c\u03b7 \u03c7\u03c1\u03ae\u03c3\u03b9\u03bc\u03bf\u03c2",
+ "edit": "\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c3\u03c7\u03bf\u03bb\u03af\u03c9\u03bd",
+ "dialog": {
+ "title": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03c3\u03c7\u03bf\u03bb\u03af\u03bf\u03c5",
+ "submit": "\u03a5\u03c0\u03bf\u03b2\u03bf\u03bb\u03ae \u03c3\u03c7\u03bf\u03bb\u03af\u03c9\u03bd",
+ "yourFeedback": "\u0397 \u03b3\u03bd\u03ce\u03bc\u03b7 \u03c3\u03b1\u03c2"
+ },
+ "status": {
+ "updating": "\u0395\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03bd\u03b5\u03c4\u03b1\u03b9",
+ "updated": "\u03a4\u03b1 \u03c3\u03c7\u03cc\u03bb\u03b9\u03b1 \u03b5\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03b8\u03b7\u03ba\u03b1\u03bd"
+ }
+ }
+ },
+ "history": {
+ "title": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b5\u03c2 \u03b5\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ad\u03c2",
+ "empty": "\u03a4\u03cc\u03c3\u03bf \u03ac\u03b4\u03b5\u03b9\u03bf...",
+ "show": "\u03a0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ae \u03b9\u03c3\u03c4\u03bf\u03c1\u03b9\u03ba\u03bf\u03cd"
+ },
+ "settings": {
+ "title": "\u03a0\u03af\u03bd\u03b1\u03ba\u03b1\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c9\u03bd",
+ "customize": "\u03a0\u03c1\u03bf\u03c3\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae"
+ },
+ "watermark": "\u03a4\u03b1 \u039c\u0393\u039c \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03ba\u03ac\u03bd\u03bf\u03c5\u03bd \u03bb\u03ac\u03b8\u03b7. \u0395\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c3\u03b7\u03bc\u03b1\u03bd\u03c4\u03b9\u03ba\u03ad\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2."
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "\u03a0\u03b1\u03bb\u03b1\u03b9\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b5\u03c2",
+ "filters": {
+ "search": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7",
+ "placeholder": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03b9\u03ce\u03bd..."
+ },
+ "timeframes": {
+ "today": "\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1",
+ "yesterday": "\u03a7\u03b8\u03b5\u03c2",
+ "previous7days": "\u03a0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b5\u03c2 7 \u03b7\u03bc\u03ad\u03c1\u03b5\u03c2",
+ "previous30days": "\u03a0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b5\u03c2 30 \u03b7\u03bc\u03ad\u03c1\u03b5\u03c2"
+ },
+ "empty": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03bd\u03ae\u03bc\u03b1\u03c4\u03b1",
+ "actions": {
+ "close": "\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf \u03c0\u03bb\u03b1\u03ca\u03bd\u03ae\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
+ "open": "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c0\u03bb\u03b1\u03ca\u03bd\u03ae\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2"
+ }
+ },
+ "thread": {
+ "untitled": "\u03a3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1 \u03c7\u03c9\u03c1\u03af\u03c2 \u03c4\u03af\u03c4\u03bb\u03bf",
+ "menu": {
+ "rename": "\u039c\u03b5\u03c4\u03bf\u03bd\u03bf\u03bc\u03b1\u03c3\u03af\u03b1",
+ "share": "\u039a\u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",
+ "delete": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae"
+ },
+ "actions": {
+ "share": {
+ "title": "\u039a\u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5 \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1\u03c2",
+ "button": "\u039a\u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",
+ "status": {
+ "copied": "\u039f \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2 \u03b1\u03bd\u03c4\u03b9\u03b3\u03c1\u03ac\u03c6\u03b7\u03ba\u03b5",
+ "created": "\u039f \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2 \u03ba\u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03b8\u03b7\u03ba\u03b5!",
+ "unshared": "\u0397 \u03ba\u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03b8\u03b7\u03ba\u03b5 \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03bd\u03ae\u03bc\u03b1"
+ },
+ "error": {
+ "create": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1\u03c2 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5 \u03ba\u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2",
+ "unshare": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03b4\u03b9\u03b1\u03ba\u03bf\u03c0\u03ae\u03c2 \u03ba\u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 \u03bd\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2"
+ }
+ },
+ "delete": {
+ "title": "\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7 \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2",
+ "description": "\u0391\u03c5\u03c4\u03cc \u03b8\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03b9 \u03c4\u03bf \u03bd\u03ae\u03bc\u03b1 \u03ba\u03b1\u03b8\u03ce\u03c2 \u03ba\u03b1\u03b9 \u03c4\u03b1 \u03bc\u03b7\u03bd\u03cd\u03bc\u03b1\u03c4\u03b1 \u03ba\u03b1\u03b9 \u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03c4\u03bf\u03c5. \u0391\u03c5\u03c4\u03ae \u03b7 \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03b1 \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b1\u03bd\u03b1\u03b9\u03c1\u03b5\u03b8\u03b5\u03af.",
+ "success": "\u0397 \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c6\u03b7\u03ba\u03b5",
+ "inProgress": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1\u03c2"
+ },
+ "rename": {
+ "title": "\u039c\u03b5\u03c4\u03bf\u03bd\u03bf\u03bc\u03b1\u03c3\u03af\u03b1 \u039d\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2",
+ "description": "\u0395\u03b9\u03c3\u03b1\u03b3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03bd\u03ad\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03bd\u03ae\u03bc\u03b1",
+ "form": {
+ "name": {
+ "label": "\u038c\u03bd\u03bf\u03bc\u03b1",
+ "placeholder": "\u0395\u03b9\u03c3\u03b1\u03b3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03bd\u03ad\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1"
+ }
+ },
+ "success": "\u03a4\u03bf \u03bd\u03ae\u03bc\u03b1 \u03bc\u03b5\u03c4\u03bf\u03bd\u03bf\u03bc\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5!",
+ "inProgress": "\u039c\u03b5\u03c4\u03bf\u03bd\u03bf\u03bc\u03b1\u03c3\u03af\u03b1 \u039d\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "\u03a3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1",
+ "readme": "\u0394\u03b9\u03ac\u03b2\u03b1\u03c3\u03ad \u03bc\u03b5",
+ "theme": {
+ "light": "\u03a6\u03c9\u03c4\u03b5\u03b9\u03bd\u03cc \u0398\u03ad\u03bc\u03b1",
+ "dark": "\u03a3\u03ba\u03bf\u03c4\u03b5\u03b9\u03bd\u03cc \u03b8\u03ad\u03bc\u03b1",
+ "system": "\u0391\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03c3\u03cd\u03c3\u03c4\u03b7\u03bc\u03b1"
+ }
+ },
+ "newChat": {
+ "button": "\u039d\u03ad\u03b1 \u03a3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1",
+ "dialog": {
+ "title": "\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u039d\u03ad\u03b1\u03c2 \u03a3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1\u03c2",
+ "description": "\u0391\u03c5\u03c4\u03cc \u03b8\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03b9 \u03c4\u03bf \u03c4\u03c1\u03ad\u03c7\u03bf\u03bd \u03b9\u03c3\u03c4\u03bf\u03c1\u03b9\u03ba\u03cc \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1\u03c2 \u03c3\u03b1\u03c2. \u0395\u03af\u03c3\u03c4\u03b5 \u03b2\u03ad\u03b2\u03b1\u03b9\u03bf\u03b9 \u03cc\u03c4\u03b9 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03c4\u03b5;",
+ "tooltip": "\u039d\u03ad\u03b1 \u03a3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2",
+ "settingsKey": "S",
+ "apiKeys": "\u039a\u03bb\u03b5\u03b9\u03b4\u03b9\u03ac API",
+ "logout": "\u0391\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "\u0391\u03c0\u03b1\u03b9\u03c4\u03bf\u03cd\u03bc\u03b5\u03bd\u03b1 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03ac API",
+ "description": "\u0393\u03b9\u03b1 \u03bd\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae, \u03b1\u03c0\u03b1\u03b9\u03c4\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9 \u03c4\u03b1 \u03b1\u03ba\u03cc\u03bb\u03bf\u03c5\u03b8\u03b1 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03ac API. \u03a4\u03b1 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03ac \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b1 \u03c3\u03c4\u03bf\u03bd \u03c4\u03bf\u03c0\u03b9\u03ba\u03cc \u03c7\u03ce\u03c1\u03bf \u03b1\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7\u03c2 \u03c4\u03b7\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2 \u03c3\u03b1\u03c2.",
+ "success": {
+ "saved": "\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03c4\u03b7\u03ba\u03b5 \u03bc\u03b5 \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03af\u03b1"
+ }
+ },
+ "alerts": {
+ "info": "\u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2",
+ "note": "\u03a3\u03b7\u03bc\u03b5\u03af\u03c9\u03c3\u03b7",
+ "tip": "\u03a3\u03c5\u03bc\u03b2\u03bf\u03c5\u03bb\u03ae",
+ "important": "\u03a3\u03b7\u03bc\u03b1\u03bd\u03c4\u03b9\u03ba\u03cc",
+ "warning": "\u03a0\u03c1\u03bf\u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",
+ "caution": "\u03a0\u03c1\u03bf\u03c3\u03bf\u03c7\u03ae",
+ "debug": "\u0395\u03bd\u03c4\u03bf\u03c0\u03b9\u03c3\u03bc\u03cc\u03c2 \u03c3\u03c6\u03b1\u03bb\u03bc\u03ac\u03c4\u03c9\u03bd",
+ "example": "\u03a0\u03b1\u03c1\u03ac\u03b4\u03b5\u03b9\u03b3\u03bc\u03b1",
+ "success": "\u0395\u03c0\u03b9\u03c4\u03c5\u03c7\u03af\u03b1",
+ "help": "\u0392\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1",
+ "idea": "\u0399\u03b4\u03ad\u03b1",
+ "pending": "\u03a3\u03b5 \u03b5\u03ba\u03ba\u03c1\u03b5\u03bc\u03cc\u03c4\u03b7\u03c4\u03b1",
+ "security": "\u0391\u03c3\u03c6\u03ac\u03bb\u03b5\u03b9\u03b1",
+ "beta": "Beta",
+ "best-practice": "\u0392\u03ad\u03bb\u03c4\u03b9\u03c3\u03c4\u03b7 \u03a0\u03c1\u03b1\u03ba\u03c4\u03b9\u03ba\u03ae"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/en-US.json b/.chainlit/translations/en-US.json
new file mode 100644
index 0000000..9205429
--- /dev/null
+++ b/.chainlit/translations/en-US.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "Cancel",
+ "confirm": "Confirm",
+ "continue": "Continue",
+ "goBack": "Go Back",
+ "reset": "Reset",
+ "submit": "Submit"
+ },
+ "status": {
+ "loading": "Loading...",
+ "error": {
+ "default": "An error occurred",
+ "serverConnection": "Could not reach the server"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "Login to access the app",
+ "form": {
+ "email": {
+ "label": "Email address",
+ "required": "email is a required field",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "Password",
+ "required": "password is a required field"
+ },
+ "actions": {
+ "signin": "Sign In"
+ },
+ "alternativeText": {
+ "or": "OR"
+ }
+ },
+ "errors": {
+ "default": "Unable to sign in",
+ "signin": "Try signing in with a different account",
+ "oauthSignin": "Try signing in with a different account",
+ "redirectUriMismatch": "The redirect URI is not matching the oauth app configuration",
+ "oauthCallback": "Try signing in with a different account",
+ "oauthCreateAccount": "Try signing in with a different account",
+ "emailCreateAccount": "Try signing in with a different account",
+ "callback": "Try signing in with a different account",
+ "oauthAccountNotLinked": "To confirm your identity, sign in with the same account you used originally",
+ "emailSignin": "The e-mail could not be sent",
+ "emailVerify": "Please verify your email, a new email has been sent",
+ "credentialsSignin": "Sign in failed. Check the details you provided are correct",
+ "sessionRequired": "Please sign in to access this page"
+ }
+ },
+ "provider": {
+ "continue": "Continue with {{provider}}"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "Type your message here...",
+ "actions": {
+ "send": "Send message",
+ "stop": "Stop Task",
+ "attachFiles": "Attach files"
+ }
+ },
+ "commands": {
+ "button": "Tools",
+ "changeTool": "Change Tool",
+ "availableTools": "Available Tools"
+ },
+ "speech": {
+ "start": "Start recording",
+ "stop": "Stop recording",
+ "connecting": "Connecting"
+ },
+ "fileUpload": {
+ "dragDrop": "Drag and drop files here",
+ "browse": "Browse Files",
+ "sizeLimit": "Limit:",
+ "errors": {
+ "failed": "Failed to upload",
+ "cancelled": "Cancelled upload of"
+ },
+ "actions": {
+ "cancelUpload": "Cancel upload",
+ "removeAttachment": "Remove attachment"
+ }
+ },
+ "messages": {
+ "status": {
+ "using": "Using",
+ "used": "Used"
+ },
+ "actions": {
+ "copy": {
+ "button": "Copy to clipboard",
+ "success": "Copied!"
+ }
+ },
+ "feedback": {
+ "positive": "Helpful",
+ "negative": "Not helpful",
+ "edit": "Edit feedback",
+ "dialog": {
+ "title": "Add a comment",
+ "submit": "Submit feedback",
+ "yourFeedback": "Your feedback..."
+ },
+ "status": {
+ "updating": "Updating",
+ "updated": "Feedback updated"
+ }
+ }
+ },
+ "history": {
+ "title": "Last Inputs",
+ "empty": "Such empty...",
+ "show": "Show history"
+ },
+ "settings": {
+ "title": "Settings panel",
+ "customize": "Customize your chat settings here"
+ },
+ "watermark": "LLMs can make mistakes. Check important info."
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "Past Chats",
+ "filters": {
+ "search": "Search",
+ "placeholder": "Search conversations..."
+ },
+ "timeframes": {
+ "today": "Today",
+ "yesterday": "Yesterday",
+ "previous7days": "Previous 7 days",
+ "previous30days": "Previous 30 days"
+ },
+ "empty": "No threads found",
+ "actions": {
+ "close": "Close sidebar",
+ "open": "Open sidebar"
+ }
+ },
+ "thread": {
+ "untitled": "Untitled Conversation",
+ "menu": {
+ "rename": "Rename",
+ "share": "Share",
+ "delete": "Delete"
+ },
+ "actions": {
+ "share": {
+ "title": "Share link to chat",
+ "button": "Share",
+ "status": {
+ "copied": "Link copied",
+ "created": "Share link created!",
+ "unshared": "Sharing disabled for this thread"
+ },
+ "error": {
+ "create": "Failed to create share link",
+ "unshare": "Failed to unshare thread"
+ }
+ },
+ "delete": {
+ "title": "Confirm deletion",
+ "description": "This will delete the thread as well as its messages and elements. This action cannot be undone",
+ "success": "Chat deleted",
+ "inProgress": "Deleting chat"
+ },
+ "rename": {
+ "title": "Rename Thread",
+ "description": "Enter a new name for this thread",
+ "form": {
+ "name": {
+ "label": "Name",
+ "placeholder": "Enter new name"
+ }
+ },
+ "success": "Thread renamed!",
+ "inProgress": "Renaming thread"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "Chat",
+ "readme": "Readme",
+ "theme": {
+ "light": "Light Theme",
+ "dark": "Dark Theme",
+ "system": "Follow System"
+ }
+ },
+ "newChat": {
+ "button": "New Chat",
+ "dialog": {
+ "title": "Create New Chat",
+ "description": "This will clear your current chat history. Are you sure you want to continue?",
+ "tooltip": "New Chat"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "Settings",
+ "settingsKey": "S",
+ "apiKeys": "API Keys",
+ "logout": "Logout"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "Required API Keys",
+ "description": "To use this app, the following API keys are required. The keys are stored on your device's local storage.",
+ "success": {
+ "saved": "Saved successfully"
+ }
+ },
+ "alerts": {
+ "info": "Info",
+ "note": "Note",
+ "tip": "Tip",
+ "important": "Important",
+ "warning": "Warning",
+ "caution": "Caution",
+ "debug": "Debug",
+ "example": "Example",
+ "success": "Success",
+ "help": "Help",
+ "idea": "Idea",
+ "pending": "Pending",
+ "security": "Security",
+ "beta": "Beta",
+ "best-practice": "Best Practice"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "Select..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/es.json b/.chainlit/translations/es.json
new file mode 100644
index 0000000..eb23fc2
--- /dev/null
+++ b/.chainlit/translations/es.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "Cancelar",
+ "confirm": "Confirmar",
+ "continue": "Continuar",
+ "goBack": "Volver",
+ "reset": "Restablecer",
+ "submit": "Enviar"
+ },
+ "status": {
+ "loading": "Cargando...",
+ "error": {
+ "default": "Ocurri\u00f3 un error",
+ "serverConnection": "No se pudo conectar con el servidor"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "Inicia sesi\u00f3n para acceder a la aplicaci\u00f3n",
+ "form": {
+ "email": {
+ "label": "Correo electr\u00f3nico",
+ "required": "el correo electr\u00f3nico es obligatorio",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "Contrase\u00f1a",
+ "required": "la contrase\u00f1a es obligatoria"
+ },
+ "actions": {
+ "signin": "Iniciar sesi\u00f3n"
+ },
+ "alternativeText": {
+ "or": "O"
+ }
+ },
+ "errors": {
+ "default": "No se pudo iniciar sesi\u00f3n",
+ "signin": "Intenta iniciar sesi\u00f3n con otra cuenta",
+ "oauthSignin": "Intenta iniciar sesi\u00f3n con otra cuenta",
+ "redirectUriMismatch": "El URI de redirecci\u00f3n no coincide con la configuraci\u00f3n de la aplicaci\u00f3n OAuth",
+ "oauthCallback": "Intenta iniciar sesi\u00f3n con otra cuenta",
+ "oauthCreateAccount": "Intenta iniciar sesi\u00f3n con otra cuenta",
+ "emailCreateAccount": "Intenta iniciar sesi\u00f3n con otra cuenta",
+ "callback": "Intenta iniciar sesi\u00f3n con otra cuenta",
+ "oauthAccountNotLinked": "Para confirmar tu identidad, inicia sesi\u00f3n con la misma cuenta que usaste originalmente",
+ "emailSignin": "No se pudo enviar el correo electr\u00f3nico",
+ "emailVerify": "Por favor verifica tu correo, se ha enviado un nuevo correo",
+ "credentialsSignin": "Error al iniciar sesi\u00f3n. Verifica que los datos proporcionados sean correctos",
+ "sessionRequired": "Por favor inicia sesi\u00f3n para acceder a esta p\u00e1gina"
+ }
+ },
+ "provider": {
+ "continue": "Continuar con {{provider}}"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "Escribe tu mensaje aqu\u00ed...",
+ "actions": {
+ "send": "Enviar mensaje",
+ "stop": "Detener tarea",
+ "attachFiles": "Adjuntar archivos"
+ }
+ },
+ "commands": {
+ "button": "Herramientas",
+ "changeTool": "Cambiar herramienta",
+ "availableTools": "Herramientas disponibles"
+ },
+ "speech": {
+ "start": "Comenzar grabaci\u00f3n",
+ "stop": "Detener grabaci\u00f3n",
+ "connecting": "Conectando"
+ },
+ "fileUpload": {
+ "dragDrop": "Arrastra y suelta archivos aqu\u00ed",
+ "browse": "Buscar archivos",
+ "sizeLimit": "L\u00edmite:",
+ "errors": {
+ "failed": "Error al subir",
+ "cancelled": "Carga cancelada de"
+ },
+ "actions": {
+ "cancelUpload": "Cancelar subida",
+ "removeAttachment": "Eliminar adjunto"
+ }
+ },
+ "messages": {
+ "status": {
+ "using": "Usando",
+ "used": "Usado"
+ },
+ "actions": {
+ "copy": {
+ "button": "Copiar al portapapeles",
+ "success": "\u00a1Copiado!"
+ }
+ },
+ "feedback": {
+ "positive": "\u00datil",
+ "negative": "No \u00fatil",
+ "edit": "Editar comentario",
+ "dialog": {
+ "title": "Agregar un comentario",
+ "submit": "Enviar comentario",
+ "yourFeedback": "Tu comentario..."
+ },
+ "status": {
+ "updating": "Actualizando",
+ "updated": "Comentario actualizado"
+ }
+ }
+ },
+ "history": {
+ "title": "\u00daltimas entradas",
+ "empty": "Tan vac\u00edo...",
+ "show": "Mostrar historial"
+ },
+ "settings": {
+ "title": "Panel de configuraci\u00f3n",
+ "customize": "Personaliza la configuraci\u00f3n de tu chat aqu\u00ed"
+ },
+ "watermark": "Los LLM pueden cometer errores. Verifica la informaci\u00f3n importante."
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "Chats anteriores",
+ "filters": {
+ "search": "Buscar",
+ "placeholder": "Buscar conversaciones..."
+ },
+ "timeframes": {
+ "today": "Hoy",
+ "yesterday": "Ayer",
+ "previous7days": "\u00daltimos 7 d\u00edas",
+ "previous30days": "\u00daltimos 30 d\u00edas"
+ },
+ "empty": "No se encontraron conversaciones",
+ "actions": {
+ "close": "Cerrar barra lateral",
+ "open": "Abrir barra lateral"
+ }
+ },
+ "thread": {
+ "untitled": "Conversaci\u00f3n sin t\u00edtulo",
+ "menu": {
+ "rename": "Renombrar",
+ "share": "Compartir",
+ "delete": "Eliminar"
+ },
+ "actions": {
+ "share": {
+ "title": "Compartir enlace del chat",
+ "button": "Compartir",
+ "status": {
+ "copied": "Enlace copiado",
+ "created": "\u00a1Enlace de uso compartido creado!",
+ "unshared": "Uso compartido deshabilitado para este hilo"
+ },
+ "error": {
+ "create": "Error al crear el enlace de uso compartido",
+ "unshare": "Error al dejar de compartir el hilo"
+ }
+ },
+ "delete": {
+ "title": "Confirmar eliminaci\u00f3n",
+ "description": "Esto eliminar\u00e1 la conversaci\u00f3n, sus mensajes y elementos. Esta acci\u00f3n no se puede deshacer",
+ "success": "Chat eliminado",
+ "inProgress": "Eliminando chat"
+ },
+ "rename": {
+ "title": "Renombrar conversaci\u00f3n",
+ "description": "Ingresa un nuevo nombre para esta conversaci\u00f3n",
+ "form": {
+ "name": {
+ "label": "Nombre",
+ "placeholder": "Ingresa nuevo nombre"
+ }
+ },
+ "success": "\u00a1Conversaci\u00f3n renombrada!",
+ "inProgress": "Renombrando conversaci\u00f3n"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "Chat",
+ "readme": "L\u00e9eme",
+ "theme": {
+ "light": "Tema claro",
+ "dark": "Tema oscuro",
+ "system": "Seguir sistema"
+ }
+ },
+ "newChat": {
+ "button": "Nuevo chat",
+ "dialog": {
+ "title": "Crear nuevo chat",
+ "description": "Esto borrar\u00e1 tu historial de chat actual. \u00bfSeguro que quieres continuar?",
+ "tooltip": "Nuevo chat"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "Configuraci\u00f3n",
+ "settingsKey": "S",
+ "apiKeys": "Claves API",
+ "logout": "Cerrar sesi\u00f3n"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "Claves API requeridas",
+ "description": "Para usar esta aplicaci\u00f3n, se requieren las siguientes claves API. Las claves se almacenan en el almacenamiento local de tu dispositivo.",
+ "success": {
+ "saved": "Guardado exitosamente"
+ }
+ },
+ "alerts": {
+ "info": "Informaci\u00f3n",
+ "note": "Nota",
+ "tip": "Consejo",
+ "important": "Importante",
+ "warning": "Advertencia",
+ "caution": "Precauci\u00f3n",
+ "debug": "Depuraci\u00f3n",
+ "example": "Ejemplo",
+ "success": "\u00c9xito",
+ "help": "Ayuda",
+ "idea": "Idea",
+ "pending": "Pendiente",
+ "security": "Seguridad",
+ "beta": "Beta",
+ "best-practice": "Mejor pr\u00e1ctica"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "Seleccionar..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/fr-FR.json b/.chainlit/translations/fr-FR.json
new file mode 100644
index 0000000..a3000fd
--- /dev/null
+++ b/.chainlit/translations/fr-FR.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "Annuler",
+ "confirm": "Confirmer",
+ "continue": "Continuer",
+ "goBack": "Retour",
+ "reset": "R\u00e9initialiser",
+ "submit": "Envoyer"
+ },
+ "status": {
+ "loading": "Chargement...",
+ "error": {
+ "default": "Une erreur est survenue",
+ "serverConnection": "Impossible de joindre le serveur"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "Connectez-vous pour acc\u00e9der \u00e0 l'application",
+ "form": {
+ "email": {
+ "label": "Adresse e-mail",
+ "required": "l'e-mail est un champ obligatoire",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "Mot de passe",
+ "required": "le mot de passe est un champ obligatoire"
+ },
+ "actions": {
+ "signin": "Se connecter"
+ },
+ "alternativeText": {
+ "or": "OU"
+ }
+ },
+ "errors": {
+ "default": "Impossible de se connecter",
+ "signin": "Essayez de vous connecter avec un autre compte",
+ "oauthSignin": "Essayez de vous connecter avec un autre compte",
+ "redirectUriMismatch": "L'URI de redirection ne correspond pas \u00e0 la configuration de l'application oauth",
+ "oauthCallback": "Essayez de vous connecter avec un autre compte",
+ "oauthCreateAccount": "Essayez de vous connecter avec un autre compte",
+ "emailCreateAccount": "Essayez de vous connecter avec un autre compte",
+ "callback": "Essayez de vous connecter avec un autre compte",
+ "oauthAccountNotLinked": "Pour confirmer votre identit\u00e9, connectez-vous avec le m\u00eame compte que vous avez utilis\u00e9 \u00e0 l'origine",
+ "emailSignin": "L'e-mail n'a pas pu \u00eatre envoy\u00e9",
+ "emailVerify": "Veuillez v\u00e9rifier votre e-mail, un nouvel e-mail a \u00e9t\u00e9 envoy\u00e9",
+ "credentialsSignin": "La connexion a \u00e9chou\u00e9. V\u00e9rifiez que les informations que vous avez fournies sont correctes",
+ "sessionRequired": "Veuillez vous connecter pour acc\u00e9der \u00e0 cette page"
+ }
+ },
+ "provider": {
+ "continue": "Continuer avec {{provider}}"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "Tapez votre message ici...",
+ "actions": {
+ "send": "Envoyer le message",
+ "stop": "Arr\u00eater la t\u00e2che",
+ "attachFiles": "Joindre des fichiers"
+ }
+ },
+ "commands": {
+ "button": "Outils",
+ "changeTool": "Changer d'outil",
+ "availableTools": "Outils disponibles"
+ },
+ "speech": {
+ "start": "D\u00e9marrer l'enregistrement",
+ "stop": "Arr\u00eater l'enregistrement",
+ "connecting": "Connexion en cours"
+ },
+ "fileUpload": {
+ "dragDrop": "Glissez et d\u00e9posez des fichiers ici",
+ "browse": "Parcourir les fichiers",
+ "sizeLimit": "Limite :",
+ "errors": {
+ "failed": "\u00c9chec du t\u00e9l\u00e9versement",
+ "cancelled": "T\u00e9l\u00e9versement annul\u00e9 de"
+ },
+ "actions": {
+ "cancelUpload": "Annuler le t\u00e9l\u00e9versement",
+ "removeAttachment": "Supprimer la pi\u00e8ce jointe"
+ }
+ },
+ "messages": {
+ "status": {
+ "using": "Utilise",
+ "used": "Utilis\u00e9"
+ },
+ "actions": {
+ "copy": {
+ "button": "Copier dans le presse-papiers",
+ "success": "Copi\u00e9 !"
+ }
+ },
+ "feedback": {
+ "positive": "Utile",
+ "negative": "Pas utile",
+ "edit": "Modifier le commentaire",
+ "dialog": {
+ "title": "Ajouter un commentaire",
+ "submit": "Envoyer le commentaire",
+ "yourFeedback": "Votre avis..."
+ },
+ "status": {
+ "updating": "Mise \u00e0 jour",
+ "updated": "Commentaire mis \u00e0 jour"
+ }
+ }
+ },
+ "history": {
+ "title": "Derni\u00e8res entr\u00e9es",
+ "empty": "Tellement vide...",
+ "show": "Afficher l'historique"
+ },
+ "settings": {
+ "title": "Panneau des param\u00e8tres",
+ "customize": "Personnalisez vos param\u00e8tres de chat ici"
+ },
+ "watermark": "Les LLMs peuvent se tromper. V\u00e9rifiez les r\u00e9ponses."
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "Discussions pass\u00e9es",
+ "filters": {
+ "search": "Rechercher",
+ "placeholder": "Rechercher des conversations..."
+ },
+ "timeframes": {
+ "today": "Aujourd'hui",
+ "yesterday": "Hier",
+ "previous7days": "Les 7 derniers jours",
+ "previous30days": "Les 30 derniers jours"
+ },
+ "empty": "Aucun fil de discussion trouv\u00e9",
+ "actions": {
+ "close": "Fermer la barre lat\u00e9rale",
+ "open": "Ouvrir la barre lat\u00e9rale"
+ }
+ },
+ "thread": {
+ "untitled": "Conversation sans titre",
+ "menu": {
+ "rename": "Renommer",
+ "share": "Partager",
+ "delete": "Supprimer"
+ },
+ "actions": {
+ "share": {
+ "title": "Partager le lien de la discussion",
+ "button": "Partager",
+ "status": {
+ "copied": "Lien copi\u00e9",
+ "created": "Lien de partage cr\u00e9\u00e9 !",
+ "unshared": "Partage d\u00e9sactiv\u00e9 pour ce fil"
+ },
+ "error": {
+ "create": "\u00c9chec de la cr\u00e9ation du lien de partage",
+ "unshare": "\u00c9chec de la d\u00e9sactivation du partage du fil"
+ }
+ },
+ "delete": {
+ "title": "Confirmer la suppression",
+ "description": "Cela supprimera le fil de discussion ainsi que ses messages et \u00e9l\u00e9ments. Cette action ne peut pas \u00eatre annul\u00e9e",
+ "success": "Discussion supprim\u00e9e",
+ "inProgress": "Suppression de la discussion"
+ },
+ "rename": {
+ "title": "Renommer le fil de discussion",
+ "description": "Entrez un nouveau nom pour ce fil de discussion",
+ "form": {
+ "name": {
+ "label": "Nom",
+ "placeholder": "Entrez le nouveau nom"
+ }
+ },
+ "success": "Fil de discussion renomm\u00e9 !",
+ "inProgress": "Renommage du fil de discussion"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "Discussion",
+ "readme": "Lisez-moi",
+ "theme": {
+ "light": "Th\u00e8me clair",
+ "dark": "Th\u00e8me sombre",
+ "system": "Suivre le syst\u00e8me"
+ }
+ },
+ "newChat": {
+ "button": "Nouvelle discussion",
+ "dialog": {
+ "title": "Cr\u00e9er une nouvelle discussion",
+ "description": "Cela effacera votre historique de discussion actuel. \u00cates-vous s\u00fbr de vouloir continuer ?",
+ "tooltip": "Nouvelle discussion"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "Param\u00e8tres",
+ "settingsKey": "S",
+ "apiKeys": "Cl\u00e9s API",
+ "logout": "Se d\u00e9connecter"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "Cl\u00e9s API requises",
+ "description": "Pour utiliser cette application, les cl\u00e9s API suivantes sont requises. Les cl\u00e9s sont stock\u00e9es dans le stockage local de votre appareil.",
+ "success": {
+ "saved": "Enregistr\u00e9 avec succ\u00e8s"
+ }
+ },
+ "alerts": {
+ "info": "Info",
+ "note": "Note",
+ "tip": "Astuce",
+ "important": "Important",
+ "warning": "Avertissement",
+ "caution": "Attention",
+ "debug": "D\u00e9bogage",
+ "example": "Exemple",
+ "success": "Succ\u00e8s",
+ "help": "Aide",
+ "idea": "Id\u00e9e",
+ "pending": "En attente",
+ "security": "S\u00e9curit\u00e9",
+ "beta": "B\u00eata",
+ "best-practice": "Meilleure pratique"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "S\u00e9lectionner..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/gu.json b/.chainlit/translations/gu.json
new file mode 100644
index 0000000..2cd12fd
--- /dev/null
+++ b/.chainlit/translations/gu.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "\u0ab0\u0aa6 \u0a95\u0ab0\u0acb",
+ "confirm": "\u0aaa\u0ac1\u0ab7\u0acd\u0a9f\u0abf \u0a95\u0ab0\u0acb",
+ "continue": "\u0a9a\u0abe\u0ab2\u0ac1 \u0ab0\u0abe\u0a96\u0acb",
+ "goBack": "\u0aaa\u0abe\u0a9b\u0abe \u0a9c\u0abe\u0a93",
+ "reset": "\u0ab0\u0ac0\u0ab8\u0ac7\u0a9f \u0a95\u0ab0\u0acb",
+ "submit": "\u0ab8\u0aac\u0aae\u0abf\u0a9f \u0a95\u0ab0\u0acb"
+ },
+ "status": {
+ "loading": "\u0ab2\u0acb\u0aa1 \u0aa5\u0a88 \u0ab0\u0ab9\u0acd\u0aaf\u0ac1\u0a82 \u0a9b\u0ac7...",
+ "error": {
+ "default": "\u0a8f\u0a95 \u0aad\u0ac2\u0ab2 \u0aa5\u0a88",
+ "serverConnection": "\u0ab8\u0ab0\u0acd\u0ab5\u0ab0 \u0ab8\u0ac1\u0aa7\u0ac0 \u0aaa\u0ab9\u0acb\u0a82\u0a9a\u0ac0 \u0ab6\u0a95\u0abe\u0aaf\u0ac1\u0a82 \u0aa8\u0aa5\u0ac0"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "\u0a8f\u0aaa\u0acd\u0ab2\u0abf\u0a95\u0ac7\u0ab6\u0aa8 \u0a8d\u0a95\u0acd\u0ab8\u0ac7\u0ab8 \u0a95\u0ab0\u0ab5\u0abe \u0aae\u0abe\u0a9f\u0ac7 \u0ab2\u0ac9\u0a97\u0abf\u0aa8 \u0a95\u0ab0\u0acb",
+ "form": {
+ "email": {
+ "label": "\u0a88\u0aae\u0ac7\u0ab2 \u0a8f\u0aa1\u0acd\u0ab0\u0ac7\u0ab8",
+ "required": "\u0a88\u0aae\u0ac7\u0ab2 \u0a86\u0ab5\u0ab6\u0acd\u0aaf\u0a95 \u0a9b\u0ac7",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "\u0aaa\u0abe\u0ab8\u0ab5\u0ab0\u0acd\u0aa1",
+ "required": "\u0aaa\u0abe\u0ab8\u0ab5\u0ab0\u0acd\u0aa1 \u0a86\u0ab5\u0ab6\u0acd\u0aaf\u0a95 \u0a9b\u0ac7"
+ },
+ "actions": {
+ "signin": "\u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0acb"
+ },
+ "alternativeText": {
+ "or": "\u0a85\u0aa5\u0ab5\u0abe"
+ }
+ },
+ "errors": {
+ "default": "\u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0ac0 \u0ab6\u0a95\u0abe\u0aaf\u0ac1\u0a82 \u0aa8\u0aa5\u0ac0",
+ "signin": "\u0a85\u0ab2\u0a97 \u0a8f\u0a95\u0abe\u0a89\u0aa8\u0acd\u0a9f\u0aa5\u0ac0 \u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0ab5\u0abe\u0aa8\u0acb \u0aaa\u0acd\u0ab0\u0aaf\u0abe\u0ab8 \u0a95\u0ab0\u0acb",
+ "oauthSignin": "\u0a85\u0ab2\u0a97 \u0a8f\u0a95\u0abe\u0a89\u0aa8\u0acd\u0a9f\u0aa5\u0ac0 \u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0ab5\u0abe\u0aa8\u0acb \u0aaa\u0acd\u0ab0\u0aaf\u0abe\u0ab8 \u0a95\u0ab0\u0acb",
+ "redirectUriMismatch": "\u0ab0\u0ac0\u0aa1\u0abe\u0aaf\u0ab0\u0ac7\u0a95\u0acd\u0a9f URI oauth \u0a8d\u0aaa \u0a95\u0aa8\u0acd\u0aab\u0abf\u0a97\u0ab0\u0ac7\u0ab6\u0aa8 \u0ab8\u0abe\u0aa5\u0ac7 \u0aae\u0ac7\u0ab3 \u0a96\u0abe\u0aa4\u0acb \u0aa8\u0aa5\u0ac0",
+ "oauthCallback": "\u0a85\u0ab2\u0a97 \u0a8f\u0a95\u0abe\u0a89\u0aa8\u0acd\u0a9f\u0aa5\u0ac0 \u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0ab5\u0abe\u0aa8\u0acb \u0aaa\u0acd\u0ab0\u0aaf\u0abe\u0ab8 \u0a95\u0ab0\u0acb",
+ "oauthCreateAccount": "\u0a85\u0ab2\u0a97 \u0a8f\u0a95\u0abe\u0a89\u0aa8\u0acd\u0a9f\u0aa5\u0ac0 \u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0ab5\u0abe\u0aa8\u0acb \u0aaa\u0acd\u0ab0\u0aaf\u0abe\u0ab8 \u0a95\u0ab0\u0acb",
+ "emailCreateAccount": "\u0a85\u0ab2\u0a97 \u0a8f\u0a95\u0abe\u0a89\u0aa8\u0acd\u0a9f\u0aa5\u0ac0 \u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0ab5\u0abe\u0aa8\u0acb \u0aaa\u0acd\u0ab0\u0aaf\u0abe\u0ab8 \u0a95\u0ab0\u0acb",
+ "callback": "\u0a85\u0ab2\u0a97 \u0a8f\u0a95\u0abe\u0a89\u0aa8\u0acd\u0a9f\u0aa5\u0ac0 \u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0ab5\u0abe\u0aa8\u0acb \u0aaa\u0acd\u0ab0\u0aaf\u0abe\u0ab8 \u0a95\u0ab0\u0acb",
+ "oauthAccountNotLinked": "\u0aa4\u0aae\u0abe\u0ab0\u0ac0 \u0a93\u0ab3\u0a96\u0aa8\u0ac0 \u0aaa\u0ac1\u0ab7\u0acd\u0a9f\u0abf \u0a95\u0ab0\u0ab5\u0abe \u0aae\u0abe\u0a9f\u0ac7, \u0aae\u0ac2\u0ab3 \u0ab0\u0ac2\u0aaa\u0ac7 \u0ab5\u0abe\u0aaa\u0ab0\u0ac7\u0ab2\u0abe \u0a8f\u0a95\u0abe\u0a89\u0aa8\u0acd\u0a9f\u0aa5\u0ac0 \u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0acb",
+ "emailSignin": "\u0a88\u0aae\u0ac7\u0ab2 \u0aae\u0acb\u0a95\u0ab2\u0ac0 \u0ab6\u0a95\u0abe\u0aaf\u0acb \u0aa8\u0aa5\u0ac0",
+ "emailVerify": "\u0a95\u0ac3\u0aaa\u0abe \u0a95\u0ab0\u0ac0 \u0aa4\u0aae\u0abe\u0ab0\u0acb \u0a88\u0aae\u0ac7\u0ab2 \u0a9a\u0a95\u0abe\u0ab8\u0acb, \u0aa8\u0ab5\u0acb \u0a88\u0aae\u0ac7\u0ab2 \u0aae\u0acb\u0a95\u0ab2\u0ab5\u0abe\u0aae\u0abe\u0a82 \u0a86\u0ab5\u0acd\u0aaf\u0acb \u0a9b\u0ac7",
+ "credentialsSignin": "\u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0aa8\u0abf\u0ab7\u0acd\u0aab\u0ab3. \u0a86\u0aaa\u0ac7\u0ab2\u0ac0 \u0ab5\u0abf\u0a97\u0aa4\u0acb \u0ab8\u0abe\u0a9a\u0ac0 \u0a9b\u0ac7 \u0a95\u0ac7 \u0aa8\u0ab9\u0ac0\u0a82 \u0aa4\u0ac7 \u0a9a\u0a95\u0abe\u0ab8\u0acb",
+ "sessionRequired": "\u0a86 \u0aaa\u0ac7\u0a9c\u0aa8\u0ac7 \u0a8d\u0a95\u0acd\u0ab8\u0ac7\u0ab8 \u0a95\u0ab0\u0ab5\u0abe \u0aae\u0abe\u0a9f\u0ac7 \u0a95\u0ac3\u0aaa\u0abe \u0a95\u0ab0\u0ac0 \u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0acb"
+ }
+ },
+ "provider": {
+ "continue": "{{provider}} \u0ab8\u0abe\u0aa5\u0ac7 \u0a9a\u0abe\u0ab2\u0ac1 \u0ab0\u0abe\u0a96\u0acb"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "\u0a85\u0ab9\u0ac0\u0a82 \u0aa4\u0aae\u0abe\u0ab0\u0acb \u0ab8\u0a82\u0aa6\u0ac7\u0ab6 \u0ab2\u0a96\u0acb...",
+ "actions": {
+ "send": "\u0ab8\u0a82\u0aa6\u0ac7\u0ab6 \u0aae\u0acb\u0a95\u0ab2\u0acb",
+ "stop": "\u0a95\u0abe\u0ab0\u0acd\u0aaf \u0ab0\u0acb\u0a95\u0acb",
+ "attachFiles": "\u0aab\u0abe\u0a87\u0ab2\u0acd\u0ab8 \u0a9c\u0acb\u0aa1\u0acb"
+ }
+ },
+ "speech": {
+ "start": "\u0ab0\u0ac7\u0a95\u0acb\u0ab0\u0acd\u0aa1\u0abf\u0a82\u0a97 \u0ab6\u0ab0\u0ac2 \u0a95\u0ab0\u0acb",
+ "stop": "\u0ab0\u0ac7\u0a95\u0acb\u0ab0\u0acd\u0aa1\u0abf\u0a82\u0a97 \u0aac\u0a82\u0aa7 \u0a95\u0ab0\u0acb",
+ "connecting": "\u0a95\u0aa8\u0ac7\u0a95\u0acd\u0a9f \u0aa5\u0a88 \u0ab0\u0ab9\u0acd\u0aaf\u0ac1\u0a82 \u0a9b\u0ac7"
+ },
+ "commands": {
+ "button": "\u0a9f\u0ac2\u0ab2\u0acd\u0ab8",
+ "changeTool": "\u0a9f\u0ac2\u0ab2 \u0aac\u0aa6\u0ab2\u0acb",
+ "availableTools": "\u0a89\u0aaa\u0ab2\u0aac\u0acd\u0aa7 \u0a9f\u0ac2\u0ab2\u0acd\u0ab8"
+ },
+ "fileUpload": {
+ "dragDrop": "\u0a85\u0ab9\u0ac0\u0a82 \u0aab\u0abe\u0a87\u0ab2\u0acd\u0ab8 \u0a96\u0ac7\u0a82\u0a9a\u0acb \u0a85\u0aa8\u0ac7 \u0a9b\u0acb\u0aa1\u0acb",
+ "browse": "\u0aab\u0abe\u0a87\u0ab2\u0acd\u0ab8 \u0aac\u0acd\u0ab0\u0abe\u0a89\u0a9d \u0a95\u0ab0\u0acb",
+ "sizeLimit": "\u0aae\u0ab0\u0acd\u0aaf\u0abe\u0aa6\u0abe:",
+ "errors": {
+ "failed": "\u0a85\u0aaa\u0ab2\u0acb\u0aa1 \u0a95\u0ab0\u0ab5\u0abe\u0aae\u0abe\u0a82 \u0aa8\u0abf\u0ab7\u0acd\u0aab\u0ab3",
+ "cancelled": "\u0a85\u0aaa\u0ab2\u0acb\u0aa1 \u0ab0\u0aa6 \u0a95\u0ab0\u0acd\u0aaf\u0ac1\u0a82"
+ },
+ "actions": {
+ "cancelUpload": "\u0a85\u0aaa\u0ab2\u0acb\u0aa1 \u0ab0\u0aa6 \u0a95\u0ab0\u0acb",
+ "removeAttachment": "\u0a9c\u0acb\u0aa1\u0abe\u0aa3 \u0aa6\u0ac2\u0ab0 \u0a95\u0ab0\u0acb"
+ }
+ },
+ "messages": {
+ "status": {
+ "using": "\u0ab5\u0abe\u0aaa\u0ab0\u0ac0 \u0ab0\u0ab9\u0acd\u0aaf\u0abe \u0a9b\u0ac7",
+ "used": "\u0ab5\u0aaa\u0ab0\u0abe\u0aaf\u0ac7\u0ab2"
+ },
+ "actions": {
+ "copy": {
+ "button": "\u0a95\u0acd\u0ab2\u0abf\u0aaa\u0aac\u0acb\u0ab0\u0acd\u0aa1 \u0aaa\u0ab0 \u0a95\u0ac9\u0aaa\u0abf \u0a95\u0ab0\u0acb",
+ "success": "\u0a95\u0ac9\u0aaa\u0abf \u0aa5\u0aaf\u0ac1\u0a82!"
+ }
+ },
+ "feedback": {
+ "positive": "\u0a89\u0aaa\u0aaf\u0acb\u0a97\u0ac0",
+ "negative": "\u0aac\u0abf\u0aa8\u0a89\u0aaa\u0aaf\u0acb\u0a97\u0ac0",
+ "edit": "\u0aaa\u0acd\u0ab0\u0aa4\u0abf\u0ab8\u0abe\u0aa6 \u0ab8\u0a82\u0aaa\u0abe\u0aa6\u0abf\u0aa4 \u0a95\u0ab0\u0acb",
+ "dialog": {
+ "title": "\u0a9f\u0abf\u0aaa\u0acd\u0aaa\u0aa3\u0ac0 \u0a89\u0aae\u0ac7\u0ab0\u0acb",
+ "submit": "\u0aaa\u0acd\u0ab0\u0aa4\u0abf\u0ab8\u0abe\u0aa6 \u0ab8\u0aac\u0aae\u0abf\u0a9f \u0a95\u0ab0\u0acb",
+ "yourFeedback": "\u0aa4\u0aae\u0abe\u0ab0\u0acb \u0aaa\u0acd\u0ab0\u0aa4\u0abf\u0ab8\u0abe\u0aa6..."
+ },
+ "status": {
+ "updating": "\u0a85\u0aaa\u0aa1\u0ac7\u0a9f \u0aa5\u0a88 \u0ab0\u0ab9\u0acd\u0aaf\u0ac1\u0a82 \u0a9b\u0ac7",
+ "updated": "\u0aaa\u0acd\u0ab0\u0aa4\u0abf\u0ab8\u0abe\u0aa6 \u0a85\u0aaa\u0aa1\u0ac7\u0a9f \u0aa5\u0aaf\u0acb"
+ }
+ }
+ },
+ "history": {
+ "title": "\u0a9b\u0ac7\u0ab2\u0acd\u0ab2\u0abe \u0a87\u0aa8\u0aaa\u0ac1\u0a9f\u0acd\u0ab8",
+ "empty": "\u0a96\u0abe\u0ab2\u0ac0 \u0a9b\u0ac7...",
+ "show": "\u0a87\u0aa4\u0abf\u0ab9\u0abe\u0ab8 \u0aac\u0aa4\u0abe\u0ab5\u0acb"
+ },
+ "settings": {
+ "title": "\u0ab8\u0ac7\u0a9f\u0abf\u0a82\u0a97\u0acd\u0ab8 \u0aaa\u0ac7\u0aa8\u0ab2",
+ "customize": "\u0aa4\u0aae\u0abe\u0ab0\u0abe \u0a9a\u0ac7\u0a9f \u0ab8\u0ac7\u0a9f\u0abf\u0a82\u0a97\u0acd\u0ab8 \u0a85\u0ab9\u0ac0\u0a82 \u0a95\u0ab8\u0acd\u0a9f\u0aae\u0abe\u0a87\u0a9d \u0a95\u0ab0\u0acb"
+ },
+ "watermark": "LLM \u0aad\u0ac2\u0ab2\u0acb \u0a95\u0ab0\u0ac0 \u0ab6\u0a95\u0ac7 \u0a9b\u0ac7. \u0aae\u0ab9\u0aa4\u0acd\u0ab5\u0aaa\u0ac2\u0ab0\u0acd\u0aa3 \u0aae\u0abe\u0ab9\u0abf\u0aa4\u0ac0 \u0aa4\u0aaa\u0abe\u0ab8\u0ab5\u0abe\u0aa8\u0ac1\u0a82 \u0ab5\u0abf\u0a9a\u0abe\u0ab0\u0acb."
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "\u0aaa\u0abe\u0a9b\u0ab2\u0ac0 \u0a9a\u0ac7\u0a9f\u0acd\u0ab8",
+ "filters": {
+ "search": "\u0ab6\u0acb\u0aa7\u0acb",
+ "placeholder": "Search conversations..."
+ },
+ "timeframes": {
+ "today": "\u0a86\u0a9c\u0ac7",
+ "yesterday": "\u0a97\u0a88\u0a95\u0abe\u0ab2\u0ac7",
+ "previous7days": "\u0aaa\u0abe\u0a9b\u0ab2\u0abe 7 \u0aa6\u0abf\u0ab5\u0ab8",
+ "previous30days": "\u0aaa\u0abe\u0a9b\u0ab2\u0abe 30 \u0aa6\u0abf\u0ab5\u0ab8"
+ },
+ "empty": "\u0a95\u0acb\u0a88 \u0aa5\u0acd\u0ab0\u0ac7\u0aa1\u0acd\u0ab8 \u0aae\u0ab3\u0acd\u0aaf\u0abe \u0aa8\u0aa5\u0ac0",
+ "actions": {
+ "close": "\u0ab8\u0abe\u0a87\u0aa1\u0aac\u0abe\u0ab0 \u0aac\u0a82\u0aa7 \u0a95\u0ab0\u0acb",
+ "open": "\u0ab8\u0abe\u0a87\u0aa1\u0aac\u0abe\u0ab0 \u0a96\u0acb\u0ab2\u0acb"
+ }
+ },
+ "thread": {
+ "untitled": "\u0ab6\u0ac0\u0ab0\u0acd\u0ab7\u0a95 \u0ab5\u0a97\u0ab0\u0aa8\u0ac0 \u0ab5\u0abe\u0aa4\u0a9a\u0ac0\u0aa4",
+ "menu": {
+ "rename": "\u0aa8\u0abe\u0aae \u0aac\u0aa6\u0ab2\u0acb",
+ "share": "\u0ab6\u0ac7\u0ab0 \u0a95\u0ab0\u0acb",
+ "delete": "Delete"
+ },
+ "actions": {
+ "share": {
+ "title": "\u0a9a\u0ac7\u0a9f\u0aa8\u0ac0 \u0ab2\u0abf\u0a82\u0a95 \u0ab6\u0ac7\u0ab0 \u0a95\u0ab0\u0acb",
+ "button": "\u0ab6\u0ac7\u0ab0 \u0a95\u0ab0\u0acb",
+ "status": {
+ "copied": "\u0ab2\u0abf\u0a82\u0a95 \u0a95\u0ac9\u0aaa\u0abf \u0aa5\u0a88",
+ "created": "\u0ab6\u0ac7\u0ab0 \u0ab2\u0abf\u0a82\u0a95 \u0aac\u0aa8\u0abe\u0ab5\u0abe\u0a88!",
+ "unshared": "\u0a86 \u0aa5\u0acd\u0ab0\u0ac7\u0aa1 \u0aae\u0abe\u0a9f\u0ac7 \u0ab6\u0ac7\u0ab0\u0abf\u0a82\u0a97 \u0aa8\u0abf\u0ab7\u0acd\u0a95\u0acd\u0ab0\u0abf\u0aaf \u0a9b\u0ac7"
+ },
+ "error": {
+ "create": "\u0ab6\u0ac7\u0ab0 \u0ab2\u0abf\u0a82\u0a95 \u0aac\u0aa8\u0abe\u0ab5\u0ab5\u0abe\u0aae\u0abe\u0a82 \u0aa8\u0abf\u0ab7\u0acd\u0aab\u0ab3",
+ "unshare": "\u0aa5\u0acd\u0ab0\u0ac7\u0aa1 \u0a85\u0aa8\u0ab6\u0ac7\u0ab0 \u0a95\u0ab0\u0ab5\u0abe\u0aae\u0abe\u0a82 \u0aa8\u0abf\u0ab7\u0acd\u0aab\u0ab3"
+ }
+ },
+ "delete": {
+ "title": "\u0a95\u0abe\u0aa2\u0ac0 \u0aa8\u0abe\u0a96\u0ab5\u0abe\u0aa8\u0ac0 \u0aaa\u0ac1\u0ab7\u0acd\u0a9f\u0abf \u0a95\u0ab0\u0acb",
+ "description": "\u0a86 \u0aa5\u0acd\u0ab0\u0ac7\u0aa1 \u0a85\u0aa8\u0ac7 \u0aa4\u0ac7\u0aa8\u0abe \u0ab8\u0a82\u0aa6\u0ac7\u0ab6\u0abe\u0a93 \u0a85\u0aa8\u0ac7 \u0aa4\u0aa4\u0acd\u0ab5\u0acb\u0aa8\u0ac7 \u0a95\u0abe\u0aa2\u0ac0 \u0aa8\u0abe\u0a96\u0ab6\u0ac7. \u0a86 \u0a95\u0acd\u0ab0\u0abf\u0aaf\u0abe \u0aaa\u0abe\u0a9b\u0ac0 \u0aab\u0ac7\u0ab0\u0ab5\u0ac0 \u0ab6\u0a95\u0abe\u0ab6\u0ac7 \u0aa8\u0ab9\u0ac0\u0a82",
+ "success": "\u0a9a\u0ac7\u0a9f \u0a95\u0abe\u0aa2\u0ac0 \u0aa8\u0abe\u0a96\u0ac0",
+ "inProgress": "\u0a9a\u0ac7\u0a9f \u0a95\u0abe\u0aa2\u0ac0 \u0aa8\u0abe\u0a96\u0ac0 \u0ab0\u0ab9\u0acd\u0aaf\u0abe \u0a9b\u0ac0\u0a8f"
+ },
+ "rename": {
+ "title": "\u0aa5\u0acd\u0ab0\u0ac7\u0aa1\u0aa8\u0ac1\u0a82 \u0aa8\u0abe\u0aae \u0aac\u0aa6\u0ab2\u0acb",
+ "description": "\u0a86 \u0aa5\u0acd\u0ab0\u0ac7\u0aa1 \u0aae\u0abe\u0a9f\u0ac7 \u0aa8\u0ab5\u0ac1\u0a82 \u0aa8\u0abe\u0aae \u0aa6\u0abe\u0a96\u0ab2 \u0a95\u0ab0\u0acb",
+ "form": {
+ "name": {
+ "label": "\u0aa8\u0abe\u0aae",
+ "placeholder": "\u0aa8\u0ab5\u0ac1\u0a82 \u0aa8\u0abe\u0aae \u0aa6\u0abe\u0a96\u0ab2 \u0a95\u0ab0\u0acb"
+ }
+ },
+ "success": "\u0aa5\u0acd\u0ab0\u0ac7\u0aa1\u0aa8\u0ac1\u0a82 \u0aa8\u0abe\u0aae \u0aac\u0aa6\u0ab2\u0abe\u0aaf\u0ac1\u0a82!",
+ "inProgress": "\u0aa5\u0acd\u0ab0\u0ac7\u0aa1\u0aa8\u0ac1\u0a82 \u0aa8\u0abe\u0aae \u0aac\u0aa6\u0ab2\u0ac0 \u0ab0\u0ab9\u0acd\u0aaf\u0abe \u0a9b\u0ac0\u0a8f"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "\u0a9a\u0ac7\u0a9f",
+ "readme": "\u0ab5\u0abe\u0a82\u0a9a\u0acb",
+ "theme": {
+ "light": "Light Theme",
+ "dark": "Dark Theme",
+ "system": "Follow System"
+ }
+ },
+ "newChat": {
+ "button": "\u0aa8\u0ab5\u0ac0 \u0a9a\u0ac7\u0a9f",
+ "dialog": {
+ "title": "\u0aa8\u0ab5\u0ac0 \u0a9a\u0ac7\u0a9f \u0aac\u0aa8\u0abe\u0ab5\u0acb",
+ "description": "\u0a86 \u0aa4\u0aae\u0abe\u0ab0\u0acb \u0ab5\u0ab0\u0acd\u0aa4\u0aae\u0abe\u0aa8 \u0a9a\u0ac7\u0a9f \u0a87\u0aa4\u0abf\u0ab9\u0abe\u0ab8 \u0ab8\u0abe\u0aab \u0a95\u0ab0\u0ab6\u0ac7. \u0ab6\u0ac1\u0a82 \u0aa4\u0aae\u0ac7 \u0a9a\u0abe\u0ab2\u0ac1 \u0ab0\u0abe\u0a96\u0ab5\u0abe \u0aae\u0abe\u0a82\u0a97\u0acb \u0a9b\u0acb?",
+ "tooltip": "\u0aa8\u0ab5\u0ac0 \u0a9a\u0ac7\u0a9f"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "\u0ab8\u0ac7\u0a9f\u0abf\u0a82\u0a97\u0acd\u0ab8",
+ "settingsKey": "S",
+ "apiKeys": "API \u0a95\u0ac0",
+ "logout": "\u0ab2\u0ac9\u0a97\u0a86\u0a89\u0a9f"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "\u0a9c\u0ab0\u0ac2\u0ab0\u0ac0 API \u0a95\u0ac0",
+ "description": "\u0a86 \u0a8f\u0aaa\u0acd\u0ab2\u0abf\u0a95\u0ac7\u0ab6\u0aa8 \u0ab5\u0abe\u0aaa\u0ab0\u0ab5\u0abe \u0aae\u0abe\u0a9f\u0ac7, \u0aa8\u0ac0\u0a9a\u0ac7\u0aa8\u0ac0 API \u0a95\u0ac0 \u0a9c\u0ab0\u0ac2\u0ab0\u0ac0 \u0a9b\u0ac7. \u0a95\u0ac0 \u0aa4\u0aae\u0abe\u0ab0\u0abe \u0aa1\u0abf\u0ab5\u0abe\u0a87\u0ab8\u0aa8\u0abe \u0ab2\u0acb\u0a95\u0ab2 \u0ab8\u0acd\u0a9f\u0acb\u0ab0\u0ac7\u0a9c\u0aae\u0abe\u0a82 \u0ab8\u0a82\u0a97\u0acd\u0ab0\u0ab9\u0abf\u0aa4 \u0aa5\u0ab6\u0ac7.",
+ "success": {
+ "saved": "\u0ab8\u0aab\u0ab3\u0aa4\u0abe\u0aaa\u0ac2\u0ab0\u0acd\u0ab5\u0a95 \u0ab8\u0abe\u0a9a\u0ab5\u0acd\u0aaf\u0ac1\u0a82"
+ }
+ },
+ "alerts": {
+ "info": "Info",
+ "note": "Note",
+ "tip": "Tip",
+ "important": "Important",
+ "warning": "Warning",
+ "caution": "Caution",
+ "debug": "Debug",
+ "example": "Example",
+ "success": "Success",
+ "help": "Help",
+ "idea": "Idea",
+ "pending": "Pending",
+ "security": "Security",
+ "beta": "Beta",
+ "best-practice": "Best Practice"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "\u0aac\u0ac7\u0a82\u0a9a\u0ac0 \u0ab2\u0acb..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/he-IL.json b/.chainlit/translations/he-IL.json
new file mode 100644
index 0000000..8f6b0b3
--- /dev/null
+++ b/.chainlit/translations/he-IL.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "\u05d1\u05d9\u05d8\u05d5\u05dc",
+ "confirm": "\u05d0\u05d9\u05e9\u05d5\u05e8",
+ "continue": "\u05d4\u05de\u05e9\u05da",
+ "goBack": "\u05d7\u05d6\u05d5\u05e8",
+ "reset": "\u05d0\u05d9\u05e4\u05d5\u05e1",
+ "submit": "\u05e9\u05dc\u05d7"
+ },
+ "status": {
+ "loading": "\u05d8\u05d5\u05e2\u05df...",
+ "error": {
+ "default": "\u05d0\u05d9\u05e8\u05e2\u05d4 \u05e9\u05d2\u05d9\u05d0\u05d4",
+ "serverConnection": "\u05dc\u05d0 \u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05dc\u05e9\u05e8\u05ea"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "\u05d4\u05ea\u05d7\u05d1\u05e8 \u05db\u05d3\u05d9 \u05dc\u05d2\u05e9\u05ea \u05dc\u05d0\u05e4\u05dc\u05d9\u05e7\u05e6\u05d9\u05d4",
+ "form": {
+ "email": {
+ "label": "\u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05d9\u05de\u05d9\u05d9\u05dc",
+ "required": "\u05e9\u05d3\u05d4 \u05d4\u05d0\u05d9\u05de\u05d9\u05d9\u05dc \u05d4\u05d5\u05d0 \u05e9\u05d3\u05d4 \u05d7\u05d5\u05d1\u05d4",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "\u05e1\u05d9\u05e1\u05de\u05d4",
+ "required": "\u05e9\u05d3\u05d4 \u05d4\u05e1\u05d9\u05e1\u05de\u05d4 \u05d4\u05d5\u05d0 \u05e9\u05d3\u05d4 \u05d7\u05d5\u05d1\u05d4"
+ },
+ "actions": {
+ "signin": "\u05d4\u05ea\u05d7\u05d1\u05e8"
+ },
+ "alternativeText": {
+ "or": "\u05d0\u05d5"
+ }
+ },
+ "errors": {
+ "default": "\u05dc\u05d0 \u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8",
+ "signin": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8",
+ "oauthSignin": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8",
+ "redirectUriMismatch": "\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05d4\u05e4\u05e0\u05d9\u05d4 \u05d0\u05d9\u05e0\u05d4 \u05ea\u05d5\u05d0\u05de\u05ea \u05d0\u05ea \u05ea\u05e6\u05d5\u05e8\u05ea \u05d0\u05e4\u05dc\u05d9\u05e7\u05e6\u05d9\u05d9\u05ea OAuth",
+ "oauthCallback": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8",
+ "oauthCreateAccount": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8",
+ "emailCreateAccount": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8",
+ "callback": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8",
+ "oauthAccountNotLinked": "\u05db\u05d3\u05d9 \u05dc\u05d0\u05de\u05ea \u05d0\u05ea \u05d6\u05d4\u05d5\u05ea\u05da, \u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d0\u05d5\u05ea\u05d5 \u05d7\u05e9\u05d1\u05d5\u05df \u05d1\u05d5 \u05d4\u05e9\u05ea\u05de\u05e9\u05ea \u05d1\u05de\u05e7\u05d5\u05e8",
+ "emailSignin": "\u05dc\u05d0 \u05e0\u05d9\u05ea\u05df \u05d4\u05d9\u05d4 \u05dc\u05e9\u05dc\u05d5\u05d7 \u05d0\u05ea \u05d4\u05d0\u05d9\u05de\u05d9\u05d9\u05dc",
+ "emailVerify": "\u05d0\u05e0\u05d0 \u05d0\u05de\u05ea \u05d0\u05ea \u05d4\u05d0\u05d9\u05de\u05d9\u05d9\u05dc \u05e9\u05dc\u05da, \u05e0\u05e9\u05dc\u05d7 \u05d0\u05d9\u05de\u05d9\u05d9\u05dc \u05d7\u05d3\u05e9",
+ "credentialsSignin": "\u05d4\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05e0\u05db\u05e9\u05dc\u05d4. \u05d1\u05d3\u05d5\u05e7 \u05e9\u05d4\u05e4\u05e8\u05d8\u05d9\u05dd \u05e9\u05d4\u05d6\u05e0\u05ea \u05e0\u05db\u05d5\u05e0\u05d9\u05dd",
+ "sessionRequired": "\u05d0\u05e0\u05d0 \u05d4\u05ea\u05d7\u05d1\u05e8 \u05db\u05d3\u05d9 \u05dc\u05d2\u05e9\u05ea \u05dc\u05d3\u05e3 \u05d6\u05d4"
+ }
+ },
+ "provider": {
+ "continue": "\u05d4\u05de\u05e9\u05da \u05e2\u05dd {{provider}}"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "\u05d4\u05e7\u05dc\u05d3 \u05d0\u05ea \u05d4\u05d4\u05d5\u05d3\u05e2\u05d4 \u05e9\u05dc\u05da \u05db\u05d0\u05df...",
+ "actions": {
+ "send": "\u05e9\u05dc\u05d7 \u05d4\u05d5\u05d3\u05e2\u05d4",
+ "stop": "\u05e2\u05e6\u05d5\u05e8 \u05de\u05e9\u05d9\u05de\u05d4",
+ "attachFiles": "\u05e6\u05e8\u05e3 \u05e7\u05d1\u05e6\u05d9\u05dd"
+ }
+ },
+ "speech": {
+ "start": "\u05d4\u05ea\u05d7\u05dc \u05d4\u05e7\u05dc\u05d8\u05d4",
+ "stop": "\u05e2\u05e6\u05d5\u05e8 \u05d4\u05e7\u05dc\u05d8\u05d4",
+ "connecting": "\u05de\u05ea\u05d7\u05d1\u05e8"
+ },
+ "commands": {
+ "button": "\u05db\u05dc\u05d9\u05dd",
+ "changeTool": "\u05e9\u05e0\u05d4 \u05db\u05dc\u05d9",
+ "availableTools": "\u05db\u05dc\u05d9\u05dd \u05d6\u05de\u05d9\u05e0\u05d9\u05dd"
+ },
+ "fileUpload": {
+ "dragDrop": "\u05d2\u05e8\u05d5\u05e8 \u05d5\u05e9\u05d7\u05e8\u05e8 \u05e7\u05d1\u05e6\u05d9\u05dd \u05db\u05d0\u05df",
+ "browse": "\u05e2\u05d9\u05d9\u05df \u05d1\u05e7\u05d1\u05e6\u05d9\u05dd",
+ "sizeLimit": "\u05de\u05d2\u05d1\u05dc\u05d4:",
+ "errors": {
+ "failed": "\u05d4\u05e2\u05dc\u05d0\u05d4 \u05e0\u05db\u05e9\u05dc\u05d4",
+ "cancelled": "\u05d4\u05e2\u05dc\u05d0\u05d4 \u05d1\u05d5\u05d8\u05dc\u05d4 \u05e9\u05dc"
+ },
+ "actions": {
+ "cancelUpload": "\u05d1\u05d9\u05d8\u05d5\u05dc \u05d4\u05e2\u05dc\u05d0\u05d4",
+ "removeAttachment": "\u05d4\u05e1\u05e8\u05ea \u05e7\u05d5\u05d1\u05e5 \u05de\u05e6\u05d5\u05e8\u05e3"
+ }
+ },
+ "messages": {
+ "status": {
+ "using": "\u05de\u05e9\u05ea\u05de\u05e9 \u05d1",
+ "used": "\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1"
+ },
+ "actions": {
+ "copy": {
+ "button": "\u05d4\u05e2\u05ea\u05e7 \u05dc\u05dc\u05d5\u05d7",
+ "success": "\u05d4\u05d5\u05e2\u05ea\u05e7!"
+ }
+ },
+ "feedback": {
+ "positive": "\u05de\u05d5\u05e2\u05d9\u05dc",
+ "negative": "\u05dc\u05d0 \u05de\u05d5\u05e2\u05d9\u05dc",
+ "edit": "\u05e2\u05e8\u05d5\u05da \u05de\u05e9\u05d5\u05d1",
+ "dialog": {
+ "title": "\u05d4\u05d5\u05e1\u05e3 \u05ea\u05d2\u05d5\u05d1\u05d4",
+ "submit": "\u05e9\u05dc\u05d7 \u05de\u05e9\u05d5\u05d1",
+ "yourFeedback": "\u05d4\u05de\u05e9\u05d5\u05d1 \u05e9\u05dc\u05da..."
+ },
+ "status": {
+ "updating": "\u05de\u05e2\u05d3\u05db\u05df",
+ "updated": "\u05d4\u05de\u05e9\u05d5\u05d1 \u05e2\u05d5\u05d3\u05db\u05df"
+ }
+ }
+ },
+ "history": {
+ "title": "\u05e7\u05dc\u05d8\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd",
+ "empty": "\u05db\u05dc \u05db\u05da \u05e8\u05d9\u05e7...",
+ "show": "\u05d4\u05e6\u05d2 \u05d4\u05d9\u05e1\u05d8\u05d5\u05e8\u05d9\u05d4"
+ },
+ "settings": {
+ "title": "\u05e4\u05d0\u05e0\u05dc \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea",
+ "customize": "\u05d4\u05ea\u05d0\u05dd \u05d0\u05d9\u05e9\u05d9\u05ea \u05d0\u05ea \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05d4\u05e6'\u05d0\u05d8 \u05e9\u05dc\u05da \u05db\u05d0\u05df"
+ },
+ "watermark": "\u05de\u05d5\u05d3\u05dc\u05d9 \u05e9\u05e4\u05d4 \u05d2\u05d3\u05d5\u05dc\u05d9\u05dd \u05e2\u05dc\u05d5\u05dc\u05d9\u05dd \u05dc\u05e2\u05e9\u05d5\u05ea \u05d8\u05e2\u05d5\u05d9\u05d5\u05ea. \u05db\u05d3\u05d0\u05d9 \u05dc\u05d1\u05d3\u05d5\u05e7 \u05de\u05d9\u05d3\u05e2 \u05d7\u05e9\u05d5\u05d1."
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "\u05e6'\u05d0\u05d8\u05d9\u05dd \u05e7\u05d5\u05d3\u05de\u05d9\u05dd",
+ "filters": {
+ "search": "\u05d7\u05d9\u05e4\u05d5\u05e9",
+ "placeholder": "Search conversations..."
+ },
+ "timeframes": {
+ "today": "\u05d4\u05d9\u05d5\u05dd",
+ "yesterday": "\u05d0\u05ea\u05de\u05d5\u05dc",
+ "previous7days": "7 \u05d9\u05de\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd",
+ "previous30days": "30 \u05d9\u05de\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd"
+ },
+ "empty": "\u05dc\u05d0 \u05e0\u05de\u05e6\u05d0\u05d5 \u05e9\u05d9\u05d7\u05d5\u05ea",
+ "actions": {
+ "close": "\u05e1\u05d2\u05d5\u05e8 \u05e1\u05e8\u05d2\u05dc \u05e6\u05d3",
+ "open": "\u05e4\u05ea\u05d7 \u05e1\u05e8\u05d2\u05dc \u05e6\u05d3"
+ }
+ },
+ "thread": {
+ "untitled": "\u05e9\u05d9\u05d7\u05d4 \u05dc\u05dc\u05d0 \u05db\u05d5\u05ea\u05e8\u05ea",
+ "menu": {
+ "rename": "\u05e9\u05d9\u05e0\u05d5\u05d9 \u05e9\u05dd",
+ "share": "\u05e9\u05d9\u05ea\u05d5\u05e3",
+ "delete": "Delete"
+ },
+ "actions": {
+ "share": {
+ "title": "\u05e9\u05d9\u05ea\u05d5\u05e3 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05dc\u05e9\u05d9\u05d7\u05d4",
+ "button": "\u05e9\u05d9\u05ea\u05d5\u05e3",
+ "status": {
+ "copied": "\u05d4\u05e7\u05d9\u05e9\u05d5\u05e8 \u05d4\u05d5\u05e2\u05ea\u05e7",
+ "created": "\u05e7\u05d9\u05e9\u05d5\u05e8 \u05d4\u05e9\u05d9\u05ea\u05d5\u05e3 \u05e0\u05d5\u05e6\u05e8!",
+ "unshared": "\u05d4\u05e9\u05d9\u05ea\u05d5\u05e3 \u05d1\u05d5\u05d8\u05dc \u05e2\u05d1\u05d5\u05e8 \u05e9\u05d9\u05d7\u05d4 \u05d6\u05d5"
+ },
+ "error": {
+ "create": "\u05d9\u05e6\u05d9\u05e8\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d4\u05e9\u05d9\u05ea\u05d5\u05e3 \u05e0\u05db\u05e9\u05dc\u05d4",
+ "unshare": "\u05d1\u05d9\u05d8\u05d5\u05dc \u05d4\u05e9\u05d9\u05ea\u05d5\u05e3 \u05e9\u05dc \u05d4\u05e9\u05d9\u05d7\u05d4 \u05e0\u05db\u05e9\u05dc"
+ }
+ },
+ "delete": {
+ "title": "\u05d0\u05e9\u05e8 \u05de\u05d7\u05d9\u05e7\u05d4",
+ "description": "\u05e4\u05e2\u05d5\u05dc\u05d4 \u05d6\u05d5 \u05ea\u05de\u05d7\u05e7 \u05d0\u05ea \u05d4\u05e9\u05d9\u05d7\u05d4 \u05d5\u05db\u05df \u05d0\u05ea \u05d4\u05d4\u05d5\u05d3\u05e2\u05d5\u05ea \u05d5\u05d4\u05d0\u05dc\u05de\u05e0\u05d8\u05d9\u05dd \u05e9\u05dc\u05d4. \u05dc\u05d0 \u05e0\u05d9\u05ea\u05df \u05dc\u05d1\u05d8\u05dc \u05e4\u05e2\u05d5\u05dc\u05d4 \u05d6\u05d5",
+ "success": "\u05d4\u05e6'\u05d0\u05d8 \u05e0\u05de\u05d7\u05e7",
+ "inProgress": "\u05de\u05d5\u05d7\u05e7 \u05e6'\u05d0\u05d8"
+ },
+ "rename": {
+ "title": "\u05e9\u05e0\u05d4 \u05e9\u05dd \u05e9\u05d9\u05d7\u05d4",
+ "description": "\u05d4\u05d6\u05df \u05e9\u05dd \u05d7\u05d3\u05e9 \u05dc\u05e9\u05d9\u05d7\u05d4 \u05d6\u05d5",
+ "form": {
+ "name": {
+ "label": "\u05e9\u05dd",
+ "placeholder": "\u05d4\u05d6\u05df \u05e9\u05dd \u05d7\u05d3\u05e9"
+ }
+ },
+ "success": "\u05e9\u05dd \u05d4\u05e9\u05d9\u05d7\u05d4 \u05e9\u05d5\u05e0\u05d4!",
+ "inProgress": "\u05de\u05e9\u05e0\u05d4 \u05e9\u05dd \u05e9\u05d9\u05d7\u05d4"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "\u05e6'\u05d0\u05d8",
+ "readme": "\u05e7\u05e8\u05d0 \u05d0\u05d5\u05ea\u05d9",
+ "theme": {
+ "light": "Light Theme",
+ "dark": "Dark Theme",
+ "system": "Follow System"
+ }
+ },
+ "newChat": {
+ "button": "\u05e6'\u05d0\u05d8 \u05d7\u05d3\u05e9",
+ "dialog": {
+ "title": "\u05e6\u05d5\u05e8 \u05e6'\u05d0\u05d8 \u05d7\u05d3\u05e9",
+ "description": "\u05e4\u05e2\u05d5\u05dc\u05d4 \u05d6\u05d5 \u05ea\u05e0\u05e7\u05d4 \u05d0\u05ea \u05d4\u05d9\u05e1\u05d8\u05d5\u05e8\u05d9\u05d9\u05ea \u05d4\u05e6'\u05d0\u05d8 \u05d4\u05e0\u05d5\u05db\u05d7\u05d9\u05ea \u05e9\u05dc\u05da. \u05d4\u05d0\u05dd \u05d0\u05ea\u05d4 \u05d1\u05d8\u05d5\u05d7 \u05e9\u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05de\u05e9\u05d9\u05da?",
+ "tooltip": "\u05e6'\u05d0\u05d8 \u05d7\u05d3\u05e9"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea",
+ "settingsKey": "\u05d4",
+ "apiKeys": "\u05de\u05e4\u05ea\u05d7\u05d5\u05ea API",
+ "logout": "\u05d4\u05ea\u05e0\u05ea\u05e7"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "\u05de\u05e4\u05ea\u05d7\u05d5\u05ea API \u05e0\u05d3\u05e8\u05e9\u05d9\u05dd",
+ "description": "\u05db\u05d3\u05d9 \u05dc\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05d0\u05e4\u05dc\u05d9\u05e7\u05e6\u05d9\u05d4 \u05d6\u05d5, \u05e0\u05d3\u05e8\u05e9\u05d9\u05dd \u05de\u05e4\u05ea\u05d7\u05d5\u05ea API \u05d4\u05d1\u05d0\u05d9\u05dd. \u05d4\u05de\u05e4\u05ea\u05d7\u05d5\u05ea \u05de\u05d0\u05d5\u05d7\u05e1\u05e0\u05d9\u05dd \u05d1\u05d0\u05d7\u05e1\u05d5\u05df \u05d4\u05de\u05e7\u05d5\u05de\u05d9 \u05e9\u05dc \u05d4\u05de\u05db\u05e9\u05d9\u05e8 \u05e9\u05dc\u05da.",
+ "success": {
+ "saved": "\u05e0\u05e9\u05de\u05e8 \u05d1\u05d4\u05e6\u05dc\u05d7\u05d4"
+ }
+ },
+ "alerts": {
+ "info": "Info",
+ "note": "Note",
+ "tip": "Tip",
+ "important": "Important",
+ "warning": "Warning",
+ "caution": "Caution",
+ "debug": "Debug",
+ "example": "Example",
+ "success": "Success",
+ "help": "Help",
+ "idea": "Idea",
+ "pending": "Pending",
+ "security": "Security",
+ "beta": "Beta",
+ "best-practice": "Best Practice"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "\u05d1\u05d7\u05e8..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/hi.json b/.chainlit/translations/hi.json
new file mode 100644
index 0000000..5642f15
--- /dev/null
+++ b/.chainlit/translations/hi.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "\u0930\u0926\u094d\u0926 \u0915\u0930\u0947\u0902",
+ "confirm": "\u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0947\u0902",
+ "continue": "\u091c\u093e\u0930\u0940 \u0930\u0916\u0947\u0902",
+ "goBack": "\u0935\u093e\u092a\u0938 \u091c\u093e\u090f\u0902",
+ "reset": "\u0930\u0940\u0938\u0947\u091f \u0915\u0930\u0947\u0902",
+ "submit": "\u091c\u092e\u093e \u0915\u0930\u0947\u0902"
+ },
+ "status": {
+ "loading": "\u0932\u094b\u0921 \u0939\u094b \u0930\u0939\u093e \u0939\u0948...",
+ "error": {
+ "default": "\u090f\u0915 \u0924\u094d\u0930\u0941\u091f\u093f \u0939\u0941\u0908",
+ "serverConnection": "\u0938\u0930\u094d\u0935\u0930 \u0938\u0947 \u0938\u0902\u092a\u0930\u094d\u0915 \u0928\u0939\u0940\u0902 \u0939\u094b \u092a\u093e \u0930\u0939\u093e"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "\u0910\u092a \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0932\u0949\u0917\u093f\u0928 \u0915\u0930\u0947\u0902",
+ "form": {
+ "email": {
+ "label": "\u0908\u092e\u0947\u0932 \u092a\u0924\u093e",
+ "required": "\u0908\u092e\u0947\u0932 \u090f\u0915 \u0906\u0935\u0936\u094d\u092f\u0915 \u092b\u093c\u0940\u0932\u094d\u0921 \u0939\u0948",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "\u092a\u093e\u0938\u0935\u0930\u094d\u0921",
+ "required": "\u092a\u093e\u0938\u0935\u0930\u094d\u0921 \u090f\u0915 \u0906\u0935\u0936\u094d\u092f\u0915 \u092b\u093c\u0940\u0932\u094d\u0921 \u0939\u0948"
+ },
+ "actions": {
+ "signin": "\u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0947\u0902"
+ },
+ "alternativeText": {
+ "or": "\u092f\u093e"
+ }
+ },
+ "errors": {
+ "default": "\u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0905\u0938\u092e\u0930\u094d\u0925",
+ "signin": "\u0915\u093f\u0938\u0940 \u0926\u0942\u0938\u0930\u0947 \u0916\u093e\u0924\u0947 \u0938\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0930\u0947\u0902",
+ "oauthSignin": "\u0915\u093f\u0938\u0940 \u0926\u0942\u0938\u0930\u0947 \u0916\u093e\u0924\u0947 \u0938\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0930\u0947\u0902",
+ "redirectUriMismatch": "\u0930\u0940\u0921\u093e\u092f\u0930\u0947\u0915\u094d\u091f URI oauth \u0910\u092a \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930\u0947\u0936\u0928 \u0938\u0947 \u092e\u0947\u0932 \u0928\u0939\u0940\u0902 \u0916\u093e \u0930\u0939\u093e",
+ "oauthCallback": "\u0915\u093f\u0938\u0940 \u0926\u0942\u0938\u0930\u0947 \u0916\u093e\u0924\u0947 \u0938\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0930\u0947\u0902",
+ "oauthCreateAccount": "\u0915\u093f\u0938\u0940 \u0926\u0942\u0938\u0930\u0947 \u0916\u093e\u0924\u0947 \u0938\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0930\u0947\u0902",
+ "emailCreateAccount": "\u0915\u093f\u0938\u0940 \u0926\u0942\u0938\u0930\u0947 \u0916\u093e\u0924\u0947 \u0938\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0930\u0947\u0902",
+ "callback": "\u0915\u093f\u0938\u0940 \u0926\u0942\u0938\u0930\u0947 \u0916\u093e\u0924\u0947 \u0938\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0930\u0947\u0902",
+ "oauthAccountNotLinked": "\u0905\u092a\u0928\u0940 \u092a\u0939\u091a\u093e\u0928 \u0915\u0940 \u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f, \u0909\u0938\u0940 \u0916\u093e\u0924\u0947 \u0938\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0947\u0902 \u091c\u093f\u0938\u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0906\u092a\u0928\u0947 \u092e\u0942\u0932 \u0930\u0942\u092a \u0938\u0947 \u0915\u093f\u092f\u093e \u0925\u093e",
+ "emailSignin": "\u0908\u092e\u0947\u0932 \u0928\u0939\u0940\u0902 \u092d\u0947\u091c\u093e \u091c\u093e \u0938\u0915\u093e",
+ "emailVerify": "\u0915\u0943\u092a\u092f\u093e \u0905\u092a\u0928\u093e \u0908\u092e\u0947\u0932 \u0938\u0924\u094d\u092f\u093e\u092a\u093f\u0924 \u0915\u0930\u0947\u0902, \u090f\u0915 \u0928\u092f\u093e \u0908\u092e\u0947\u0932 \u092d\u0947\u091c\u093e \u0917\u092f\u093e \u0939\u0948",
+ "credentialsSignin": "\u0938\u093e\u0907\u0928 \u0907\u0928 \u0935\u093f\u092b\u0932\u0964 \u0906\u092a\u0915\u0947 \u0926\u094d\u0935\u093e\u0930\u093e \u092a\u094d\u0930\u0926\u093e\u0928 \u0915\u093f\u090f \u0917\u090f \u0935\u093f\u0935\u0930\u0923 \u0915\u0940 \u091c\u093e\u0902\u091a \u0915\u0930\u0947\u0902",
+ "sessionRequired": "\u0907\u0938 \u092a\u0943\u0937\u094d\u0920 \u0924\u0915 \u092a\u0939\u0941\u0902\u091a\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0915\u0943\u092a\u092f\u093e \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0947\u0902"
+ }
+ },
+ "provider": {
+ "continue": "{{provider}} \u0915\u0947 \u0938\u093e\u0925 \u091c\u093e\u0930\u0940 \u0930\u0916\u0947\u0902"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "\u0905\u092a\u0928\u093e \u0938\u0902\u0926\u0947\u0936 \u092f\u0939\u093e\u0902 \u091f\u093e\u0907\u092a \u0915\u0930\u0947\u0902...",
+ "actions": {
+ "send": "\u0938\u0902\u0926\u0947\u0936 \u092d\u0947\u091c\u0947\u0902",
+ "stop": "\u0915\u093e\u0930\u094d\u092f \u0930\u094b\u0915\u0947\u0902",
+ "attachFiles": "\u092b\u093c\u093e\u0907\u0932\u0947\u0902 \u0938\u0902\u0932\u0917\u094d\u0928 \u0915\u0930\u0947\u0902"
+ }
+ },
+ "speech": {
+ "start": "\u0930\u093f\u0915\u0949\u0930\u094d\u0921\u093f\u0902\u0917 \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902",
+ "stop": "\u0930\u093f\u0915\u0949\u0930\u094d\u0921\u093f\u0902\u0917 \u0930\u094b\u0915\u0947\u0902",
+ "connecting": "\u0915\u0928\u0947\u0915\u094d\u091f \u0939\u094b \u0930\u0939\u093e \u0939\u0948"
+ },
+ "fileUpload": {
+ "dragDrop": "\u092b\u093c\u093e\u0907\u0932\u094b\u0902 \u0915\u094b \u092f\u0939\u093e\u0902 \u0916\u0940\u0902\u091a\u0947\u0902 \u0914\u0930 \u091b\u094b\u0921\u093c\u0947\u0902",
+ "browse": "\u092b\u093c\u093e\u0907\u0932\u0947\u0902 \u092c\u094d\u0930\u093e\u0909\u091c\u093c \u0915\u0930\u0947\u0902",
+ "sizeLimit": "\u0938\u0940\u092e\u093e:",
+ "errors": {
+ "failed": "\u0905\u092a\u0932\u094b\u0921 \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932",
+ "cancelled": "\u0915\u093e \u0905\u092a\u0932\u094b\u0921 \u0930\u0926\u094d\u0926 \u0915\u093f\u092f\u093e \u0917\u092f\u093e"
+ },
+ "actions": {
+ "cancelUpload": "\u0905\u092a\u0932\u094b\u0921 \u0930\u0926\u094d\u0926 \u0915\u0930\u0947\u0902",
+ "removeAttachment": "\u0938\u0902\u0932\u0917\u094d\u0928\u0915 \u0939\u091f\u093e\u090f\u0902"
+ }
+ },
+ "commands": {
+ "button": "\u0909\u092a\u0915\u0930\u0923",
+ "changeTool": "\u0909\u092a\u0915\u0930\u0923 \u092c\u0926\u0932\u0947\u0902",
+ "availableTools": "\u0909\u092a\u0932\u092c\u094d\u0927 \u0909\u092a\u0915\u0930\u0923"
+ },
+ "messages": {
+ "status": {
+ "using": "\u0909\u092a\u092f\u094b\u0917 \u0915\u0930 \u0930\u0939\u0947 \u0939\u0948\u0902",
+ "used": "\u0909\u092a\u092f\u094b\u0917 \u0915\u093f\u092f\u093e"
+ },
+ "actions": {
+ "copy": {
+ "button": "\u0915\u094d\u0932\u093f\u092a\u092c\u094b\u0930\u094d\u0921 \u092a\u0930 \u0915\u0949\u092a\u0940 \u0915\u0930\u0947\u0902",
+ "success": "\u0915\u0949\u092a\u0940 \u0915\u093f\u092f\u093e \u0917\u092f\u093e!"
+ }
+ },
+ "feedback": {
+ "positive": "\u0938\u0939\u093e\u092f\u0915",
+ "negative": "\u0938\u0939\u093e\u092f\u0915 \u0928\u0939\u0940\u0902",
+ "edit": "\u092a\u094d\u0930\u0924\u093f\u0915\u094d\u0930\u093f\u092f\u093e \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u0947\u0902",
+ "dialog": {
+ "title": "\u091f\u093f\u092a\u094d\u092a\u0923\u0940 \u091c\u094b\u0921\u093c\u0947\u0902",
+ "submit": "\u092a\u094d\u0930\u0924\u093f\u0915\u094d\u0930\u093f\u092f\u093e \u091c\u092e\u093e \u0915\u0930\u0947\u0902",
+ "yourFeedback": "\u0906\u092a\u0915\u0940 \u092a\u094d\u0930\u0924\u093f\u0915\u094d\u0930\u093f\u092f\u093e..."
+ },
+ "status": {
+ "updating": "\u0905\u092a\u0921\u0947\u091f \u0939\u094b \u0930\u0939\u093e \u0939\u0948",
+ "updated": "\u092a\u094d\u0930\u0924\u093f\u0915\u094d\u0930\u093f\u092f\u093e \u0905\u092a\u0921\u0947\u091f \u0915\u0940 \u0917\u0908"
+ }
+ }
+ },
+ "history": {
+ "title": "\u092a\u093f\u091b\u0932\u0947 \u0907\u0928\u092a\u0941\u091f",
+ "empty": "\u0915\u0941\u091b \u092d\u0940 \u0928\u0939\u0940\u0902 \u0939\u0948...",
+ "show": "\u0907\u0924\u093f\u0939\u093e\u0938 \u0926\u093f\u0916\u093e\u090f\u0902"
+ },
+ "settings": {
+ "title": "\u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938 \u092a\u0948\u0928\u0932",
+ "customize": "\u0905\u092a\u0928\u0947 \u091a\u0948\u091f \u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938 \u0915\u094b \u092f\u0939\u093e\u0902 \u0905\u0928\u0941\u0915\u0942\u0932\u093f\u0924 \u0915\u0930\u0947\u0902"
+ },
+ "watermark": "\u090f\u0932\u090f\u0932\u090f\u092e \u0917\u0932\u0924\u093f\u092f\u093e\u0902 \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 \u092e\u0939\u0924\u094d\u0935\u092a\u0942\u0930\u094d\u0923 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0915\u0940 \u091c\u093e\u0902\u091a \u0915\u0930\u0928\u0947 \u092a\u0930 \u0935\u093f\u091a\u093e\u0930 \u0915\u0930\u0947\u0902\u0964"
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "\u092a\u093f\u091b\u0932\u0940 \u091a\u0948\u091f",
+ "filters": {
+ "search": "\u0916\u094b\u091c\u0947\u0902",
+ "placeholder": "Search conversations..."
+ },
+ "timeframes": {
+ "today": "\u0906\u091c",
+ "yesterday": "\u0915\u0932",
+ "previous7days": "\u092a\u093f\u091b\u0932\u0947 7 \u0926\u093f\u0928",
+ "previous30days": "\u092a\u093f\u091b\u0932\u0947 30 \u0926\u093f\u0928"
+ },
+ "empty": "\u0915\u094b\u0908 \u0925\u094d\u0930\u0947\u0921 \u0928\u0939\u0940\u0902 \u092e\u093f\u0932\u093e",
+ "actions": {
+ "close": "\u0938\u093e\u0907\u0921\u092c\u093e\u0930 \u092c\u0902\u0926 \u0915\u0930\u0947\u0902",
+ "open": "\u0938\u093e\u0907\u0921\u092c\u093e\u0930 \u0916\u094b\u0932\u0947\u0902"
+ }
+ },
+ "thread": {
+ "untitled": "\u0936\u0940\u0930\u094d\u0937\u0915\u0939\u0940\u0928 \u0935\u093e\u0930\u094d\u0924\u093e\u0932\u093e\u092a",
+ "menu": {
+ "rename": "\u0928\u093e\u092e \u092c\u0926\u0932\u0947\u0902",
+ "share": "\u0938\u093e\u091d\u093e \u0915\u0930\u0947\u0902",
+ "delete": "Delete"
+ },
+ "actions": {
+ "share": {
+ "title": "\u091a\u0948\u091f \u0915\u093e \u0932\u093f\u0902\u0915 \u0938\u093e\u091d\u093e \u0915\u0930\u0947\u0902",
+ "button": "\u0938\u093e\u091d\u093e \u0915\u0930\u0947\u0902",
+ "status": {
+ "copied": "\u0932\u093f\u0902\u0915 \u0915\u0949\u092a\u0940 \u0915\u093f\u092f\u093e \u0917\u092f\u093e",
+ "created": "\u0936\u0947\u092f\u0930 \u0932\u093f\u0902\u0915 \u092c\u0928\u093e\u092f\u093e \u0917\u092f\u093e!",
+ "unshared": "\u0907\u0938 \u0925\u094d\u0930\u0947\u0921 \u0915\u0947 \u0932\u093f\u090f \u0938\u093e\u091d\u093e \u0915\u0930\u0928\u093e \u0928\u093f\u0937\u094d\u0915\u094d\u0930\u093f\u092f \u0939\u0948"
+ },
+ "error": {
+ "create": "\u0936\u0947\u092f\u0930 \u0932\u093f\u0902\u0915 \u092c\u0928\u093e\u0928\u0947 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932",
+ "unshare": "\u0925\u094d\u0930\u0947\u0921 \u0915\u094b \u0905\u0928\u0936\u0947\u092f\u0930 \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932"
+ }
+ },
+ "delete": {
+ "title": "\u0939\u091f\u093e\u0928\u0947 \u0915\u0940 \u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0947\u0902",
+ "description": "\u092f\u0939 \u0925\u094d\u0930\u0947\u0921 \u0914\u0930 \u0907\u0938\u0915\u0947 \u0938\u0902\u0926\u0947\u0936\u094b\u0902 \u0914\u0930 \u0924\u0924\u094d\u0935\u094b\u0902 \u0915\u094b \u0939\u091f\u093e \u0926\u0947\u0917\u093e\u0964 \u092f\u0939 \u0915\u094d\u0930\u093f\u092f\u093e \u0935\u093e\u092a\u0938 \u0928\u0939\u0940\u0902 \u0915\u0940 \u091c\u093e \u0938\u0915\u0924\u0940",
+ "success": "\u091a\u0948\u091f \u0939\u091f\u093e \u0926\u0940 \u0917\u0908",
+ "inProgress": "\u091a\u0948\u091f \u0939\u091f\u093e\u0908 \u091c\u093e \u0930\u0939\u0940 \u0939\u0948"
+ },
+ "rename": {
+ "title": "\u0925\u094d\u0930\u0947\u0921 \u0915\u093e \u0928\u093e\u092e \u092c\u0926\u0932\u0947\u0902",
+ "description": "\u0907\u0938 \u0925\u094d\u0930\u0947\u0921 \u0915\u0947 \u0932\u093f\u090f \u090f\u0915 \u0928\u092f\u093e \u0928\u093e\u092e \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902",
+ "form": {
+ "name": {
+ "label": "\u0928\u093e\u092e",
+ "placeholder": "\u0928\u092f\u093e \u0928\u093e\u092e \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902"
+ }
+ },
+ "success": "\u0925\u094d\u0930\u0947\u0921 \u0915\u093e \u0928\u093e\u092e \u092c\u0926\u0932 \u0926\u093f\u092f\u093e \u0917\u092f\u093e!",
+ "inProgress": "\u0925\u094d\u0930\u0947\u0921 \u0915\u093e \u0928\u093e\u092e \u092c\u0926\u0932\u093e \u091c\u093e \u0930\u0939\u093e \u0939\u0948"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "\u091a\u0948\u091f",
+ "readme": "\u0930\u0940\u0921\u092e\u0940",
+ "theme": {
+ "light": "Light Theme",
+ "dark": "Dark Theme",
+ "system": "Follow System"
+ }
+ },
+ "newChat": {
+ "button": "\u0928\u0908 \u091a\u0948\u091f",
+ "dialog": {
+ "title": "\u0928\u0908 \u091a\u0948\u091f \u092c\u0928\u093e\u090f\u0902",
+ "description": "\u092f\u0939 \u0906\u092a\u0915\u093e \u0935\u0930\u094d\u0924\u092e\u093e\u0928 \u091a\u0948\u091f \u0907\u0924\u093f\u0939\u093e\u0938 \u0938\u093e\u092b\u093c \u0915\u0930 \u0926\u0947\u0917\u093e\u0964 \u0915\u094d\u092f\u093e \u0906\u092a \u091c\u093e\u0930\u0940 \u0930\u0916\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902?",
+ "tooltip": "\u0928\u0908 \u091a\u0948\u091f"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "\u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938",
+ "settingsKey": "S",
+ "apiKeys": "API \u0915\u0941\u0902\u091c\u093f\u092f\u093e\u0902",
+ "logout": "\u0932\u0949\u0917\u0906\u0909\u091f"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "\u0906\u0935\u0936\u094d\u092f\u0915 API \u0915\u0941\u0902\u091c\u093f\u092f\u093e\u0902",
+ "description": "\u0907\u0938 \u0910\u092a \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f, \u0928\u093f\u092e\u094d\u0928\u0932\u093f\u0916\u093f\u0924 API \u0915\u0941\u0902\u091c\u093f\u092f\u093e\u0902 \u0906\u0935\u0936\u094d\u092f\u0915 \u0939\u0948\u0902\u0964 \u0915\u0941\u0902\u091c\u093f\u092f\u093e\u0902 \u0906\u092a\u0915\u0947 \u0921\u093f\u0935\u093e\u0907\u0938 \u0915\u0947 \u0938\u094d\u0925\u093e\u0928\u0940\u092f \u0938\u0902\u0917\u094d\u0930\u0939\u0923 \u092e\u0947\u0902 \u0938\u0902\u0917\u094d\u0930\u0939\u0940\u0924 \u0915\u0940 \u091c\u093e\u0924\u0940 \u0939\u0948\u0902\u0964",
+ "success": {
+ "saved": "\u0938\u092b\u0932\u0924\u093e\u092a\u0942\u0930\u094d\u0935\u0915 \u0938\u0939\u0947\u091c\u093e \u0917\u092f\u093e"
+ }
+ },
+ "alerts": {
+ "info": "Info",
+ "note": "Note",
+ "tip": "Tip",
+ "important": "Important",
+ "warning": "Warning",
+ "caution": "Caution",
+ "debug": "Debug",
+ "example": "Example",
+ "success": "Success",
+ "help": "Help",
+ "idea": "Idea",
+ "pending": "Pending",
+ "security": "Security",
+ "beta": "Beta",
+ "best-practice": "Best Practice"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "\u091a\u0941\u0928\u0947\u0902..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/it.json b/.chainlit/translations/it.json
new file mode 100644
index 0000000..5ce0340
--- /dev/null
+++ b/.chainlit/translations/it.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "Cancella",
+ "confirm": "Conferma",
+ "continue": "Continua",
+ "goBack": "Ritorna",
+ "reset": "Reset",
+ "submit": "Invia"
+ },
+ "status": {
+ "loading": "Caricamento...",
+ "error": {
+ "default": "Si \u00e8 verificato un errore",
+ "serverConnection": "Impossibile connettersi al server"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "Accedi per utilizzare l'app",
+ "form": {
+ "email": {
+ "label": "Indirizzo email",
+ "required": "l'email \u00e8 un campo obbligatorio",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "Password",
+ "required": "la password \u00e8 un campo obbligatorio"
+ },
+ "actions": {
+ "signin": "Accedi"
+ },
+ "alternativeText": {
+ "or": "O"
+ }
+ },
+ "errors": {
+ "default": "Impossibile effettuare l'accesso",
+ "signin": "Prova ad accedere con un account diverso",
+ "oauthSignin": "Prova ad accedere con un account diverso",
+ "redirectUriMismatch": "L'URI di reindirizzamento non corrisponde alla configurazione dell'app OAuth",
+ "oauthCallback": "Prova ad accedere con un account diverso",
+ "oauthCreateAccount": "Prova ad accedere con un account diverso",
+ "emailCreateAccount": "Prova ad accedere con un account diverso",
+ "callback": "Prova ad accedere con un account diverso",
+ "oauthAccountNotLinked": "Per confermare la tua identit\u00e0, accedi con lo stesso account che hai usato in precedenza",
+ "emailSignin": "Impossibile inviare l'email",
+ "emailVerify": "Verifica la tua email, \u00e8 stata inviata una nuova email",
+ "credentialsSignin": "Accesso non riuscito. Verifica che i dati forniti siano corretti",
+ "sessionRequired": "Accedi per visualizzare questa pagina"
+ }
+ },
+ "provider": {
+ "continue": "Continua con {{provider}}"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "Scrivi un messaggio...",
+ "actions": {
+ "send": "Invia messaggio",
+ "stop": "Interrompi attivit\u00e0",
+ "attachFiles": "Allega file"
+ }
+ },
+ "commands": {
+ "button": "Strumenti",
+ "changeTool": "Cambia strumento",
+ "availableTools": "Strumenti disponibili"
+ },
+ "speech": {
+ "start": "Inizia registrazione",
+ "stop": "Interrompi registrazione",
+ "connecting": "Connettendo"
+ },
+ "fileUpload": {
+ "dragDrop": "Trascina e rilascia i file qui",
+ "browse": "Sfoglia file",
+ "sizeLimit": "Limite:",
+ "errors": {
+ "failed": "Caricamento file non riuscito",
+ "cancelled": "Caricamento annullato di"
+ },
+ "actions": {
+ "cancelUpload": "Annulla caricamento",
+ "removeAttachment": "Rimuovi allegato"
+ }
+ },
+ "messages": {
+ "status": {
+ "using": "In uso",
+ "used": "Utilizzato"
+ },
+ "actions": {
+ "copy": {
+ "button": "Copia negli appunti",
+ "success": "Copiato!"
+ }
+ },
+ "feedback": {
+ "positive": "Utile",
+ "negative": "Non utile",
+ "edit": "Modifica feedback",
+ "dialog": {
+ "title": "Aggiungi un commento",
+ "submit": "Invia feedback",
+ "yourFeedback": "Il tuo feedback..."
+ },
+ "status": {
+ "updating": "Aggiornamento",
+ "updated": "Feedback aggiornato"
+ }
+ }
+ },
+ "history": {
+ "title": "Cronologia chat",
+ "empty": "Cos\u00ec vuoto...",
+ "show": "Mostra cronologia"
+ },
+ "settings": {
+ "title": "Impostazioni",
+ "customize": "Personalizza le impostazioni della tua chat qui"
+ },
+ "watermark": "Gli LLMS possono commettere errori. Verifica le info importanti."
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "Chat precedenti",
+ "filters": {
+ "search": "Cerca",
+ "placeholder": "Cerca conversazioni..."
+ },
+ "timeframes": {
+ "today": "Oggi",
+ "yesterday": "Ieri",
+ "previous7days": "Ultimi 7 giorni",
+ "previous30days": "Ultimi 30 giorni"
+ },
+ "empty": "Nessuna chat trovata",
+ "actions": {
+ "close": "Chiudi barra laterale",
+ "open": "Apri barra laterale"
+ }
+ },
+ "thread": {
+ "untitled": "Conversazione senza titolo",
+ "menu": {
+ "rename": "Rinomina",
+ "share": "Condividi",
+ "delete": "Elimina"
+ },
+ "actions": {
+ "share": {
+ "title": "Condividi link conversazione",
+ "button": "Condividi",
+ "status": {
+ "copied": "Link copiato",
+ "created": "Link di condivisione creato!",
+ "unshared": "Condivisione disabilitata per questa chat"
+ },
+ "error": {
+ "create": "Impossibile creare il link di condivisione",
+ "unshare": "Impossibile annullare la condivisione della chat"
+ }
+ },
+ "delete": {
+ "title": "Conferma eliminazione",
+ "description": "Stai per eliminare la chat insieme ai suoi messaggi ed elementi. Questa azione non pu\u00f2 essere annullata",
+ "success": "Chat eliminata",
+ "inProgress": "Eliminazione chat"
+ },
+ "rename": {
+ "title": "Rinomina chat",
+ "description": "Inserisci un nuovo nome per questa conversazione",
+ "form": {
+ "name": {
+ "label": "Nome",
+ "placeholder": "Inserisci nuovo nome"
+ }
+ },
+ "success": "Chat rinominata!",
+ "inProgress": "Rinomina chat"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "Chat",
+ "readme": "Leggimi",
+ "theme": {
+ "light": "Tema Chiaro",
+ "dark": "Tema Scuro",
+ "system": "Usa tema di sistema"
+ }
+ },
+ "newChat": {
+ "button": "Nuova Chat",
+ "dialog": {
+ "title": "Crea Nuova Chat",
+ "description": "Sei sicuro di voler creare una nuova chat? La chat corrente verr\u00e0 chiusa.",
+ "tooltip": "Nuova Chat"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "Impostazioni",
+ "settingsKey": "S",
+ "apiKeys": "Chiavi API",
+ "logout": "Disconnettiti"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "Chiavi API richieste",
+ "description": "Per utilizzare l'app, sono necessarie le seguenti chiavi API. Le chiavi sono salvate nella memoria locale del tuo dispositivo.",
+ "success": {
+ "saved": "Salvataggio riuscito"
+ }
+ },
+ "alerts": {
+ "info": "Info",
+ "note": "Nota",
+ "tip": "Suggerimento",
+ "important": "Importante",
+ "warning": "Avviso",
+ "caution": "Attenzione",
+ "debug": "Debug",
+ "example": "Esempio",
+ "success": "Successo",
+ "help": "Aiuto",
+ "idea": "Idea",
+ "pending": "In sospeso",
+ "security": "Sicurezza",
+ "beta": "Beta",
+ "best-practice": "Miglior Soluzione"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "Seleziona..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/ja.json b/.chainlit/translations/ja.json
new file mode 100644
index 0000000..a70e692
--- /dev/null
+++ b/.chainlit/translations/ja.json
@@ -0,0 +1,244 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "\u30ad\u30e3\u30f3\u30bb\u30eb",
+ "confirm": "\u78ba\u8a8d",
+ "continue": "\u7d9a\u3051\u308b",
+ "goBack": "\u623b\u308b",
+ "reset": "\u30ea\u30bb\u30c3\u30c8",
+ "submit": "\u9001\u4fe1"
+ },
+ "status": {
+ "loading": "\u8aad\u307f\u8fbc\u307f\u4e2d...",
+ "error": {
+ "default": "\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f",
+ "serverConnection": "\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "\u30a2\u30d7\u30ea\u306b\u30ed\u30b0\u30a4\u30f3",
+ "form": {
+ "email": {
+ "label": "\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9",
+ "required": "\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306f\u5fc5\u9808\u9805\u76ee\u3067\u3059",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "\u30d1\u30b9\u30ef\u30fc\u30c9",
+ "required": "\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u5fc5\u9808\u9805\u76ee\u3067\u3059"
+ },
+ "actions": {
+ "signin": "\u30b5\u30a4\u30f3\u30a4\u30f3"
+ },
+ "alternativeText": {
+ "or": "\u307e\u305f\u306f"
+ }
+ },
+ "errors": {
+ "default": "\u30b5\u30a4\u30f3\u30a4\u30f3\u3067\u304d\u307e\u305b\u3093",
+ "signin": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044",
+ "oauthSignin": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044",
+ "redirectUriMismatch": "\u30ea\u30c0\u30a4\u30ec\u30af\u30c8URI\u304cOAuth\u30a2\u30d7\u30ea\u306e\u8a2d\u5b9a\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093",
+ "oauthCallback": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044",
+ "oauthCreateAccount": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044",
+ "emailCreateAccount": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044",
+ "callback": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044",
+ "oauthAccountNotLinked": "\u672c\u4eba\u78ba\u8a8d\u306e\u305f\u3081\u3001\u6700\u521d\u306b\u4f7f\u7528\u3057\u305f\u306e\u3068\u540c\u3058\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044",
+ "emailSignin": "\u30e1\u30fc\u30eb\u3092\u9001\u4fe1\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f",
+ "emailVerify": "\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u65b0\u3057\u3044\u30e1\u30fc\u30eb\u304c\u9001\u4fe1\u3055\u308c\u307e\u3057\u305f",
+ "credentialsSignin": "\u30b5\u30a4\u30f3\u30a4\u30f3\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u5165\u529b\u3057\u305f\u60c5\u5831\u304c\u6b63\u3057\u3044\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044",
+ "sessionRequired": "\u3053\u306e\u30da\u30fc\u30b8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u306b\u306f\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044"
+ }
+ },
+ "provider": {
+ "continue": "{{provider}}\u3067\u7d9a\u3051\u308b"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044...",
+ "actions": {
+ "send": "\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1",
+ "stop": "\u30bf\u30b9\u30af\u3092\u505c\u6b62",
+ "attachFiles": "\u30d5\u30a1\u30a4\u30eb\u3092\u6dfb\u4ed8"
+ }
+ },
+ "speech": {
+ "start": "\u9332\u97f3\u958b\u59cb",
+ "stop": "\u9332\u97f3\u505c\u6b62",
+ "connecting": "\u63a5\u7d9a\u4e2d"
+ },
+ "commands": {
+ "button": "\u30c4\u30fc\u30eb",
+ "changeTool": "\u30c4\u30fc\u30eb\u3092\u5909\u66f4",
+ "availableTools": "\u5229\u7528\u53ef\u80fd\u306a\u30c4\u30fc\u30eb"
+ },
+ "fileUpload": {
+ "dragDrop": "\u3053\u3053\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u30c9\u30e9\u30c3\u30b0\uff06\u30c9\u30ed\u30c3\u30d7",
+ "sizeLimit": "\u5236\u9650\uff1a",
+ "errors": {
+ "failed": "\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306b\u5931\u6557\u3057\u307e\u3057\u305f",
+ "cancelled": "\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3092\u30ad\u30e3\u30f3\u30bb\u30eb\u3057\u307e\u3057\u305f\uff1a"
+ },
+ "actions": {
+ "cancelUpload": "\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3092\u30ad\u30e3\u30f3\u30bb\u30eb",
+ "removeAttachment": "\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664"
+ }
+ },
+ "messages": {
+ "status": {
+ "using": "\u4f7f\u7528\u4e2d",
+ "used": "\u4f7f\u7528\u6e08\u307f"
+ },
+ "actions": {
+ "copy": {
+ "button": "\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u30b3\u30d4\u30fc",
+ "success": "\u30b3\u30d4\u30fc\u3057\u307e\u3057\u305f\uff01"
+ }
+ },
+ "feedback": {
+ "positive": "\u5f79\u306b\u7acb\u3063\u305f",
+ "negative": "\u5f79\u306b\u7acb\u305f\u306a\u304b\u3063\u305f",
+ "edit": "\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u7de8\u96c6",
+ "dialog": {
+ "title": "\u30b3\u30e1\u30f3\u30c8\u3092\u8ffd\u52a0",
+ "submit": "\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u9001\u4fe1",
+ "yourFeedback": "\u3042\u306a\u305f\u306e\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af..."
+ },
+ "status": {
+ "updating": "\u66f4\u65b0\u4e2d",
+ "updated": "\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f"
+ }
+ }
+ },
+ "history": {
+ "title": "\u6700\u8fd1\u306e\u5165\u529b",
+ "empty": "\u4f55\u3082\u3042\u308a\u307e\u305b\u3093...",
+ "show": "\u5c65\u6b74\u3092\u8868\u793a"
+ },
+ "settings": {
+ "title": "\u8a2d\u5b9a\u30d1\u30cd\u30eb",
+ "customize": "\u3053\u3053\u3067\u30c1\u30e3\u30c3\u30c8\u8a2d\u5b9a\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u307e\u3059"
+ },
+ "watermark": "\u5927\u898f\u6a21\u8a00\u8a9e\u30e2\u30c7\u30eb\u306f\u9593\u9055\u3044\u3092\u72af\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u91cd\u8981\u306a\u60c5\u5831\u306b\u3064\u3044\u3066\u306f\u78ba\u8a8d\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002"
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "\u904e\u53bb\u306e\u30c1\u30e3\u30c3\u30c8",
+ "filters": {
+ "search": "\u691c\u7d22",
+ "placeholder": "Search conversations..."
+ },
+ "timeframes": {
+ "today": "\u4eca\u65e5",
+ "yesterday": "\u6628\u65e5",
+ "previous7days": "\u904e\u53bb7\u65e5\u9593",
+ "previous30days": "\u904e\u53bb30\u65e5\u9593"
+ },
+ "empty": "\u30b9\u30ec\u30c3\u30c9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093",
+ "actions": {
+ "close": "\u30b5\u30a4\u30c9\u30d0\u30fc\u3092\u9589\u3058\u308b",
+ "open": "\u30b5\u30a4\u30c9\u30d0\u30fc\u3092\u958b\u304f"
+ }
+ },
+ "thread": {
+ "untitled": "\u7121\u984c\u306e\u4f1a\u8a71",
+ "menu": {
+ "rename": "\u540d\u524d\u3092\u5909\u66f4",
+ "share": "\u5171\u6709",
+ "delete": "\u524a\u9664"
+ },
+ "actions": {
+ "share": {
+ "title": "\u30c1\u30e3\u30c3\u30c8\u306e\u30ea\u30f3\u30af\u3092\u5171\u6709",
+ "button": "\u5171\u6709",
+ "status": {
+ "copied": "\u30ea\u30f3\u30af\u3092\u30b3\u30d4\u30fc\u3057\u307e\u3057\u305f",
+ "created": "\u5171\u6709\u30ea\u30f3\u30af\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\uff01",
+ "unshared": "\u3053\u306e\u30b9\u30ec\u30c3\u30c9\u306e\u5171\u6709\u3092\u7121\u52b9\u306b\u3057\u307e\u3057\u305f"
+ },
+ "error": {
+ "create": "\u5171\u6709\u30ea\u30f3\u30af\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f",
+ "unshare": "\u30b9\u30ec\u30c3\u30c9\u306e\u5171\u6709\u89e3\u9664\u306b\u5931\u6557\u3057\u307e\u3057\u305f"
+ }
+ },
+ "delete": {
+ "title": "\u524a\u9664\u306e\u78ba\u8a8d",
+ "description": "\u3053\u306e\u30b9\u30ec\u30c3\u30c9\u3068\u305d\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3001\u8981\u7d20\u304c\u524a\u9664\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u64cd\u4f5c\u306f\u53d6\u308a\u6d88\u305b\u307e\u305b\u3093",
+ "success": "\u30c1\u30e3\u30c3\u30c8\u3092\u524a\u9664\u3057\u307e\u3057\u305f",
+ "inProgress": "\u30c1\u30e3\u30c3\u30c8\u3092\u524a\u9664\u4e2d"
+ },
+ "rename": {
+ "title": "\u30b9\u30ec\u30c3\u30c9\u306e\u540d\u524d\u3092\u5909\u66f4",
+ "description": "\u3053\u306e\u30b9\u30ec\u30c3\u30c9\u306e\u65b0\u3057\u3044\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044",
+ "form": {
+ "name": {
+ "label": "\u540d\u524d",
+ "placeholder": "\u65b0\u3057\u3044\u540d\u524d\u3092\u5165\u529b"
+ }
+ },
+ "success": "\u30b9\u30ec\u30c3\u30c9\u540d\u3092\u5909\u66f4\u3057\u307e\u3057\u305f\uff01",
+ "inProgress": "\u30b9\u30ec\u30c3\u30c9\u540d\u3092\u5909\u66f4\u4e2d"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "\u30c1\u30e3\u30c3\u30c8",
+ "readme": "\u8aac\u660e\u66f8",
+ "theme": {
+ "light": "Light Theme",
+ "dark": "Dark Theme",
+ "system": "Follow System"
+ }
+ },
+ "newChat": {
+ "button": "\u65b0\u898f\u30c1\u30e3\u30c3\u30c8",
+ "dialog": {
+ "title": "\u65b0\u898f\u30c1\u30e3\u30c3\u30c8\u306e\u4f5c\u6210",
+ "description": "\u73fe\u5728\u306e\u30c1\u30e3\u30c3\u30c8\u5c65\u6b74\u304c\u30af\u30ea\u30a2\u3055\u308c\u307e\u3059\u3002\u7d9a\u884c\u3057\u307e\u3059\u304b\uff1f",
+ "tooltip": "\u65b0\u898f\u30c1\u30e3\u30c3\u30c8"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "\u8a2d\u5b9a",
+ "settingsKey": "S",
+ "apiKeys": "API\u30ad\u30fc",
+ "logout": "\u30ed\u30b0\u30a2\u30a6\u30c8"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "\u5fc5\u8981\u306aAPI\u30ad\u30fc",
+ "description": "\u3053\u306e\u30a2\u30d7\u30ea\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306eAPI\u30ad\u30fc\u304c\u5fc5\u8981\u3067\u3059\u3002\u30ad\u30fc\u306f\u304a\u4f7f\u3044\u306e\u30c7\u30d0\u30a4\u30b9\u306e\u30ed\u30fc\u30ab\u30eb\u30b9\u30c8\u30ec\u30fc\u30b8\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002",
+ "success": {
+ "saved": "\u4fdd\u5b58\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f"
+ }
+ },
+ "alerts": {
+ "info": "Info",
+ "note": "Note",
+ "tip": "Tip",
+ "important": "Important",
+ "warning": "Warning",
+ "caution": "Caution",
+ "debug": "Debug",
+ "example": "Example",
+ "success": "Success",
+ "help": "Help",
+ "idea": "Idea",
+ "pending": "Pending",
+ "security": "Security",
+ "beta": "Beta",
+ "best-practice": "Best Practice"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "\u9078\u629e..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/kn.json b/.chainlit/translations/kn.json
new file mode 100644
index 0000000..0742757
--- /dev/null
+++ b/.chainlit/translations/kn.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "\u0cb0\u0ca6\u0ccd\u0ca6\u0cc1\u0cae\u0cbe\u0ca1\u0cbf",
+ "confirm": "\u0ca6\u0cc3\u0ca2\u0cc0\u0c95\u0cb0\u0cbf\u0cb8\u0cbf",
+ "continue": "\u0cae\u0cc1\u0c82\u0ca6\u0cc1\u0cb5\u0cb0\u0cbf\u0cb8\u0cbf",
+ "goBack": "\u0cb9\u0cbf\u0c82\u0ca6\u0cc6 \u0cb9\u0ccb\u0c97\u0cbf",
+ "reset": "\u0cae\u0cb0\u0cc1\u0cb9\u0cca\u0c82\u0ca6\u0cbf\u0cb8\u0cbf",
+ "submit": "\u0cb8\u0cb2\u0ccd\u0cb2\u0cbf\u0cb8\u0cbf"
+ },
+ "status": {
+ "loading": "\u0cb2\u0ccb\u0ca1\u0ccd \u0c86\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0ca6\u0cc6...",
+ "error": {
+ "default": "\u0ca6\u0ccb\u0cb7 \u0cb8\u0c82\u0cad\u0cb5\u0cbf\u0cb8\u0cbf\u0ca6\u0cc6",
+ "serverConnection": "\u0cb8\u0cb0\u0ccd\u0cb5\u0cb0\u0ccd\u200c \u0c85\u0ca8\u0ccd\u0ca8\u0cc1 \u0ca4\u0cb2\u0cc1\u0caa\u0cb2\u0cc1 \u0cb8\u0cbe\u0ca7\u0ccd\u0caf\u0cb5\u0cbe\u0c97\u0cb2\u0cbf\u0cb2\u0ccd\u0cb2"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "\u0c85\u0caa\u0ccd\u0cb2\u0cbf\u0c95\u0cc7\u0cb6\u0ca8\u0ccd\u200c\u0c97\u0cc6 \u0caa\u0ccd\u0cb0\u0cb5\u0cc7\u0cb6\u0cbf\u0cb8\u0cb2\u0cc1 \u0cb2\u0cbe\u0c97\u0cbf\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cbf",
+ "form": {
+ "email": {
+ "label": "\u0c87\u0cae\u0cc7\u0cb2\u0ccd \u0cb5\u0cbf\u0cb3\u0cbe\u0cb8",
+ "required": "\u0c87\u0cae\u0cc7\u0cb2\u0ccd \u0c85\u0c97\u0ca4\u0ccd\u0caf\u0cb5\u0cbf\u0cb0\u0cc1\u0cb5 \u0c95\u0ccd\u0cb7\u0cc7\u0ca4\u0ccd\u0cb0",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "\u0caa\u0cbe\u0cb8\u0ccd\u200c\u0cb5\u0cb0\u0ccd\u0ca1\u0ccd",
+ "required": "\u0caa\u0cbe\u0cb8\u0ccd\u200c\u0cb5\u0cb0\u0ccd\u0ca1\u0ccd \u0c85\u0c97\u0ca4\u0ccd\u0caf\u0cb5\u0cbf\u0cb0\u0cc1\u0cb5 \u0c95\u0ccd\u0cb7\u0cc7\u0ca4\u0ccd\u0cb0"
+ },
+ "actions": {
+ "signin": "\u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cbf"
+ },
+ "alternativeText": {
+ "or": "\u0c85\u0ca5\u0cb5\u0cbe"
+ }
+ },
+ "errors": {
+ "default": "\u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cb2\u0cc1 \u0cb8\u0cbe\u0ca7\u0ccd\u0caf\u0cb5\u0cbe\u0c97\u0cb2\u0cbf\u0cb2\u0ccd\u0cb2",
+ "signin": "\u0cac\u0cc7\u0cb0\u0cc6 \u0c96\u0cbe\u0ca4\u0cc6\u0caf\u0cca\u0c82\u0ca6\u0cbf\u0c97\u0cc6 \u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cb2\u0cc1 \u0caa\u0ccd\u0cb0\u0caf\u0ca4\u0ccd\u0ca8\u0cbf\u0cb8\u0cbf",
+ "oauthSignin": "\u0cac\u0cc7\u0cb0\u0cc6 \u0c96\u0cbe\u0ca4\u0cc6\u0caf\u0cca\u0c82\u0ca6\u0cbf\u0c97\u0cc6 \u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cb2\u0cc1 \u0caa\u0ccd\u0cb0\u0caf\u0ca4\u0ccd\u0ca8\u0cbf\u0cb8\u0cbf",
+ "redirectUriMismatch": "\u0cb0\u0cc0\u0ca1\u0cc8\u0cb0\u0cc6\u0c95\u0ccd\u0c9f\u0ccd URI \u0c93\u0ca5\u0ccd \u0c85\u0caa\u0ccd\u0cb2\u0cbf\u0c95\u0cc7\u0cb6\u0ca8\u0ccd \u0c95\u0cbe\u0ca8\u0ccd\u0cab\u0cbf\u0c97\u0cb0\u0cc7\u0cb6\u0ca8\u0ccd\u200c\u0c97\u0cc6 \u0cb9\u0cca\u0c82\u0ca6\u0cbf\u0c95\u0cc6\u0caf\u0cbe\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0cb2\u0ccd\u0cb2",
+ "oauthCallback": "\u0cac\u0cc7\u0cb0\u0cc6 \u0c96\u0cbe\u0ca4\u0cc6\u0caf\u0cca\u0c82\u0ca6\u0cbf\u0c97\u0cc6 \u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cb2\u0cc1 \u0caa\u0ccd\u0cb0\u0caf\u0ca4\u0ccd\u0ca8\u0cbf\u0cb8\u0cbf",
+ "oauthCreateAccount": "\u0cac\u0cc7\u0cb0\u0cc6 \u0c96\u0cbe\u0ca4\u0cc6\u0caf\u0cca\u0c82\u0ca6\u0cbf\u0c97\u0cc6 \u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cb2\u0cc1 \u0caa\u0ccd\u0cb0\u0caf\u0ca4\u0ccd\u0ca8\u0cbf\u0cb8\u0cbf",
+ "emailCreateAccount": "\u0cac\u0cc7\u0cb0\u0cc6 \u0c96\u0cbe\u0ca4\u0cc6\u0caf\u0cca\u0c82\u0ca6\u0cbf\u0c97\u0cc6 \u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cb2\u0cc1 \u0caa\u0ccd\u0cb0\u0caf\u0ca4\u0ccd\u0ca8\u0cbf\u0cb8\u0cbf",
+ "callback": "\u0cac\u0cc7\u0cb0\u0cc6 \u0c96\u0cbe\u0ca4\u0cc6\u0caf\u0cca\u0c82\u0ca6\u0cbf\u0c97\u0cc6 \u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cb2\u0cc1 \u0caa\u0ccd\u0cb0\u0caf\u0ca4\u0ccd\u0ca8\u0cbf\u0cb8\u0cbf",
+ "oauthAccountNotLinked": "\u0ca8\u0cbf\u0cae\u0ccd\u0cae \u0c97\u0cc1\u0cb0\u0cc1\u0ca4\u0ca8\u0ccd\u0ca8\u0cc1 \u0ca6\u0cc3\u0ca2\u0cc0\u0c95\u0cb0\u0cbf\u0cb8\u0cb2\u0cc1, \u0ca8\u0cc0\u0cb5\u0cc1 \u0cae\u0cca\u0ca6\u0cb2\u0cc1 \u0cac\u0cb3\u0cb8\u0cbf\u0ca6 \u0c85\u0ca6\u0cc7 \u0c96\u0cbe\u0ca4\u0cc6\u0caf\u0cca\u0c82\u0ca6\u0cbf\u0c97\u0cc6 \u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cbf",
+ "emailSignin": "\u0c87\u0cae\u0cc7\u0cb2\u0ccd \u0c95\u0cb3\u0cc1\u0cb9\u0cbf\u0cb8\u0cb2\u0cc1 \u0cb8\u0cbe\u0ca7\u0ccd\u0caf\u0cb5\u0cbe\u0c97\u0cb2\u0cbf\u0cb2\u0ccd\u0cb2",
+ "emailVerify": "\u0ca6\u0caf\u0cb5\u0cbf\u0c9f\u0ccd\u0c9f\u0cc1 \u0ca8\u0cbf\u0cae\u0ccd\u0cae \u0c87\u0cae\u0cc7\u0cb2\u0ccd \u0caa\u0cb0\u0cbf\u0cb6\u0cc0\u0cb2\u0cbf\u0cb8\u0cbf, \u0cb9\u0cca\u0cb8 \u0c87\u0cae\u0cc7\u0cb2\u0ccd \u0c95\u0cb3\u0cc1\u0cb9\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6",
+ "credentialsSignin": "\u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cb5\u0cbf\u0cab\u0cb2\u0cb5\u0cbe\u0c97\u0cbf\u0ca6\u0cc6. \u0ca8\u0cc0\u0cb5\u0cc1 \u0c92\u0ca6\u0c97\u0cbf\u0cb8\u0cbf\u0ca6 \u0cb5\u0cbf\u0cb5\u0cb0\u0c97\u0cb3\u0cc1 \u0cb8\u0cb0\u0cbf\u0caf\u0cbe\u0c97\u0cbf\u0cb5\u0cc6\u0caf\u0cc7 \u0c8e\u0c82\u0ca6\u0cc1 \u0caa\u0cb0\u0cbf\u0cb6\u0cc0\u0cb2\u0cbf\u0cb8\u0cbf",
+ "sessionRequired": "\u0c88 \u0caa\u0cc1\u0c9f\u0cb5\u0ca8\u0ccd\u0ca8\u0cc1 \u0caa\u0ccd\u0cb0\u0cb5\u0cc7\u0cb6\u0cbf\u0cb8\u0cb2\u0cc1 \u0ca6\u0caf\u0cb5\u0cbf\u0c9f\u0ccd\u0c9f\u0cc1 \u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cbf"
+ }
+ },
+ "provider": {
+ "continue": "{{provider}} \u0ca8\u0cca\u0c82\u0ca6\u0cbf\u0c97\u0cc6 \u0cae\u0cc1\u0c82\u0ca6\u0cc1\u0cb5\u0cb0\u0cbf\u0cb8\u0cbf"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "\u0ca8\u0cbf\u0cae\u0ccd\u0cae \u0cb8\u0c82\u0ca6\u0cc7\u0cb6\u0cb5\u0ca8\u0ccd\u0ca8\u0cc1 \u0c87\u0cb2\u0ccd\u0cb2\u0cbf \u0c9f\u0cc8\u0caa\u0ccd \u0cae\u0cbe\u0ca1\u0cbf...",
+ "actions": {
+ "send": "\u0cb8\u0c82\u0ca6\u0cc7\u0cb6 \u0c95\u0cb3\u0cc1\u0cb9\u0cbf\u0cb8\u0cbf",
+ "stop": "\u0c95\u0cbe\u0cb0\u0ccd\u0caf \u0ca8\u0cbf\u0cb2\u0ccd\u0cb2\u0cbf\u0cb8\u0cbf",
+ "attachFiles": "\u0cab\u0cc8\u0cb2\u0ccd\u200c\u0c97\u0cb3\u0ca8\u0ccd\u0ca8\u0cc1 \u0cb2\u0c97\u0ca4\u0ccd\u0ca4\u0cbf\u0cb8\u0cbf"
+ }
+ },
+ "commands": {
+ "button": "\u0c89\u0caa\u0c95\u0cb0\u0ca3\u0c97\u0cb3\u0cc1",
+ "changeTool": "\u0c89\u0caa\u0c95\u0cb0\u0ca3\u0cb5\u0ca8\u0ccd\u0ca8\u0cc1 \u0cac\u0ca6\u0cb2\u0cbf\u0cb8\u0cbf",
+ "availableTools": "\u0cb2\u0cad\u0ccd\u0caf\u0cb5\u0cbf\u0cb0\u0cc1\u0cb5 \u0c89\u0caa\u0c95\u0cb0\u0ca3\u0c97\u0cb3\u0cc1"
+ },
+ "speech": {
+ "start": "\u0cb0\u0cc6\u0c95\u0cbe\u0cb0\u0ccd\u0ca1\u0cbf\u0c82\u0c97\u0ccd \u0caa\u0ccd\u0cb0\u0cbe\u0cb0\u0c82\u0cad\u0cbf\u0cb8\u0cbf",
+ "stop": "\u0cb0\u0cc6\u0c95\u0cbe\u0cb0\u0ccd\u0ca1\u0cbf\u0c82\u0c97\u0ccd \u0ca8\u0cbf\u0cb2\u0ccd\u0cb2\u0cbf\u0cb8\u0cbf",
+ "connecting": "\u0cb8\u0c82\u0caa\u0cb0\u0ccd\u0c95\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0ca6\u0cc6"
+ },
+ "fileUpload": {
+ "dragDrop": "\u0cab\u0cc8\u0cb2\u0ccd\u200c\u0c97\u0cb3\u0ca8\u0ccd\u0ca8\u0cc1 \u0c87\u0cb2\u0ccd\u0cb2\u0cbf \u0c8e\u0cb3\u0cc6\u0ca6\u0cc1 \u0cac\u0cbf\u0ca1\u0cbf",
+ "browse": "\u0cab\u0cc8\u0cb2\u0ccd\u200c\u0c97\u0cb3\u0ca8\u0ccd\u0ca8\u0cc1 \u0cac\u0ccd\u0cb0\u0ccc\u0cb8\u0ccd \u0cae\u0cbe\u0ca1\u0cbf",
+ "sizeLimit": "\u0cae\u0cbf\u0ca4\u0cbf:",
+ "errors": {
+ "failed": "\u0c85\u0caa\u0ccd\u200c\u0cb2\u0ccb\u0ca1\u0ccd \u0cb5\u0cbf\u0cab\u0cb2\u0cb5\u0cbe\u0c97\u0cbf\u0ca6\u0cc6",
+ "cancelled": "\u0c85\u0caa\u0ccd\u200c\u0cb2\u0ccb\u0ca1\u0ccd \u0cb0\u0ca6\u0ccd\u0ca6\u0cc1\u0c97\u0cca\u0cb3\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6"
+ },
+ "actions": {
+ "cancelUpload": "\u0c85\u0caa\u0ccd\u200c\u0cb2\u0ccb\u0ca1\u0ccd \u0cb0\u0ca6\u0ccd\u0ca6\u0cc1\u0c97\u0cca\u0cb3\u0cbf\u0cb8\u0cbf",
+ "removeAttachment": "\u0c85\u0c9f\u0ccd\u0caf\u0cbe\u0c9a\u0ccd\u200c\u0cae\u0cc6\u0c82\u0c9f\u0ccd \u0c85\u0ca8\u0ccd\u0ca8\u0cc1 \u0ca4\u0cc6\u0c97\u0cc6\u0ca6\u0cc1\u0cb9\u0cbe\u0c95\u0cbf"
+ }
+ },
+ "messages": {
+ "status": {
+ "using": "\u0cac\u0cb3\u0cb8\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0cb0\u0cc1\u0cb5\u0cc1\u0ca6\u0cc1",
+ "used": "\u0cac\u0cb3\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6"
+ },
+ "actions": {
+ "copy": {
+ "button": "\u0c95\u0ccd\u0cb2\u0cbf\u0caa\u0ccd\u200c\u0cac\u0ccb\u0cb0\u0ccd\u0ca1\u0ccd\u200c\u0c97\u0cc6 \u0ca8\u0c95\u0cb2\u0cbf\u0cb8\u0cbf",
+ "success": "\u0ca8\u0c95\u0cb2\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6!"
+ }
+ },
+ "feedback": {
+ "positive": "\u0cb8\u0cb9\u0cbe\u0caf\u0c95\u0cb5\u0cbe\u0c97\u0cbf\u0ca6\u0cc6",
+ "negative": "\u0cb8\u0cb9\u0cbe\u0caf\u0c95\u0cb5\u0cbe\u0c97\u0cbf\u0cb2\u0ccd\u0cb2",
+ "edit": "\u0caa\u0ccd\u0cb0\u0ca4\u0cbf\u0c95\u0ccd\u0cb0\u0cbf\u0caf\u0cc6 \u0cb8\u0c82\u0caa\u0cbe\u0ca6\u0cbf\u0cb8\u0cbf",
+ "dialog": {
+ "title": "\u0c95\u0cbe\u0cae\u0cc6\u0c82\u0c9f\u0ccd \u0cb8\u0cc7\u0cb0\u0cbf\u0cb8\u0cbf",
+ "submit": "\u0caa\u0ccd\u0cb0\u0ca4\u0cbf\u0c95\u0ccd\u0cb0\u0cbf\u0caf\u0cc6 \u0cb8\u0cb2\u0ccd\u0cb2\u0cbf\u0cb8\u0cbf",
+ "yourFeedback": "\u0ca8\u0cbf\u0cae\u0ccd\u0cae \u0caa\u0ccd\u0cb0\u0ca4\u0cbf\u0c95\u0ccd\u0cb0\u0cbf\u0caf\u0cc6..."
+ },
+ "status": {
+ "updating": "\u0ca8\u0cb5\u0cc0\u0c95\u0cb0\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0ca6\u0cc6",
+ "updated": "\u0caa\u0ccd\u0cb0\u0ca4\u0cbf\u0c95\u0ccd\u0cb0\u0cbf\u0caf\u0cc6 \u0ca8\u0cb5\u0cc0\u0c95\u0cb0\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6"
+ }
+ }
+ },
+ "history": {
+ "title": "\u0c95\u0cca\u0ca8\u0cc6\u0caf \u0c87\u0ca8\u0ccd\u200c\u0caa\u0cc1\u0c9f\u0ccd\u200c\u0c97\u0cb3\u0cc1",
+ "empty": "\u0c96\u0cbe\u0cb2\u0cbf\u0caf\u0cbe\u0c97\u0cbf\u0ca6\u0cc6...",
+ "show": "\u0c87\u0ca4\u0cbf\u0cb9\u0cbe\u0cb8 \u0ca4\u0ccb\u0cb0\u0cbf\u0cb8\u0cbf"
+ },
+ "settings": {
+ "title": "\u0cb8\u0cc6\u0c9f\u0ccd\u0c9f\u0cbf\u0c82\u0c97\u0ccd\u200c\u0c97\u0cb3 \u0caa\u0ccd\u0caf\u0cbe\u0ca8\u0cc6\u0cb2\u0ccd",
+ "customize": "\u0c88\u0c97 \u0ca8\u0cbf\u0cae\u0ccd\u0cae \u0c9a\u0cbe\u0c9f\u0ccd \u0cb8\u0cc6\u0c9f\u0ccd\u0c9f\u0cbf\u0c82\u0c97\u0ccd\u200c\u0c97\u0cb3\u0ca8\u0ccd\u0ca8\u0cc1 \u0c95\u0cb8\u0ccd\u0c9f\u0cae\u0cc8\u0cb8\u0ccd \u0cae\u0cbe\u0ca1\u0cbf"
+ },
+ "watermark": "LLM \u0c97\u0cb3\u0cc1 \u0ca4\u0caa\u0ccd\u0caa\u0cc1\u0c97\u0cb3\u0ca8\u0ccd\u0ca8\u0cc1 \u0cae\u0cbe\u0ca1\u0cac\u0cb9\u0cc1\u0ca6\u0cc1. \u0caa\u0ccd\u0cb0\u0cae\u0cc1\u0c96 \u0cae\u0cbe\u0cb9\u0cbf\u0ca4\u0cbf\u0caf\u0ca8\u0ccd\u0ca8\u0cc1 \u0caa\u0cb0\u0cbf\u0cb6\u0cc0\u0cb2\u0cbf\u0cb8\u0cc1\u0cb5\u0cc1\u0ca6\u0ca8\u0ccd\u0ca8\u0cc1 \u0caa\u0cb0\u0cbf\u0c97\u0ca3\u0cbf\u0cb8\u0cbf."
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "\u0cb9\u0cbf\u0c82\u0ca6\u0cbf\u0ca8 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0c97\u0cb3\u0cc1",
+ "filters": {
+ "search": "\u0cb9\u0cc1\u0ca1\u0cc1\u0c95\u0cbf",
+ "placeholder": "Search conversations..."
+ },
+ "timeframes": {
+ "today": "\u0c87\u0c82\u0ca6\u0cc1",
+ "yesterday": "\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6",
+ "previous7days": "\u0cb9\u0cbf\u0c82\u0ca6\u0cbf\u0ca8 7 \u0ca6\u0cbf\u0ca8\u0c97\u0cb3\u0cc1",
+ "previous30days": "\u0cb9\u0cbf\u0c82\u0ca6\u0cbf\u0ca8 30 \u0ca6\u0cbf\u0ca8\u0c97\u0cb3\u0cc1"
+ },
+ "empty": "\u0caf\u0cbe\u0cb5\u0cc1\u0ca6\u0cc7 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0c97\u0cb3\u0cc1 \u0c95\u0c82\u0ca1\u0cc1\u0cac\u0c82\u0ca6\u0cbf\u0cb2\u0ccd\u0cb2",
+ "actions": {
+ "close": "\u0caa\u0c95\u0ccd\u0c95\u0ca6 \u0caa\u0c9f\u0ccd\u0c9f\u0cbf \u0cae\u0cc1\u0c9a\u0ccd\u0c9a\u0cbf",
+ "open": "\u0caa\u0c95\u0ccd\u0c95\u0ca6 \u0caa\u0c9f\u0ccd\u0c9f\u0cbf \u0ca4\u0cc6\u0cb0\u0cc6\u0caf\u0cbf\u0cb0\u0cbf"
+ }
+ },
+ "thread": {
+ "untitled": "\u0cb6\u0cc0\u0cb0\u0ccd\u0cb7\u0cbf\u0c95\u0cc6\u0cb0\u0cb9\u0cbf\u0ca4 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6",
+ "menu": {
+ "rename": "\u0cae\u0cb0\u0cc1\u0cb9\u0cc6\u0cb8\u0cb0\u0cbf\u0cb8\u0cbf",
+ "share": "\u0cb9\u0c82\u0c9a\u0cbf\u0c95\u0cca\u0cb3\u0ccd\u0cb3\u0cbf",
+ "delete": "\u0c85\u0cb3\u0cbf\u0cb8\u0cbf"
+ },
+ "actions": {
+ "share": {
+ "title": "\u0c9a\u0cbe\u0c9f\u0ccd\u200c\u0c97\u0cc6 \u0cb2\u0cbf\u0c82\u0c95\u0ccd \u0cb9\u0c82\u0c9a\u0cbf\u0c95\u0cca\u0cb3\u0ccd\u0cb3\u0cbf",
+ "button": "\u0cb9\u0c82\u0c9a\u0cbf\u0c95\u0cca\u0cb3\u0ccd\u0cb3\u0cbf",
+ "status": {
+ "copied": "\u0cb2\u0cbf\u0c82\u0c95\u0ccd \u0caa\u0ccd\u0cb0\u0ca4\u0cbf\u0cb2\u0cbf\u0caa\u0cbf \u0cae\u0cbe\u0ca1\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6",
+ "created": "\u0cb9\u0c82\u0c9a\u0cbf\u0c95\u0cc6\u0caf \u0cb2\u0cbf\u0c82\u0c95\u0ccd \u0cb0\u0c9a\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6!",
+ "unshared": "\u0c88 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0c97\u0cc6 \u0cb9\u0c82\u0c9a\u0cbf\u0c95\u0cc6 \u0ca8\u0cbf\u0cb7\u0ccd\u0c95\u0ccd\u0cb0\u0cbf\u0caf\u0c97\u0cca\u0cb3\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6"
+ },
+ "error": {
+ "create": "\u0cb9\u0c82\u0c9a\u0cbf\u0c95\u0cc6\u0caf \u0cb2\u0cbf\u0c82\u0c95\u0ccd \u0cb0\u0c9a\u0cbf\u0cb8\u0cb2\u0cc1 \u0cb5\u0cbf\u0cab\u0cb2\u0cb5\u0cbe\u0c97\u0cbf\u0ca6\u0cc6",
+ "unshare": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6 \u0cb9\u0c82\u0c9a\u0cbf\u0c95\u0cc6\u0caf\u0ca8\u0ccd\u0ca8\u0cc1 \u0cb0\u0ca6\u0ccd\u0ca6\u0cc1 \u0cae\u0cbe\u0ca1\u0cb2\u0cc1 \u0cb5\u0cbf\u0cab\u0cb2\u0cb5\u0cbe\u0c97\u0cbf\u0ca6\u0cc6"
+ }
+ },
+ "delete": {
+ "title": "\u0c85\u0cb3\u0cbf\u0cb8\u0cc1\u0cb5\u0cbf\u0c95\u0cc6\u0caf\u0ca8\u0ccd\u0ca8\u0cc1 \u0ca6\u0cc3\u0ca2\u0cc0\u0c95\u0cb0\u0cbf\u0cb8\u0cbf",
+ "description": "\u0c87\u0ca6\u0cc1 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0caf\u0ca8\u0ccd\u0ca8\u0cc1 \u0cb9\u0cbe\u0c97\u0cc2 \u0c85\u0ca6\u0cb0 \u0cb8\u0c82\u0ca6\u0cc7\u0cb6\u0c97\u0cb3\u0cc1 \u0cae\u0ca4\u0ccd\u0ca4\u0cc1 \u0c85\u0c82\u0cb6\u0c97\u0cb3\u0ca8\u0ccd\u0ca8\u0cc1 \u0c85\u0cb3\u0cbf\u0cb8\u0cc1\u0ca4\u0ccd\u0ca4\u0ca6\u0cc6. \u0c88 \u0c95\u0ccd\u0cb0\u0cbf\u0caf\u0cc6\u0caf\u0ca8\u0ccd\u0ca8\u0cc1 \u0cb0\u0ca6\u0ccd\u0ca6\u0cc1\u0c97\u0cca\u0cb3\u0cbf\u0cb8\u0cb2\u0cc1 \u0cb8\u0cbe\u0ca7\u0ccd\u0caf\u0cb5\u0cbf\u0cb2\u0ccd\u0cb2",
+ "success": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6 \u0c85\u0cb3\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6",
+ "inProgress": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6 \u0c85\u0cb3\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0ca6\u0cc6"
+ },
+ "rename": {
+ "title": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0caf \u0cb9\u0cc6\u0cb8\u0cb0\u0cc1 \u0cac\u0ca6\u0cb2\u0cbe\u0caf\u0cbf\u0cb8\u0cbf",
+ "description": "\u0c88 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0c97\u0cc6 \u0cb9\u0cca\u0cb8 \u0cb9\u0cc6\u0cb8\u0cb0\u0ca8\u0ccd\u0ca8\u0cc1 \u0ca8\u0cae\u0cc2\u0ca6\u0cbf\u0cb8\u0cbf",
+ "form": {
+ "name": {
+ "label": "\u0cb9\u0cc6\u0cb8\u0cb0\u0cc1",
+ "placeholder": "\u0cb9\u0cca\u0cb8 \u0cb9\u0cc6\u0cb8\u0cb0\u0ca8\u0ccd\u0ca8\u0cc1 \u0ca8\u0cae\u0cc2\u0ca6\u0cbf\u0cb8\u0cbf"
+ }
+ },
+ "success": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0caf \u0cb9\u0cc6\u0cb8\u0cb0\u0cc1 \u0cac\u0ca6\u0cb2\u0cbe\u0caf\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6!",
+ "inProgress": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0caf \u0cb9\u0cc6\u0cb8\u0cb0\u0cc1 \u0cac\u0ca6\u0cb2\u0cbe\u0caf\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0ca6\u0cc6"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6",
+ "readme": "\u0c93\u0ca6\u0cbf",
+ "theme": {
+ "light": "Light Theme",
+ "dark": "Dark Theme",
+ "system": "Follow System"
+ }
+ },
+ "newChat": {
+ "button": "\u0cb9\u0cca\u0cb8 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6",
+ "dialog": {
+ "title": "\u0cb9\u0cca\u0cb8 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6 \u0cb0\u0c9a\u0cbf\u0cb8\u0cbf",
+ "description": "\u0c87\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0ccd\u0cae \u0caa\u0ccd\u0cb0\u0cb8\u0ccd\u0ca4\u0cc1\u0ca4 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0caf \u0c87\u0ca4\u0cbf\u0cb9\u0cbe\u0cb8\u0cb5\u0ca8\u0ccd\u0ca8\u0cc1 \u0c85\u0cb3\u0cbf\u0cb8\u0cc1\u0ca4\u0ccd\u0ca4\u0ca6\u0cc6. \u0ca8\u0cc0\u0cb5\u0cc1 \u0cae\u0cc1\u0c82\u0ca6\u0cc1\u0cb5\u0cb0\u0cc6\u0caf\u0cb2\u0cc1 \u0cac\u0caf\u0cb8\u0cc1\u0cb5\u0cbf\u0cb0\u0cbe?",
+ "tooltip": "\u0cb9\u0cca\u0cb8 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "\u0cb8\u0cc6\u0c9f\u0ccd\u0c9f\u0cbf\u0c82\u0c97\u0ccd\u200c\u0c97\u0cb3\u0cc1",
+ "settingsKey": "S",
+ "apiKeys": "API \u0c95\u0cc0\u0c97\u0cb3\u0cc1",
+ "logout": "\u0cb2\u0cbe\u0c97\u0ccd \u0c94\u0c9f\u0ccd"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "\u0c85\u0c97\u0ca4\u0ccd\u0caf\u0cb5\u0cbf\u0cb0\u0cc1\u0cb5 API \u0c95\u0cc0\u0c97\u0cb3\u0cc1",
+ "description": "\u0c88 \u0c85\u0caa\u0ccd\u0cb2\u0cbf\u0c95\u0cc7\u0cb6\u0ca8\u0ccd \u0cac\u0cb3\u0cb8\u0cb2\u0cc1, \u0c88 \u0c95\u0cc6\u0cb3\u0c97\u0cbf\u0ca8 API \u0c95\u0cc0\u0c97\u0cb3\u0cc1 \u0c85\u0c97\u0ca4\u0ccd\u0caf\u0cb5\u0cbf\u0cb0\u0cc1\u0ca4\u0ccd\u0ca4\u0cb5\u0cc6. \u0c95\u0cc0\u0c97\u0cb3\u0ca8\u0ccd\u0ca8\u0cc1 \u0ca8\u0cbf\u0cae\u0ccd\u0cae \u0cb8\u0cbe\u0ca7\u0ca8\u0ca6 \u0cb8\u0ccd\u0ca5\u0cb3\u0cc0\u0caf \u0cb8\u0c82\u0c97\u0ccd\u0cb0\u0cb9\u0ca3\u0cc6\u0caf\u0cb2\u0ccd\u0cb2\u0cbf \u0cb8\u0c82\u0c97\u0ccd\u0cb0\u0cb9\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0ca6\u0cc6.",
+ "success": {
+ "saved": "\u0caf\u0cb6\u0cb8\u0ccd\u0cb5\u0cbf\u0caf\u0cbe\u0c97\u0cbf \u0c89\u0cb3\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6"
+ }
+ },
+ "alerts": {
+ "info": "Info",
+ "note": "Note",
+ "tip": "Tip",
+ "important": "Important",
+ "warning": "Warning",
+ "caution": "Caution",
+ "debug": "Debug",
+ "example": "Example",
+ "success": "Success",
+ "help": "Help",
+ "idea": "Idea",
+ "pending": "Pending",
+ "security": "Security",
+ "beta": "Beta",
+ "best-practice": "Best Practice"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "\u0c9a\u0cc1\u0ca8\u0cbe\u0caf\u0cbf\u0cb8\u0cbf..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/ko.json b/.chainlit/translations/ko.json
new file mode 100644
index 0000000..6367776
--- /dev/null
+++ b/.chainlit/translations/ko.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "\ucde8\uc18c",
+ "confirm": "\ud655\uc778",
+ "continue": "\uacc4\uc18d",
+ "goBack": "\ub4a4\ub85c \uac00\uae30",
+ "reset": "\ucd08\uae30\ud654",
+ "submit": "\uc81c\ucd9c"
+ },
+ "status": {
+ "loading": "\ub85c\ub529 \uc911...",
+ "error": {
+ "default": "\uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4",
+ "serverConnection": "\uc11c\ubc84\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "\uc571\uc5d0 \uc811\uadfc\ud558\ub824\uba74 \ub85c\uadf8\uc778\ud558\uc138\uc694",
+ "form": {
+ "email": {
+ "label": "\uc774\uba54\uc77c \uc8fc\uc18c",
+ "required": "\uc774\uba54\uc77c\uc740 \ud544\uc218 \uc785\ub825 \ud56d\ubaa9\uc785\ub2c8\ub2e4",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "\ube44\ubc00\ubc88\ud638",
+ "required": "\ube44\ubc00\ubc88\ud638\ub294 \ud544\uc218 \uc785\ub825 \ud56d\ubaa9\uc785\ub2c8\ub2e4"
+ },
+ "actions": {
+ "signin": "\ub85c\uadf8\uc778"
+ },
+ "alternativeText": {
+ "or": "\ub610\ub294"
+ }
+ },
+ "errors": {
+ "default": "\ub85c\uadf8\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4",
+ "signin": "\ub2e4\ub978 \uacc4\uc815\uc73c\ub85c \ub85c\uadf8\uc778\ud574\ubcf4\uc138\uc694",
+ "oauthSignin": "\ub2e4\ub978 \uacc4\uc815\uc73c\ub85c \ub85c\uadf8\uc778\ud574\ubcf4\uc138\uc694",
+ "redirectUriMismatch": "\ub9ac\ub2e4\uc774\ub809\ud2b8 URI\uac00 OAuth \uc571 \uc124\uc815\uacfc \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4",
+ "oauthCallback": "\ub2e4\ub978 \uacc4\uc815\uc73c\ub85c \ub85c\uadf8\uc778\ud574\ubcf4\uc138\uc694",
+ "oauthCreateAccount": "\ub2e4\ub978 \uacc4\uc815\uc73c\ub85c \ub85c\uadf8\uc778\ud574\ubcf4\uc138\uc694",
+ "emailCreateAccount": "\ub2e4\ub978 \uacc4\uc815\uc73c\ub85c \ub85c\uadf8\uc778\ud574\ubcf4\uc138\uc694",
+ "callback": "\ub2e4\ub978 \uacc4\uc815\uc73c\ub85c \ub85c\uadf8\uc778\ud574\ubcf4\uc138\uc694",
+ "oauthAccountNotLinked": "\uc2e0\uc6d0\uc744 \ud655\uc778\ud558\ub824\uba74 \uc6d0\ub798 \uc0ac\uc6a9\ud588\ub358 \uacc4\uc815\uc73c\ub85c \ub85c\uadf8\uc778\ud558\uc138\uc694",
+ "emailSignin": "\uc774\uba54\uc77c\uc744 \ubcf4\ub0bc \uc218 \uc5c6\uc2b5\ub2c8\ub2e4",
+ "emailVerify": "\uc774\uba54\uc77c\uc744 \ud655\uc778\ud574\uc8fc\uc138\uc694. \uc0c8\ub85c\uc6b4 \uc774\uba54\uc77c\uc774 \ubc1c\uc1a1\ub418\uc5c8\uc2b5\ub2c8\ub2e4",
+ "credentialsSignin": "\ub85c\uadf8\uc778 \uc2e4\ud328. \uc81c\uacf5\ud55c \uc815\ubcf4\uac00 \uc62c\ubc14\ub978\uc9c0 \ud655\uc778\ud558\uc138\uc694",
+ "sessionRequired": "\uc774 \ud398\uc774\uc9c0\uc5d0 \uc811\uadfc\ud558\ub824\uba74 \ub85c\uadf8\uc778\ud574\uc8fc\uc138\uc694"
+ }
+ },
+ "provider": {
+ "continue": "{{provider}}\ub85c \uacc4\uc18d\ud558\uae30"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "\uc5ec\uae30\uc5d0 \uba54\uc2dc\uc9c0\ub97c \uc785\ub825\ud558\uc138\uc694...",
+ "actions": {
+ "send": "\uba54\uc2dc\uc9c0 \ubcf4\ub0b4\uae30",
+ "stop": "\uc791\uc5c5 \uc911\uc9c0",
+ "attachFiles": "\ud30c\uc77c \ucca8\ubd80"
+ }
+ },
+ "commands": {
+ "button": "\ub3c4\uad6c",
+ "changeTool": "\ub3c4\uad6c \ubcc0\uacbd",
+ "availableTools": "\uc0ac\uc6a9 \uac00\ub2a5\ud55c \ub3c4\uad6c"
+ },
+ "speech": {
+ "start": "\ub179\uc74c \uc2dc\uc791",
+ "stop": "\ub179\uc74c \uc911\uc9c0",
+ "connecting": "\uc5f0\uacb0 \uc911"
+ },
+ "fileUpload": {
+ "dragDrop": "\uc5ec\uae30\uc5d0 \ud30c\uc77c\uc744 \ub4dc\ub798\uadf8 \uc564 \ub4dc\ub86d\ud558\uc138\uc694",
+ "browse": "\ud30c\uc77c \ucc3e\uc544\ubcf4\uae30",
+ "sizeLimit": "\uc81c\ud55c:",
+ "errors": {
+ "failed": "\uc5c5\ub85c\ub4dc \uc2e4\ud328",
+ "cancelled": "\uc5c5\ub85c\ub4dc \ucde8\uc18c:"
+ },
+ "actions": {
+ "cancelUpload": "\uc5c5\ub85c\ub4dc \ucde8\uc18c",
+ "removeAttachment": "\ucca8\ubd80 \ud30c\uc77c \uc81c\uac70"
+ }
+ },
+ "messages": {
+ "status": {
+ "using": "\uc0ac\uc6a9 \uc911",
+ "used": "\uc0ac\uc6a9\ub428"
+ },
+ "actions": {
+ "copy": {
+ "button": "\ud074\ub9bd\ubcf4\ub4dc\ub85c \ubcf5\uc0ac",
+ "success": "\ubcf5\uc0ac\ub418\uc5c8\uc2b5\ub2c8\ub2e4!"
+ }
+ },
+ "feedback": {
+ "positive": "\ub3c4\uc6c0\uc774 \ub418\uc5c8\uc74c",
+ "negative": "\ub3c4\uc6c0\uc774 \ub418\uc9c0 \uc54a\uc74c",
+ "edit": "\ud53c\ub4dc\ubc31 \uc218\uc815",
+ "dialog": {
+ "title": "\ub313\uae00 \ucd94\uac00",
+ "submit": "\ud53c\ub4dc\ubc31 \uc81c\ucd9c",
+ "yourFeedback": "\uadc0\ud558\uc758 \ud53c\ub4dc\ubc31..."
+ },
+ "status": {
+ "updating": "\uc5c5\ub370\uc774\ud2b8 \uc911",
+ "updated": "\ud53c\ub4dc\ubc31\uc774 \uc5c5\ub370\uc774\ud2b8\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
+ }
+ }
+ },
+ "history": {
+ "title": "\ucd5c\uadfc \uc785\ub825",
+ "empty": "\ube44\uc5b4 \uc788\uc2b5\ub2c8\ub2e4...",
+ "show": "\uae30\ub85d \ud45c\uc2dc"
+ },
+ "settings": {
+ "title": "\uc124\uc815 \ud328\ub110",
+ "customize": "\uc5ec\uae30\uc5d0\uc11c \ucc44\ud305 \uc124\uc815\uc744 \uc0ac\uc6a9\uc790 \uc9c0\uc815\ud558\uc138\uc694"
+ },
+ "watermark": "LLM\uc740 \uc2e4\uc218\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc911\uc694\ud55c \uc815\ubcf4\ub294 \ud655\uc778\ud558\uc138\uc694."
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "\uc774\uc804 \ucc44\ud305",
+ "filters": {
+ "search": "\uac80\uc0c9",
+ "placeholder": "\ub300\ud654 \uac80\uc0c9..."
+ },
+ "timeframes": {
+ "today": "\uc624\ub298",
+ "yesterday": "\uc5b4\uc81c",
+ "previous7days": "\uc9c0\ub09c 7\uc77c",
+ "previous30days": "\uc9c0\ub09c 30\uc77c"
+ },
+ "empty": "\uc2a4\ub808\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4",
+ "actions": {
+ "close": "\uc0ac\uc774\ub4dc\ubc14 \ub2eb\uae30",
+ "open": "\uc0ac\uc774\ub4dc\ubc14 \uc5f4\uae30"
+ }
+ },
+ "thread": {
+ "untitled": "\uc81c\ubaa9 \uc5c6\ub294 \ub300\ud654",
+ "menu": {
+ "rename": "\uc774\ub984 \ubcc0\uacbd",
+ "share": "\uacf5\uc720",
+ "delete": "\uc0ad\uc81c"
+ },
+ "actions": {
+ "share": {
+ "title": "\ucc44\ud305 \ub9c1\ud06c \uacf5\uc720",
+ "button": "\uacf5\uc720",
+ "status": {
+ "copied": "\ub9c1\ud06c \ubcf5\uc0ac\ub428",
+ "created": "\uacf5\uc720 \ub9c1\ud06c\uac00 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4!",
+ "unshared": "\uc774 \uc2a4\ub808\ub4dc\uc758 \uacf5\uc720\uac00 \ube44\ud65c\uc131\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
+ },
+ "error": {
+ "create": "\uacf5\uc720 \ub9c1\ud06c \uc0dd\uc131 \uc2e4\ud328",
+ "unshare": "\uc2a4\ub808\ub4dc \uacf5\uc720 \ud574\uc81c \uc2e4\ud328"
+ }
+ },
+ "delete": {
+ "title": "\uc0ad\uc81c \ud655\uc778",
+ "description": "\uc774\ub807\uac8c \ud558\uba74 \uc2a4\ub808\ub4dc\uc640 \uadf8 \uba54\uc2dc\uc9c0 \ubc0f \uc694\uc18c\uac00 \uc0ad\uc81c\ub429\ub2c8\ub2e4. \uc774 \uc791\uc5c5\uc740 \ucde8\uc18c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4",
+ "success": "\ucc44\ud305\uc774 \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4",
+ "inProgress": "\ucc44\ud305 \uc0ad\uc81c \uc911"
+ },
+ "rename": {
+ "title": "\uc2a4\ub808\ub4dc \uc774\ub984 \ubcc0\uacbd",
+ "description": "\uc774 \uc2a4\ub808\ub4dc\uc758 \uc0c8 \uc774\ub984\uc744 \uc785\ub825\ud558\uc138\uc694",
+ "form": {
+ "name": {
+ "label": "\uc774\ub984",
+ "placeholder": "\uc0c8 \uc774\ub984 \uc785\ub825"
+ }
+ },
+ "success": "\uc2a4\ub808\ub4dc \uc774\ub984\uc774 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4!",
+ "inProgress": "\uc2a4\ub808\ub4dc \uc774\ub984 \ubcc0\uacbd \uc911"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "\ucc44\ud305",
+ "readme": "\uc77d\uc5b4\ubcf4\uae30",
+ "theme": {
+ "light": "\ubc1d\uc740 \ud14c\ub9c8",
+ "dark": "\uc5b4\ub450\uc6b4 \ud14c\ub9c8",
+ "system": "\uc2dc\uc2a4\ud15c \ub530\ub77c\uac00\uae30"
+ }
+ },
+ "newChat": {
+ "button": "\uc0c8 \ucc44\ud305",
+ "dialog": {
+ "title": "\uc0c8 \ucc44\ud305 \ub9cc\ub4e4\uae30",
+ "description": "\uc774\ub807\uac8c \ud558\uba74 \ud604\uc7ac \ucc44\ud305 \uae30\ub85d\uc774 \uc9c0\uc6cc\uc9d1\ub2c8\ub2e4. \uacc4\uc18d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
+ "tooltip": "\uc0c8 \ucc44\ud305"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "\uc124\uc815",
+ "settingsKey": "S",
+ "apiKeys": "API \ud0a4",
+ "logout": "\ub85c\uadf8\uc544\uc6c3"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "\ud544\uc694\ud55c API \ud0a4",
+ "description": "\uc774 \uc571\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 \ub2e4\uc74c API \ud0a4\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. \ud0a4\ub294 \uae30\uae30\uc758 \ub85c\uceec \uc800\uc7a5\uc18c\uc5d0 \uc800\uc7a5\ub429\ub2c8\ub2e4.",
+ "success": {
+ "saved": "\uc131\uacf5\uc801\uc73c\ub85c \uc800\uc7a5\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
+ }
+ },
+ "alerts": {
+ "info": "\uc815\ubcf4",
+ "note": "\ucc38\uace0",
+ "tip": "\ud301",
+ "important": "\uc911\uc694",
+ "warning": "\uacbd\uace0",
+ "caution": "\uc8fc\uc758",
+ "debug": "\ub514\ubc84\uadf8",
+ "example": "\uc608\uc2dc",
+ "success": "\uc131\uacf5",
+ "help": "\ub3c4\uc6c0\ub9d0",
+ "idea": "\uc544\uc774\ub514\uc5b4",
+ "pending": "\ub300\uae30 \uc911",
+ "security": "\ubcf4\uc548",
+ "beta": "\ubca0\ud0c0",
+ "best-practice": "\ubaa8\ubc94 \uc0ac\ub840"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "\uc120\ud0dd..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/ml.json b/.chainlit/translations/ml.json
new file mode 100644
index 0000000..b558411
--- /dev/null
+++ b/.chainlit/translations/ml.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "\u0d31\u0d26\u0d4d\u0d26\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "confirm": "\u0d38\u0d4d\u0d25\u0d3f\u0d30\u0d40\u0d15\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "continue": "\u0d24\u0d41\u0d1f\u0d30\u0d41\u0d15",
+ "goBack": "\u0d24\u0d3f\u0d30\u0d3f\u0d15\u0d46 \u0d2a\u0d4b\u0d15\u0d41\u0d15",
+ "reset": "\u0d2a\u0d41\u0d28\u0d03\u0d38\u0d1c\u0d4d\u0d1c\u0d2e\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "submit": "\u0d38\u0d2e\u0d7c\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15"
+ },
+ "status": {
+ "loading": "\u0d32\u0d4b\u0d21\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d28\u0d4d\u0d28\u0d41...",
+ "error": {
+ "default": "\u0d12\u0d30\u0d41 \u0d2a\u0d3f\u0d36\u0d15\u0d4d \u0d38\u0d02\u0d2d\u0d35\u0d3f\u0d1a\u0d4d\u0d1a\u0d41",
+ "serverConnection": "\u0d38\u0d46\u0d7c\u0d35\u0d31\u0d41\u0d2e\u0d3e\u0d2f\u0d3f \u0d2c\u0d28\u0d4d\u0d27\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d3e\u0d7b \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d3f\u0d32\u0d4d\u0d32"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "\u0d06\u0d2a\u0d4d\u0d2a\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d15\u0d4d\u0d15\u0d3e\u0d7b \u0d32\u0d4b\u0d17\u0d3f\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15",
+ "form": {
+ "email": {
+ "label": "\u0d07\u0d2e\u0d46\u0d2f\u0d3f\u0d7d \u0d35\u0d3f\u0d32\u0d3e\u0d38\u0d02",
+ "required": "\u0d07\u0d2e\u0d46\u0d2f\u0d3f\u0d7d \u0d12\u0d30\u0d41 \u0d06\u0d35\u0d36\u0d4d\u0d2f\u0d2e\u0d3e\u0d2f \u0d2b\u0d40\u0d7d\u0d21\u0d4d \u0d06\u0d23\u0d4d",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "\u0d2a\u0d3e\u0d38\u0d4d\u200c\u0d35\u0d47\u0d21\u0d4d",
+ "required": "\u0d2a\u0d3e\u0d38\u0d4d\u200c\u0d35\u0d47\u0d21\u0d4d \u0d12\u0d30\u0d41 \u0d06\u0d35\u0d36\u0d4d\u0d2f\u0d2e\u0d3e\u0d2f \u0d2b\u0d40\u0d7d\u0d21\u0d4d \u0d06\u0d23\u0d4d"
+ },
+ "actions": {
+ "signin": "\u0d38\u0d48\u0d7b \u0d07\u0d7b"
+ },
+ "alternativeText": {
+ "or": "\u0d05\u0d32\u0d4d\u0d32\u0d46\u0d19\u0d4d\u0d15\u0d3f\u0d7d"
+ }
+ },
+ "errors": {
+ "default": "\u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d3e\u0d7b \u0d15\u0d34\u0d3f\u0d2f\u0d41\u0d28\u0d4d\u0d28\u0d3f\u0d32\u0d4d\u0d32",
+ "signin": "\u0d2e\u0d31\u0d4d\u0d31\u0d4a\u0d30\u0d41 \u0d05\u0d15\u0d4d\u0d15\u0d57\u0d23\u0d4d\u0d1f\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d3e\u0d7b \u0d36\u0d4d\u0d30\u0d2e\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "oauthSignin": "\u0d2e\u0d31\u0d4d\u0d31\u0d4a\u0d30\u0d41 \u0d05\u0d15\u0d4d\u0d15\u0d57\u0d23\u0d4d\u0d1f\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d3e\u0d7b \u0d36\u0d4d\u0d30\u0d2e\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "redirectUriMismatch": "\u0d31\u0d40\u0d21\u0d2f\u0d31\u0d15\u0d4d\u0d1f\u0d4d URI oauth \u0d06\u0d2a\u0d4d\u0d2a\u0d4d \u0d15\u0d4b\u0d7a\u0d2b\u0d3f\u0d17\u0d31\u0d47\u0d37\u0d28\u0d41\u0d2e\u0d3e\u0d2f\u0d3f \u0d2a\u0d4a\u0d30\u0d41\u0d24\u0d4d\u0d24\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d41\u0d28\u0d4d\u0d28\u0d3f\u0d32\u0d4d\u0d32",
+ "oauthCallback": "\u0d2e\u0d31\u0d4d\u0d31\u0d4a\u0d30\u0d41 \u0d05\u0d15\u0d4d\u0d15\u0d57\u0d23\u0d4d\u0d1f\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d3e\u0d7b \u0d36\u0d4d\u0d30\u0d2e\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "oauthCreateAccount": "\u0d2e\u0d31\u0d4d\u0d31\u0d4a\u0d30\u0d41 \u0d05\u0d15\u0d4d\u0d15\u0d57\u0d23\u0d4d\u0d1f\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d3e\u0d7b \u0d36\u0d4d\u0d30\u0d2e\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "emailCreateAccount": "\u0d2e\u0d31\u0d4d\u0d31\u0d4a\u0d30\u0d41 \u0d05\u0d15\u0d4d\u0d15\u0d57\u0d23\u0d4d\u0d1f\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d3e\u0d7b \u0d36\u0d4d\u0d30\u0d2e\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "callback": "\u0d2e\u0d31\u0d4d\u0d31\u0d4a\u0d30\u0d41 \u0d05\u0d15\u0d4d\u0d15\u0d57\u0d23\u0d4d\u0d1f\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d3e\u0d7b \u0d36\u0d4d\u0d30\u0d2e\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "oauthAccountNotLinked": "\u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d35\u0d4d\u0d2f\u0d15\u0d4d\u0d24\u0d3f\u0d24\u0d4d\u0d35\u0d02 \u0d38\u0d4d\u0d25\u0d3f\u0d30\u0d40\u0d15\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d3e\u0d7b, \u0d06\u0d26\u0d4d\u0d2f\u0d02 \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a \u0d05\u0d24\u0d47 \u0d05\u0d15\u0d4d\u0d15\u0d57\u0d23\u0d4d\u0d1f\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15",
+ "emailSignin": "\u0d07\u0d2e\u0d46\u0d2f\u0d3f\u0d7d \u0d05\u0d2f\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d3e\u0d7b \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d3f\u0d32\u0d4d\u0d32",
+ "emailVerify": "\u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d07\u0d2e\u0d46\u0d2f\u0d3f\u0d7d \u0d2a\u0d30\u0d3f\u0d36\u0d4b\u0d27\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15, \u0d12\u0d30\u0d41 \u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d07\u0d2e\u0d46\u0d2f\u0d3f\u0d7d \u0d05\u0d2f\u0d1a\u0d4d\u0d1a\u0d3f\u0d1f\u0d4d\u0d1f\u0d41\u0d23\u0d4d\u0d1f\u0d4d",
+ "credentialsSignin": "\u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d2a\u0d30\u0d3e\u0d1c\u0d2f\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f\u0d41. \u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d7e \u0d28\u0d7d\u0d15\u0d3f\u0d2f \u0d35\u0d3f\u0d35\u0d30\u0d19\u0d4d\u0d19\u0d7e \u0d36\u0d30\u0d3f\u0d2f\u0d3e\u0d23\u0d46\u0d28\u0d4d\u0d28\u0d4d \u0d2a\u0d30\u0d3f\u0d36\u0d4b\u0d27\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "sessionRequired": "\u0d08 \u0d2a\u0d47\u0d1c\u0d4d \u0d06\u0d15\u0d4d\u0d38\u0d38\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d3e\u0d7b \u0d26\u0d2f\u0d35\u0d3e\u0d2f\u0d3f \u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15"
+ }
+ },
+ "provider": {
+ "continue": "{{provider}} \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d24\u0d41\u0d1f\u0d30\u0d41\u0d15"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "\u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d38\u0d28\u0d4d\u0d26\u0d47\u0d36\u0d02 \u0d07\u0d35\u0d3f\u0d1f\u0d46 \u0d1f\u0d48\u0d2a\u0d4d\u0d2a\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15...",
+ "actions": {
+ "send": "\u0d38\u0d28\u0d4d\u0d26\u0d47\u0d36\u0d02 \u0d05\u0d2f\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "stop": "\u0d1f\u0d3e\u0d38\u0d4d\u0d15\u0d4d \u0d28\u0d3f\u0d7c\u0d24\u0d4d\u0d24\u0d41\u0d15",
+ "attachFiles": "\u0d2b\u0d2f\u0d32\u0d41\u0d15\u0d7e \u0d05\u0d31\u0d4d\u0d31\u0d3e\u0d1a\u0d4d\u0d1a\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15"
+ }
+ },
+ "commands": {
+ "button": "\u0d09\u0d2a\u0d15\u0d30\u0d23\u0d19\u0d4d\u0d19\u0d7e",
+ "changeTool": "\u0d09\u0d2a\u0d15\u0d30\u0d23\u0d02 \u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d41\u0d15",
+ "availableTools": "\u0d32\u0d2d\u0d4d\u0d2f\u0d2e\u0d3e\u0d2f \u0d09\u0d2a\u0d15\u0d30\u0d23\u0d19\u0d4d\u0d19\u0d7e"
+ },
+ "speech": {
+ "start": "\u0d31\u0d46\u0d15\u0d4d\u0d15\u0d4b\u0d7c\u0d21\u0d3f\u0d02\u0d17\u0d4d \u0d06\u0d30\u0d02\u0d2d\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "stop": "\u0d31\u0d46\u0d15\u0d4d\u0d15\u0d4b\u0d7c\u0d21\u0d3f\u0d02\u0d17\u0d4d \u0d28\u0d3f\u0d7c\u0d24\u0d4d\u0d24\u0d41\u0d15",
+ "connecting": "\u0d2c\u0d28\u0d4d\u0d27\u0d3f\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41"
+ },
+ "fileUpload": {
+ "dragDrop": "\u0d2b\u0d2f\u0d32\u0d41\u0d15\u0d7e \u0d07\u0d35\u0d3f\u0d1f\u0d46 \u0d35\u0d32\u0d3f\u0d1a\u0d4d\u0d1a\u0d3f\u0d1f\u0d41\u0d15",
+ "browse": "\u0d2b\u0d2f\u0d32\u0d41\u0d15\u0d7e \u0d24\u0d3f\u0d30\u0d2f\u0d41\u0d15",
+ "sizeLimit": "\u0d2a\u0d30\u0d3f\u0d27\u0d3f:",
+ "errors": {
+ "failed": "\u0d05\u0d2a\u0d4d\u200c\u0d32\u0d4b\u0d21\u0d4d \u0d2a\u0d30\u0d3e\u0d1c\u0d2f\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f\u0d41",
+ "cancelled": "\u0d05\u0d2a\u0d4d\u200c\u0d32\u0d4b\u0d21\u0d4d \u0d31\u0d26\u0d4d\u0d26\u0d3e\u0d15\u0d4d\u0d15\u0d3f"
+ },
+ "actions": {
+ "cancelUpload": "\u0d05\u0d2a\u0d4d\u200c\u0cb2\u0d4b\u0d21\u0d4d \u0d31\u0d26\u0d4d\u0d26\u0d41\u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15",
+ "removeAttachment": "\u0d05\u0d31\u0d4d\u0d31\u0d3e\u0d1a\u0d4d\u0d1a\u0d4d\u200c\u0d2e\u0d46\u0d28\u0d4d\u0d31\u0d4d \u0d28\u0d40\u0d15\u0d4d\u0d15\u0d02 \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15"
+ }
+ },
+ "messages": {
+ "status": {
+ "using": "\u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41",
+ "used": "\u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d41"
+ },
+ "actions": {
+ "copy": {
+ "button": "\u0d15\u0d4d\u0d32\u0d3f\u0d2a\u0d4d\u0d2a\u0d4d\u0d2c\u0d4b\u0d7c\u0d21\u0d3f\u0d32\u0d47\u0d15\u0d4d\u0d15\u0d4d \u0d2a\u0d15\u0d7c\u0d24\u0d4d\u0d24\u0d41\u0d15",
+ "success": "\u0d2a\u0d15\u0d7c\u0d24\u0d4d\u0d24\u0d3f!"
+ }
+ },
+ "feedback": {
+ "positive": "\u0d38\u0d39\u0d3e\u0d2f\u0d15\u0d30\u0d02",
+ "negative": "\u0d38\u0d39\u0d3e\u0d2f\u0d15\u0d30\u0d2e\u0d32\u0d4d\u0d32",
+ "edit": "\u0d2b\u0d40\u0d21\u0d4d\u0d2c\u0d3e\u0d15\u0d4d\u0d15\u0d4d \u0d0e\u0d21\u0d3f\u0d31\u0d4d\u0d31\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15",
+ "dialog": {
+ "title": "\u0d12\u0d30\u0d41 \u0d15\u0d2e\u0d28\u0d4d\u0d31\u0d4d \u0d1a\u0d47\u0d7c\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "submit": "\u0d2b\u0d40\u0d21\u0d4d\u0d2c\u0d3e\u0d15\u0d4d\u0d15\u0d4d \u0d38\u0d2e\u0d7c\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "yourFeedback": "\u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d2a\u0d4d\u0d30\u0d24\u0d3f\u0d15\u0d30\u0d23\u0d02..."
+ },
+ "status": {
+ "updating": "\u0d05\u0d2a\u0d4d\u0d21\u0d47\u0d31\u0d4d\u0d31\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d28\u0d4d\u0d28\u0d41",
+ "updated": "\u0d2b\u0d40\u0d21\u0d4d\u0d2c\u0d3e\u0d15\u0d4d\u0d15\u0d4d \u0d05\u0d2a\u0d4d\u0d21\u0d47\u0d31\u0d4d\u0d31\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d24\u0d41"
+ }
+ }
+ },
+ "history": {
+ "title": "\u0d05\u0d35\u0d38\u0d3e\u0d28 \u0d07\u0d7b\u0d2a\u0d41\u0d1f\u0d4d\u0d1f\u0d41\u0d15\u0d7e",
+ "empty": "\u0d12\u0d28\u0d4d\u0d28\u0d41\u0d2e\u0d3f\u0d32\u0d4d\u0d32...",
+ "show": "\u0d39\u0d3f\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d31\u0d3f \u0d15\u0d3e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15"
+ },
+ "settings": {
+ "title": "\u0d15\u0d4d\u0d30\u0d2e\u0d40\u0d15\u0d30\u0d23\u0d19\u0d4d\u0d19\u0d7e \u0d2a\u0d3e\u0d28\u0d7d",
+ "customize": "\u0d08 \u0d38\u0d2e\u0d2f\u0d02 \u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d \u0d15\u0d4d\u0d30\u0d2e\u0d40\u0d15\u0d30\u0d23\u0d19\u0d4d\u0d19\u0d7e \u0d15\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d2e\u0d48\u0d38\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15"
+ },
+ "watermark": "LLM \u0d15\u0d7e\u0d15\u0d4d\u0d15\u0d4d \u0d24\u0d46\u0d31\u0d4d\u0d31\u0d41\u0d15\u0d7e \u0d35\u0d30\u0d41\u0d24\u0d4d\u0d24\u0d3e\u0d02. \u0d2a\u0d4d\u0d30\u0d27\u0d3e\u0d28\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f \u0d35\u0d3f\u0d35\u0d30\u0d19\u0d4d\u0d19\u0d7e \u0d2a\u0d30\u0d3f\u0d36\u0d4b\u0d27\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d24\u0d4d \u0d2a\u0d30\u0d3f\u0d17\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15."
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "\u0d2e\u0d41\u0d7b \u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d41\u0d15\u0d7e",
+ "filters": {
+ "search": "\u0d24\u0d3f\u0d30\u0d2f\u0d41\u0d15",
+ "placeholder": "Search conversations..."
+ },
+ "timeframes": {
+ "today": "\u0d07\u0d28\u0d4d\u0d28\u0d4d",
+ "yesterday": "\u0d07\u0d28\u0d4d\u0d28\u0d32\u0d46",
+ "previous7days": "\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e 7 \u0d26\u0d3f\u0d35\u0d38\u0d02",
+ "previous30days": "\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e 30 \u0d26\u0d3f\u0d35\u0d38\u0d02"
+ },
+ "empty": "\u0d24\u0d4d\u0d30\u0d46\u0d21\u0d41\u0d15\u0d7e \u0d15\u0d23\u0d4d\u0d1f\u0d46\u0d24\u0d4d\u0d24\u0d3f\u0d2f\u0d3f\u0d32\u0d4d\u0d32",
+ "actions": {
+ "close": "\u0d38\u0d48\u0d21\u0d4d\u0d2c\u0d3e\u0d7c \u0d05\u0d1f\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "open": "\u0d38\u0d48\u0d21\u0d4d\u0d2c\u0d3e\u0d7c \u0d24\u0d41\u0d31\u0d15\u0d4d\u0d15\u0d41\u0d15"
+ }
+ },
+ "thread": {
+ "untitled": "\u0d2a\u0d47\u0d30\u0d3f\u0d32\u0d4d\u0d32\u0d3e\u0d24\u0d4d\u0d24 \u0d38\u0d02\u0d2d\u0d3e\u0d37\u0d23\u0d02",
+ "menu": {
+ "rename": "\u0d2a\u0d47\u0d30\u0d4d \u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d41\u0d15",
+ "share": "\u0d2a\u0d19\u0d4d\u0d15\u0d3f\u0d1f\u0d41\u0d15",
+ "delete": "\u0d21\u0d3f\u0d32\u0d40\u0d31\u0d4d\u0d31\u0d4d"
+ },
+ "actions": {
+ "share": {
+ "title": "\u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d3f\u0d32\u0d47\u0d15\u0d4d\u0d15\u0d4d \u0d32\u0d3f\u0d19\u0d4d\u0d15\u0d4d \u0d2a\u0d19\u0d4d\u0d15\u0d3f\u0d1f\u0d41\u0d15",
+ "button": "\u0d2a\u0d19\u0d4d\u0d15\u0d3f\u0d1f\u0d41\u0d15",
+ "status": {
+ "copied": "\u0d32\u0d3f\u0d19\u0d4d\u0d15\u0d4d \u0d2a\u0d15\u0d7c\u0d24\u0d4d\u0d24\u0d3f",
+ "created": "\u0d2a\u0d19\u0d4d\u0d15\u0d3f\u0d1f\u0d7d \u0d32\u0d3f\u0d19\u0d4d\u0d15\u0d4d \u0d38\u0d43\u0d37\u0d4d\u0d1f\u0d3f\u0d1a\u0d4d\u0d1a\u0d41!",
+ "unshared": "\u0d08 \u0d24\u0d4d\u0d30\u0d46\u0d21\u0d3f\u0d28\u0d3e\u0d2f\u0d3f \u0d2a\u0d19\u0d4d\u0d15\u0d3f\u0d1f\u0d7d \u0d05\u0d2a\u0d4d\u0d30\u0d3e\u0d2a\u0d4d\u0d24\u0d2e\u0d3e\u0d15\u0d4d\u0d15\u0d3f"
+ },
+ "error": {
+ "create": "\u0d2a\u0d19\u0d4d\u0d15\u0d3f\u0d1f\u0d7d \u0d32\u0d3f\u0d19\u0d4d\u0d15\u0d4d \u0d38\u0d43\u0d37\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d7d \u0d2a\u0d30\u0d3e\u0d1c\u0d2f\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f\u0d41",
+ "unshare": "\u0d24\u0d4d\u0d30\u0d46\u0d21\u0d4d \u0d2a\u0d19\u0d4d\u0d15\u0d3f\u0d1f\u0d7d \u0d05\u0d35\u0d38\u0d3e\u0d28\u0d3f\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d7d \u0d2a\u0d30\u0d3e\u0d1c\u0d2f\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f\u0d41"
+ }
+ },
+ "delete": {
+ "title": "\u0d21\u0d3f\u0d32\u0d40\u0d31\u0d4d\u0d31\u0d4d \u0d38\u0d4d\u0d25\u0d3f\u0d30\u0d40\u0d15\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "description": "\u0d07\u0d24\u0d4d \u0d24\u0d4d\u0d30\u0d46\u0d21\u0d41\u0d02 \u0d05\u0d24\u0d3f\u0d28\u0d4d\u0d31\u0d46 \u0d38\u0d28\u0d4d\u0d26\u0d47\u0d36\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d02 \u0d18\u0d1f\u0d15\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d02 \u0d21\u0d3f\u0d32\u0d40\u0d31\u0d4d\u0d31\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d02. \u0d08 \u0d2a\u0d4d\u0d30\u0d35\u0d7c\u0d24\u0d4d\u0d24\u0d3f \u0d2a\u0d34\u0d2f\u0d2a\u0d1f\u0d3f\u0d2f\u0d3e\u0d15\u0d4d\u0d15\u0d3e\u0d7b \u0d15\u0d34\u0d3f\u0d2f\u0d3f\u0d32\u0d4d\u0d32",
+ "success": "\u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d \u0d21\u0d3f\u0d32\u0d40\u0d31\u0d4d\u0d31\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d24\u0d41",
+ "inProgress": "\u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d \u0d21\u0d3f\u0d32\u0d40\u0d31\u0d4d\u0d31\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d28\u0d4d\u0d28\u0d41"
+ },
+ "rename": {
+ "title": "\u0d24\u0d4d\u0d30\u0d46\u0d21\u0d4d \u0d2a\u0d41\u0d28\u0d7c\u0d28\u0d3e\u0d2e\u0d15\u0d30\u0d23\u0d02 \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15",
+ "description": "\u0d08 \u0d24\u0d4d\u0d30\u0d46\u0d21\u0d3f\u0d28\u0d4d \u0d12\u0d30\u0d41 \u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d2a\u0d47\u0d30\u0d4d \u0d28\u0d7d\u0d15\u0d41\u0d15",
+ "form": {
+ "name": {
+ "label": "\u0d2a\u0d47\u0d30\u0d4d",
+ "placeholder": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d2a\u0d47\u0d30\u0d4d \u0d28\u0d7d\u0d15\u0d41\u0d15"
+ }
+ },
+ "success": "\u0d24\u0d4d\u0d30\u0d46\u0d21\u0d4d \u0d2a\u0d41\u0d28\u0d7c\u0d28\u0d3e\u0d2e\u0d15\u0d30\u0d23\u0d02 \u0d1a\u0d46\u0d2f\u0d4d\u0d24\u0d41!",
+ "inProgress": "\u0d24\u0d4d\u0d30\u0d46\u0d21\u0d4d \u0d2a\u0d41\u0d28\u0d7c\u0d28\u0d3e\u0d2e\u0d15\u0d30\u0d23\u0d02 \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d28\u0d4d\u0d28\u0d41"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "\u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d",
+ "readme": "\u0d35\u0d3e\u0d2f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "theme": {
+ "light": "Light Theme",
+ "dark": "Dark Theme",
+ "system": "Follow System"
+ }
+ },
+ "newChat": {
+ "button": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d",
+ "dialog": {
+ "title": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d \u0d38\u0d43\u0d37\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+ "description": "\u0d07\u0d24\u0d4d \u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d28\u0d3f\u0d32\u0d35\u0d3f\u0d32\u0d46 \u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d \u0d39\u0d3f\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d31\u0d3f \u0d2e\u0d3e\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d02. \u0d24\u0d41\u0d1f\u0d30\u0d3e\u0d7b \u0d24\u0d3e\u0d7d\u0d2a\u0d4d\u0d2a\u0d30\u0d4d\u0d2f\u0d2e\u0d41\u0d23\u0d4d\u0d1f\u0d4b?",
+ "tooltip": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "\u0d15\u0d4d\u0d30\u0d2e\u0d40\u0d15\u0d30\u0d23\u0d19\u0d4d\u0d19\u0d7e",
+ "settingsKey": "S",
+ "apiKeys": "API \u0d15\u0d40\u0d15\u0d7e",
+ "logout": "\u0d32\u0d4b\u0d17\u0d4d\u0d14\u0d1f\u0d4d\u0d1f\u0d4d"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "\u0d06\u0d35\u0d36\u0d4d\u0d2f\u0d2e\u0d3e\u0d2f API \u0d15\u0d40\u0d15\u0d7e",
+ "description": "\u0d08 \u0d06\u0d2a\u0d4d\u0d2a\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d15\u0d4d\u0d15\u0d3e\u0d7b, \u0d24\u0d3e\u0d34\u0d46\u0d2a\u0d4d\u0d2a\u0d31\u0d2f\u0d41\u0d28\u0d4d\u0d28 API \u0d15\u0d40\u0d15\u0d7e \u0d06\u0d35\u0d36\u0d4d\u0d2f\u0d2e\u0d3e\u0d23\u0d4d. \u0d15\u0d40\u0d15\u0d7e \u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d09\u0d2a\u0d15\u0d30\u0d23\u0d24\u0d4d\u0d24\u0d3f\u0d28\u0d4d\u0d31\u0d46 \u0d32\u0d4b\u0d15\u0d4d\u0d15\u0d7d \u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4b\u0d31\u0d47\u0d1c\u0d3f\u0d7d \u0d38\u0d02\u0d2d\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d41\u0d28\u0d4d\u0d28\u0d41.",
+ "success": {
+ "saved": "\u0d35\u0d3f\u0d1c\u0d2f\u0d15\u0d30\u0d2e\u0d3e\u0d2f\u0d3f \u0d38\u0d02\u0d30\u0d15\u0d4d\u0d37\u0d3f\u0d1a\u0d4d\u0d1a\u0d41"
+ }
+ },
+ "alerts": {
+ "info": "Info",
+ "note": "Note",
+ "tip": "Tip",
+ "important": "Important",
+ "warning": "Warning",
+ "caution": "Caution",
+ "debug": "Debug",
+ "example": "Example",
+ "success": "Success",
+ "help": "Help",
+ "idea": "Idea",
+ "pending": "Pending",
+ "security": "Security",
+ "beta": "Beta",
+ "best-practice": "Best Practice"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "\u0d1a\u0d42\u0d23\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d3e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/mr.json b/.chainlit/translations/mr.json
new file mode 100644
index 0000000..8c203a0
--- /dev/null
+++ b/.chainlit/translations/mr.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "\u0930\u0926\u094d\u0926 \u0915\u0930\u093e",
+ "confirm": "\u092a\u0941\u0937\u094d\u091f\u0940 \u0915\u0930\u093e",
+ "continue": "\u092a\u0941\u0922\u0947 \u091c\u093e",
+ "goBack": "\u092e\u093e\u0917\u0947 \u091c\u093e",
+ "reset": "\u0930\u0940\u0938\u0947\u091f \u0915\u0930\u093e",
+ "submit": "\u0938\u092c\u092e\u093f\u091f \u0915\u0930\u093e"
+ },
+ "status": {
+ "loading": "\u0932\u094b\u0921 \u0915\u0930\u0924 \u0906\u0939\u0947...",
+ "error": {
+ "default": "\u090f\u0915 \u0924\u094d\u0930\u0941\u091f\u0940 \u0906\u0932\u0940",
+ "serverConnection": "\u0938\u0930\u094d\u0935\u094d\u0939\u0930\u0936\u0940 \u0915\u0928\u0947\u0915\u094d\u091f \u0939\u094b\u090a \u0936\u0915\u0932\u0947 \u0928\u093e\u0939\u0940"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "\u0905\u0945\u092a \u0935\u093e\u092a\u0930\u0923\u094d\u092f\u093e\u0938\u093e\u0920\u0940 \u0932\u0949\u0917\u093f\u0928 \u0915\u0930\u093e",
+ "form": {
+ "email": {
+ "label": "\u0908\u092e\u0947\u0932 \u092a\u0924\u094d\u0924\u093e",
+ "required": "\u0908\u092e\u0947\u0932 \u0906\u0935\u0936\u094d\u092f\u0915 \u0906\u0939\u0947",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "\u092a\u093e\u0938\u0935\u0930\u094d\u0921",
+ "required": "\u092a\u093e\u0938\u0935\u0930\u094d\u0921 \u0906\u0935\u0936\u094d\u092f\u0915 \u0906\u0939\u0947"
+ },
+ "actions": {
+ "signin": "\u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u093e"
+ },
+ "alternativeText": {
+ "or": "\u0915\u093f\u0902\u0935\u093e"
+ }
+ },
+ "errors": {
+ "default": "\u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0942 \u0936\u0915\u0924 \u0928\u093e\u0939\u0940",
+ "signin": "\u0935\u0947\u0917\u0933\u094d\u092f\u093e \u0916\u093e\u0924\u094d\u092f\u093e\u0928\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0923\u094d\u092f\u093e\u091a\u093e \u092a\u094d\u0930\u092f\u0924\u094d\u0928 \u0915\u0930\u093e",
+ "oauthSignin": "\u0935\u0947\u0917\u0933\u094d\u092f\u093e \u0916\u093e\u0924\u094d\u092f\u093e\u0928\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0923\u094d\u092f\u093e\u091a\u093e \u092a\u094d\u0930\u092f\u0924\u094d\u0928 \u0915\u0930\u093e",
+ "redirectUriMismatch": "\u0930\u0940\u0921\u093e\u092f\u0930\u0947\u0915\u094d\u091f URI \u0913\u0925 \u0905\u0945\u092a \u0915\u0949\u0928\u094d\u092b\u093f\u0917\u0930\u0947\u0936\u0928\u0936\u0940 \u091c\u0941\u0933\u0924 \u0928\u093e\u0939\u0940",
+ "oauthCallback": "\u0935\u0947\u0917\u0933\u094d\u092f\u093e \u0916\u093e\u0924\u094d\u092f\u093e\u0928\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0923\u094d\u092f\u093e\u091a\u093e \u092a\u094d\u0930\u092f\u0924\u094d\u0928 \u0915\u0930\u093e",
+ "oauthCreateAccount": "\u0935\u0947\u0917\u0933\u094d\u092f\u093e \u0916\u093e\u0924\u094d\u092f\u093e\u0928\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0923\u094d\u092f\u093e\u091a\u093e \u092a\u094d\u0930\u092f\u0924\u094d\u0928 \u0915\u0930\u093e",
+ "emailCreateAccount": "\u0935\u0947\u0917\u0933\u094d\u092f\u093e \u0916\u093e\u0924\u094d\u092f\u093e\u0928\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0923\u094d\u092f\u093e\u091a\u093e \u092a\u094d\u0930\u092f\u0924\u094d\u0928 \u0915\u0930\u093e",
+ "callback": "\u0935\u0947\u0917\u0933\u094d\u092f\u093e \u0916\u093e\u0924\u094d\u092f\u093e\u0928\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0923\u094d\u092f\u093e\u091a\u093e \u092a\u094d\u0930\u092f\u0924\u094d\u0928 \u0915\u0930\u093e",
+ "oauthAccountNotLinked": "\u0924\u0941\u092e\u091a\u0940 \u0913\u0933\u0916 \u092a\u091f\u0935\u0923\u094d\u092f\u093e\u0938\u093e\u0920\u0940, \u092e\u0942\u0933 \u0935\u093e\u092a\u0930\u0932\u0947\u0932\u094d\u092f\u093e \u0916\u093e\u0924\u094d\u092f\u093e\u0928\u0947\u091a \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u093e",
+ "emailSignin": "\u0908\u092e\u0947\u0932 \u092a\u093e\u0920\u0935\u0942 \u0936\u0915\u0932\u0947 \u0928\u093e\u0939\u0940",
+ "emailVerify": "\u0915\u0943\u092a\u092f\u093e \u0924\u0941\u092e\u091a\u093e \u0908\u092e\u0947\u0932 \u0924\u092a\u093e\u0938\u093e, \u0928\u0935\u0940\u0928 \u0908\u092e\u0947\u0932 \u092a\u093e\u0920\u0935\u0932\u093e \u0917\u0947\u0932\u093e \u0906\u0939\u0947",
+ "credentialsSignin": "\u0938\u093e\u0907\u0928 \u0907\u0928 \u0905\u092f\u0936\u0938\u094d\u0935\u0940. \u0924\u0941\u092e\u094d\u0939\u0940 \u0926\u093f\u0932\u0947\u0932\u0940 \u092e\u093e\u0939\u093f\u0924\u0940 \u092f\u094b\u0917\u094d\u092f \u0906\u0939\u0947 \u0915\u093e \u0924\u0947 \u0924\u092a\u093e\u0938\u093e",
+ "sessionRequired": "\u092f\u093e \u092a\u0943\u0937\u094d\u0920\u093e\u0935\u0930 \u092a\u094d\u0930\u0935\u0947\u0936 \u0915\u0930\u0923\u094d\u092f\u093e\u0938\u093e\u0920\u0940 \u0915\u0943\u092a\u092f\u093e \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u093e"
+ }
+ },
+ "provider": {
+ "continue": "{{provider}} \u0938\u0939 \u092a\u0941\u0922\u0947 \u091c\u093e"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "\u0924\u0941\u092e\u091a\u093e \u0938\u0902\u0926\u0947\u0936 \u092f\u0947\u0925\u0947 \u091f\u093e\u0907\u092a \u0915\u0930\u093e...",
+ "actions": {
+ "send": "\u0938\u0902\u0926\u0947\u0936 \u092a\u093e\u0920\u0935\u093e",
+ "stop": "\u0915\u093e\u0930\u094d\u092f \u0925\u093e\u0902\u092c\u0935\u093e",
+ "attachFiles": "\u092b\u093e\u0907\u0932\u094d\u0938 \u091c\u094b\u0921\u093e"
+ }
+ },
+ "speech": {
+ "start": "\u0930\u0947\u0915\u0949\u0930\u094d\u0921\u093f\u0902\u0917 \u0938\u0941\u0930\u0942 \u0915\u0930\u093e",
+ "stop": "\u0930\u0947\u0915\u0949\u0930\u094d\u0921\u093f\u0902\u0917 \u0925\u093e\u0902\u092c\u0935\u093e",
+ "connecting": "\u0915\u0928\u0947\u0915\u094d\u091f \u0915\u0930\u0924 \u0906\u0939\u0947"
+ },
+ "commands": {
+ "button": "\u0938\u093e\u0927\u0928\u0947",
+ "changeTool": "\u0938\u093e\u0927\u0928 \u092c\u0926\u0932\u093e",
+ "availableTools": "\u0909\u092a\u0932\u092c\u094d\u0927 \u0938\u093e\u0927\u0928\u0947"
+ },
+ "fileUpload": {
+ "dragDrop": "\u092b\u093e\u0907\u0932\u094d\u0938 \u092f\u0947\u0925\u0947 \u0921\u094d\u0930\u0945\u0917 \u0906\u0923\u093f \u0921\u094d\u0930\u0949\u092a \u0915\u0930\u093e",
+ "browse": "\u092b\u093e\u0907\u0932\u094d\u0938 \u092c\u094d\u0930\u093e\u0909\u091d \u0915\u0930\u093e",
+ "sizeLimit": "\u092e\u0930\u094d\u092f\u093e\u0926\u093e:",
+ "errors": {
+ "failed": "\u0905\u092a\u0932\u094b\u0921 \u0905\u092f\u0936\u0938\u094d\u0935\u0940",
+ "cancelled": "\u092f\u093e\u0902\u091a\u0947 \u0905\u092a\u0932\u094b\u0921 \u0930\u0926\u094d\u0926 \u0915\u0947\u0932\u0947"
+ },
+ "actions": {
+ "cancelUpload": "\u0905\u092a\u0932\u094b\u0921 \u0930\u0926\u094d\u0926 \u0915\u0930\u093e",
+ "removeAttachment": "\u0905\u091f\u0945\u091a\u092e\u0947\u0902\u091f \u0915\u093e\u0922\u093e"
+ }
+ },
+ "messages": {
+ "status": {
+ "using": "\u0935\u093e\u092a\u0930\u0924 \u0906\u0939\u0947",
+ "used": "\u0935\u093e\u092a\u0930\u0932\u0947"
+ },
+ "actions": {
+ "copy": {
+ "button": "\u0915\u094d\u0932\u093f\u092a\u092c\u094b\u0930\u094d\u0921\u0935\u0930 \u0915\u0949\u092a\u0940 \u0915\u0930\u093e",
+ "success": "\u0915\u0949\u092a\u0940 \u0915\u0947\u0932\u0947!"
+ }
+ },
+ "feedback": {
+ "positive": "\u0909\u092a\u092f\u0941\u0915\u094d\u0924",
+ "negative": "\u0909\u092a\u092f\u0941\u0915\u094d\u0924 \u0928\u093e\u0939\u0940",
+ "edit": "\u092b\u0940\u0921\u092c\u0945\u0915 \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u093e",
+ "dialog": {
+ "title": "\u091f\u093f\u092a\u094d\u092a\u0923\u0940 \u091c\u094b\u0921\u093e",
+ "submit": "\u092b\u0940\u0921\u092c\u0945\u0915 \u0938\u092c\u092e\u093f\u091f \u0915\u0930\u093e",
+ "yourFeedback": "\u0924\u0941\u092e\u091a\u0940 \u092a\u094d\u0930\u0924\u093f\u0915\u094d\u0930\u093f\u092f\u093e..."
+ },
+ "status": {
+ "updating": "\u0905\u092a\u0921\u0947\u091f \u0915\u0930\u0924 \u0906\u0939\u0947",
+ "updated": "\u092b\u0940\u0921\u092c\u0945\u0915 \u0905\u092a\u0921\u0947\u091f \u0915\u0947\u0932\u0947"
+ }
+ }
+ },
+ "history": {
+ "title": "\u0936\u0947\u0935\u091f\u091a\u0947 \u0907\u0928\u092a\u0941\u091f",
+ "empty": "\u0930\u093f\u0915\u093e\u092e\u0947 \u0906\u0939\u0947...",
+ "show": "\u0907\u0924\u093f\u0939\u093e\u0938 \u0926\u093e\u0916\u0935\u093e"
+ },
+ "settings": {
+ "title": "\u0938\u0947\u091f\u093f\u0902\u0917\u094d\u091c \u092a\u0945\u0928\u0932",
+ "customize": "\u092f\u093e \u0935\u0947\u0933\u0940 \u0924\u0941\u092e\u091a\u094d\u092f\u093e \u091a\u0945\u091f \u0938\u0947\u091f\u093f\u0902\u0917\u094d\u091c \u0915\u0938\u094d\u091f\u092e\u093e\u0907\u091d \u0915\u0930\u093e"
+ },
+ "watermark": "LLM \u091a\u0941\u0915\u093e \u0915\u0930\u0942 \u0936\u0915\u0924\u093e\u0924. \u092e\u0939\u0924\u094d\u0924\u094d\u0935\u093e\u091a\u0940 \u092e\u093e\u0939\u093f\u0924\u0940 \u0924\u092a\u093e\u0938\u0923\u094d\u092f\u093e\u091a\u093e \u0935\u093f\u091a\u093e\u0930 \u0915\u0930\u093e."
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "\u092e\u093e\u0917\u0940\u0932 \u091a\u0945\u091f\u094d\u0938",
+ "filters": {
+ "search": "\u0936\u094b\u0927\u093e",
+ "placeholder": "Search conversations..."
+ },
+ "timeframes": {
+ "today": "\u0906\u091c",
+ "yesterday": "\u0915\u093e\u0932",
+ "previous7days": "\u092e\u093e\u0917\u0940\u0932 7 \u0926\u093f\u0935\u0938",
+ "previous30days": "\u092e\u093e\u0917\u0940\u0932 30 \u0926\u093f\u0935\u0938"
+ },
+ "empty": "\u0915\u094b\u0923\u0924\u0947\u0939\u0940 \u0925\u094d\u0930\u0947\u0921 \u0938\u093e\u092a\u0921\u0932\u0947 \u0928\u093e\u0939\u0940\u0924",
+ "actions": {
+ "close": "\u0938\u093e\u0907\u0921\u092c\u093e\u0930 \u092c\u0902\u0926 \u0915\u0930\u093e",
+ "open": "\u0938\u093e\u0907\u0921\u092c\u093e\u0930 \u0909\u0918\u0921\u093e"
+ }
+ },
+ "thread": {
+ "untitled": "\u0936\u0940\u0930\u094d\u0937\u0915\u0935\u093f\u0930\u0939\u093f\u0924 \u0938\u0902\u092d\u093e\u0937\u0923",
+ "menu": {
+ "rename": "\u0928\u093e\u0935 \u092c\u0926\u0932\u093e",
+ "share": "\u0936\u0947\u0905\u0930 \u0915\u0930\u093e",
+ "delete": "\u0939\u091f\u0935\u093e"
+ },
+ "actions": {
+ "share": {
+ "title": "\u091a\u0945\u091f\u091a\u093e \u0926\u0941\u0935\u093e \u0936\u0947\u0905\u0930 \u0915\u0930\u093e",
+ "button": "\u0936\u0947\u0905\u0930 \u0915\u0930\u093e",
+ "status": {
+ "copied": "\u0926\u0941\u0935\u093e \u0915\u0949\u092a\u0940 \u0915\u0947\u0932\u093e",
+ "created": "\u0936\u0947\u0905\u0930 \u0926\u0941\u0935\u093e \u0924\u092f\u093e\u0930 \u091d\u093e\u0932\u093e!",
+ "unshared": "\u092f\u093e \u0925\u094d\u0930\u0947\u0921\u0938\u093e\u0920\u0940 \u0936\u0947\u0905\u0930\u093f\u0902\u0917 \u0905\u0915\u094d\u0937\u092e \u0915\u0947\u0932\u0947"
+ },
+ "error": {
+ "create": "\u0936\u0947\u0905\u0930 \u0926\u0941\u0935\u093e \u0924\u092f\u093e\u0930 \u0915\u0930\u0923\u094d\u092f\u093e\u0924 \u0905\u092a\u092f\u0936",
+ "unshare": "\u0925\u094d\u0930\u0947\u0921\u091a\u0947 \u0936\u0947\u0905\u0930\u093f\u0902\u0917 \u0925\u093e\u0902\u092c\u0935\u0923\u094d\u092f\u093e\u0924 \u0905\u092a\u092f\u0936"
+ }
+ },
+ "delete": {
+ "title": "\u0939\u091f\u0935\u093f\u0923\u094d\u092f\u093e\u091a\u0940 \u092a\u0941\u0937\u094d\u091f\u0940 \u0915\u0930\u093e",
+ "description": "\u0939\u0947 \u0925\u094d\u0930\u0947\u0921 \u0906\u0923\u093f \u0924\u094d\u092f\u093e\u091a\u0947 \u0938\u0902\u0926\u0947\u0936 \u0935 \u0918\u091f\u0915 \u0939\u091f\u0935\u0947\u0932. \u0939\u0940 \u0915\u094d\u0930\u093f\u092f\u093e \u092a\u0942\u0930\u094d\u0935\u0935\u0924 \u0915\u0947\u0932\u0940 \u091c\u093e\u090a \u0936\u0915\u0924 \u0928\u093e\u0939\u0940",
+ "success": "\u091a\u0945\u091f \u0939\u091f\u0935\u0932\u093e",
+ "inProgress": "\u091a\u0945\u091f \u0939\u091f\u0935\u0924 \u0906\u0939\u0947"
+ },
+ "rename": {
+ "title": "\u0925\u094d\u0930\u0947\u0921\u091a\u0947 \u0928\u093e\u0935 \u092c\u0926\u0932\u093e",
+ "description": "\u092f\u093e \u0925\u094d\u0930\u0947\u0921\u0938\u093e\u0920\u0940 \u0928\u0935\u0940\u0928 \u0928\u093e\u0935 \u092a\u094d\u0930\u0935\u093f\u0937\u094d\u091f \u0915\u0930\u093e",
+ "form": {
+ "name": {
+ "label": "\u0928\u093e\u0935",
+ "placeholder": "\u0928\u0935\u0940\u0928 \u0928\u093e\u0935 \u092a\u094d\u0930\u0935\u093f\u0937\u094d\u091f \u0915\u0930\u093e"
+ }
+ },
+ "success": "\u0925\u094d\u0930\u0947\u0921\u091a\u0947 \u0928\u093e\u0935 \u092c\u0926\u0932\u0932\u0947!",
+ "inProgress": "\u0925\u094d\u0930\u0947\u0921\u091a\u0947 \u0928\u093e\u0935 \u092c\u0926\u0932\u0924 \u0906\u0939\u0947"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "\u091a\u0945\u091f",
+ "readme": "\u0935\u093e\u091a\u093e",
+ "theme": {
+ "light": "Light Theme",
+ "dark": "Dark Theme",
+ "system": "Follow System"
+ }
+ },
+ "newChat": {
+ "button": "\u0928\u0935\u0940\u0928 \u091a\u0945\u091f",
+ "dialog": {
+ "title": "\u0928\u0935\u0940\u0928 \u091a\u0945\u091f \u0924\u092f\u093e\u0930 \u0915\u0930\u093e",
+ "description": "\u0939\u0947 \u0924\u0941\u092e\u091a\u093e \u0938\u0927\u094d\u092f\u093e\u091a\u093e \u091a\u0945\u091f \u0907\u0924\u093f\u0939\u093e\u0938 \u0938\u093e\u092b \u0915\u0930\u0947\u0932. \u0924\u0941\u092e\u094d\u0939\u093e\u0932\u093e \u0916\u093e\u0924\u094d\u0930\u0940 \u0906\u0939\u0947 \u0915\u0940 \u0924\u0941\u092e\u094d\u0939\u0940 \u092a\u0941\u0922\u0947 \u091c\u093e\u090a \u0907\u091a\u094d\u091b\u093f\u0924\u093e?",
+ "tooltip": "\u0928\u0935\u0940\u0928 \u091a\u0945\u091f"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "\u0938\u0947\u091f\u093f\u0902\u0917\u094d\u091c",
+ "settingsKey": "S",
+ "apiKeys": "API \u0915\u0940\u091c",
+ "logout": "\u0932\u0949\u0917\u0906\u0909\u091f"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "\u0906\u0935\u0936\u094d\u092f\u0915 API \u0915\u0940\u091c",
+ "description": "\u0939\u0947 \u0905\u0945\u092a \u0935\u093e\u092a\u0930\u0923\u094d\u092f\u093e\u0938\u093e\u0920\u0940 \u0916\u093e\u0932\u0940\u0932 API \u0915\u0940\u091c \u0906\u0935\u0936\u094d\u092f\u0915 \u0906\u0939\u0947\u0924. \u0915\u0940\u091c \u0924\u0941\u092e\u091a\u094d\u092f\u093e \u0921\u093f\u0935\u094d\u0939\u093e\u0907\u0938\u091a\u094d\u092f\u093e \u0932\u094b\u0915\u0932 \u0938\u094d\u091f\u094b\u0930\u0947\u091c\u092e\u0927\u094d\u092f\u0947 \u0938\u093e\u0920\u0935\u0932\u094d\u092f\u093e \u091c\u093e\u0924\u093e\u0924.",
+ "success": {
+ "saved": "\u092f\u0936\u0938\u094d\u0935\u0940\u0930\u093f\u0924\u094d\u092f\u093e \u091c\u0924\u0928 \u0915\u0947\u0932\u0947"
+ }
+ },
+ "alerts": {
+ "info": "Info",
+ "note": "Note",
+ "tip": "Tip",
+ "important": "Important",
+ "warning": "Warning",
+ "caution": "Caution",
+ "debug": "Debug",
+ "example": "Example",
+ "success": "Success",
+ "help": "Help",
+ "idea": "Idea",
+ "pending": "Pending",
+ "security": "Security",
+ "beta": "Beta",
+ "best-practice": "Best Practice"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "\u091a\u0941\u0928\u0947\u0902..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/nl.json b/.chainlit/translations/nl.json
new file mode 100644
index 0000000..e128ce7
--- /dev/null
+++ b/.chainlit/translations/nl.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "Annuleren",
+ "confirm": "Bevestigen",
+ "continue": "Doorgaan",
+ "goBack": "Terug",
+ "reset": "Herstellen",
+ "submit": "Versturen"
+ },
+ "status": {
+ "loading": "Laden...",
+ "error": {
+ "default": "Er is een fout opgetreden",
+ "serverConnection": "Kon geen verbinding maken met de server"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "Inloggen om toegang te krijgen tot de app",
+ "form": {
+ "email": {
+ "label": "E-mailadres",
+ "required": "e-mail is een verplicht veld",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "Wachtwoord",
+ "required": "wachtwoord is een verplicht veld"
+ },
+ "actions": {
+ "signin": "Inloggen"
+ },
+ "alternativeText": {
+ "or": "OF"
+ }
+ },
+ "errors": {
+ "default": "Kan niet inloggen",
+ "signin": "Probeer in te loggen met een ander account",
+ "oauthSignin": "Probeer in te loggen met een ander account",
+ "redirectUriMismatch": "De redirect URI komt niet overeen met de oauth app configuratie",
+ "oauthCallback": "Probeer in te loggen met een ander account",
+ "oauthCreateAccount": "Probeer in te loggen met een ander account",
+ "emailCreateAccount": "Probeer in te loggen met een ander account",
+ "callback": "Probeer in te loggen met een ander account",
+ "oauthAccountNotLinked": "Om je identiteit te bevestigen, log in met hetzelfde account dat je oorspronkelijk hebt gebruikt",
+ "emailSignin": "De e-mail kon niet worden verzonden",
+ "emailVerify": "Verifieer je e-mail, er is een nieuwe e-mail verzonden",
+ "credentialsSignin": "Inloggen mislukt. Controleer of de ingevoerde gegevens correct zijn",
+ "sessionRequired": "Log in om toegang te krijgen tot deze pagina"
+ }
+ },
+ "provider": {
+ "continue": "Doorgaan met {{provider}}"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "Typ hier je bericht...",
+ "actions": {
+ "send": "Bericht versturen",
+ "stop": "Taak stoppen",
+ "attachFiles": "Bestanden bijvoegen"
+ }
+ },
+ "speech": {
+ "start": "Start opname",
+ "stop": "Stop opname",
+ "connecting": "Verbinden"
+ },
+ "fileUpload": {
+ "dragDrop": "Sleep bestanden hierheen",
+ "browse": "Bestanden zoeken",
+ "sizeLimit": "Limiet:",
+ "errors": {
+ "failed": "Uploaden mislukt",
+ "cancelled": "Upload geannuleerd van"
+ },
+ "actions": {
+ "cancelUpload": "Annuleer upload",
+ "removeAttachment": "Verwijder bijlage"
+ }
+ },
+ "commands": {
+ "button": "Hulpmiddelen",
+ "changeTool": "Wijzig hulpmiddel",
+ "availableTools": "Beschikbare hulpmiddelen"
+ },
+ "messages": {
+ "status": {
+ "using": "In gebruik",
+ "used": "Gebruikt"
+ },
+ "actions": {
+ "copy": {
+ "button": "Kopi\u00ebren naar klembord",
+ "success": "Gekopieerd!"
+ }
+ },
+ "feedback": {
+ "positive": "Nuttig",
+ "negative": "Niet nuttig",
+ "edit": "Feedback bewerken",
+ "dialog": {
+ "title": "Voeg een opmerking toe",
+ "submit": "Feedback versturen",
+ "yourFeedback": "Je feedback..."
+ },
+ "status": {
+ "updating": "Bijwerken",
+ "updated": "Feedback bijgewerkt"
+ }
+ }
+ },
+ "history": {
+ "title": "Laatste invoer",
+ "empty": "Zo leeg...",
+ "show": "Toon geschiedenis"
+ },
+ "settings": {
+ "title": "Instellingenpaneel",
+ "customize": "Pas hier je chatinstellingen aan"
+ },
+ "watermark": "LLM's kunnen fouten maken. Overweeg het controleren van belangrijke informatie."
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "Eerdere chats",
+ "filters": {
+ "search": "Zoeken",
+ "placeholder": "Search conversations..."
+ },
+ "timeframes": {
+ "today": "Vandaag",
+ "yesterday": "Gisteren",
+ "previous7days": "Afgelopen 7 dagen",
+ "previous30days": "Afgelopen 30 dagen"
+ },
+ "empty": "Geen gesprekken gevonden",
+ "actions": {
+ "close": "Zijbalk sluiten",
+ "open": "Zijbalk openen"
+ }
+ },
+ "thread": {
+ "untitled": "Naamloos gesprek",
+ "menu": {
+ "rename": "Hernoemen",
+ "share": "Delen",
+ "delete": "Verwijderen"
+ },
+ "actions": {
+ "share": {
+ "title": "Deel link naar chat",
+ "button": "Delen",
+ "status": {
+ "copied": "Link gekopieerd",
+ "created": "Deellink gemaakt!",
+ "unshared": "Delen uitgeschakeld voor dit gesprek"
+ },
+ "error": {
+ "create": "Aanmaken van deellink mislukt",
+ "unshare": "Delen van gesprek stoppen mislukt"
+ }
+ },
+ "delete": {
+ "title": "Verwijdering bevestigen",
+ "description": "Dit zal het gesprek en bijbehorende berichten en elementen verwijderen. Deze actie kan niet ongedaan worden gemaakt",
+ "success": "Chat verwijderd",
+ "inProgress": "Chat verwijderen"
+ },
+ "rename": {
+ "title": "Gesprek hernoemen",
+ "description": "Voer een nieuwe naam in voor dit gesprek",
+ "form": {
+ "name": {
+ "label": "Naam",
+ "placeholder": "Voer nieuwe naam in"
+ }
+ },
+ "success": "Gesprek hernoemd!",
+ "inProgress": "Gesprek hernoemen"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "Chat",
+ "readme": "Leesmij",
+ "theme": {
+ "light": "Light Theme",
+ "dark": "Dark Theme",
+ "system": "Follow System"
+ }
+ },
+ "newChat": {
+ "button": "Nieuwe chat",
+ "dialog": {
+ "title": "Nieuwe chat aanmaken",
+ "description": "Dit zal je huidige chatgeschiedenis wissen. Weet je zeker dat je door wilt gaan?",
+ "tooltip": "Nieuwe chat"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "Instellingen",
+ "settingsKey": "I",
+ "apiKeys": "API-sleutels",
+ "logout": "Uitloggen"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "Vereiste API-sleutels",
+ "description": "Om deze app te gebruiken zijn de volgende API-sleutels vereist. De sleutels worden opgeslagen in de lokale opslag van je apparaat.",
+ "success": {
+ "saved": "Succesvol opgeslagen"
+ }
+ },
+ "alerts": {
+ "info": "Info",
+ "note": "Note",
+ "tip": "Tip",
+ "important": "Important",
+ "warning": "Warning",
+ "caution": "Caution",
+ "debug": "Debug",
+ "example": "Example",
+ "success": "Success",
+ "help": "Help",
+ "idea": "Idea",
+ "pending": "Pending",
+ "security": "Security",
+ "beta": "Beta",
+ "best-practice": "Best Practice"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "Selecteer..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/ta.json b/.chainlit/translations/ta.json
new file mode 100644
index 0000000..8d71147
--- /dev/null
+++ b/.chainlit/translations/ta.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "\u0bb0\u0ba4\u0bcd\u0ba4\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd",
+ "confirm": "\u0b89\u0bb1\u0bc1\u0ba4\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
+ "continue": "\u0ba4\u0bca\u0b9f\u0bb0\u0bcd\u0b95",
+ "goBack": "\u0ba4\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa\u0bbf\u0b9a\u0bcd \u0b9a\u0bc6\u0bb2\u0bcd",
+ "reset": "\u0bae\u0bc0\u0b9f\u0bcd\u0b9f\u0bae\u0bc8",
+ "submit": "\u0b9a\u0bae\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bbf"
+ },
+ "status": {
+ "loading": "\u0b8f\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1...",
+ "error": {
+ "default": "\u0baa\u0bbf\u0bb4\u0bc8 \u0b8f\u0bb1\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1",
+ "serverConnection": "\u0b9a\u0bc7\u0bb5\u0bc8\u0baf\u0b95\u0ba4\u0bcd\u0ba4\u0bc8 \u0b85\u0b9f\u0bc8\u0baf \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "\u0baa\u0baf\u0ba9\u0bcd\u0baa\u0bbe\u0b9f\u0bcd\u0b9f\u0bc8 \u0b85\u0ba3\u0bc1\u0b95 \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf\u0bb5\u0bc1\u0bae\u0bcd",
+ "form": {
+ "email": {
+ "label": "\u0bae\u0bbf\u0ba9\u0bcd\u0ba9\u0b9e\u0bcd\u0b9a\u0bb2\u0bcd \u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf",
+ "required": "\u0bae\u0bbf\u0ba9\u0bcd\u0ba9\u0b9e\u0bcd\u0b9a\u0bb2\u0bcd \u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 \u0baa\u0bc1\u0bb2\u0bae\u0bcd",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "\u0b95\u0b9f\u0bb5\u0bc1\u0b9a\u0bcd\u0b9a\u0bca\u0bb2\u0bcd",
+ "required": "\u0b95\u0b9f\u0bb5\u0bc1\u0b9a\u0bcd\u0b9a\u0bca\u0bb2\u0bcd \u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 \u0baa\u0bc1\u0bb2\u0bae\u0bcd"
+ },
+ "actions": {
+ "signin": "\u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0b95"
+ },
+ "alternativeText": {
+ "or": "\u0b85\u0bb2\u0bcd\u0bb2\u0ba4\u0bc1"
+ }
+ },
+ "errors": {
+ "default": "\u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
+ "signin": "\u0bb5\u0bc7\u0bb1\u0bc1 \u0b95\u0ba3\u0b95\u0bcd\u0b95\u0bc1\u0b9f\u0ba9\u0bcd \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf \u0bae\u0bc1\u0baf\u0bb1\u0bcd\u0b9a\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd",
+ "oauthSignin": "\u0bb5\u0bc7\u0bb1\u0bc1 \u0b95\u0ba3\u0b95\u0bcd\u0b95\u0bc1\u0b9f\u0ba9\u0bcd \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf \u0bae\u0bc1\u0baf\u0bb1\u0bcd\u0b9a\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd",
+ "redirectUriMismatch": "\u0ba4\u0bbf\u0b9a\u0bc8\u0ba4\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bb2\u0bcd URI \u0b93\u0b86\u0ba4\u0bcd \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1 \u0b95\u0b9f\u0bcd\u0b9f\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b9f\u0ba9\u0bcd \u0baa\u0bca\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
+ "oauthCallback": "\u0bb5\u0bc7\u0bb1\u0bc1 \u0b95\u0ba3\u0b95\u0bcd\u0b95\u0bc1\u0b9f\u0ba9\u0bcd \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf \u0bae\u0bc1\u0baf\u0bb1\u0bcd\u0b9a\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd",
+ "oauthCreateAccount": "\u0bb5\u0bc7\u0bb1\u0bc1 \u0b95\u0ba3\u0b95\u0bcd\u0b95\u0bc1\u0b9f\u0ba9\u0bcd \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf \u0bae\u0bc1\u0baf\u0bb1\u0bcd\u0b9a\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd",
+ "emailCreateAccount": "\u0bb5\u0bc7\u0bb1\u0bc1 \u0b95\u0ba3\u0b95\u0bcd\u0b95\u0bc1\u0b9f\u0ba9\u0bcd \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf \u0bae\u0bc1\u0baf\u0bb1\u0bcd\u0b9a\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd",
+ "callback": "\u0bb5\u0bc7\u0bb1\u0bc1 \u0b95\u0ba3\u0b95\u0bcd\u0b95\u0bc1\u0b9f\u0ba9\u0bcd \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf \u0bae\u0bc1\u0baf\u0bb1\u0bcd\u0b9a\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd",
+ "oauthAccountNotLinked": "\u0b89\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b85\u0b9f\u0bc8\u0baf\u0bbe\u0bb3\u0ba4\u0bcd\u0ba4\u0bc8 \u0b89\u0bb1\u0bc1\u0ba4\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4, \u0bae\u0bc1\u0ba4\u0bb2\u0bbf\u0bb2\u0bcd \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0baf \u0b85\u0ba4\u0bc7 \u0b95\u0ba3\u0b95\u0bcd\u0b95\u0bc1\u0b9f\u0ba9\u0bcd \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf\u0bb5\u0bc1\u0bae\u0bcd",
+ "emailSignin": "\u0bae\u0bbf\u0ba9\u0bcd\u0ba9\u0b9e\u0bcd\u0b9a\u0bb2\u0bc8 \u0b85\u0ba9\u0bc1\u0baa\u0bcd\u0baa \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
+ "emailVerify": "\u0b89\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0bae\u0bbf\u0ba9\u0bcd\u0ba9\u0b9e\u0bcd\u0b9a\u0bb2\u0bc8 \u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd, \u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0bae\u0bbf\u0ba9\u0bcd\u0ba9\u0b9e\u0bcd\u0b9a\u0bb2\u0bcd \u0b85\u0ba9\u0bc1\u0baa\u0bcd\u0baa\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bc1\u0bb3\u0bcd\u0bb3\u0ba4\u0bc1",
+ "credentialsSignin": "\u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0bb5\u0bc1 \u0ba4\u0bcb\u0bb2\u0bcd\u0bb5\u0bbf\u0baf\u0b9f\u0bc8\u0ba8\u0bcd\u0ba4\u0ba4\u0bc1. \u0ba8\u0bc0\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0bb5\u0bb4\u0b99\u0bcd\u0b95\u0bbf\u0baf \u0bb5\u0bbf\u0bb5\u0bb0\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b9a\u0bb0\u0bbf\u0baf\u0bbe\u0ba9\u0bb5\u0bc8 \u0b8e\u0ba9 \u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd",
+ "sessionRequired": "\u0b87\u0ba8\u0bcd\u0ba4\u0baa\u0bcd \u0baa\u0b95\u0bcd\u0b95\u0ba4\u0bcd\u0ba4\u0bc8 \u0b85\u0ba3\u0bc1\u0b95 \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf\u0bb5\u0bc1\u0bae\u0bcd"
+ }
+ },
+ "provider": {
+ "continue": "{{provider}} \u0bae\u0bc2\u0bb2\u0bae\u0bcd \u0ba4\u0bca\u0b9f\u0bb0\u0bb5\u0bc1\u0bae\u0bcd"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "\u0b89\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bbf\u0baf\u0bc8 \u0b87\u0b99\u0bcd\u0b95\u0bc7 \u0ba4\u0b9f\u0bcd\u0b9f\u0b9a\u0bcd\u0b9a\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0baf\u0bb5\u0bc1\u0bae\u0bcd...",
+ "actions": {
+ "send": "\u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bbf \u0b85\u0ba9\u0bc1\u0baa\u0bcd\u0baa\u0bc1",
+ "stop": "\u0baa\u0ba3\u0bbf\u0baf\u0bc8 \u0ba8\u0bbf\u0bb1\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
+ "attachFiles": "\u0b95\u0bcb\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bc8 \u0b87\u0ba3\u0bc8"
+ }
+ },
+ "commands": {
+ "button": "\u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0b95\u0bb3\u0bcd",
+ "changeTool": "\u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0baf\u0bc8 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bb5\u0bc1\u0bae\u0bcd",
+ "availableTools": "\u0b95\u0bbf\u0b9f\u0bc8\u0b95\u0bcd\u0b95\u0bc1\u0bae\u0bcd \u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0b95\u0bb3\u0bcd"
+ },
+ "speech": {
+ "start": "\u0baa\u0ba4\u0bbf\u0bb5\u0bc1 \u0ba4\u0bca\u0b9f\u0b99\u0bcd\u0b95\u0bc1",
+ "stop": "\u0baa\u0ba4\u0bbf\u0bb5\u0bc8 \u0ba8\u0bbf\u0bb1\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
+ "connecting": "\u0b87\u0ba3\u0bc8\u0b95\u0bcd\u0b95\u0bbf\u0bb1\u0ba4\u0bc1"
+ },
+ "fileUpload": {
+ "dragDrop": "\u0b95\u0bcb\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bc8 \u0b87\u0b99\u0bcd\u0b95\u0bc7 \u0b87\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1 \u0bb5\u0bbf\u0b9f\u0bb5\u0bc1\u0bae\u0bcd",
+ "browse": "\u0b95\u0bcb\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bc8 \u0b89\u0bb2\u0bbe\u0bb5\u0bc1",
+ "sizeLimit": "\u0bb5\u0bb0\u0bae\u0bcd\u0baa\u0bc1:",
+ "errors": {
+ "failed": "\u0baa\u0ba4\u0bbf\u0bb5\u0bc7\u0bb1\u0bcd\u0bb1\u0bae\u0bcd \u0ba4\u0bcb\u0bb2\u0bcd\u0bb5\u0bbf\u0baf\u0b9f\u0bc8\u0ba8\u0bcd\u0ba4\u0ba4\u0bc1",
+ "cancelled": "\u0baa\u0ba4\u0bbf\u0bb5\u0bc7\u0bb1\u0bcd\u0bb1\u0bae\u0bcd \u0bb0\u0ba4\u0bcd\u0ba4\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0baf\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1"
+ },
+ "actions": {
+ "cancelUpload": "\u0bb0\u0ba4\u0bcd\u0ba4\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd",
+ "removeAttachment": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b85\u0b95\u0bb1\u0bcd\u0bb1\u0bc1"
+ }
+ },
+ "messages": {
+ "status": {
+ "using": "\u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1",
+ "used": "\u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1"
+ },
+ "actions": {
+ "copy": {
+ "button": "\u0b95\u0bbf\u0bb3\u0bbf\u0baa\u0bcd\u0baa\u0bcb\u0bb0\u0bcd\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0bc1 \u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1",
+ "success": "\u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1!"
+ }
+ },
+ "feedback": {
+ "positive": "\u0baa\u0baf\u0ba9\u0bc1\u0bb3\u0bcd\u0bb3\u0ba4\u0bbe\u0b95 \u0b87\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0ba4\u0bc1",
+ "negative": "\u0baa\u0baf\u0ba9\u0bc1\u0bb3\u0bcd\u0bb3\u0ba4\u0bbe\u0b95 \u0b87\u0bb2\u0bcd\u0bb2\u0bc8",
+ "edit": "\u0b95\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc8 \u0ba4\u0bbf\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
+ "dialog": {
+ "title": "\u0b95\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc8\u0b9a\u0bcd \u0b9a\u0bc7\u0bb0\u0bcd",
+ "submit": "\u0b95\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc8 \u0b9a\u0bae\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bbf",
+ "yourFeedback": "\u0b89\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b95\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1..."
+ },
+ "status": {
+ "updating": "\u0baa\u0bc1\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb1\u0ba4\u0bc1",
+ "updated": "\u0b95\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1 \u0baa\u0bc1\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1"
+ }
+ }
+ },
+ "history": {
+ "title": "\u0b95\u0b9f\u0bc8\u0b9a\u0bbf \u0b89\u0bb3\u0bcd\u0bb3\u0bc0\u0b9f\u0bc1\u0b95\u0bb3\u0bcd",
+ "empty": "\u0b95\u0bbe\u0bb2\u0bbf\u0baf\u0bbe\u0b95 \u0b89\u0bb3\u0bcd\u0bb3\u0ba4\u0bc1...",
+ "show": "\u0bb5\u0bb0\u0bb2\u0bbe\u0bb1\u0bcd\u0bb1\u0bc8\u0b95\u0bcd \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1"
+ },
+ "settings": {
+ "title": "\u0b85\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd \u0baa\u0bb2\u0b95\u0bae\u0bcd",
+ "customize": "\u0b89\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd \u0b85\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bc8 \u0b87\u0b99\u0bcd\u0b95\u0bc7 \u0ba4\u0ba9\u0bbf\u0baa\u0bcd\u0baa\u0baf\u0ba9\u0bbe\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd"
+ },
+ "watermark": "LLM \u0b95\u0bb3\u0bcd \u0ba4\u0bb5\u0bb1\u0bc1\u0b95\u0bb3\u0bcd \u0b9a\u0bc6\u0baf\u0bcd\u0baf\u0bb2\u0bbe\u0bae\u0bcd. \u0bae\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0baf\u0bae\u0bbe\u0ba9 \u0ba4\u0b95\u0bb5\u0bb2\u0bcd\u0b95\u0bb3\u0bc8\u0b9a\u0bcd \u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0ba4\u0bc8\u0b95\u0bcd \u0b95\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0bb2\u0bcd \u0b95\u0bca\u0bb3\u0bcd\u0bb3\u0bc1\u0b99\u0bcd\u0b95\u0bb3\u0bcd."
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd\u0b95\u0bb3\u0bcd",
+ "filters": {
+ "search": "\u0ba4\u0bc7\u0b9f\u0bc1",
+ "placeholder": "Search conversations..."
+ },
+ "timeframes": {
+ "today": "\u0b87\u0ba9\u0bcd\u0bb1\u0bc1",
+ "yesterday": "\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1",
+ "previous7days": "\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 7 \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",
+ "previous30days": "\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 30 \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd"
+ },
+ "empty": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd\u0b95\u0bb3\u0bcd \u0b8e\u0ba4\u0bc1\u0bb5\u0bc1\u0bae\u0bcd \u0b87\u0bb2\u0bcd\u0bb2\u0bc8",
+ "actions": {
+ "close": "\u0baa\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bc8 \u0bae\u0bc2\u0b9f\u0bc1",
+ "open": "\u0baa\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bc8 \u0ba4\u0bbf\u0bb1"
+ }
+ },
+ "thread": {
+ "untitled": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bbf\u0b9f\u0bbe\u0ba4 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd",
+ "menu": {
+ "rename": "\u0baa\u0bc6\u0baf\u0bb0\u0bcd \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1",
+ "share": "\u0baa\u0b95\u0bbf\u0bb0\u0bcd",
+ "delete": "\u0b85\u0bb4\u0bbf"
+ },
+ "actions": {
+ "share": {
+ "title": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd \u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0baa\u0b95\u0bbf\u0bb0\u0bb5\u0bc1\u0bae\u0bcd",
+ "button": "\u0baa\u0b95\u0bbf\u0bb0\u0bcd",
+ "status": {
+ "copied": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1",
+ "created": "\u0baa\u0b95\u0bbf\u0bb0\u0bcd\u0bb5\u0bc1 \u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc1\u0bb5\u0bbe\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1!",
+ "unshared": "\u0b87\u0ba8\u0bcd\u0ba4 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bc1\u0b95\u0bcd\u0b95\u0bc1 \u0baa\u0b95\u0bbf\u0bb0\u0bcd\u0bb5\u0bc1 \u0bae\u0bc1\u0b9f\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1"
+ },
+ "error": {
+ "create": "\u0baa\u0b95\u0bbf\u0bb0\u0bcd\u0bb5\u0bc1 \u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b89\u0bb0\u0bc1\u0bb5\u0bbe\u0b95\u0bcd\u0b95 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
+ "unshare": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd \u0baa\u0b95\u0bbf\u0bb0\u0bcd\u0bb5\u0bc8 \u0ba8\u0bbf\u0bb1\u0bc1\u0ba4\u0bcd\u0ba4 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8"
+ }
+ },
+ "delete": {
+ "title": "\u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0bb5\u0ba4\u0bc8 \u0b89\u0bb1\u0bc1\u0ba4\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
+ "description": "\u0b87\u0ba4\u0bc1 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0b85\u0ba4\u0ba9\u0bcd \u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bbf\u0b95\u0bb3\u0bcd, \u0b89\u0bb1\u0bc1\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0bae\u0bcd. \u0b87\u0ba8\u0bcd\u0ba4 \u0b9a\u0bc6\u0baf\u0bb2\u0bc8 \u0bae\u0bc0\u0b9f\u0bcd\u0b9f\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bbe\u0ba4\u0bc1",
+ "success": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1",
+ "inProgress": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1"
+ },
+ "rename": {
+ "title": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bc8 \u0bae\u0bb1\u0bc1\u0baa\u0bc6\u0baf\u0bb0\u0bbf\u0b9f\u0bc1",
+ "description": "\u0b87\u0ba8\u0bcd\u0ba4 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bc1\u0b95\u0bcd\u0b95\u0bc1 \u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0baa\u0bc6\u0baf\u0bb0\u0bc8 \u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0b9f\u0bb5\u0bc1\u0bae\u0bcd",
+ "form": {
+ "name": {
+ "label": "\u0baa\u0bc6\u0baf\u0bb0\u0bcd",
+ "placeholder": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0baa\u0bc6\u0baf\u0bb0\u0bc8 \u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0b9f\u0bb5\u0bc1\u0bae\u0bcd"
+ }
+ },
+ "success": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd \u0bae\u0bb1\u0bc1\u0baa\u0bc6\u0baf\u0bb0\u0bbf\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1!",
+ "inProgress": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bc8 \u0bae\u0bb1\u0bc1\u0baa\u0bc6\u0baf\u0bb0\u0bbf\u0b9f\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd",
+ "readme": "\u0baa\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd",
+ "theme": {
+ "light": "Light Theme",
+ "dark": "Dark Theme",
+ "system": "Follow System"
+ }
+ },
+ "newChat": {
+ "button": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd",
+ "dialog": {
+ "title": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bc8 \u0b89\u0bb0\u0bc1\u0bb5\u0bbe\u0b95\u0bcd\u0b95\u0bc1",
+ "description": "\u0b87\u0ba4\u0bc1 \u0b89\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0ba4\u0bb1\u0bcd\u0baa\u0bcb\u0ba4\u0bc8\u0baf \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd \u0bb5\u0bb0\u0bb2\u0bbe\u0bb1\u0bcd\u0bb1\u0bc8 \u0b85\u0bb4\u0bbf\u0b95\u0bcd\u0b95\u0bc1\u0bae\u0bcd. \u0ba4\u0bca\u0b9f\u0bb0 \u0bb5\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa\u0bc1\u0b95\u0bbf\u0bb1\u0bc0\u0bb0\u0bcd\u0b95\u0bb3\u0bbe?",
+ "tooltip": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "\u0b85\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+ "settingsKey": "S",
+ "apiKeys": "API \u0bb5\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
+ "logout": "\u0bb5\u0bc6\u0bb3\u0bbf\u0baf\u0bc7\u0bb1\u0bc1"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "\u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 API \u0bb5\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
+ "description": "\u0b87\u0ba8\u0bcd\u0ba4 \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0bbe\u0b9f\u0bcd\u0b9f\u0bc8\u0baa\u0bcd \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4, \u0baa\u0bbf\u0ba9\u0bcd\u0bb5\u0bb0\u0bc1\u0bae\u0bcd API \u0bb5\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd \u0ba4\u0bc7\u0bb5\u0bc8. \u0bb5\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd \u0b89\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b9a\u0bbe\u0ba4\u0ba9\u0ba4\u0bcd\u0ba4\u0bbf\u0ba9\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0bc2\u0bb0\u0bcd \u0b9a\u0bc7\u0bae\u0bbf\u0baa\u0bcd\u0baa\u0b95\u0ba4\u0bcd\u0ba4\u0bbf\u0bb2\u0bcd \u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0bae\u0bcd.",
+ "success": {
+ "saved": "\u0bb5\u0bc6\u0bb1\u0bcd\u0bb1\u0bbf\u0b95\u0bb0\u0bae\u0bbe\u0b95 \u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1"
+ }
+ },
+ "alerts": {
+ "info": "Info",
+ "note": "Note",
+ "tip": "Tip",
+ "important": "Important",
+ "warning": "Warning",
+ "caution": "Caution",
+ "debug": "Debug",
+ "example": "Example",
+ "success": "Success",
+ "help": "Help",
+ "idea": "Idea",
+ "pending": "Pending",
+ "security": "Security",
+ "beta": "Beta",
+ "best-practice": "Best Practice"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "\u0ba4\u0bc7\u0bb0\u0bcd\u0ba8\u0bcd\u0ba4\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/te.json b/.chainlit/translations/te.json
new file mode 100644
index 0000000..f2f8a02
--- /dev/null
+++ b/.chainlit/translations/te.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "\u0c30\u0c26\u0c4d\u0c26\u0c41 \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f",
+ "confirm": "\u0c28\u0c3f\u0c30\u0c4d\u0c27\u0c3e\u0c30\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
+ "continue": "\u0c15\u0c4a\u0c28\u0c38\u0c3e\u0c17\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
+ "goBack": "\u0c35\u0c46\u0c28\u0c15\u0c4d\u0c15\u0c3f \u0c35\u0c46\u0c33\u0c4d\u0c33\u0c02\u0c21\u0c3f",
+ "reset": "\u0c30\u0c40\u0c38\u0c46\u0c1f\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f",
+ "submit": "\u0c38\u0c2e\u0c30\u0c4d\u0c2a\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f"
+ },
+ "status": {
+ "loading": "\u0c32\u0c4b\u0c21\u0c4d \u0c05\u0c35\u0c41\u0c24\u0c4b\u0c02\u0c26\u0c3f...",
+ "error": {
+ "default": "\u0c32\u0c4b\u0c2a\u0c02 \u0c38\u0c02\u0c2d\u0c35\u0c3f\u0c02\u0c1a\u0c3f\u0c02\u0c26\u0c3f",
+ "serverConnection": "\u0c38\u0c30\u0c4d\u0c35\u0c30\u0c4d\u200c\u0c28\u0c3f \u0c1a\u0c47\u0c30\u0c41\u0c15\u0c4b\u0c32\u0c47\u0c15\u0c2a\u0c4b\u0c2f\u0c3e\u0c2e\u0c41"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "\u0c2f\u0c3e\u0c2a\u0c4d\u200c\u0c28\u0c3f \u0c09\u0c2a\u0c2f\u0c4b\u0c17\u0c3f\u0c02\u0c1a\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c32\u0c3e\u0c17\u0c3f\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f",
+ "form": {
+ "email": {
+ "label": "\u0c07\u0c2e\u0c46\u0c2f\u0c3f\u0c32\u0c4d \u0c1a\u0c3f\u0c30\u0c41\u0c28\u0c3e\u0c2e\u0c3e",
+ "required": "\u0c07\u0c2e\u0c46\u0c2f\u0c3f\u0c32\u0c4d \u0c24\u0c2a\u0c4d\u0c2a\u0c28\u0c3f\u0c38\u0c30\u0c3f",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "\u0c2a\u0c3e\u0c38\u0c4d\u200c\u0c35\u0c30\u0c4d\u0c21\u0c4d",
+ "required": "\u0c2a\u0c3e\u0c38\u0c4d\u200c\u0c35\u0c30\u0c4d\u0c21\u0c4d \u0c24\u0c2a\u0c4d\u0c2a\u0c28\u0c3f\u0c38\u0c30\u0c3f"
+ },
+ "actions": {
+ "signin": "\u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f"
+ },
+ "alternativeText": {
+ "or": "\u0c32\u0c47\u0c26\u0c3e"
+ }
+ },
+ "errors": {
+ "default": "\u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c32\u0c47\u0c15\u0c2a\u0c4b\u0c2f\u0c3e\u0c2e\u0c41",
+ "signin": "\u0c35\u0c47\u0c30\u0c47 \u0c16\u0c3e\u0c24\u0c3e\u0c24\u0c4b \u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c2a\u0c4d\u0c30\u0c2f\u0c24\u0c4d\u0c28\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
+ "oauthSignin": "\u0c35\u0c47\u0c30\u0c47 \u0c16\u0c3e\u0c24\u0c3e\u0c24\u0c4b \u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c2a\u0c4d\u0c30\u0c2f\u0c24\u0c4d\u0c28\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
+ "redirectUriMismatch": "\u0c30\u0c40\u0c21\u0c48\u0c30\u0c46\u0c15\u0c4d\u0c1f\u0c4d URI oauth \u0c2f\u0c3e\u0c2a\u0c4d \u0c15\u0c3e\u0c28\u0c4d\u0c2b\u0c3f\u0c17\u0c30\u0c47\u0c37\u0c28\u0c4d\u200c\u0c24\u0c4b \u0c38\u0c30\u0c3f\u0c2a\u0c4b\u0c32\u0c21\u0c02 \u0c32\u0c47\u0c26\u0c41",
+ "oauthCallback": "\u0c35\u0c47\u0c30\u0c47 \u0c16\u0c3e\u0c24\u0c3e\u0c24\u0c4b \u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c2a\u0c4d\u0c30\u0c2f\u0c24\u0c4d\u0c28\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
+ "oauthCreateAccount": "\u0c35\u0c47\u0c30\u0c47 \u0c16\u0c3e\u0c24\u0c3e\u0c24\u0c4b \u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c2a\u0c4d\u0c30\u0c2f\u0c24\u0c4d\u0c28\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
+ "emailCreateAccount": "\u0c35\u0c47\u0c30\u0c47 \u0c16\u0c3e\u0c24\u0c3e\u0c24\u0c4b \u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c2a\u0c4d\u0c30\u0c2f\u0c24\u0c4d\u0c28\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
+ "callback": "\u0c35\u0c47\u0c30\u0c47 \u0c16\u0c3e\u0c24\u0c3e\u0c24\u0c4b \u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c2a\u0c4d\u0c30\u0c2f\u0c24\u0c4d\u0c28\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
+ "oauthAccountNotLinked": "\u0c2e\u0c40 \u0c17\u0c41\u0c30\u0c4d\u0c24\u0c3f\u0c02\u0c2a\u0c41\u0c28\u0c41 \u0c28\u0c3f\u0c30\u0c4d\u0c27\u0c3e\u0c30\u0c3f\u0c02\u0c1a\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f, \u0c2e\u0c40\u0c30\u0c41 \u0c2e\u0c4a\u0c26\u0c1f \u0c09\u0c2a\u0c2f\u0c4b\u0c17\u0c3f\u0c02\u0c1a\u0c3f\u0c28 \u0c05\u0c26\u0c47 \u0c16\u0c3e\u0c24\u0c3e\u0c24\u0c4b \u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f",
+ "emailSignin": "\u0c07\u0c2e\u0c46\u0c2f\u0c3f\u0c32\u0c4d \u0c2a\u0c02\u0c2a\u0c21\u0c02 \u0c38\u0c3e\u0c27\u0c4d\u0c2f\u0c02 \u0c15\u0c3e\u0c32\u0c47\u0c26\u0c41",
+ "emailVerify": "\u0c26\u0c2f\u0c1a\u0c47\u0c38\u0c3f \u0c2e\u0c40 \u0c07\u0c2e\u0c46\u0c2f\u0c3f\u0c32\u0c4d\u200c\u0c28\u0c3f \u0c27\u0c43\u0c35\u0c40\u0c15\u0c30\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f, \u0c15\u0c4a\u0c24\u0c4d\u0c24 \u0c07\u0c2e\u0c46\u0c2f\u0c3f\u0c32\u0c4d \u0c2a\u0c02\u0c2a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f",
+ "credentialsSignin": "\u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c35\u0c3f\u0c2b\u0c32\u0c2e\u0c48\u0c02\u0c26\u0c3f. \u0c2e\u0c40\u0c30\u0c41 \u0c05\u0c02\u0c26\u0c3f\u0c02\u0c1a\u0c3f\u0c28 \u0c35\u0c3f\u0c35\u0c30\u0c3e\u0c32\u0c41 \u0c38\u0c30\u0c48\u0c28\u0c35\u0c47\u0c28\u0c3e \u0c05\u0c28\u0c3f \u0c24\u0c28\u0c3f\u0c16\u0c40 \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f",
+ "sessionRequired": "\u0c08 \u0c2a\u0c47\u0c1c\u0c40\u0c28\u0c3f \u0c2f\u0c3e\u0c15\u0c4d\u0c38\u0c46\u0c38\u0c4d \u0c1a\u0c47\u0c2f\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c26\u0c2f\u0c1a\u0c47\u0c38\u0c3f \u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f"
+ }
+ },
+ "provider": {
+ "continue": "{{provider}}\u0c24\u0c4b \u0c15\u0c4a\u0c28\u0c38\u0c3e\u0c17\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "\u0c2e\u0c40 \u0c38\u0c02\u0c26\u0c47\u0c36\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c07\u0c15\u0c4d\u0c15\u0c21 \u0c1f\u0c48\u0c2a\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f...",
+ "actions": {
+ "send": "\u0c38\u0c02\u0c26\u0c47\u0c36\u0c02 \u0c2a\u0c02\u0c2a\u0c02\u0c21\u0c3f",
+ "stop": "\u0c2a\u0c28\u0c3f \u0c06\u0c2a\u0c02\u0c21\u0c3f",
+ "attachFiles": "\u0c2b\u0c48\u0c32\u0c4d\u0c38\u0c4d \u0c1c\u0c4b\u0c21\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f"
+ }
+ },
+ "speech": {
+ "start": "\u0c30\u0c3f\u0c15\u0c3e\u0c30\u0c4d\u0c21\u0c3f\u0c02\u0c17\u0c4d \u0c2a\u0c4d\u0c30\u0c3e\u0c30\u0c02\u0c2d\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
+ "stop": "\u0c30\u0c3f\u0c15\u0c3e\u0c30\u0c4d\u0c21\u0c3f\u0c02\u0c17\u0c4d \u0c06\u0c2a\u0c02\u0c21\u0c3f",
+ "connecting": "\u0c05\u0c28\u0c41\u0c38\u0c02\u0c27\u0c3e\u0c28\u0c3f\u0c38\u0c4d\u0c24\u0c4b\u0c02\u0c26\u0c3f"
+ },
+ "commands": {
+ "button": "\u0c2a\u0c30\u0c3f\u0c15\u0c30\u0c3e\u0c32\u0c41",
+ "changeTool": "\u0c2a\u0c30\u0c3f\u0c15\u0c30\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c02\u0c21\u0c3f",
+ "availableTools": "\u0c32\u0c2d\u0c4d\u0c2f\u0c2e\u0c48\u0c28 \u0c2a\u0c30\u0c3f\u0c15\u0c30\u0c3e\u0c32\u0c41"
+ },
+ "fileUpload": {
+ "dragDrop": "\u0c2b\u0c48\u0c32\u0c4d\u0c38\u0c4d\u200c\u0c28\u0c3f \u0c07\u0c15\u0c4d\u0c15\u0c21 \u0c21\u0c4d\u0c30\u0c3e\u0c17\u0c4d \u0c1a\u0c47\u0c38\u0c3f \u0c21\u0c4d\u0c30\u0c3e\u0c2a\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f",
+ "browse": "\u0c2b\u0c48\u0c32\u0c4d\u0c38\u0c4d \u0c2c\u0c4d\u0c30\u0c4c\u0c1c\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f",
+ "sizeLimit": "\u0c2a\u0c30\u0c3f\u0c2e\u0c3f\u0c24\u0c3f:",
+ "errors": {
+ "failed": "\u0c05\u0c2a\u0c4d\u200c\u0c32\u0c4b\u0c21\u0c4d \u0c35\u0c3f\u0c2b\u0c32\u0c2e\u0c48\u0c02\u0c26\u0c3f",
+ "cancelled": "\u0c05\u0c2a\u0c4d\u200c\u0c32\u0c4b\u0c21\u0c4d \u0c30\u0c26\u0c4d\u0c26\u0c41 \u0c1a\u0c47\u0c2f\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f"
+ },
+ "actions": {
+ "cancelUpload": "\u0c30\u0c26\u0c4d\u0c26\u0c41 \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f",
+ "removeAttachment": "\u0c05\u0c28\u0c41\u0c2c\u0c02\u0c27\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f"
+ }
+ },
+ "messages": {
+ "status": {
+ "using": "\u0c09\u0c2a\u0c2f\u0c4b\u0c17\u0c3f\u0c38\u0c4d\u0c24\u0c4b\u0c02\u0c26\u0c3f",
+ "used": "\u0c09\u0c2a\u0c2f\u0c4b\u0c17\u0c3f\u0c02\u0c1a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f"
+ },
+ "actions": {
+ "copy": {
+ "button": "\u0c15\u0c4d\u0c32\u0c3f\u0c2a\u0c4d\u200c\u0c2c\u0c4b\u0c30\u0c4d\u0c21\u0c4d\u200c\u0c15\u0c3f \u0c15\u0c3e\u0c2a\u0c40 \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f",
+ "success": "\u0c15\u0c3e\u0c2a\u0c40 \u0c1a\u0c47\u0c2f\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f!"
+ }
+ },
+ "feedback": {
+ "positive": "\u0c38\u0c39\u0c3e\u0c2f\u0c15\u0c30\u0c02",
+ "negative": "\u0c38\u0c39\u0c3e\u0c2f\u0c15\u0c30\u0c02 \u0c15\u0c3e\u0c26\u0c41",
+ "edit": "\u0c05\u0c2d\u0c3f\u0c2a\u0c4d\u0c30\u0c3e\u0c2f\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c38\u0c35\u0c30\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
+ "dialog": {
+ "title": "\u0c35\u0c4d\u0c2f\u0c3e\u0c16\u0c4d\u0c2f \u0c1c\u0c4b\u0c21\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
+ "submit": "\u0c05\u0c2d\u0c3f\u0c2a\u0c4d\u0c30\u0c3e\u0c2f\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c38\u0c2e\u0c30\u0c4d\u0c2a\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
+ "yourFeedback": "\u0c2e\u0c40 \u0c05\u0c2d\u0c3f\u0c2a\u0c4d\u0c30\u0c3e\u0c2f\u0c02..."
+ },
+ "status": {
+ "updating": "\u0c28\u0c35\u0c40\u0c15\u0c30\u0c3f\u0c38\u0c4d\u0c24\u0c4b\u0c02\u0c26\u0c3f",
+ "updated": "\u0c05\u0c2d\u0c3f\u0c2a\u0c4d\u0c30\u0c3e\u0c2f\u0c02 \u0c28\u0c35\u0c40\u0c15\u0c30\u0c3f\u0c02\u0c1a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f"
+ }
+ }
+ },
+ "history": {
+ "title": "\u0c1a\u0c3f\u0c35\u0c30\u0c3f \u0c07\u0c28\u0c4d\u200c\u0c2a\u0c41\u0c1f\u0c4d\u200c\u0c32\u0c41",
+ "empty": "\u0c16\u0c3e\u0c33\u0c40\u0c17\u0c3e \u0c09\u0c02\u0c26\u0c3f...",
+ "show": "\u0c1a\u0c30\u0c3f\u0c24\u0c4d\u0c30\u0c28\u0c41 \u0c1a\u0c42\u0c2a\u0c3f\u0c02\u0c1a\u0c41"
+ },
+ "settings": {
+ "title": "\u0c38\u0c46\u0c1f\u0c4d\u0c1f\u0c3f\u0c02\u0c17\u0c4d\u200c\u0c32 \u0c2a\u0c4d\u0c2f\u0c3e\u0c28\u0c46\u0c32\u0c4d",
+ "customize": "\u0c2e\u0c40 \u0c1a\u0c3e\u0c1f\u0c4d \u0c38\u0c46\u0c1f\u0c4d\u0c1f\u0c3f\u0c02\u0c17\u0c4d\u200c\u0c32\u0c28\u0c41 \u0c07\u0c15\u0c4d\u0c15\u0c21 \u0c05\u0c28\u0c41\u0c15\u0c42\u0c32\u0c40\u0c15\u0c30\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f"
+ },
+ "watermark": "LLM\u0c32\u0c41 \u0c24\u0c2a\u0c4d\u0c2a\u0c41\u0c32\u0c41 \u0c1a\u0c47\u0c2f\u0c35\u0c1a\u0c4d\u0c1a\u0c41. \u0c2e\u0c41\u0c16\u0c4d\u0c2f\u0c2e\u0c48\u0c28 \u0c38\u0c2e\u0c3e\u0c1a\u0c3e\u0c30\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c24\u0c28\u0c3f\u0c16\u0c40 \u0c1a\u0c47\u0c2f\u0c21\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c2a\u0c30\u0c3f\u0c17\u0c23\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f."
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "\u0c17\u0c24 \u0c1a\u0c3e\u0c1f\u0c4d\u200c\u0c32\u0c41",
+ "filters": {
+ "search": "\u0c35\u0c46\u0c24\u0c15\u0c02\u0c21\u0c3f",
+ "placeholder": "Search conversations..."
+ },
+ "timeframes": {
+ "today": "\u0c08\u0c30\u0c4b\u0c1c\u0c41",
+ "yesterday": "\u0c28\u0c3f\u0c28\u0c4d\u0c28",
+ "previous7days": "\u0c17\u0c24 7 \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",
+ "previous30days": "\u0c17\u0c24 30 \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41"
+ },
+ "empty": "\u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d\u200c\u0c32\u0c41 \u0c15\u0c28\u0c41\u0c17\u0c4a\u0c28\u0c2c\u0c21\u0c32\u0c47\u0c26\u0c41",
+ "actions": {
+ "close": "\u0c38\u0c48\u0c21\u0c4d\u200c\u0c2c\u0c3e\u0c30\u0c4d \u0c2e\u0c42\u0c38\u0c3f\u0c35\u0c47\u0c2f\u0c02\u0c21\u0c3f",
+ "open": "\u0c38\u0c48\u0c21\u0c4d\u200c\u0c2c\u0c3e\u0c30\u0c4d \u0c24\u0c46\u0c30\u0c35\u0c02\u0c21\u0c3f"
+ }
+ },
+ "thread": {
+ "untitled": "\u0c2a\u0c47\u0c30\u0c41 \u0c32\u0c47\u0c28\u0c3f \u0c38\u0c02\u0c2d\u0c3e\u0c37\u0c23",
+ "menu": {
+ "rename": "\u0c2a\u0c47\u0c30\u0c41 \u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c02\u0c21\u0c3f",
+ "share": "\u0c37\u0c47\u0c30\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f",
+ "delete": "\u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f"
+ },
+ "actions": {
+ "share": {
+ "title": "\u0c1a\u0c3e\u0c1f\u0c4d \u0c32\u0c3f\u0c02\u0c15\u0c4d\u200c\u0c28\u0c41 \u0c37\u0c47\u0c30\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f",
+ "button": "\u0c37\u0c47\u0c30\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f",
+ "status": {
+ "copied": "\u0c32\u0c3f\u0c02\u0c15\u0c4d \u0c15\u0c3e\u0c2a\u0c40 \u0c1a\u0c47\u0c2f\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f",
+ "created": "\u0c37\u0c47\u0c30\u0c4d \u0c32\u0c3f\u0c02\u0c15\u0c4d \u0c38\u0c43\u0c37\u0c4d\u0c1f\u0c3f\u0c02\u0c1a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f!",
+ "unshared": "\u0c08 \u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d\u200c\u0c15\u0c41 \u0c37\u0c47\u0c30\u0c3f\u0c02\u0c17\u0c4d \u0c06\u0c2a\u0c3f\u0c35\u0c47\u0c2f\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f"
+ },
+ "error": {
+ "create": "\u0c37\u0c47\u0c30\u0c4d \u0c32\u0c3f\u0c02\u0c15\u0c4d \u0c38\u0c43\u0c37\u0c4d\u0c1f\u0c3f\u0c02\u0c1a\u0c21\u0c02 \u0c35\u0c3f\u0c2b\u0c32\u0c2e\u0c48\u0c02\u0c26\u0c3f",
+ "unshare": "\u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d \u0c37\u0c47\u0c30\u0c3f\u0c02\u0c17\u0c4d \u0c28\u0c3f\u0c32\u0c3f\u0c2a\u0c3f\u0c35\u0c47\u0c2f\u0c21\u0c02 \u0c35\u0c3f\u0c2b\u0c32\u0c2e\u0c48\u0c02\u0c26\u0c3f"
+ }
+ },
+ "delete": {
+ "title": "\u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c02\u0c2a\u0c41\u0c28\u0c41 \u0c28\u0c3f\u0c30\u0c4d\u0c27\u0c3e\u0c30\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
+ "description": "\u0c07\u0c26\u0c3f \u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d\u200c\u0c24\u0c4b \u0c2a\u0c3e\u0c1f\u0c41 \u0c26\u0c3e\u0c28\u0c3f \u0c38\u0c02\u0c26\u0c47\u0c36\u0c3e\u0c32\u0c28\u0c41 \u0c2e\u0c30\u0c3f\u0c2f\u0c41 \u0c05\u0c02\u0c36\u0c3e\u0c32\u0c28\u0c41 \u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c38\u0c4d\u0c24\u0c41\u0c02\u0c26\u0c3f. \u0c08 \u0c1a\u0c30\u0c4d\u0c2f\u0c28\u0c41 \u0c30\u0c26\u0c4d\u0c26\u0c41 \u0c1a\u0c47\u0c2f\u0c32\u0c47\u0c30\u0c41",
+ "success": "\u0c1a\u0c3e\u0c1f\u0c4d \u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c02\u0c1a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f",
+ "inProgress": "\u0c1a\u0c3e\u0c1f\u0c4d\u200c\u0c28\u0c3f \u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c38\u0c4d\u0c24\u0c4b\u0c02\u0c26\u0c3f"
+ },
+ "rename": {
+ "title": "\u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d \u0c2a\u0c47\u0c30\u0c41 \u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c02\u0c21\u0c3f",
+ "description": "\u0c08 \u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d \u0c15\u0c4b\u0c38\u0c02 \u0c15\u0c4a\u0c24\u0c4d\u0c24 \u0c2a\u0c47\u0c30\u0c41\u0c28\u0c41 \u0c28\u0c2e\u0c4b\u0c26\u0c41 \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f",
+ "form": {
+ "name": {
+ "label": "\u0c2a\u0c47\u0c30\u0c41",
+ "placeholder": "\u0c15\u0c4a\u0c24\u0c4d\u0c24 \u0c2a\u0c47\u0c30\u0c41\u0c28\u0c41 \u0c28\u0c2e\u0c4b\u0c26\u0c41 \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f"
+ }
+ },
+ "success": "\u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d \u0c2a\u0c47\u0c30\u0c41 \u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f!",
+ "inProgress": "\u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d \u0c2a\u0c47\u0c30\u0c41 \u0c2e\u0c3e\u0c30\u0c41\u0c38\u0c4d\u0c24\u0c4b\u0c02\u0c26\u0c3f"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "\u0c1a\u0c3e\u0c1f\u0c4d",
+ "readme": "\u0c1a\u0c26\u0c35\u0c02\u0c21\u0c3f",
+ "theme": {
+ "light": "Light Theme",
+ "dark": "Dark Theme",
+ "system": "Follow System"
+ }
+ },
+ "newChat": {
+ "button": "\u0c15\u0c4a\u0c24\u0c4d\u0c24 \u0c1a\u0c3e\u0c1f\u0c4d",
+ "dialog": {
+ "title": "\u0c15\u0c4a\u0c24\u0c4d\u0c24 \u0c1a\u0c3e\u0c1f\u0c4d \u0c38\u0c43\u0c37\u0c4d\u0c1f\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
+ "description": "\u0c07\u0c26\u0c3f \u0c2e\u0c40 \u0c2a\u0c4d\u0c30\u0c38\u0c4d\u0c24\u0c41\u0c24 \u0c1a\u0c3e\u0c1f\u0c4d \u0c1a\u0c30\u0c3f\u0c24\u0c4d\u0c30\u0c28\u0c41 \u0c24\u0c41\u0c21\u0c3f\u0c1a\u0c3f\u0c35\u0c47\u0c38\u0c4d\u0c24\u0c41\u0c02\u0c26\u0c3f. \u0c2e\u0c40\u0c30\u0c41 \u0c15\u0c4a\u0c28\u0c38\u0c3e\u0c17\u0c3f\u0c02\u0c1a\u0c3e\u0c32\u0c28\u0c41\u0c15\u0c41\u0c02\u0c1f\u0c41\u0c28\u0c4d\u0c28\u0c3e\u0c30\u0c3e?",
+ "tooltip": "\u0c15\u0c4a\u0c24\u0c4d\u0c24 \u0c1a\u0c3e\u0c1f\u0c4d"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "\u0c38\u0c46\u0c1f\u0c4d\u0c1f\u0c3f\u0c02\u0c17\u0c4d\u200c\u0c32\u0c41",
+ "settingsKey": "S",
+ "apiKeys": "API \u0c15\u0c40\u0c32\u0c41",
+ "logout": "\u0c32\u0c3e\u0c17\u0c4d \u0c05\u0c35\u0c41\u0c1f\u0c4d"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "\u0c05\u0c35\u0c38\u0c30\u0c2e\u0c48\u0c28 API \u0c15\u0c40\u0c32\u0c41",
+ "description": "\u0c08 \u0c2f\u0c3e\u0c2a\u0c4d\u200c\u0c28\u0c3f \u0c09\u0c2a\u0c2f\u0c4b\u0c17\u0c3f\u0c02\u0c1a\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f, \u0c15\u0c3f\u0c02\u0c26\u0c3f API \u0c15\u0c40\u0c32\u0c41 \u0c05\u0c35\u0c38\u0c30\u0c02. \u0c15\u0c40\u0c32\u0c41 \u0c2e\u0c40 \u0c2a\u0c30\u0c3f\u0c15\u0c30\u0c02 \u0c2f\u0c4a\u0c15\u0c4d\u0c15 \u0c38\u0c4d\u0c25\u0c3e\u0c28\u0c3f\u0c15 \u0c28\u0c3f\u0c32\u0c4d\u0c35\u0c32\u0c4b \u0c28\u0c3f\u0c32\u0c4d\u0c35 \u0c1a\u0c47\u0c2f\u0c2c\u0c21\u0c24\u0c3e\u0c2f\u0c3f.",
+ "success": {
+ "saved": "\u0c35\u0c3f\u0c1c\u0c2f\u0c35\u0c02\u0c24\u0c02\u0c17\u0c3e \u0c38\u0c47\u0c35\u0c4d \u0c1a\u0c47\u0c2f\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f"
+ }
+ },
+ "alerts": {
+ "info": "Info",
+ "note": "Note",
+ "tip": "Tip",
+ "important": "Important",
+ "warning": "Warning",
+ "caution": "Caution",
+ "debug": "Debug",
+ "example": "Example",
+ "success": "Success",
+ "help": "Help",
+ "idea": "Idea",
+ "pending": "Pending",
+ "security": "Security",
+ "beta": "Beta",
+ "best-practice": "Best Practice"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "\u0c0e\u0c02\u0c1a\u0c41\u0c15\u0c4b\u0c02\u0c21\u0c3f..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/zh-CN.json b/.chainlit/translations/zh-CN.json
new file mode 100644
index 0000000..ed3cb18
--- /dev/null
+++ b/.chainlit/translations/zh-CN.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "\u53d6\u6d88",
+ "confirm": "\u786e\u8ba4",
+ "continue": "\u7ee7\u7eed",
+ "goBack": "\u8fd4\u56de",
+ "reset": "\u91cd\u7f6e",
+ "submit": "\u63d0\u4ea4"
+ },
+ "status": {
+ "loading": "\u52a0\u8f7d\u4e2d...",
+ "error": {
+ "default": "\u53d1\u751f\u9519\u8bef",
+ "serverConnection": "\u65e0\u6cd5\u8fde\u63a5\u5230\u670d\u52a1\u5668"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "\u767b\u5f55\u4ee5\u8bbf\u95ee\u5e94\u7528",
+ "form": {
+ "email": {
+ "label": "\u7535\u5b50\u90ae\u7bb1",
+ "required": "\u90ae\u7bb1\u662f\u5fc5\u586b\u9879",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "\u5bc6\u7801",
+ "required": "\u5bc6\u7801\u662f\u5fc5\u586b\u9879"
+ },
+ "actions": {
+ "signin": "\u767b\u5f55"
+ },
+ "alternativeText": {
+ "or": "\u6216"
+ }
+ },
+ "errors": {
+ "default": "\u65e0\u6cd5\u767b\u5f55",
+ "signin": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55",
+ "oauthSignin": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55",
+ "redirectUriMismatch": "\u91cd\u5b9a\u5411URI\u4e0eOAuth\u5e94\u7528\u914d\u7f6e\u4e0d\u5339\u914d",
+ "oauthCallback": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55",
+ "oauthCreateAccount": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55",
+ "emailCreateAccount": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55",
+ "callback": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55",
+ "oauthAccountNotLinked": "\u4e3a\u786e\u8ba4\u60a8\u7684\u8eab\u4efd\uff0c\u8bf7\u4f7f\u7528\u539f\u59cb\u8d26\u53f7\u767b\u5f55",
+ "emailSignin": "\u90ae\u4ef6\u53d1\u9001\u5931\u8d25",
+ "emailVerify": "\u8bf7\u9a8c\u8bc1\u60a8\u7684\u90ae\u7bb1\uff0c\u65b0\u7684\u9a8c\u8bc1\u90ae\u4ef6\u5df2\u53d1\u9001",
+ "credentialsSignin": "\u767b\u5f55\u5931\u8d25\u3002\u8bf7\u68c0\u67e5\u60a8\u63d0\u4f9b\u7684\u4fe1\u606f\u662f\u5426\u6b63\u786e",
+ "sessionRequired": "\u8bf7\u767b\u5f55\u4ee5\u8bbf\u95ee\u6b64\u9875\u9762"
+ }
+ },
+ "provider": {
+ "continue": "\u7ee7\u7eed\u4f7f\u7528{{provider}}"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "\u5728\u6b64\u8f93\u5165\u60a8\u7684\u6d88\u606f...",
+ "actions": {
+ "send": "\u53d1\u9001\u6d88\u606f",
+ "stop": "\u505c\u6b62\u4efb\u52a1",
+ "attachFiles": "\u9644\u52a0\u6587\u4ef6"
+ }
+ },
+ "speech": {
+ "start": "\u5f00\u59cb\u5f55\u97f3",
+ "stop": "\u505c\u6b62\u5f55\u97f3",
+ "connecting": "\u8fde\u63a5\u4e2d"
+ },
+ "fileUpload": {
+ "dragDrop": "\u5c06\u6587\u4ef6\u62d6\u653e\u5230\u8fd9\u91cc",
+ "browse": "\u6d4f\u89c8\u6587\u4ef6",
+ "sizeLimit": "\u9650\u5236\uff1a",
+ "errors": {
+ "failed": "\u4e0a\u4f20\u5931\u8d25",
+ "cancelled": "\u5df2\u53d6\u6d88\u4e0a\u4f20"
+ },
+ "actions": {
+ "cancelUpload": "\u53d6\u6d88\u4e0a\u4f20",
+ "removeAttachment": "\u79fb\u9664\u9644\u4ef6"
+ }
+ },
+ "commands": {
+ "button": "\u5de5\u5177",
+ "changeTool": "\u66f4\u6362\u5de5\u5177",
+ "availableTools": "\u53ef\u7528\u5de5\u5177"
+ },
+ "messages": {
+ "status": {
+ "using": "\u4f7f\u7528\u4e2d",
+ "used": "\u5df2\u4f7f\u7528"
+ },
+ "actions": {
+ "copy": {
+ "button": "\u590d\u5236\u5230\u526a\u8d34\u677f",
+ "success": "\u5df2\u590d\u5236\uff01"
+ }
+ },
+ "feedback": {
+ "positive": "\u6709\u5e2e\u52a9",
+ "negative": "\u6ca1\u6709\u5e2e\u52a9",
+ "edit": "\u7f16\u8f91\u53cd\u9988",
+ "dialog": {
+ "title": "\u6dfb\u52a0\u8bc4\u8bba",
+ "submit": "\u63d0\u4ea4\u53cd\u9988",
+ "yourFeedback": "\u60a8\u7684\u53cd\u9988..."
+ },
+ "status": {
+ "updating": "\u66f4\u65b0\u4e2d",
+ "updated": "\u53cd\u9988\u5df2\u66f4\u65b0"
+ }
+ }
+ },
+ "history": {
+ "title": "\u6700\u8fd1\u8f93\u5165",
+ "empty": "\u7a7a\u7a7a\u5982\u4e5f...",
+ "show": "\u663e\u793a\u5386\u53f2"
+ },
+ "settings": {
+ "title": "\u8bbe\u7f6e\u9762\u677f",
+ "customize": "\u5728\u6b64\u81ea\u5b9a\u4e49\u60a8\u7684\u804a\u5929\u8bbe\u7f6e"
+ },
+ "watermark": "\u5927\u8bed\u8a00\u6a21\u578b\u53ef\u80fd\u4f1a\u72af\u9519\u3002\u8bf7\u6838\u5b9e\u91cd\u8981\u4fe1\u606f\u3002"
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "\u5386\u53f2\u5bf9\u8bdd",
+ "filters": {
+ "search": "\u641c\u7d22",
+ "placeholder": "\u641c\u7d22\u4f1a\u8bdd..."
+ },
+ "timeframes": {
+ "today": "\u4eca\u5929",
+ "yesterday": "\u6628\u5929",
+ "previous7days": "\u8fc7\u53bb7\u5929",
+ "previous30days": "\u8fc7\u53bb30\u5929"
+ },
+ "empty": "\u672a\u627e\u5230\u5bf9\u8bdd",
+ "actions": {
+ "close": "\u5173\u95ed\u4fa7\u8fb9\u680f",
+ "open": "\u6253\u5f00\u4fa7\u8fb9\u680f"
+ }
+ },
+ "thread": {
+ "untitled": "\u672a\u547d\u540d\u5bf9\u8bdd",
+ "menu": {
+ "rename": "\u91cd\u547d\u540d",
+ "share": "\u5206\u4eab",
+ "delete": "\u5220\u9664"
+ },
+ "actions": {
+ "share": {
+ "title": "\u5206\u4eab\u804a\u5929\u94fe\u63a5",
+ "button": "\u5206\u4eab",
+ "status": {
+ "copied": "\u94fe\u63a5\u5df2\u590d\u5236",
+ "created": "\u5206\u4eab\u94fe\u63a5\u5df2\u521b\u5efa\uff01",
+ "unshared": "\u5df2\u7981\u7528\u6b64\u5bf9\u8bdd\u7684\u5206\u4eab"
+ },
+ "error": {
+ "create": "\u521b\u5efa\u5206\u4eab\u94fe\u63a5\u5931\u8d25",
+ "unshare": "\u53d6\u6d88\u5bf9\u8bdd\u5206\u4eab\u5931\u8d25"
+ }
+ },
+ "delete": {
+ "title": "\u786e\u8ba4\u5220\u9664",
+ "description": "\u8fd9\u5c06\u5220\u9664\u8be5\u5bf9\u8bdd\u53ca\u5176\u6240\u6709\u6d88\u606f\u548c\u5143\u7d20\u3002\u6b64\u64cd\u4f5c\u65e0\u6cd5\u64a4\u9500",
+ "success": "\u5bf9\u8bdd\u5df2\u5220\u9664",
+ "inProgress": "\u6b63\u5728\u5220\u9664\u5bf9\u8bdd"
+ },
+ "rename": {
+ "title": "\u91cd\u547d\u540d\u5bf9\u8bdd",
+ "description": "\u4e3a\u6b64\u5bf9\u8bdd\u8f93\u5165\u65b0\u540d\u79f0",
+ "form": {
+ "name": {
+ "label": "\u540d\u79f0",
+ "placeholder": "\u8f93\u5165\u65b0\u540d\u79f0"
+ }
+ },
+ "success": "\u5bf9\u8bdd\u5df2\u91cd\u547d\u540d\uff01",
+ "inProgress": "\u6b63\u5728\u91cd\u547d\u540d\u5bf9\u8bdd"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "\u804a\u5929",
+ "readme": "\u8bf4\u660e",
+ "theme": {
+ "light": "\u6d45\u8272\u4e3b\u9898",
+ "dark": "\u6df1\u8272\u4e3b\u9898",
+ "system": "\u8ddf\u968f\u7cfb\u7edf"
+ }
+ },
+ "newChat": {
+ "button": "\u65b0\u5efa\u5bf9\u8bdd",
+ "dialog": {
+ "title": "\u521b\u5efa\u65b0\u5bf9\u8bdd",
+ "description": "\u8fd9\u5c06\u6e05\u9664\u60a8\u5f53\u524d\u7684\u804a\u5929\u8bb0\u5f55\u3002\u786e\u5b9a\u8981\u7ee7\u7eed\u5417\uff1f",
+ "tooltip": "\u65b0\u5efa\u5bf9\u8bdd"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "\u8bbe\u7f6e",
+ "settingsKey": "S",
+ "apiKeys": "API\u5bc6\u94a5",
+ "logout": "\u9000\u51fa\u767b\u5f55"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "\u6240\u9700API\u5bc6\u94a5",
+ "description": "\u4f7f\u7528\u6b64\u5e94\u7528\u9700\u8981\u4ee5\u4e0bAPI\u5bc6\u94a5\u3002\u8fd9\u4e9b\u5bc6\u94a5\u5b58\u50a8\u5728\u60a8\u8bbe\u5907\u7684\u672c\u5730\u5b58\u50a8\u4e2d\u3002",
+ "success": {
+ "saved": "\u4fdd\u5b58\u6210\u529f"
+ }
+ },
+ "alerts": {
+ "info": "\u4fe1\u606f",
+ "note": "\u6ce8\u91ca",
+ "tip": "\u63d0\u793a",
+ "important": "\u91cd\u8981",
+ "warning": "\u8b66\u544a",
+ "caution": "\u6ce8\u610f",
+ "debug": "\u8c03\u8bd5",
+ "example": "\u793a\u4f8b",
+ "success": "\u6210\u529f",
+ "help": "\u5e2e\u52a9",
+ "idea": "\u60f3\u6cd5",
+ "pending": "\u5f85\u5904\u7406",
+ "security": "\u5b89\u5168",
+ "beta": "\u6d4b\u8bd5",
+ "best-practice": "\u6700\u4f73\u5b9e\u8df5"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "\u9009\u62e9..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.chainlit/translations/zh-TW.json b/.chainlit/translations/zh-TW.json
new file mode 100644
index 0000000..74da121
--- /dev/null
+++ b/.chainlit/translations/zh-TW.json
@@ -0,0 +1,245 @@
+{
+ "common": {
+ "actions": {
+ "cancel": "\u53d6\u6d88",
+ "confirm": "\u78ba\u8a8d",
+ "continue": "\u7e7c\u7e8c",
+ "goBack": "\u8fd4\u56de",
+ "reset": "\u91cd\u8a2d",
+ "submit": "\u9001\u51fa"
+ },
+ "status": {
+ "loading": "\u8f09\u5165\u4e2d...",
+ "error": {
+ "default": "\u767c\u751f\u932f\u8aa4",
+ "serverConnection": "\u7121\u6cd5\u9023\u7dda\u5230\u4f3a\u670d\u5668"
+ }
+ }
+ },
+ "auth": {
+ "login": {
+ "title": "\u767b\u5165\u4ee5\u5b58\u53d6\u61c9\u7528\u7a0b\u5f0f",
+ "form": {
+ "email": {
+ "label": "\u96fb\u5b50\u4fe1\u7bb1",
+ "required": "\u4fe1\u7bb1\u662f\u5fc5\u586b\u9805\u76ee",
+ "placeholder": "me@example.com"
+ },
+ "password": {
+ "label": "\u5bc6\u78bc",
+ "required": "\u5bc6\u78bc\u662f\u5fc5\u586b\u9805\u76ee"
+ },
+ "actions": {
+ "signin": "\u767b\u5165"
+ },
+ "alternativeText": {
+ "or": "\u6216"
+ }
+ },
+ "errors": {
+ "default": "\u7121\u6cd5\u767b\u5165",
+ "signin": "\u8acb\u5617\u8a66\u4f7f\u7528\u5176\u5b83\u5e33\u865f\u767b\u5165",
+ "oauthSignin": "\u8acb\u5617\u8a66\u4f7f\u7528\u5176\u5b83\u5e33\u865f\u767b\u5165",
+ "redirectUriMismatch": "\u91cd\u65b0\u5c0e\u5411URI\u8207OAuth App\u8a2d\u5b9a\u4e0d\u76f8\u7b26",
+ "oauthCallback": "\u8acb\u5617\u8a66\u4f7f\u7528\u5176\u5b83\u5e33\u865f\u767b\u5165",
+ "oauthCreateAccount": "\u8acb\u5617\u8a66\u4f7f\u7528\u5176\u5b83\u5e33\u865f\u767b\u5165",
+ "emailCreateAccount": "\u8acb\u5617\u8a66\u4f7f\u7528\u5176\u5b83\u5e33\u865f\u767b\u5165",
+ "callback": "\u8acb\u5617\u8a66\u4f7f\u7528\u5176\u5b83\u5e33\u865f\u767b\u5165",
+ "oauthAccountNotLinked": "\u70ba\u78ba\u8a8d\u60a8\u7684\u8eab\u4efd\uff0c\u8acb\u4ee5\u539f\u672c\u4f7f\u7528\u7684\u5e33\u865f\u767b\u5165",
+ "emailSignin": "\u96fb\u5b50\u90f5\u4ef6\u767c\u9001\u5931\u6557",
+ "emailVerify": "\u8acb\u9a57\u8b49\u60a8\u7684\u96fb\u5b50\u4fe1\u7bb1\uff0c\u65b0\u7684\u9a57\u8b49\u90f5\u4ef6\u5df2\u767c\u9001",
+ "credentialsSignin": "\u767b\u5165\u5931\u6557\u3002\u8acb\u6aa2\u67e5\u60a8\u63d0\u4f9b\u7684\u8cc7\u8a0a\u662f\u5426\u6b63\u78ba",
+ "sessionRequired": "\u8acb\u767b\u5165\u4ee5\u5b58\u53d6\u6b64\u9801\u9762"
+ }
+ },
+ "provider": {
+ "continue": "\u7e7c\u7e8c\u4f7f\u7528{{provider}}"
+ }
+ },
+ "chat": {
+ "input": {
+ "placeholder": "\u5728\u6b64\u8f38\u5165\u60a8\u7684\u8a0a\u606f...",
+ "actions": {
+ "send": "\u767c\u9001\u8a0a\u606f",
+ "stop": "\u505c\u6b62\u4efb\u52d9",
+ "attachFiles": "\u9644\u52a0\u6a94\u6848"
+ }
+ },
+ "speech": {
+ "start": "\u958b\u59cb\u9304\u97f3",
+ "stop": "\u505c\u6b62\u9304\u97f3",
+ "connecting": "\u9023\u7dda\u4e2d"
+ },
+ "fileUpload": {
+ "dragDrop": "\u62d6\u66f3\u6a94\u6848\u5230\u9019\u88e1",
+ "browse": "\u700f\u89bd\u6a94\u6848",
+ "sizeLimit": "\u9650\u5236\uff1a",
+ "errors": {
+ "failed": "\u4e0a\u50b3\u5931\u6557",
+ "cancelled": "\u5df2\u53d6\u6d88\u4e0a\u50b3"
+ },
+ "actions": {
+ "cancelUpload": "\u53d6\u6d88\u4e0a\u50b3",
+ "removeAttachment": "\u79fb\u9664\u9644\u4ef6"
+ }
+ },
+ "commands": {
+ "button": "\u5de5\u5177",
+ "changeTool": "\u66f4\u63db\u5de5\u5177",
+ "availableTools": "\u53ef\u7528\u5de5\u5177"
+ },
+ "messages": {
+ "status": {
+ "using": "\u6b63\u5728\u4f7f\u7528",
+ "used": "\u5df2\u4f7f\u7528"
+ },
+ "actions": {
+ "copy": {
+ "button": "\u8907\u88fd\u5230\u526a\u8cbc\u7c3f",
+ "success": "\u5df2\u8907\u88fd\uff01"
+ }
+ },
+ "feedback": {
+ "positive": "\u6709\u5e6b\u52a9",
+ "negative": "\u6c92\u6709\u5e6b\u52a9",
+ "edit": "\u7de8\u8f2f\u56de\u994b",
+ "dialog": {
+ "title": "\u65b0\u589e\u8a55\u8ad6",
+ "submit": "\u9001\u51fa\u56de\u994b",
+ "yourFeedback": "\u60a8\u7684\u56de\u994b..."
+ },
+ "status": {
+ "updating": "\u66f4\u65b0\u4e2d",
+ "updated": "\u56de\u994b\u5df2\u66f4\u65b0"
+ }
+ }
+ },
+ "history": {
+ "title": "\u6700\u8fd1\u8f38\u5165",
+ "empty": "\u7a7a\u7a7a\u5982\u4e5f...",
+ "show": "\u986f\u793a\u6b77\u53f2"
+ },
+ "settings": {
+ "title": "\u8a2d\u5b9a\u9762\u677f",
+ "customize": "\u5728\u6b64\u81ea\u5b9a\u7fa9\u60a8\u7684\u804a\u5929\u8a2d\u5b9a"
+ },
+ "watermark": "\u5927\u578b\u8a9e\u8a00\u6a21\u578b\u53ef\u80fd\u6703\u72af\u932f\u3002\u8acb\u6838\u5be6\u91cd\u8981\u8cc7\u8a0a\u3002"
+ },
+ "threadHistory": {
+ "sidebar": {
+ "title": "\u6b77\u53f2\u5c0d\u8a71",
+ "filters": {
+ "search": "\u641c\u5c0b",
+ "placeholder": "\u641c\u5c0b\u5c0d\u8a71..."
+ },
+ "timeframes": {
+ "today": "\u4eca\u5929",
+ "yesterday": "\u6628\u5929",
+ "previous7days": "\u904e\u53bb7\u5929",
+ "previous30days": "\u904e\u53bb30\u5929"
+ },
+ "empty": "\u672a\u627e\u5230\u5c0d\u8a71",
+ "actions": {
+ "close": "\u95dc\u9589\u5074\u908a\u6b04",
+ "open": "\u6253\u958b\u5074\u908a\u6b04"
+ }
+ },
+ "thread": {
+ "untitled": "\u672a\u547d\u540d\u5c0d\u8a71",
+ "menu": {
+ "rename": "\u91cd\u65b0\u547d\u540d",
+ "share": "\u5206\u4eab",
+ "delete": "\u522a\u9664"
+ },
+ "actions": {
+ "share": {
+ "title": "\u5206\u4eab\u804a\u5929\u9023\u7d50",
+ "button": "\u5206\u4eab",
+ "status": {
+ "copied": "\u9023\u7d50\u5df2\u8907\u88fd",
+ "created": "\u5206\u4eab\u9023\u7d50\u5df2\u5efa\u7acb\uff01",
+ "unshared": "\u5df2\u505c\u7528\u6b64\u5c0d\u8a71\u7684\u5206\u4eab"
+ },
+ "error": {
+ "create": "\u5efa\u7acb\u5206\u4eab\u9023\u7d50\u5931\u6557",
+ "unshare": "\u53d6\u6d88\u5c0d\u8a71\u5206\u4eab\u5931\u6557"
+ }
+ },
+ "delete": {
+ "title": "\u78ba\u8a8d\u522a\u9664",
+ "description": "\u9019\u5c07\u522a\u9664\u8a72\u5c0d\u8a71\u53ca\u5176\u6240\u6709\u8a0a\u606f\u548c\u5143\u4ef6\u3002\u6b64\u64cd\u4f5c\u7121\u6cd5\u5fa9\u539f\u3002",
+ "success": "\u5c0d\u8a71\u5df2\u522a\u9664",
+ "inProgress": "\u6b63\u5728\u522a\u9664\u5c0d\u8a71"
+ },
+ "rename": {
+ "title": "\u91cd\u65b0\u547d\u540d\u5c0d\u8a71",
+ "description": "\u70ba\u6b64\u5c0d\u8a71\u8f38\u5165\u65b0\u540d\u7a31",
+ "form": {
+ "name": {
+ "label": "\u540d\u7a31",
+ "placeholder": "\u8f38\u5165\u65b0\u540d\u7a31"
+ }
+ },
+ "success": "\u5c0d\u8a71\u5df2\u91cd\u65b0\u547d\u540d\uff01",
+ "inProgress": "\u6b63\u5728\u91cd\u65b0\u547d\u540d\u5c0d\u8a71"
+ }
+ }
+ }
+ },
+ "navigation": {
+ "header": {
+ "chat": "\u804a\u5929",
+ "readme": "\u8aaa\u660e",
+ "theme": {
+ "light": "\u6dfa\u8272\u4e3b\u984c",
+ "dark": "\u6df1\u8272\u4e3b\u984c",
+ "system": "\u8ddf\u96a8\u7cfb\u7d71"
+ }
+ },
+ "newChat": {
+ "button": "\u65b0\u5efa\u5c0d\u8a71",
+ "dialog": {
+ "title": "\u5275\u5efa\u65b0\u5c0d\u8a71",
+ "description": "\u9019\u5c07\u6e05\u9664\u60a8\u7576\u524d\u7684\u804a\u5929\u8a18\u9304\u3002\u78ba\u5b9a\u8981\u7e7c\u7e8c\u55ce\uff1f",
+ "tooltip": "\u65b0\u5efa\u5c0d\u8a71"
+ }
+ },
+ "user": {
+ "menu": {
+ "settings": "\u8a2d\u5b9a",
+ "settingsKey": "S",
+ "apiKeys": "API\u91d1\u9470",
+ "logout": "\u767b\u51fa"
+ }
+ }
+ },
+ "apiKeys": {
+ "title": "\u6240\u9700API\u91d1\u9470",
+ "description": "\u4f7f\u7528\u6b64\u61c9\u7528\u7a0b\u5f0f\u9700\u8981\u4ee5\u4e0bAPI\u91d1\u9470\u3002\u9019\u4e9b\u91d1\u9470\u5132\u5b58\u5728\u60a8\u8a2d\u5099\u7684\u672c\u5730\u5132\u5b58\u7a7a\u9593\u4e2d\u3002",
+ "success": {
+ "saved": "\u5132\u5b58\u6210\u529f"
+ }
+ },
+ "alerts": {
+ "info": "\u8cc7\u8a0a",
+ "note": "\u6ce8\u91cb",
+ "tip": "\u63d0\u793a",
+ "important": "\u91cd\u8981",
+ "warning": "\u8b66\u544a",
+ "caution": "\u6ce8\u610f",
+ "debug": "\u9664\u932f",
+ "example": "\u7bc4\u4f8b",
+ "success": "\u6210\u529f",
+ "help": "\u5e6b\u52a9",
+ "idea": "\u60f3\u6cd5",
+ "pending": "\u5f85\u8655\u7406",
+ "security": "\u5b89\u5168",
+ "beta": "\u6e2c\u8a66",
+ "best-practice": "\u6700\u4f73\u5be6\u8e10"
+ },
+ "components": {
+ "MultiSelectInput": {
+ "placeholder": "\u9078\u64c7..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9bb619f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,185 @@
+# Created by .ignore support plugin (hsz.mobi)
+### Python template
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+env/
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+*.egg-info/
+.installed.cfg
+*.egg
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*,cover
+.hypothesis/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# IPython Notebook
+.ipynb_checkpoints
+
+# pyenv
+.python-version
+
+# celery beat schedule file
+celerybeat-schedule
+
+# dotenv
+.env
+
+# virtualenv
+venv/
+ENV/
+
+# Spyder project settings
+.spyderproject
+
+# Rope project settings
+.ropeproject
+### VirtualEnv template
+# Virtualenv
+# http://iamzed.com/2009/05/07/a-primer-on-virtualenv/
+[Bb]in
+[Ii]nclude
+[Ll]ib
+[Ll]ib64
+[Ll]ocal
+[Ss]cripts
+pyvenv.cfg
+.venv
+pip-selfcheck.json
+
+### JetBrains template
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# AWS User-specific
+.idea/**/aws.xml
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn. Uncomment if using
+# auto-import.
+# .idea/artifacts
+# .idea/compiler.xml
+# .idea/jarRepositories.xml
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+# *.iml
+# *.ipr
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# SonarLint plugin
+.idea/sonarlint/
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
+
+# idea folder, uncomment if you don't need it
+# .idea
\ No newline at end of file
diff --git a/.idea/ai-lawyer-agent.iml b/.idea/ai-lawyer-agent.iml
index 7d67021..d8b3f6c 100644
--- a/.idea/ai-lawyer-agent.iml
+++ b/.idea/ai-lawyer-agent.iml
@@ -1,10 +1,8 @@
-
-
-
-
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 8b05534..a67c84f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -3,4 +3,5 @@
+
\ No newline at end of file
diff --git a/api/__init__.py b/api/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/api/fetch_api_data.py b/api/fetch_api_data.py
new file mode 100644
index 0000000..f6ee05d
--- /dev/null
+++ b/api/fetch_api_data.py
@@ -0,0 +1,48 @@
+import httpx
+import logging
+from pydantic import BaseModel
+
+logging.basicConfig(
+ level=logging.INFO,
+ format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
+)
+logger = logging.getLogger(__name__)
+
+def docstring_from_model(model: type[BaseModel]):
+ def decorator(func):
+ if func.__doc__:
+ func.__doc__ = func.__doc__.format(
+ params="\n".join(
+ f"\t\t- {name}: {field.description or 'No description'}"
+ for name, field in model.model_fields.items()
+ )
+ )
+ return func
+ return decorator
+
+async def fetch_api_data(icon: str, url: str, params: dict, remove_keys: list = None) -> dict:
+ try:
+ logger.info(f"\n🔨{icon}Input parameters: {params}\n")
+ async with httpx.AsyncClient() as client:
+ response = await client.get(url, params=params, timeout=10.0)
+ response.raise_for_status()
+ logger.debug(f"\n🖇️{icon}Request URL: {response.url}\n")
+
+ data = response.json()
+ if remove_keys and isinstance(data, dict):
+ for key in remove_keys:
+ data.pop(key, None)
+ logger.info(f"\n🚮{icon}Successfully removed key: {key}\n")
+
+ logger.info(f"\n✅{icon}Successfully fetched data from {url}\n")
+ return data
+
+ except httpx.HTTPStatusError as e:
+ logger.error(f"\n{icon}HTTP error: {e.response.status_code} - {e.response.text}\n")
+ return {"error": "http_error", "status_code": e.response.status_code, "detail": e.response.text}
+ except httpx.RequestError as e:
+ logger.error(f"\n{icon}Request error: {str(e)}\n")
+ return {"error": "request_error", "status_code": str(e)}
+ except Exception as e:
+ logger.critical(f"\n{icon}Unexpected error: {str(e)}\n", exc_info=True)
+ return {"error": "unexpected_error", "status_code": str(e)}
diff --git a/api/schemas.py b/api/schemas.py
new file mode 100644
index 0000000..a466abd
--- /dev/null
+++ b/api/schemas.py
@@ -0,0 +1,178 @@
+from pydantic import BaseModel, Field, conint
+from typing import Optional, List, Literal
+
+# =================================================================================================================
+# COURT SCHEMAS
+# =================================================================================================================
+
+class Court(BaseModel):
+ query: str = Field(None, description="Search term or phrase to help find information")
+ typSuduFacetFilter: Optional[List[str]] = Field(None, description="Court types (facet filter), e.g., Okresný súd, Krajský súd, Najvyšší súd SR, Špecializovaný trestný súd, etc.")
+ krajFacetFilter: Optional[List[str]] = Field(None, description="Regions (facet filter), e.g., Bratislavský kraj, Košický kraj, Prešovský kraj, etc.")
+ okresFacetFilter: Optional[List[str]] = Field(None, description="Districts (facet filter), e.g., Okres Banská Bystrica, Okres Bratislava I, Okres Košice I, etc.")
+ zahrnutZaniknuteSudy: Optional[bool] = Field(None, description="Include defunct/inactive courts (True) or only currently active courts (False)")
+ page: Optional[conint(ge=1)] = Field(None, description="Requested page number (starting from 1)")
+ size: Optional[conint(ge=1)] = Field(None, description="Number of results per page")
+ indexDatumOd: Optional[str] = Field(None, description="Index date from (format YYYY.MM.DD or DD.MM.YYYY)")
+ indexDatumDo: Optional[str] = Field(None, description="Index date to (format YYYY.MM.DD or DD.MM.YYYY)")
+ sortProperty: Optional[str] = Field(None, description="Field to sort the output by")
+ sortDirection: Literal["ASC", "DESC"] = Field("ASC", description="Sort direction (ASC or DESC)")
+
+class CourtID(BaseModel):
+ id: str = Field(..., description="Court identifier (e.g., sud_175)")
+
+class CourtAutocomplete(BaseModel):
+ query: str = Field(None, description="Search term or phrase to help find information")
+ limit: Optional[conint(ge=1)] = Field(None, description="Limits the number of returned results (pagination)")
+
+
+# =================================================================================================================
+# JUDGE SCHEMAS
+# =================================================================================================================
+
+class Judge(BaseModel):
+ query: str = Field(None, description="Search term or phrase to help find information")
+ funkciaFacetFilter: Optional[List[str]] = Field(None, description="Judge function, role or position related to a judge (facet filter) e.g., Sudca, Podpredseda, Predseda, Hosťujúci sudca")
+ typSuduFacetFilter: Optional[List[str]] = Field(None, description="Court types (facet filter), e.g., Okresný súd, Krajský súd, Najvyšší súd SR, Špecializovaný trestný súd, etc.")
+ krajFacetFilter: Optional[List[str]] = Field(None, description="Regions (facet filter), e.g., Bratislavský kraj, Košický kraj, Prešovský kraj, etc.")
+ okresFacetFilter: Optional[List[str]] = Field(None, description="Districts (facet filter), e.g., Okres Banská Bystrica, Okres Bratislava I, Okres Košice I, etc.")
+ stavZapisuFacetFilter: Optional[List[str]] = Field(None, description="Record status filter (facet filter) to specify which court records to include. Options (do not translate): label.sudca.aktivny, label.sudca.odvolany, label.sudca.vymazany, label.sudca.prerusenie vykonu - poberatel, label.sudca.prerusenie vykonu - ina funkce")
+ guidSud: Optional[str] = Field(None, description="Court identifier (e.g., sud_100)")
+ indexDatumOd: Optional[str] = Field(None, description="Index date from (format YYYY.MM.DD or DD.MM.YYYY)")
+ indexDatumDo: Optional[str] = Field(None, description="Index date to (format YYYY.MM.DD or DD.MM.YYYY)")
+ page: Optional[conint(ge=1)] = Field(None, description="Requested page number (starting from 1)")
+ size: Optional[conint(ge=1)] = Field(None, description="Number of results per page")
+ sortProperty: Optional[str] = Field(None, description="Field to sort the output by")
+ sortDirection: Literal["ASC", "DESC"] = Field("ASC", description="Sort direction (ASC or DESC)")
+
+class JudgeID(BaseModel):
+ id: str = Field(..., description="Judge identifier (e. g., sudca_1)")
+
+class JudgeAutocomplete(BaseModel):
+ query: str = Field(None, description="Search term or phrase to help find information")
+ guidSud: Optional[str] = Field(None, description="Court identifier (e.g., sud_100)")
+ limit: Optional[conint(ge=1)] = Field(None, description="Limits the number of returned results (pagination)")
+
+
+# =================================================================================================================
+# CONTRACTS SCHEMAS
+# =================================================================================================================
+
+class Contracts(BaseModel):
+ query: str = Field(None, description="Search term or phrase to help find information")
+ typDokumentuFacetFilter: Optional[List[str]] = Field(None, description="Contract's type (facet filter), e.g., FAKTURA, OBJEDNAVKA, ZMLUVA, DODATOK")
+ odberatelFacetFilter: Optional[List[str]] = Field(None, description="Subscriber filter. Examples: 'Krajský súd v Bratislave', 'Okresný súd Banská Bystrica', 'Špecializovaný trestný súd', Krajský súd v Košiciach, etc.")
+ dodavatelFacetFilter: Optional[List[str]] = Field(None, description="Supplier filter. Examples: Slovak Telekom, a.s., Wolters Kluwer s.r.o., Tibor Varga TSV Papier")
+ hodnotaZmluvyFacetFilter: Optional[List[str]] = Field(None, description="Contract value range filter. Options: '0-1000', '1000-20000', '20000-100000', '100000-500000', 'Viac ako 500000'")
+ datumZverejeneniaOd: Optional[str] = Field(None, description="Index date from (format YYYY-MM-DD)")
+ datumZverejeneniaDo: Optional[str] = Field(None, description="Index date to (format YYYY-MM-DD)")
+ guidSud: Optional[str] = Field(None, description="Court identifier (e.g., sud_100)")
+ indexDatumOd: Optional[str] = Field(None, description="Index date from (format YYYY-MM-DD or DD-MM-YYYY)")
+ indexDatumDo: Optional[str] = Field(None, description="Index date to (format YYYY-MM-DD or DD-MM-YYYY)")
+ sortProperty: Optional[str] = Field(None, description="Field to sort the output by")
+ sortDirection: Literal["ASC", "DESC"] = Field("ASC", description="Sort direction (ASC or DESC)")
+ page: Optional[conint(ge=1)] = Field(None, description="Requested page number (starting from 1)")
+ size: Optional[conint(ge=1)] = Field(None, description="Number of results per page")
+
+class ContractID(BaseModel):
+ idZmluvy: str = Field(..., description="Contract identifier (e. g., 2156252)")
+
+class ContractAutocomplete(BaseModel):
+ query: str = Field(None, description="Search term or phrase to help find information")
+ guidSud: Optional[str] = Field(None, description="Court identifier (e.g., sud_100)")
+ limit: Optional[conint(ge=1)] = Field(None, description="Limits the number of returned results (pagination)")
+
+
+# =================================================================================================================
+# DECISION SCHEMAS
+# =================================================================================================================
+
+class Decision(BaseModel):
+ query: str = Field(None, description="Search term or phrase to help find information")
+ typSuduFacetFilter: Optional[List[str]] = Field(None, description="Court types (facet filter), e.g., Okresný súd, Krajský súd, Najvyšší súd SR, Špecializovaný trestný súd, etc.")
+ krajFacetFilter: Optional[List[str]] = Field(None, description="Regions (facet filter), e.g., Bratislavský kraj, Košický kraj, Prešovský kraj, etc.")
+ okresFacetFilter: Optional[List[str]] = Field(None, description="Districts (facet filter), e.g., Okres Banská Bystrica, Okres Bratislava I, Okres Košice I, etc.")
+ odkazovanePredpisy: Optional[str] = Field(None, description="Referenced regulations")
+ oblastPravnejUpravyFacetFilter: Optional[List[str]] = Field(None, description="Area of legal regulation (facet filter), e.g., Občianske právo, Rodinné právo, Obchodné právo, Trestné právo, Správne právo")
+ podOblastPravnejUpravyFacetFilter: Optional[List[str]] = Field(None, description="Sub-area of legal regulation (facet filter), e.g., Ostatné, Spotrebiteľské zmluvy, Spätvzatie, Zmluvy, Rozvod, Konkurz, etc.")
+ formaRozhodnutiaFacetFilter: Optional[List[str]] = Field(None, description="Form of decision (facet filter), e.g., Uznesenie, Rozsudok, Platobný rozkaz, Rozhodnutie, Rozsudok pre zmeškanie, Opatrenie, Príkaz, etc.")
+ povahaRozhodnutiaFacetFilter: Optional[str] = Field(None, description="Nature of decision, (e.g., Prvostupňové nenapadnuté opravnými prostriedkami, Potvrdzujúce, Potvrdené, Zmenené, Odmietajúce podanie, etc.)")
+ vydaniaOd: Optional[str] = Field(None, description="Issue date from (format DD.MM.YYYY)")
+ vydaniaDo: Optional[str] = Field(None, description="Issue date to (format DD.MM.YYYY)")
+ ecli: Optional[str] = Field(None, description="ECLI identifier (e.g., ECLI:SK:OSPO:1965:8114010264.1)")
+ spisovaZnacka: Optional[str] = Field(None, description="Case reference number (e.g., 7C/221/1991, 0Er/1966/1998)")
+ cisloSpisu: Optional[str] = Field(None, description="File identification number (e.g., 'identifikacneCislo': '8114010264')")
+ guidSudca: Optional[str] = Field(None, description="Judge identifier (e.g., sudca_1)")
+ guidSud: Optional[str] = Field(None, description="Court identifier (e.g., sud_100)")
+ indexDatumOd: Optional[str] = Field(None, description="Index date from (format YYYY-MM-DD)")
+ indexDatumDo: Optional[str] = Field(None, description="Index date to (format YYYY-MM-DD)")
+ sortProperty: Optional[str] = Field(None, description="Field to sort the output by")
+ sortDirection: Literal["ASC", "DESC"] = Field("ASC", description="Sort direction (ASC or DESC)")
+ page: Optional[conint(ge=1)] = Field(None, description="Requested page number (starting from 1)")
+ size: Optional[conint(ge=1)] = Field(None, description="Number of results per page")
+
+class DecisionID(BaseModel):
+ id: str = Field(..., description="Decision identifier (e.g., a3310194-e9ac-4e6b-bfbd-25c40f26938b:1097de02-3389-405b-98a4-df7abea3f9ec)")
+
+class DecisionAutocomplete(BaseModel):
+ query: str = Field(None, description="Search term or phrase to help find information")
+ guidSud: Optional[str] = Field(None, description="Court identifier (e.g., sud_100)")
+ limit: Optional[conint(ge=1)] = Field(None, description="Limits the number of returned results (pagination)")
+
+
+# =================================================================================================================
+# CIVIL PROCEEDINGS SCHEMAS
+# =================================================================================================================
+
+class CivilProceedings(BaseModel):
+ query: str = Field(None, description="Search term or phrase to help find information")
+ typSuduFacetFilter: Optional[List[str]] = Field(None, description="Court types (facet filter), e.g., Okresný súd, Krajský súd, Najvyšší súd SR, Špecializovaný trestný súd, etc.")
+ krajFacetFilter: Optional[List[str]] = Field(None, description="Regions (facet filter), e.g., Bratislavský kraj, Košický kraj, Prešovský kraj, etc.")
+ okresFacetFilter: Optional[List[str]] = Field(None, description="Districts (facet filter), e.g., Okres Banská Bystrica, Okres Bratislava I, Okres Košice I, etc.")
+ usekFacetFilter: Optional[List[str]] = Field(None, description="List of sections (facet filter), e.g., C, O, S")
+ formaUkonuFacetFilter: Optional[List[str]] = Field(None, description="List of action types (facet filter), e.g., Pojednávanie bez rozhodnutia, Pojednávanie a rozhodnutie, Verejné vyhlásenie rozsudku, Vyhlásenie rozsudku, Predbežné prejednanie sporu")
+ pojednavaniaOd: Optional[str] = Field(None, description="Hearing date from (DD.MM.YYYY)")
+ pojednavaniaDo: Optional[str] = Field(None, description="Hearing date to (DD.MM.YYYY)")
+ guidSudca: Optional[str] = Field(None, description="Judge identifier (e.g., sudca_1)")
+ guidSud: Optional[str] = Field(None, description="Court identifier (e.g., sud_100)")
+ spisovaZnacka: Optional[str] = Field(None, description="Case reference number (e.g., 7C/221/1991, 0Er/1966/1998)")
+ verejneVyhlasenie: Optional[bool] = Field(None,description="Flag indicating whether the announcement is public")
+ indexDatumOd: Optional[str] = Field(None, description="Index date from (format YYYY-MM-DD)")
+ indexDatumDo: Optional[str] = Field(None, description="Index date to (format YYYY-MM-DD)")
+ sortProperty: Optional[str] = Field(None, description="Field to sort the output by")
+ sortDirection: Literal["ASC", "DESC"] = Field("ASC", description="Sort direction (ASC or DESC)")
+ page: Optional[conint(ge=1)] = Field(None, description="Requested page number (starting from 1)")
+ size: Optional[conint(ge=1)] = Field(None, description="Number of results per page")
+
+class CivilProceedingsID(BaseModel):
+ id: str = Field(..., description="Identifier (e.g., 121e4d31-695e-41e1-9191-7c9ad5d8d484)")
+
+class CivilProceedingsAutocomplete(BaseModel):
+ query: str = Field(None, description="Search term or phrase to help find information")
+ guidSud: Optional[str] = Field(None, description="Court identifier (e.g., sud_100)")
+ guidSudca: Optional[str] = Field(None, description="Judge identifier (e.g., sudca_1)")
+ verejneVyhlasenie: Optional[bool] = Field(None,description="Flag indicating whether the announcement is public")
+ limit: Optional[conint(ge=1)] = Field(None, description="Limits the number of returned results (pagination)")
+
+
+# =================================================================================================================
+# ADMINISTRATIVE PROCEEDINGS SCHEMAS
+# =================================================================================================================
+
+class AdministrativeProceedings(BaseModel):
+ query: str = Field(None, description="Search term or phrase to help find information")
+ druhFacetFilter: Optional[List[str]] = Field(None, description="List of types (faceted filter), e.g., Konanie o inom správnom delikte podľa § 27 ods. 1 písm. b) ZZTP, onanie o inom správnom delikte podľa § 26 ods. 1 písm. a) ZZTP v znení účinnom od 1. júla 2018, etc.")
+ datumPravoplatnostiOd: Optional[str] = Field(None, description="Validity date from (DD.MM.YYYY)")
+ datumPravoplatnostiDo: Optional[str] = Field(None, description="Validity date to (DD.MM.YYYY)")
+ page: Optional[conint(ge=1)] = Field(None, description="Requested page number (starting from 1)")
+ size: Optional[conint(ge=1)] = Field(None, description="Number of results per page")
+ sortProperty: Optional[str] = Field(None, description="Field to sort the output by")
+ sortDirection: Literal["ASC", "DESC"] = Field("ASC", description="Sort direction (ASC or DESC)")
+
+class AdministrativeProceedingsID(BaseModel):
+ id: str = Field(..., description="Identifier of administrative proceedings (e.g., spravneKonanie_103)")
+
+class AdministrativeProceedingsAutocomplete(BaseModel):
+ query: str = Field(None, description="Search term or phrase to help find information")
+ limit: Optional[conint(ge=1)] = Field(None, description="Limits the number of returned results (pagination)")
+
diff --git a/api/tools/__init__.py b/api/tools/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/api/tools/admin_proceedings.py b/api/tools/admin_proceedings.py
new file mode 100644
index 0000000..2b5ef81
--- /dev/null
+++ b/api/tools/admin_proceedings.py
@@ -0,0 +1,60 @@
+from api.fetch_api_data import fetch_api_data, docstring_from_model
+from api.schemas import (AdministrativeProceedings,
+ AdministrativeProceedingsID,
+ AdministrativeProceedingsAutocomplete)
+from agents import function_tool
+
+BASE_URL = "https://obcan.justice.sk/pilot/api/ress-isu-service"
+
+class AdminProceedingsAPI:
+
+ @function_tool
+ @docstring_from_model(AdministrativeProceedings)
+ async def admin_proceedings(self, params: AdministrativeProceedings) -> dict:
+ """
+ Fetch a list of administrative proceedings from the Justice API with optional filtering.
+
+ Args:
+ params (AdministrativeProceedings): Filtering and pagination parameters.
+ {params}
+
+ Returns:
+ dict: A dictionary containing a list of administrative proceedings and related metadata.
+ """
+ url = f"{BASE_URL}/v1/spravneKonanie"
+
+ return await fetch_api_data(icon="✒️", url=url, params=params.model_dump(exclude_none=True))
+
+ @function_tool
+ @docstring_from_model(AdministrativeProceedingsID)
+ async def admin_proceedings_id(self, params: AdministrativeProceedingsID) -> dict:
+ """
+ Fetch detailed information about a specific administrative proceeding by its identifier.
+
+ Args:
+ params (AdministrativeProceedingsID): Unique identifier of the administrative proceeding.
+ {params}
+
+ Returns:
+ dict: Details of the specified administrative proceeding.
+ """
+ url = f"{BASE_URL}/v1/spravneKonanie/{params.id}"
+
+ return await fetch_api_data(icon="✒️", url=url, params=params.model_dump(exclude_none=True))
+
+ @function_tool
+ @docstring_from_model(AdministrativeProceedingsAutocomplete)
+ async def admin_proceedings_autocomplete(self, params: AdministrativeProceedingsAutocomplete) -> dict:
+ """
+ Fetch autocomplete suggestions for administrative proceeding search terms.
+
+ Args:
+ params (AdministrativeProceedingsAutocomplete): Parameters for autocomplete query (e.g., partial text).
+ {params}
+
+ Returns:
+ dict: Suggested values matching the input query.
+ """
+ url = f"{BASE_URL}/v1/spravneKonanie/autocomplete"
+
+ return await fetch_api_data(icon="✒️", url=url, params=params.model_dump(exclude_none=True))
\ No newline at end of file
diff --git a/api/tools/civil_proceedings.py b/api/tools/civil_proceedings.py
new file mode 100644
index 0000000..0f8892c
--- /dev/null
+++ b/api/tools/civil_proceedings.py
@@ -0,0 +1,62 @@
+from api.fetch_api_data import fetch_api_data, docstring_from_model
+from api.schemas import (CivilProceedings,
+ CivilProceedingsID,
+ CivilProceedingsAutocomplete)
+from agents import function_tool
+
+BASE_URL = "https://obcan.justice.sk/pilot/api/ress-isu-service"
+
+class CivilProceedingsAPI:
+
+ @function_tool
+ @docstring_from_model(CivilProceedings)
+ async def civil_proceedings(self, params: CivilProceedings) -> dict:
+ """
+ Fetch a list of civil proceedings and publicly announced judgments
+ from the Justice API with optional filtering.
+
+ Args:
+ params (CivilProceedings): Filtering and pagination parameters.
+ {params}
+
+ Returns:
+ dict: A dictionary containing a list of civil proceedings and related metadata.
+ """
+ url = f"{BASE_URL}/v1/obcianPojednavania"
+
+ return await fetch_api_data(icon="🖊️", url=url, params=params.model_dump(exclude_none=True))
+
+ @function_tool
+ @docstring_from_model(CivilProceedingsID)
+ async def civil_proceedings_id(self, params: CivilProceedingsID) -> dict:
+ """
+ Fetch detailed information about a specific civil proceeding
+ and publicly announced judgment by its identifier.
+
+ Args:
+ params (CivilProceedingsID): Unique identifier of the civil proceeding.
+ {params}
+
+ Returns:
+ dict: Details of the specified civil proceeding and judgment.
+ """
+ url = f"{BASE_URL}/v1/obcianPojednavania/{params.id}"
+
+ return await fetch_api_data(icon="🖊️", url=url, params=params.model_dump(exclude_none=True))
+
+ @function_tool
+ @docstring_from_model(CivilProceedingsAutocomplete)
+ async def civil_proceedings_autocomplete(self, params: CivilProceedingsAutocomplete) -> dict:
+ """
+ Fetch autocomplete suggestions for civil proceeding search terms.
+
+ Args:
+ params (CivilProceedingsAutocomplete): Parameters for autocomplete query (e.g., partial text).
+ {params}
+
+ Returns:
+ dict: Suggested values matching the input query.
+ """
+ url = f"{BASE_URL}/v1/obcianPojednavania/autocomplete"
+
+ return await fetch_api_data(icon="🖊️", url=url, params=params.model_dump(exclude_none=True))
\ No newline at end of file
diff --git a/api/tools/contracts.py b/api/tools/contracts.py
new file mode 100644
index 0000000..5527ea3
--- /dev/null
+++ b/api/tools/contracts.py
@@ -0,0 +1,59 @@
+from api.fetch_api_data import fetch_api_data, docstring_from_model
+from api.schemas import Contracts, ContractID, ContractAutocomplete
+from agents import function_tool
+
+BASE_URL = 'https://obcan.justice.sk/pilot/api/ress-isu-service'
+
+class ContractsAPI:
+
+ @function_tool
+ @docstring_from_model(Contracts)
+ async def contract(self, params: Contracts) -> dict:
+ """
+ Fetch a list of contracts from the Justice API with optional filtering.
+
+ Args:
+ params (Contracts): Filtering and pagination parameters.
+ {params}
+
+ Returns:
+ dict: A dictionary containing a list of contracts and related metadata.
+ """
+ url = f"{BASE_URL}/v1/zmluvy"
+
+ return await fetch_api_data(icon="📃", url=url, params=params.model_dump(exclude_none=True))
+
+
+ @function_tool
+ @docstring_from_model(ContractID)
+ async def contract_id(self, params: ContractID) -> dict:
+ """
+ Fetch detailed information about a specific contract by its identifier.
+
+ Args:
+ params (ContractID): Unique identifier of the contract.
+ {params}
+
+ Returns:
+ dict: Details of the specified contract.
+ """
+ url = f"{BASE_URL}/v1/zmluvy/{params.id}"
+
+ return await fetch_api_data(icon="📃", url=url, params=params.model_dump(exclude_none=True))
+
+ @function_tool
+ @docstring_from_model(ContractAutocomplete)
+ async def contract_autocomplete(self, params: ContractAutocomplete) -> dict:
+ """
+ Fetch autocomplete suggestions for contract-related search terms.
+
+ Args:
+ params (ContractAutocomplete): Parameters for autocomplete query (e.g., partial text).
+ {params}
+
+ Returns:
+ dict: Suggested values matching the input query.
+ """
+ url = f"{BASE_URL}/v1/zmluvy/autocomplete"
+
+ return await fetch_api_data(icon="📃", url=url, params=params.model_dump(exclude_none=True))
\ No newline at end of file
diff --git a/api/tools/coutrs.py b/api/tools/coutrs.py
new file mode 100644
index 0000000..19d9549
--- /dev/null
+++ b/api/tools/coutrs.py
@@ -0,0 +1,58 @@
+from api.fetch_api_data import fetch_api_data, docstring_from_model
+from api.schemas import Court, CourtID, CourtAutocomplete
+from agents import function_tool
+
+BASE_URL = 'https://obcan.justice.sk/pilot/api/ress-isu-service'
+
+class CourtsAPI:
+
+ @function_tool
+ @docstring_from_model(Court)
+ async def court(self, params: Court) -> dict:
+ """
+ Fetch a list of courts from the Justice API with optional filtering.
+
+ Args:
+ params (Court): Filtering and pagination parameters.
+ {params}
+
+ Returns:
+ dict: A dictionary containing a list of courts and related metadata.
+ """
+ url = f"{BASE_URL}/v1/sud"
+
+ return await fetch_api_data(icon="🏛️️", url=url, params=params.model_dump(exclude_none=True))
+
+ @function_tool
+ @docstring_from_model(CourtID)
+ async def court_id(self, params: CourtID) -> dict:
+ """
+ Fetch detailed information about a specific court by its identifier.
+
+ Args:
+ params (CourtID): Unique identifier of the court.
+ {params}
+
+ Returns:
+ dict: Details of the specified court.
+ """
+ url = f"{BASE_URL}/v1/sud/{params.id}"
+
+ return await fetch_api_data(icon="🏛️️", url=url, params=params.model_dump(exclude_none=True), remove_keys=['foto'])
+
+ @function_tool
+ @docstring_from_model(CourtAutocomplete)
+ async def court_autocomplete(self, params: CourtAutocomplete) -> dict:
+ """
+ Fetch autocomplete suggestions for court names.
+
+ Args:
+ params (CourtAutocomplete): Parameters for autocomplete.
+ {params}
+
+ Returns:
+ dict: Suggested court names matching the input query.
+ """
+ url = f"{BASE_URL}/v1/sud/autocomplete"
+
+ return await fetch_api_data(icon="🏛️️", url=url, params=params.model_dump(exclude_none=True))
diff --git a/api/tools/decisions.py b/api/tools/decisions.py
new file mode 100644
index 0000000..b0d23a9
--- /dev/null
+++ b/api/tools/decisions.py
@@ -0,0 +1,59 @@
+from api.fetch_api_data import fetch_api_data, docstring_from_model
+from api.schemas import Decision, DecisionID, DecisionAutocomplete
+from agents import function_tool
+
+BASE_URL = 'https://obcan.justice.sk/pilot/api/ress-isu-service'
+
+class DecisionsAPI:
+
+ @function_tool
+ @docstring_from_model(Decision)
+ async def decision(self, params: Decision) -> dict:
+ """
+ Fetch a list of decisions from the Justice API with optional filtering.
+
+ Args:
+ params (Decision): Filtering and pagination parameters.
+ {params}
+
+ Returns:
+ dict: A dictionary containing a list of decisions and related metadata.
+ """
+ url = f"{BASE_URL}/v1/rozhodnutie"
+
+ return await fetch_api_data(icon="⚖️️", url=url, params=params.model_dump(exclude_none=True))
+
+
+ @function_tool
+ @docstring_from_model(DecisionID)
+ async def decision_id(self, params: DecisionID) -> dict:
+ """
+ Fetch detailed information about a specific decision by its identifier.
+
+ Args:
+ params (DecisionID): Unique identifier of the decision.
+ {params}
+
+ Returns:
+ dict: Details of the specified decision.
+ """
+ url = f"{BASE_URL}/v1/rozhodnutie/{params.id}"
+
+ return await fetch_api_data(icon="⚖️️", url=url, params=params.model_dump(exclude_none=True))
+
+ @function_tool
+ @docstring_from_model(DecisionAutocomplete)
+ async def decision_autocomplete(self, params: DecisionAutocomplete) -> dict:
+ """
+ Fetch autocomplete suggestions for decision-related search terms.
+
+ Args:
+ params (DecisionAutocomplete): Parameters for autocomplete.
+ {params}
+
+ Returns:
+ dict: Suggested values matching the input query.
+ """
+ url = f"{BASE_URL}/v1/rozhodnutie/autocomplete"
+
+ return await fetch_api_data(icon="⚖️️", url=url, params=params.model_dump(exclude_none=True))
\ No newline at end of file
diff --git a/api/tools/judges.py b/api/tools/judges.py
new file mode 100644
index 0000000..8b9f727
--- /dev/null
+++ b/api/tools/judges.py
@@ -0,0 +1,60 @@
+from api.fetch_api_data import fetch_api_data, docstring_from_model
+from api.schemas import Judge, JudgeID, JudgeAutocomplete
+from agents import function_tool
+
+BASE_URL = 'https://obcan.justice.sk/pilot/api/ress-isu-service'
+
+class JudgesAPI:
+
+ @function_tool
+ @docstring_from_model(Judge)
+ async def judge(self, params: Judge) -> dict:
+ """
+ Fetch a list of judges from the Justice API with optional filtering.
+
+ Args:
+ params (Judge): Filtering and pagination parameters.
+ {params}
+
+ Returns:
+ dict: A dictionary containing a list of judges and related metadata.
+ """
+ url = f"{BASE_URL}/v1/sudca"
+
+ return await fetch_api_data(icon="🧑⚖️", url=url, params=params.model_dump(exclude_none=True), remove_keys=['sudcaMapList'])
+
+
+ @function_tool
+ @docstring_from_model(JudgeID)
+ async def judge_id(self, params: JudgeID) -> dict:
+ """
+ Fetch detailed information about a specific judge by their identifier.
+
+ Args:
+ params (JudgeID): Unique identifier of the judge.
+ {params}
+
+ Returns:
+ dict: Details of the specified judge.
+ """
+ url = f"{BASE_URL}/v1/sudca/{params.id}"
+
+ return await fetch_api_data(icon="🧑⚖️", url=url, params=params.model_dump(exclude_none=True))
+
+
+ @function_tool
+ @docstring_from_model(JudgeAutocomplete)
+ async def judge_autocomplete(self, params: JudgeAutocomplete) -> dict:
+ """
+ Fetch autocomplete suggestions for judges' names.
+
+ Args:
+ params (JudgeAutocomplete): Parameters for autocomplete query (e.g., partial name).
+ {params}
+
+ Returns:
+ dict: Suggested judge names matching the input query.
+ """
+ url = f"{BASE_URL}/v1/sudca/autocomplete"
+
+ return await fetch_api_data(icon="🧑⚖️", url=url, params=params.model_dump(exclude_none=True))
\ No newline at end of file
diff --git a/app.py b/app.py
new file mode 100644
index 0000000..de748f1
--- /dev/null
+++ b/app.py
@@ -0,0 +1,70 @@
+import chainlit as cl
+
+from core.initialize_agent import assistant_agent
+from core.stream_response import stream_response
+
+@cl.set_starters
+async def set_starters():
+ return [
+ cl.Starter(
+ label="What legal data can the agent find?",
+ message="What legal data can the agent find?",
+ icon="/public/icon/magnifying_glass.svg",
+ ),
+ cl.Starter(
+ label="What is the agent not allowed to do or use?",
+ message="What is the agent not allowed to do or use?",
+ icon="/public/icon/ban.svg",
+ ),
+ cl.Starter(
+ label="What are the details of your AI model?",
+ message="What are the details of your AI model?",
+ icon="/public/icon/hexagon.svg",
+ ),
+ cl.Starter(
+ label="What data sources does the agent rely on?",
+ message="What data sources does the agent rely on?",
+ icon="/public/icon/database.svg",
+ )
+ ]
+
+@cl.set_chat_profiles
+async def chat_profile():
+ return [
+ cl.ChatProfile(
+ name="qwen3-next:80b-cloud",
+ markdown_description="Uses **Qwen 3 Next 80B**",
+ ),
+ cl.ChatProfile(
+ name="gpt-oss:20b-cloud",
+ markdown_description="Uses **GPT-OSS 20B CLOUD**",
+ ),
+ cl.ChatProfile(
+ name="deepseek-v3.1:671b-cloud",
+ markdown_description="Uses **DEEPSEEK v3.1 671B CLOUD**",
+ ),
+ ]
+
+@cl.on_chat_start
+async def start():
+ cl.user_session.set("message_history", [])
+
+ profile = cl.user_session.get("chat_profile")
+ model_name = profile or "qwen3-next:80b-cloud"
+ agent = assistant_agent(model_name)
+ cl.user_session.set("agent", agent)
+
+
+@cl.on_message
+async def main(message: cl.Message):
+ agent = cl.user_session.get("agent")
+ message_history = cl.user_session.get("message_history")
+
+ message_history.append({"role": "user", "content": message.content})
+
+ msg = cl.Message(content="")
+ async for token in stream_response(agent, message_history):
+ await msg.stream_token(token)
+
+ message_history.append({"role": "assistant", "content": msg.content})
+ await msg.update()
\ No newline at end of file
diff --git a/chainlit.md b/chainlit.md
new file mode 100644
index 0000000..674a1fe
--- /dev/null
+++ b/chainlit.md
@@ -0,0 +1,17 @@
+# Legal AI Assistant ⚖️
+
+Welcome! This assistant is connected with the Slovak Ministry of Justice public systems.
+
+Its purpose is to:
+- Extract and interpret structured information from natural language queries.
+- Validate data and ensure accuracy.
+- Deliver clear, well-organized, and user-friendly responses.
+
+The assistant covers a wide range of legal topics, including:
+- Judges
+- Courts
+- Decisions
+- Contracts
+- Civil and administrative proceedings
+
+All outputs are designed to be easy to understand, providing concise summaries of complex legal information while remaining approachable for any user. 📄✨
diff --git a/core/__init__.py b/core/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/core/initialize_agent.py b/core/initialize_agent.py
new file mode 100644
index 0000000..16d2167
--- /dev/null
+++ b/core/initialize_agent.py
@@ -0,0 +1,55 @@
+from agents import Agent
+from agents import OpenAIChatCompletionsModel, AsyncOpenAI, ModelSettings
+from agents import set_tracing_disabled, enable_verbose_stdout_logging
+
+from core.system_prompt import get_system_prompt
+
+from api.tools.judges import JudgesAPI
+from api.tools.coutrs import CourtsAPI
+from api.tools.contracts import ContractsAPI
+from api.tools.decisions import DecisionsAPI
+from api.tools.admin_proceedings import AdminProceedingsAPI
+from api.tools.civil_proceedings import CivilProceedingsAPI
+
+set_tracing_disabled(True)
+enable_verbose_stdout_logging()
+
+class BaseAgent(Agent[None]): pass
+
+def assistant_agent(model_name: str = "qwen3-next:80b-cloud") -> BaseAgent:
+
+ judge_api = JudgesAPI()
+ court_api = CourtsAPI()
+ contract_api = ContractsAPI()
+ decision_api = DecisionsAPI()
+ admin_proceedings_api = AdminProceedingsAPI()
+ civil_proceedings_api = CivilProceedingsAPI()
+
+ client = AsyncOpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
+
+ model = OpenAIChatCompletionsModel(model=model_name, openai_client=client)
+
+ agent = BaseAgent(
+ name="Assistant",
+ instructions=get_system_prompt(model_name),
+ model=model,
+ model_settings=ModelSettings(
+ temperature=0.7,
+ tool_choice="auto",
+ parallel_tool_calls=False,
+ ),
+ tools=[
+ judge_api.judge, judge_api.judge_id, judge_api.judge_autocomplete,
+ court_api.court, court_api.court_id, court_api.court_autocomplete,
+ contract_api.contract, contract_api.contract_id, contract_api.contract_autocomplete,
+ decision_api.decision, decision_api.decision_id, decision_api.decision_autocomplete,
+ admin_proceedings_api.admin_proceedings, admin_proceedings_api.admin_proceedings_id,
+ admin_proceedings_api.admin_proceedings_autocomplete,
+ civil_proceedings_api.civil_proceedings, civil_proceedings_api.civil_proceedings_id,
+ civil_proceedings_api.civil_proceedings_autocomplete,
+ ],
+ tool_use_behavior="run_llm_again",
+ reset_tool_choice=True,
+ )
+
+ return agent
\ No newline at end of file
diff --git a/core/stream_response.py b/core/stream_response.py
new file mode 100644
index 0000000..f08bfd3
--- /dev/null
+++ b/core/stream_response.py
@@ -0,0 +1,26 @@
+from typing import Any
+from agents import Agent, Runner
+from agents import RunHooks, RunContextWrapper
+from openai.types.responses import ResponseTextDeltaEvent
+
+class MyHooks(RunHooks):
+ """Custom hooks to track usage after each model request."""
+ async def on_model_response(self, context: RunContextWrapper, agent: Agent, output: Any) -> None:
+ ctx_usage = context.usage
+ if ctx_usage:
+ print(f"\n🪙{agent.name} → {ctx_usage.requests} requests")
+ print(f"\n🪙Input tokens: {ctx_usage.input_tokens}")
+ print(f"\n🪙Output tokens: {ctx_usage.output_tokens}")
+ print(f"\n🪙Total tokens: {ctx_usage.total_tokens}")
+
+
+async def stream_response(agent: Agent, prompt: str):
+ """Stream agent response and update the UI."""
+ hooks = MyHooks()
+ try:
+ result = Runner.run_streamed(agent, input=prompt, hooks=hooks)
+ async for event in result.stream_events():
+ if event.type == "raw_response_event" and isinstance(event.data, ResponseTextDeltaEvent):
+ yield event.data.delta # <-- sends the next piece of response text
+ except Exception as e:
+ yield f"⚠️🖨️ Error: {e}"
diff --git a/core/system_prompt.py b/core/system_prompt.py
new file mode 100644
index 0000000..f4e7ae6
--- /dev/null
+++ b/core/system_prompt.py
@@ -0,0 +1,106 @@
+
+def get_system_prompt(model_name: str) -> str:
+
+ system_prompt = f"""
+ # Legal AI Assistant – Slovak Ministry of Justice API
+
+ ## Role
+ You are a **Legal AI Assistant** powered by {model_name}, integrated with the **official public APIs of the Ministry of Justice of the Slovak Republic**.
+
+ Your primary responsibility is to:
+ - Extract **structured parameters** from **natural-language user queries**
+ - Validate those parameters
+ - Retrieve data **exclusively** via registered API tools
+ - Present results in a **clear, human-friendly Slovak language format**
+
+ You act strictly as an **API data interpreter**, not as a legal advisor.
+
+ ---
+
+ ## Operational Constraints
+ - ✅ You **can** briefly explain your AI model, its creator, and how it differs from others
+ - ✅ You **can** list what you are not allowed to disclose if the user wants to know.
+ - ✅ Use **only data returned by official Ministry of Justice APIs**
+ - ❌ Do **not** use external legal knowledge
+ - ❌ Do **not** infer, speculate, or fill gaps beyond API responses
+ - ❌ Do **not** mention APIs, tools, schemas, function names, or internal logic in final answers
+
+ ---
+
+ ## Supported Legal Domains
+ You may process queries related to:
+ - Judges
+ - Courts
+ - Judicial Decisions
+ - Contracts
+ - Civil Proceedings
+ - Administrative Proceedings
+
+ Each domain provides:
+ - General search
+ - Search by ID
+ - Autocomplete / suggestion search
+
+ **Rule:** Always use the most specific tool available.
+
+ ---
+
+ ## Mandatory Processing Workflow
+ 1. **Intent Detection**
+ Identify the legal domain and user intent.
+
+ 2. **Parameter Extraction**
+ Extract names, IDs, keywords, court levels, regions, dates, statuses, and filters.
+
+ 3. **Input Normalization**
+ Automatically normalize common user errors when possible:
+ - `Okresný súd v Košice` → `Okresný súd v Košiciach`
+ - `12 decembra 2024` → `12.12.2024`
+ - `175` → `sud_175`
+
+ 4. **Validation**
+ Validate parameters against expected schemas.
+
+ 5. **Tool Invocation**
+ Call the appropriate registered API tool.
+
+ 6. **Result Handling**
+ - ✅ Success → summarize results clearly
+ - ⚠️ Empty result → explain that no data was found
+ - ❌ Error → explain the issue politely and clearly
+
+ 7. **Response Generation**
+ Produce a **final response in Slovak**, understandable to non-experts.
+
+ ---
+
+ ## Response Requirements
+ Final responses must:
+ - Be written **only in Slovak**
+ - Be friendly, clear, and concise
+ - Use emojis **sparingly** for readability
+ - Present multiple results as lists or structured sections
+ - Never expose internal system details
+
+ ---
+
+ ## Error Recovery Guidance
+ If no data is found:
+ - Calmly explain the reason
+ - Suggest corrected spellings, formats, or rephrasing when applicable
+
+ ---
+
+ ## Example Behavior
+
+ **User:**
+ “Find judge Novák in Bratislava”
+
+ **Expected Handling:**
+ - Domain: Judges
+ - Use autocomplete or filtered search
+ - Return a list of matching judges with court, status, and region
+ - Output in Slovak with clear formatting
+ """
+
+ return system_prompt
\ No newline at end of file
diff --git a/public/favicon.png b/public/favicon.png
new file mode 100644
index 0000000..c6d2679
Binary files /dev/null and b/public/favicon.png differ
diff --git a/public/icon/ban.svg b/public/icon/ban.svg
new file mode 100644
index 0000000..f5bf04b
--- /dev/null
+++ b/public/icon/ban.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icon/database.svg b/public/icon/database.svg
new file mode 100644
index 0000000..08ce720
--- /dev/null
+++ b/public/icon/database.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icon/hexagon.svg b/public/icon/hexagon.svg
new file mode 100644
index 0000000..2110eae
--- /dev/null
+++ b/public/icon/hexagon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/icon/magnifying_glass.svg b/public/icon/magnifying_glass.svg
new file mode 100644
index 0000000..1069764
--- /dev/null
+++ b/public/icon/magnifying_glass.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/logo_dark.png b/public/logo_dark.png
new file mode 100644
index 0000000..a477f86
Binary files /dev/null and b/public/logo_dark.png differ
diff --git a/public/logo_light.png b/public/logo_light.png
new file mode 100644
index 0000000..a477f86
Binary files /dev/null and b/public/logo_light.png differ
diff --git a/public/styles.css b/public/styles.css
new file mode 100644
index 0000000..d71f306
--- /dev/null
+++ b/public/styles.css
@@ -0,0 +1,55 @@
+#readme-button {
+ display: none !important;
+}
+
+.text-xs {
+ display: none !important;
+}
+
+.rounded-3xl{
+ border-radius: 0.9rem !important;
+}
+
+#chat-submit {
+ border-radius: 0.5rem !important;
+}
+
+#starters {
+ order: 1 !important;
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+}
+
+#starters button {
+ height: auto !important;
+ white-space: normal !important;
+
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ text-align: left;
+}
+
+
+#starters button img {
+ margin-bottom: 6px;
+}
+
+#starters p {
+ white-space: normal !important;
+ overflow: visible !important;
+ text-overflow: unset !important;
+}
+
+#welcome-screen {
+ position: relative;
+}
+
+#message-composer {
+ order: 2 !important;
+ display: flex !important;
+ flex-direction: row !important;
+ align-items: center !important;
+ gap: 8px !important;
+ min-height: 1rem;
+}
diff --git a/public/theme.json b/public/theme.json
new file mode 100644
index 0000000..f208c5e
--- /dev/null
+++ b/public/theme.json
@@ -0,0 +1,68 @@
+{
+ "custom_fonts": [],
+ "variables": {
+ "light": {
+ "--font-sans": "'Inter', sans-serif",
+ "--font-mono": "source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace",
+ "--background": "0 0% 100%",
+ "--foreground": "0 0% 5%",
+ "--card": "0 0% 100%",
+ "--card-foreground": "0 0% 5%",
+ "--popover": "0 0% 100%",
+ "--popover-foreground": "0 0% 5%",
+ "--primary": "208 95% 56%",
+ "--primary-foreground": "0 0% 100%",
+ "--secondary": "210 40% 96.1%",
+ "--secondary-foreground": "222.2 47.4% 11.2%",
+ "--muted": "0 0% 90%",
+ "--muted-foreground": "0 0% 36%",
+ "--accent": "0 0% 95%",
+ "--accent-foreground": "222.2 47.4% 11.2%",
+ "--destructive": "0 84.2% 60.2%",
+ "--destructive-foreground": "210 40% 98%",
+ "--border": "0 0% 90%",
+ "--input": "0 0% 90%",
+ "--ring": "208 95% 56%",
+ "--radius": "0.75rem",
+ "--sidebar-background": "0 0% 98%",
+ "--sidebar-foreground": "240 5.3% 26.1%",
+ "--sidebar-primary": "240 5.9% 10%",
+ "--sidebar-primary-foreground": "0 0% 98%",
+ "--sidebar-accent": "240 4.8% 95.9%",
+ "--sidebar-accent-foreground": "240 5.9% 10%",
+ "--sidebar-border": "220 13% 91%",
+ "--sidebar-ring": "217.2 91.2% 59.8%"
+ },
+ "dark": {
+ "--font-sans": "'Inter', sans-serif",
+ "--font-mono": "source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace",
+ "--background": "0 0% 13%",
+ "--foreground": "0 0% 93%",
+ "--card": "0 0% 18%",
+ "--card-foreground": "210 40% 98%",
+ "--popover": "0 0% 18%",
+ "--popover-foreground": "210 40% 98%",
+ "--primary": "208 95% 56%",
+ "--primary-foreground": "0 0% 100%",
+ "--secondary": "0 0% 19%",
+ "--secondary-foreground": "210 40% 98%",
+ "--muted": "0 1% 26%",
+ "--muted-foreground": "0 0% 71%",
+ "--accent": "0 0% 26%",
+ "--accent-foreground": "210 40% 98%",
+ "--destructive": "0 62.8% 30.6%",
+ "--destructive-foreground": "210 40% 98%",
+ "--border": "0 1% 26%",
+ "--input": "0 1% 26%",
+ "--ring": "208 95% 56%",
+ "--sidebar-background": "0 0% 9%",
+ "--sidebar-foreground": "240 4.8% 95.9%",
+ "--sidebar-primary": "224.3 76.3% 48%",
+ "--sidebar-primary-foreground": "0 0% 100%",
+ "--sidebar-accent": "0 0% 13%",
+ "--sidebar-accent-foreground": "240 4.8% 95.9%",
+ "--sidebar-border": "240 3.7% 15.9%",
+ "--sidebar-ring": "217.2 91.2% 59.8%"
+ }
+ }
+}
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..11b245d
Binary files /dev/null and b/requirements.txt differ