mulambo commited on
Commit
fea1bd1
·
0 Parent(s):

Initial commit

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
# main_agent.py ADDED
File without changes
(módulo ADDED
File without changes
.chainlit/config.toml ADDED
@@ -0,0 +1,250 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SUPEREZIO ENTERPRISE EDITION - CONFIGURATION FILE
2
+ # Configuração otimizada baseada nas melhores práticas 2025
3
+ # Autor: Marco Barreto + Claude Sonnet 4
4
+
5
+ [project]
6
+ # Identificação do projeto
7
+ name = "SUPEREZIO Enterprise Edition"
8
+ description = "Sistema Cognitivo de Automação Multi-Modal com IA Distribuída"
9
+ author = "Marco Barreto"
10
+ tags = ["AI", "Enterprise", "Automation", "Cognitive-Interface", "Multi-Modal"]
11
+ version = "6.0.0"
12
+
13
+ # Configurações de ambiente
14
+ user_env = []
15
+ session_timeout = 7200 # 2 horas
16
+ user_session_timeout = 86400 # 24 horas
17
+ cache = true
18
+
19
+ [UI]
20
+ # Interface customizations
21
+ name = "SUPEREZIO Enterprise"
22
+ show_readme_as_default = true
23
+ default_collapse_content = false
24
+ default_expand_messages = true
25
+ hide_cot = false
26
+
27
+ # CSS customization
28
+ custom_css = "/superezio.css"
29
+ custom_font = "Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
30
+
31
+ # Layout
32
+ default_sidebar_state = "open"
33
+ layout = "wide"
34
+
35
+ # Theme configuration
36
+ default_theme = "dark"
37
+
38
+ [UI.theme]
39
+ primary_color = "#00D4FF" # Cyan enterprise
40
+ background_color = "#0A0A0A" # Deep black
41
+ text_color = "#FFFFFF" # Pure white
42
+ secondary_color = "#1E2A3A" # Dark blue-gray
43
+ accent_color = "#7C3AED" # Purple accent
44
+
45
+ [UI.theme.dark]
46
+ # Modo escuro otimizado
47
+ background = "#0A0A0A"
48
+ foreground = "#FFFFFF"
49
+ primary = "#00D4FF"
50
+ secondary = "#1E2A3A"
51
+ accent = "#7C3AED"
52
+ surface = "#1A1A1A"
53
+ on_surface = "#E0E0E0"
54
+
55
+ [UI.theme.light]
56
+ # Modo claro (fallback)
57
+ background = "#FFFFFF"
58
+ foreground = "#0A0A0A"
59
+ primary = "#0066CC"
60
+ secondary = "#F5F5F5"
61
+ accent = "#6B46C1"
62
+
63
+ [features]
64
+ # Recursos enterprise habilitados
65
+ show_data_layer = false
66
+ multi_modal = true
67
+ speech_to_text = false
68
+ latex = true
69
+ unsafe_allow_html = true
70
+ edit_message = true
71
+
72
+ # Recursos avançados
73
+ streaming = true
74
+ auto_tag_thread = true
75
+ user_message_autoscroll = true
76
+
77
+ # Segurança
78
+ authentication_required = false
79
+ password_auth_callback = false
80
+
81
+ [tool]
82
+ # Configurações de ferramentas
83
+ enabled = true
84
+ max_iterations = 50
85
+ timeout = 300
86
+
87
+ [file]
88
+ # Configurações de arquivo
89
+ max_size_mb = 100
90
+ allowed_mime_types = [
91
+ "text/plain",
92
+ "text/markdown",
93
+ "text/csv",
94
+ "application/json",
95
+ "application/pdf",
96
+ "image/jpeg",
97
+ "image/png",
98
+ "image/webp"
99
+ ]
100
+ upload_timeout = 60
101
+
102
+ [chain_of_thought]
103
+ # Chain of thought configuration
104
+ mode = "full" # hidden, tool_call, full
105
+ show_tool_calls = true
106
+ expand_by_default = true
107
+
108
+ [audio]
109
+ # Configurações de áudio
110
+ enabled = false
111
+ min_decibels = -45
112
+ initial_silence_timeout = 3000
113
+ silence_timeout = 1500
114
+ chunk_duration_ms = 1000
115
+ sample_rate = 44100
116
+
117
+ [copilot]
118
+ # Configurações para modo copilot
119
+ button_color = "#00D4FF"
120
+ button_hover_color = "#0099CC"
121
+ expand_button = true
122
+ chat_trigger = "SuperEzio"
123
+
124
+ [meta]
125
+ # Metadados
126
+ generated_by = "SUPEREZIO Enterprise v6.0.0"
127
+ charset = "UTF-8"
128
+ author = "Marco Barreto"
129
+ license = "Enterprise"
130
+ created_at = "2025-08-05"
131
+
132
+ # URLs e links
133
+ homepage = "https://superezio.enterprise"
134
+ documentation = "https://docs.superezio.enterprise"
135
+ support = "https://support.superezio.enterprise"
136
+
137
+ [telemetry]
138
+ # Telemetria e analytics
139
+ enabled = true
140
+ anonymous = true
141
+ collect_usage = true
142
+
143
+ [performance]
144
+ # Otimizações de performance
145
+ enable_compression = true
146
+ max_concurrent_requests = 100
147
+ request_timeout = 30
148
+ enable_http2 = true
149
+
150
+ # Memory management
151
+ max_memory_usage_mb = 2048
152
+ garbage_collection_threshold = 0.8
153
+
154
+ [logging]
155
+ # Configurações de logging enterprise
156
+ level = "INFO"
157
+ format = "json"
158
+ enable_correlation_ids = true
159
+ enable_performance_logging = true
160
+
161
+ # Rotação de logs
162
+ max_log_files = 10
163
+ max_log_size_mb = 50
164
+
165
+ [security]
166
+ # Configurações de segurança
167
+ enable_rate_limiting = true
168
+ rate_limit_requests_per_minute = 100
169
+ enable_input_sanitization = true
170
+ max_input_length = 10000
171
+
172
+ # CORS
173
+ allowed_origins = ["*"]
174
+ allowed_methods = ["GET", "POST", "PUT", "DELETE"]
175
+ allowed_headers = ["*"]
176
+
177
+ [monitoring]
178
+ # Monitoramento e health checks
179
+ enable_health_checks = true
180
+ health_check_interval = 60
181
+ enable_metrics = true
182
+ metrics_port = 9090
183
+
184
+ [database]
185
+ # Configurações de banco (se necessário)
186
+ enabled = false
187
+ connection_string = ""
188
+ max_connections = 10
189
+ connection_timeout = 30
190
+
191
+ [redis]
192
+ # Configurações Redis (se necessário)
193
+ enabled = false
194
+ host = "localhost"
195
+ port = 6379
196
+ password = ""
197
+ db = 0
198
+
199
+ [deployment]
200
+ # Configurações de deployment
201
+ environment = "production"
202
+ debug = false
203
+ hot_reload = false
204
+ serve_static_files = true
205
+
206
+ # Network
207
+ host = "0.0.0.0"
208
+ port = 8000
209
+ max_workers = 4
210
+
211
+ [backup]
212
+ # Configurações de backup
213
+ enabled = true
214
+ interval_hours = 24
215
+ max_backups = 7
216
+ backup_location = "./backups"
217
+
218
+ [experimental]
219
+ # Recursos experimentais
220
+ websocket_compression = true
221
+ http3_support = false
222
+ advanced_caching = true
223
+ ai_model_optimization = true
224
+
225
+ [integrations]
226
+ # Integrações externas
227
+ openai_api_key = ""
228
+ anthropic_api_key = ""
229
+ google_api_key = ""
230
+ azure_api_key = ""
231
+
232
+ # Webhook endpoints
233
+ webhook_url = ""
234
+ webhook_secret = ""
235
+
236
+ [advanced]
237
+ # Configurações avançadas
238
+ enable_custom_middleware = true
239
+ enable_request_preprocessing = true
240
+ enable_response_postprocessing = true
241
+ enable_custom_handlers = true
242
+
243
+ # Circuit breaker
244
+ circuit_breaker_failure_threshold = 5
245
+ circuit_breaker_recovery_timeout = 60
246
+
247
+ # Retry configuration
248
+ max_retries = 3
249
+ retry_backoff_multiplier = 2
250
+ retry_max_delay = 60
.chainlit/translations/bn.json ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "common": {
3
+ "actions": {
4
+ "cancel": "\u09ac\u09be\u09a4\u09bf\u09b2 \u0995\u09b0\u09c1\u09a8",
5
+ "confirm": "\u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u0995\u09b0\u09c1\u09a8",
6
+ "continue": "\u099a\u09be\u09b2\u09bf\u09af\u09bc\u09c7 \u09af\u09be\u09a8",
7
+ "goBack": "\u09aa\u09bf\u099b\u09a8\u09c7 \u09af\u09be\u09a8",
8
+ "reset": "\u09b0\u09bf\u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8",
9
+ "submit": "\u099c\u09ae\u09be \u09a6\u09bf\u09a8"
10
+ },
11
+ "status": {
12
+ "loading": "\u09b2\u09cb\u09a1 \u09b9\u099a\u09cd\u099b\u09c7...",
13
+ "error": {
14
+ "default": "\u098f\u0995\u099f\u09bf \u09a4\u09cd\u09b0\u09c1\u099f\u09bf \u0998\u099f\u09c7\u099b\u09c7",
15
+ "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"
16
+ }
17
+ }
18
+ },
19
+ "auth": {
20
+ "login": {
21
+ "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",
22
+ "form": {
23
+ "email": {
24
+ "label": "\u0987\u09ae\u09c7\u0987\u09b2 \u09a0\u09bf\u0995\u09be\u09a8\u09be",
25
+ "required": "\u0987\u09ae\u09c7\u0987\u09b2 \u098f\u0995\u099f\u09bf \u0986\u09ac\u09b6\u09cd\u09af\u0995 \u0995\u09cd\u09b7\u09c7\u09a4\u09cd\u09b0"
26
+ },
27
+ "password": {
28
+ "label": "\u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1",
29
+ "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"
30
+ },
31
+ "actions": {
32
+ "signin": "\u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09c1\u09a8"
33
+ },
34
+ "alternativeText": {
35
+ "or": "\u0985\u09a5\u09ac\u09be"
36
+ }
37
+ },
38
+ "errors": {
39
+ "default": "\u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09be \u09b8\u09ae\u09cd\u09ad\u09ac \u09b9\u099a\u09cd\u099b\u09c7 \u09a8\u09be",
40
+ "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",
41
+ "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",
42
+ "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",
43
+ "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",
44
+ "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",
45
+ "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",
46
+ "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",
47
+ "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",
48
+ "emailSignin": "\u0987\u09ae\u09c7\u0987\u09b2 \u09aa\u09be\u09a0\u09be\u09a8\u09cb \u09af\u09be\u09af\u09bc\u09a8\u09bf",
49
+ "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",
50
+ "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",
51
+ "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"
52
+ }
53
+ },
54
+ "provider": {
55
+ "continue": "{{provider}} \u09a6\u09bf\u09af\u09bc\u09c7 \u099a\u09be\u09b2\u09bf\u09af\u09bc\u09c7 \u09af\u09be\u09a8"
56
+ }
57
+ },
58
+ "chat": {
59
+ "input": {
60
+ "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...",
61
+ "actions": {
62
+ "send": "\u09ac\u09be\u09b0\u09cd\u09a4\u09be \u09aa\u09be\u09a0\u09be\u09a8",
63
+ "stop": "\u0995\u09be\u099c \u09ac\u09a8\u09cd\u09a7 \u0995\u09b0\u09c1\u09a8",
64
+ "attachFiles": "\u09ab\u09be\u0987\u09b2 \u09b8\u0982\u09af\u09c1\u0995\u09cd\u09a4 \u0995\u09b0\u09c1\u09a8"
65
+ }
66
+ },
67
+ "speech": {
68
+ "start": "\u09b0\u09c7\u0995\u09b0\u09cd\u09a1\u09bf\u0982 \u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09c1\u09a8",
69
+ "stop": "\u09b0\u09c7\u0995\u09b0\u09cd\u09a1\u09bf\u0982 \u09ac\u09a8\u09cd\u09a7 \u0995\u09b0\u09c1\u09a8",
70
+ "connecting": "\u09b8\u0982\u09af\u09cb\u0997 \u0995\u09b0\u09be \u09b9\u099a\u09cd\u099b\u09c7"
71
+ },
72
+ "fileUpload": {
73
+ "dragDrop": "\u098f\u0996\u09be\u09a8\u09c7 \u09ab\u09be\u0987\u09b2 \u099f\u09c7\u09a8\u09c7 \u0986\u09a8\u09c1\u09a8",
74
+ "browse": "\u09ab\u09be\u0987\u09b2 \u09ac\u09cd\u09b0\u09be\u0989\u099c \u0995\u09b0\u09c1\u09a8",
75
+ "sizeLimit": "\u09b8\u09c0\u09ae\u09be:",
76
+ "errors": {
77
+ "failed": "\u0986\u09aa\u09b2\u09cb\u09a1 \u09ac\u09cd\u09af\u09b0\u09cd\u09a5 \u09b9\u09af\u09bc\u09c7\u099b\u09c7",
78
+ "cancelled": "\u0986\u09aa\u09b2\u09cb\u09a1 \u09ac\u09be\u09a4\u09bf\u09b2 \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7"
79
+ }
80
+ },
81
+ "messages": {
82
+ "status": {
83
+ "using": "\u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u099b\u09c7",
84
+ "used": "\u09ac\u09cd\u09af\u09ac\u09b9\u09c3\u09a4"
85
+ },
86
+ "actions": {
87
+ "copy": {
88
+ "button": "\u0995\u09cd\u09b2\u09bf\u09aa\u09ac\u09cb\u09b0\u09cd\u09a1\u09c7 \u0995\u09aa\u09bf \u0995\u09b0\u09c1\u09a8",
89
+ "success": "\u0995\u09aa\u09bf \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7!"
90
+ }
91
+ },
92
+ "feedback": {
93
+ "positive": "\u09b8\u09b9\u09be\u09af\u09bc\u0995",
94
+ "negative": "\u09b8\u09b9\u09be\u09af\u09bc\u0995 \u09a8\u09af\u09bc",
95
+ "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",
96
+ "dialog": {
97
+ "title": "\u09ae\u09a8\u09cd\u09a4\u09ac\u09cd\u09af \u09af\u09cb\u0997 \u0995\u09b0\u09c1\u09a8",
98
+ "submit": "\u09aa\u09cd\u09b0\u09a4\u09bf\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u099c\u09ae\u09be \u09a6\u09bf\u09a8"
99
+ },
100
+ "status": {
101
+ "updating": "\u09b9\u09be\u09b2\u09a8\u09be\u0997\u09be\u09a6 \u0995\u09b0\u09be \u09b9\u099a\u09cd\u099b\u09c7",
102
+ "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"
103
+ }
104
+ }
105
+ },
106
+ "history": {
107
+ "title": "\u09b8\u09b0\u09cd\u09ac\u09b6\u09c7\u09b7 \u0987\u09a8\u09aa\u09c1\u099f",
108
+ "empty": "\u0995\u09cb\u09a8\u09cb \u09a4\u09a5\u09cd\u09af \u09a8\u09c7\u0987...",
109
+ "show": "\u0987\u09a4\u09bf\u09b9\u09be\u09b8 \u09a6\u09c7\u0996\u09c1\u09a8"
110
+ },
111
+ "settings": {
112
+ "title": "\u09b8\u09c7\u099f\u09bf\u0982\u09b8 \u09aa\u09cd\u09af\u09be\u09a8\u09c7\u09b2"
113
+ },
114
+ "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"
115
+ },
116
+ "threadHistory": {
117
+ "sidebar": {
118
+ "title": "\u09aa\u09c2\u09b0\u09cd\u09ac\u09ac\u09b0\u09cd\u09a4\u09c0 \u099a\u09cd\u09af\u09be\u099f",
119
+ "filters": {
120
+ "search": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8",
121
+ "placeholder": "Search conversations..."
122
+ },
123
+ "timeframes": {
124
+ "today": "\u0986\u099c",
125
+ "yesterday": "\u0997\u09a4\u0995\u09be\u09b2",
126
+ "previous7days": "\u0997\u09a4 \u09ed \u09a6\u09bf\u09a8",
127
+ "previous30days": "\u0997\u09a4 \u09e9\u09e6 \u09a6\u09bf\u09a8"
128
+ },
129
+ "empty": "\u0995\u09cb\u09a8\u09cb \u09a5\u09cd\u09b0\u09c7\u09a1 \u09aa\u09be\u0993\u09af\u09bc\u09be \u09af\u09be\u09af\u09bc\u09a8\u09bf",
130
+ "actions": {
131
+ "close": "\u09b8\u09be\u0987\u09a1\u09ac\u09be\u09b0 \u09ac\u09a8\u09cd\u09a7 \u0995\u09b0\u09c1\u09a8",
132
+ "open": "\u09b8\u09be\u0987\u09a1\u09ac\u09be\u09b0 \u0996\u09c1\u09b2\u09c1\u09a8"
133
+ }
134
+ },
135
+ "thread": {
136
+ "untitled": "\u09b6\u09bf\u09b0\u09cb\u09a8\u09be\u09ae\u09b9\u09c0\u09a8 \u0986\u09b2\u09cb\u099a\u09a8\u09be",
137
+ "menu": {
138
+ "rename": "Rename",
139
+ "delete": "Delete"
140
+ },
141
+ "actions": {
142
+ "delete": {
143
+ "title": "\u09ae\u09c1\u099b\u09c7 \u09ab\u09c7\u09b2\u09be \u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u0995\u09b0\u09c1\u09a8",
144
+ "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",
145
+ "success": "\u099a\u09cd\u09af\u09be\u099f \u09ae\u09c1\u099b\u09c7 \u09ab\u09c7\u09b2\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7",
146
+ "inProgress": "\u099a\u09cd\u09af\u09be\u099f \u09ae\u09c1\u099b\u09c7 \u09ab\u09c7\u09b2\u09be \u09b9\u099a\u09cd\u099b\u09c7"
147
+ },
148
+ "rename": {
149
+ "title": "\u09a5\u09cd\u09b0\u09c7\u09a1\u09c7\u09b0 \u09a8\u09be\u09ae \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u0995\u09b0\u09c1\u09a8",
150
+ "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",
151
+ "form": {
152
+ "name": {
153
+ "label": "\u09a8\u09be\u09ae",
154
+ "placeholder": "\u09a8\u09a4\u09c1\u09a8 \u09a8\u09be\u09ae \u09b2\u09bf\u0996\u09c1\u09a8"
155
+ }
156
+ },
157
+ "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!",
158
+ "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"
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "navigation": {
164
+ "header": {
165
+ "chat": "\u099a\u09cd\u09af\u09be\u099f",
166
+ "readme": "\u09b0\u09bf\u09a1\u09ae\u09bf",
167
+ "theme": {
168
+ "light": "Light Theme",
169
+ "dark": "Dark Theme",
170
+ "system": "Follow System"
171
+ }
172
+ },
173
+ "newChat": {
174
+ "button": "\u09a8\u09a4\u09c1\u09a8 \u099a\u09cd\u09af\u09be\u099f",
175
+ "dialog": {
176
+ "title": "\u09a8\u09a4\u09c1\u09a8 \u099a\u09cd\u09af\u09be\u099f \u09a4\u09c8\u09b0\u09bf \u0995\u09b0\u09c1\u09a8",
177
+ "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?",
178
+ "tooltip": "\u09a8\u09a4\u09c1\u09a8 \u099a\u09cd\u09af\u09be\u099f"
179
+ }
180
+ },
181
+ "user": {
182
+ "menu": {
183
+ "settings": "\u09b8\u09c7\u099f\u09bf\u0982\u09b8",
184
+ "settingsKey": "S",
185
+ "apiKeys": "\u098f\u09aa\u09bf\u0986\u0987 \u0995\u09c0",
186
+ "logout": "\u09b2\u0997\u0986\u0989\u099f"
187
+ }
188
+ }
189
+ },
190
+ "apiKeys": {
191
+ "title": "\u09aa\u09cd\u09b0\u09af\u09bc\u09cb\u099c\u09a8\u09c0\u09af\u09bc \u098f\u09aa\u09bf\u0986\u0987 \u0995\u09c0",
192
+ "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",
193
+ "success": {
194
+ "saved": "\u09b8\u09ab\u09b2\u09ad\u09be\u09ac\u09c7 \u09b8\u0982\u09b0\u0995\u09cd\u09b7\u09bf\u09a4 \u09b9\u09af\u09bc\u09c7\u099b\u09c7"
195
+ }
196
+ },
197
+ "alerts": {
198
+ "info": "Info",
199
+ "note": "Note",
200
+ "tip": "Tip",
201
+ "important": "Important",
202
+ "warning": "Warning",
203
+ "caution": "Caution",
204
+ "debug": "Debug",
205
+ "example": "Example",
206
+ "success": "Success",
207
+ "help": "Help",
208
+ "idea": "Idea",
209
+ "pending": "Pending",
210
+ "security": "Security",
211
+ "beta": "Beta",
212
+ "best-practice": "Best Practice"
213
+ }
214
+ }
.chainlit/translations/el-GR.json ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "common": {
3
+ "actions": {
4
+ "cancel": "\u0386\u03ba\u03c5\u03c1\u03bf",
5
+ "confirm": "\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7",
6
+ "continue": "\u03a3\u03c5\u03bd\u03ad\u03c7\u03b5\u03b9\u03b1",
7
+ "goBack": "\u0395\u03c0\u03b9\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae",
8
+ "reset": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac",
9
+ "submit": "\u03a5\u03c0\u03bf\u03b2\u03bf\u03bb\u03ae"
10
+ },
11
+ "status": {
12
+ "loading": "\u03a6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7...",
13
+ "error": {
14
+ "default": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1",
15
+ "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"
16
+ }
17
+ }
18
+ },
19
+ "auth": {
20
+ "login": {
21
+ "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",
22
+ "form": {
23
+ "email": {
24
+ "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",
25
+ "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"
26
+ },
27
+ "password": {
28
+ "label": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2",
29
+ "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"
30
+ },
31
+ "actions": {
32
+ "signin": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7"
33
+ },
34
+ "alternativeText": {
35
+ "or": "\u03ae"
36
+ }
37
+ },
38
+ "errors": {
39
+ "default": "\u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7",
40
+ "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",
41
+ "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",
42
+ "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",
43
+ "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",
44
+ "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",
45
+ "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",
46
+ "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",
47
+ "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",
48
+ "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",
49
+ "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",
50
+ "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",
51
+ "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"
52
+ }
53
+ },
54
+ "provider": {
55
+ "continue": "\u03a3\u03c5\u03bd\u03ad\u03c7\u03b5\u03b9\u03b1 \u03bc\u03b5 {{provider}}"
56
+ }
57
+ },
58
+ "chat": {
59
+ "input": {
60
+ "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...",
61
+ "actions": {
62
+ "send": "\u0391\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ae \u03bc\u03b7\u03bd\u03cd\u03bc\u03b1\u03c4\u03bf\u03c2",
63
+ "stop": "\u0394\u03b9\u03b1\u03ba\u03bf\u03c0\u03ae \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2",
64
+ "attachFiles": "\u0395\u03c0\u03b9\u03c3\u03cd\u03bd\u03b1\u03c8\u03b7 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd"
65
+ }
66
+ },
67
+ "speech": {
68
+ "start": "\u0388\u03bd\u03b1\u03c1\u03be\u03b7 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2",
69
+ "stop": "\u0394\u03b9\u03b1\u03ba\u03bf\u03c0\u03ae \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2",
70
+ "connecting": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7"
71
+ },
72
+ "fileUpload": {
73
+ "dragDrop": "\u03a3\u03cd\u03c1\u03b5\u03c4\u03b5 \u03b1\u03c1\u03c7\u03b5\u03af\u03b1 \u03b5\u03b4\u03ce",
74
+ "browse": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd",
75
+ "sizeLimit": "\u038c\u03c1\u03b9\u03bf:",
76
+ "errors": {
77
+ "failed": "\u0397 \u03bc\u03b5\u03c4\u03b1\u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5",
78
+ "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"
79
+ }
80
+ },
81
+ "messages": {
82
+ "status": {
83
+ "using": "\u039c\u03b5 \u03c4\u03b7 \u03c7\u03c1\u03ae\u03c3\u03b7",
84
+ "used": "\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03b8\u03b7\u03ba\u03b5"
85
+ },
86
+ "actions": {
87
+ "copy": {
88
+ "button": "\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03c3\u03c4\u03bf \u03c0\u03c1\u03cc\u03c7\u03b5\u03b9\u03c1\u03bf",
89
+ "success": "\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03ac\u03c6\u03b7\u03ba\u03b5!"
90
+ }
91
+ },
92
+ "feedback": {
93
+ "positive": "\u03a7\u03c1\u03ae\u03c3\u03b9\u03bc\u03bf\u03c2",
94
+ "negative": "\u039c\u03b7 \u03c7\u03c1\u03ae\u03c3\u03b9\u03bc\u03bf\u03c2",
95
+ "edit": "\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c3\u03c7\u03bf\u03bb\u03af\u03c9\u03bd",
96
+ "dialog": {
97
+ "title": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03c3\u03c7\u03bf\u03bb\u03af\u03bf\u03c5",
98
+ "submit": "\u03a5\u03c0\u03bf\u03b2\u03bf\u03bb\u03ae \u03c3\u03c7\u03bf\u03bb\u03af\u03c9\u03bd"
99
+ },
100
+ "status": {
101
+ "updating": "\u0395\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03bd\u03b5\u03c4\u03b1\u03b9",
102
+ "updated": "\u03a4\u03b1 \u03c3\u03c7\u03cc\u03bb\u03b9\u03b1 \u03b5\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03b8\u03b7\u03ba\u03b1\u03bd"
103
+ }
104
+ }
105
+ },
106
+ "history": {
107
+ "title": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b5\u03c2 \u03b5\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ad\u03c2",
108
+ "empty": "\u03a4\u03cc\u03c3\u03bf \u03ac\u03b4\u03b5\u03b9\u03bf...",
109
+ "show": "\u03a0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ae \u03b9\u03c3\u03c4\u03bf\u03c1\u03b9\u03ba\u03bf\u03cd"
110
+ },
111
+ "settings": {
112
+ "title": "\u03a0\u03af\u03bd\u03b1\u03ba\u03b1\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c9\u03bd"
113
+ },
114
+ "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."
115
+ },
116
+ "threadHistory": {
117
+ "sidebar": {
118
+ "title": "\u03a0\u03b1\u03bb\u03b1\u03b9\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b5\u03c2",
119
+ "filters": {
120
+ "search": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7",
121
+ "placeholder": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03b9\u03ce\u03bd..."
122
+ },
123
+ "timeframes": {
124
+ "today": "\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1",
125
+ "yesterday": "\u03a7\u03b8\u03b5\u03c2",
126
+ "previous7days": "\u03a0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b5\u03c2 7 \u03b7\u03bc\u03ad\u03c1\u03b5\u03c2",
127
+ "previous30days": "\u03a0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b5\u03c2 30 \u03b7\u03bc\u03ad\u03c1\u03b5\u03c2"
128
+ },
129
+ "empty": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03bd\u03ae\u03bc\u03b1\u03c4\u03b1",
130
+ "actions": {
131
+ "close": "\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf \u03c0\u03bb\u03b1\u03ca\u03bd\u03ae\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
132
+ "open": "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c0\u03bb\u03b1\u03ca\u03bd\u03ae\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2"
133
+ }
134
+ },
135
+ "thread": {
136
+ "untitled": "\u03a3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1 \u03c7\u03c9\u03c1\u03af\u03c2 \u03c4\u03af\u03c4\u03bb\u03bf",
137
+ "menu": {
138
+ "rename": "\u039c\u03b5\u03c4\u03bf\u03bd\u03bf\u03bc\u03b1\u03c3\u03af\u03b1",
139
+ "delete": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae"
140
+ },
141
+ "actions": {
142
+ "delete": {
143
+ "title": "\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7 \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2",
144
+ "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.",
145
+ "success": "\u0397 \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c6\u03b7\u03ba\u03b5",
146
+ "inProgress": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1\u03c2"
147
+ },
148
+ "rename": {
149
+ "title": "\u039c\u03b5\u03c4\u03bf\u03bd\u03bf\u03bc\u03b1\u03c3\u03af\u03b1 \u039d\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2",
150
+ "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",
151
+ "form": {
152
+ "name": {
153
+ "label": "\u038c\u03bd\u03bf\u03bc\u03b1",
154
+ "placeholder": "\u0395\u03b9\u03c3\u03b1\u03b3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03bd\u03ad\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1"
155
+ }
156
+ },
157
+ "success": "\u03a4\u03bf \u03bd\u03ae\u03bc\u03b1 \u03bc\u03b5\u03c4\u03bf\u03bd\u03bf\u03bc\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5!",
158
+ "inProgress": "\u039c\u03b5\u03c4\u03bf\u03bd\u03bf\u03bc\u03b1\u03c3\u03af\u03b1 \u039d\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2"
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "navigation": {
164
+ "header": {
165
+ "chat": "\u03a3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1",
166
+ "readme": "\u0394\u03b9\u03ac\u03b2\u03b1\u03c3\u03ad \u03bc\u03b5",
167
+ "theme": {
168
+ "light": "\u03a6\u03c9\u03c4\u03b5\u03b9\u03bd\u03cc \u0398\u03ad\u03bc\u03b1",
169
+ "dark": "\u03a3\u03ba\u03bf\u03c4\u03b5\u03b9\u03bd\u03cc \u03b8\u03ad\u03bc\u03b1",
170
+ "system": "\u0391\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03c3\u03cd\u03c3\u03c4\u03b7\u03bc\u03b1"
171
+ }
172
+ },
173
+ "newChat": {
174
+ "button": "\u039d\u03ad\u03b1 \u03a3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1",
175
+ "dialog": {
176
+ "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",
177
+ "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;",
178
+ "tooltip": "\u039d\u03ad\u03b1 \u03a3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1"
179
+ }
180
+ },
181
+ "user": {
182
+ "menu": {
183
+ "settings": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2",
184
+ "settingsKey": "S",
185
+ "apiKeys": "\u039a\u03bb\u03b5\u03b9\u03b4\u03b9\u03ac API",
186
+ "logout": "\u0391\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7"
187
+ }
188
+ }
189
+ },
190
+ "apiKeys": {
191
+ "title": "\u0391\u03c0\u03b1\u03b9\u03c4\u03bf\u03cd\u03bc\u03b5\u03bd\u03b1 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03ac API",
192
+ "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.",
193
+ "success": {
194
+ "saved": "\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03c4\u03b7\u03ba\u03b5 \u03bc\u03b5 \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03af\u03b1"
195
+ }
196
+ },
197
+ "alerts": {
198
+ "info": "\u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2",
199
+ "note": "\u03a3\u03b7\u03bc\u03b5\u03af\u03c9\u03c3\u03b7",
200
+ "tip": "\u03a3\u03c5\u03bc\u03b2\u03bf\u03c5\u03bb\u03ae",
201
+ "important": "\u03a3\u03b7\u03bc\u03b1\u03bd\u03c4\u03b9\u03ba\u03cc",
202
+ "warning": "\u03a0\u03c1\u03bf\u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",
203
+ "caution": "\u03a0\u03c1\u03bf\u03c3\u03bf\u03c7\u03ae",
204
+ "debug": "\u0395\u03bd\u03c4\u03bf\u03c0\u03b9\u03c3\u03bc\u03cc\u03c2 \u03c3\u03c6\u03b1\u03bb\u03bc\u03ac\u03c4\u03c9\u03bd",
205
+ "example": "\u03a0\u03b1\u03c1\u03ac\u03b4\u03b5\u03b9\u03b3\u03bc\u03b1",
206
+ "success": "\u0395\u03c0\u03b9\u03c4\u03c5\u03c7\u03af\u03b1",
207
+ "help": "\u0392\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1",
208
+ "idea": "\u0399\u03b4\u03ad\u03b1",
209
+ "pending": "\u03a3\u03b5 \u03b5\u03ba\u03ba\u03c1\u03b5\u03bc\u03cc\u03c4\u03b7\u03c4\u03b1",
210
+ "security": "\u0391\u03c3\u03c6\u03ac\u03bb\u03b5\u03b9\u03b1",
211
+ "beta": "Beta",
212
+ "best-practice": "\u0392\u03ad\u03bb\u03c4\u03b9\u03c3\u03c4\u03b7 \u03a0\u03c1\u03b1\u03ba\u03c4\u03b9\u03ba\u03ae"
213
+ }
214
+ }
.chainlit/translations/en-US.json ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "common": {
3
+ "actions": {
4
+ "cancel": "Cancel",
5
+ "confirm": "Confirm",
6
+ "continue": "Continue",
7
+ "goBack": "Go Back",
8
+ "reset": "Reset",
9
+ "submit": "Submit"
10
+ },
11
+ "status": {
12
+ "loading": "Loading...",
13
+ "error": {
14
+ "default": "An error occurred",
15
+ "serverConnection": "Could not reach the server"
16
+ }
17
+ }
18
+ },
19
+ "auth": {
20
+ "login": {
21
+ "title": "Login to access the app",
22
+ "form": {
23
+ "email": {
24
+ "label": "Email address",
25
+ "required": "email is a required field"
26
+ },
27
+ "password": {
28
+ "label": "Password",
29
+ "required": "password is a required field"
30
+ },
31
+ "actions": {
32
+ "signin": "Sign In"
33
+ },
34
+ "alternativeText": {
35
+ "or": "OR"
36
+ }
37
+ },
38
+ "errors": {
39
+ "default": "Unable to sign in",
40
+ "signin": "Try signing in with a different account",
41
+ "oauthSignin": "Try signing in with a different account",
42
+ "redirectUriMismatch": "The redirect URI is not matching the oauth app configuration",
43
+ "oauthCallback": "Try signing in with a different account",
44
+ "oauthCreateAccount": "Try signing in with a different account",
45
+ "emailCreateAccount": "Try signing in with a different account",
46
+ "callback": "Try signing in with a different account",
47
+ "oauthAccountNotLinked": "To confirm your identity, sign in with the same account you used originally",
48
+ "emailSignin": "The e-mail could not be sent",
49
+ "emailVerify": "Please verify your email, a new email has been sent",
50
+ "credentialsSignin": "Sign in failed. Check the details you provided are correct",
51
+ "sessionRequired": "Please sign in to access this page"
52
+ }
53
+ },
54
+ "provider": {
55
+ "continue": "Continue with {{provider}}"
56
+ }
57
+ },
58
+ "chat": {
59
+ "input": {
60
+ "placeholder": "Type your message here...",
61
+ "actions": {
62
+ "send": "Send message",
63
+ "stop": "Stop Task",
64
+ "attachFiles": "Attach files"
65
+ }
66
+ },
67
+ "speech": {
68
+ "start": "Start recording",
69
+ "stop": "Stop recording",
70
+ "connecting": "Connecting"
71
+ },
72
+ "fileUpload": {
73
+ "dragDrop": "Drag and drop files here",
74
+ "browse": "Browse Files",
75
+ "sizeLimit": "Limit:",
76
+ "errors": {
77
+ "failed": "Failed to upload",
78
+ "cancelled": "Cancelled upload of"
79
+ }
80
+ },
81
+ "messages": {
82
+ "status": {
83
+ "using": "Using",
84
+ "used": "Used"
85
+ },
86
+ "actions": {
87
+ "copy": {
88
+ "button": "Copy to clipboard",
89
+ "success": "Copied!"
90
+ }
91
+ },
92
+ "feedback": {
93
+ "positive": "Helpful",
94
+ "negative": "Not helpful",
95
+ "edit": "Edit feedback",
96
+ "dialog": {
97
+ "title": "Add a comment",
98
+ "submit": "Submit feedback"
99
+ },
100
+ "status": {
101
+ "updating": "Updating",
102
+ "updated": "Feedback updated"
103
+ }
104
+ }
105
+ },
106
+ "history": {
107
+ "title": "Last Inputs",
108
+ "empty": "Such empty...",
109
+ "show": "Show history"
110
+ },
111
+ "settings": {
112
+ "title": "Settings panel"
113
+ },
114
+ "watermark": "LLMs can make mistakes. Check important info."
115
+ },
116
+ "threadHistory": {
117
+ "sidebar": {
118
+ "title": "Past Chats",
119
+ "filters": {
120
+ "search": "Search",
121
+ "placeholder": "Search conversations..."
122
+ },
123
+ "timeframes": {
124
+ "today": "Today",
125
+ "yesterday": "Yesterday",
126
+ "previous7days": "Previous 7 days",
127
+ "previous30days": "Previous 30 days"
128
+ },
129
+ "empty": "No threads found",
130
+ "actions": {
131
+ "close": "Close sidebar",
132
+ "open": "Open sidebar"
133
+ }
134
+ },
135
+ "thread": {
136
+ "untitled": "Untitled Conversation",
137
+ "menu": {
138
+ "rename": "Rename",
139
+ "delete": "Delete"
140
+ },
141
+ "actions": {
142
+ "delete": {
143
+ "title": "Confirm deletion",
144
+ "description": "This will delete the thread as well as its messages and elements. This action cannot be undone",
145
+ "success": "Chat deleted",
146
+ "inProgress": "Deleting chat"
147
+ },
148
+ "rename": {
149
+ "title": "Rename Thread",
150
+ "description": "Enter a new name for this thread",
151
+ "form": {
152
+ "name": {
153
+ "label": "Name",
154
+ "placeholder": "Enter new name"
155
+ }
156
+ },
157
+ "success": "Thread renamed!",
158
+ "inProgress": "Renaming thread"
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "navigation": {
164
+ "header": {
165
+ "chat": "Chat",
166
+ "readme": "Readme",
167
+ "theme": {
168
+ "light": "Light Theme",
169
+ "dark": "Dark Theme",
170
+ "system": "Follow System"
171
+ }
172
+ },
173
+ "newChat": {
174
+ "button": "New Chat",
175
+ "dialog": {
176
+ "title": "Create New Chat",
177
+ "description": "This will clear your current chat history. Are you sure you want to continue?",
178
+ "tooltip": "New Chat"
179
+ }
180
+ },
181
+ "user": {
182
+ "menu": {
183
+ "settings": "Settings",
184
+ "settingsKey": "S",
185
+ "apiKeys": "API Keys",
186
+ "logout": "Logout"
187
+ }
188
+ }
189
+ },
190
+ "apiKeys": {
191
+ "title": "Required API Keys",
192
+ "description": "To use this app, the following API keys are required. The keys are stored on your device's local storage.",
193
+ "success": {
194
+ "saved": "Saved successfully"
195
+ }
196
+ },
197
+ "alerts": {
198
+ "info": "Info",
199
+ "note": "Note",
200
+ "tip": "Tip",
201
+ "important": "Important",
202
+ "warning": "Warning",
203
+ "caution": "Caution",
204
+ "debug": "Debug",
205
+ "example": "Example",
206
+ "success": "Success",
207
+ "help": "Help",
208
+ "idea": "Idea",
209
+ "pending": "Pending",
210
+ "security": "Security",
211
+ "beta": "Beta",
212
+ "best-practice": "Best Practice"
213
+ }
214
+ }
.chainlit/translations/fr-FR.json ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "common": {
3
+ "actions": {
4
+ "cancel": "Annuler",
5
+ "confirm": "Confirmer",
6
+ "continue": "Continuer",
7
+ "goBack": "Retour",
8
+ "reset": "R\u00e9initialiser",
9
+ "submit": "Envoyer"
10
+ },
11
+ "status": {
12
+ "loading": "Chargement...",
13
+ "error": {
14
+ "default": "Une erreur est survenue",
15
+ "serverConnection": "Impossible de joindre le serveur"
16
+ }
17
+ }
18
+ },
19
+ "auth": {
20
+ "login": {
21
+ "title": "Connectez-vous pour acc\u00e9der \u00e0 l'application",
22
+ "form": {
23
+ "email": {
24
+ "label": "Adresse e-mail",
25
+ "required": "l'e-mail est un champ obligatoire"
26
+ },
27
+ "password": {
28
+ "label": "Mot de passe",
29
+ "required": "le mot de passe est un champ obligatoire"
30
+ },
31
+ "actions": {
32
+ "signin": "Se connecter"
33
+ },
34
+ "alternativeText": {
35
+ "or": "OU"
36
+ }
37
+ },
38
+ "errors": {
39
+ "default": "Impossible de se connecter",
40
+ "signin": "Essayez de vous connecter avec un autre compte",
41
+ "oauthSignin": "Essayez de vous connecter avec un autre compte",
42
+ "redirectUriMismatch": "L'URI de redirection ne correspond pas \u00e0 la configuration de l'application oauth",
43
+ "oauthCallback": "Essayez de vous connecter avec un autre compte",
44
+ "oauthCreateAccount": "Essayez de vous connecter avec un autre compte",
45
+ "emailCreateAccount": "Essayez de vous connecter avec un autre compte",
46
+ "callback": "Essayez de vous connecter avec un autre compte",
47
+ "oauthAccountNotLinked": "Pour confirmer votre identit\u00e9, connectez-vous avec le m\u00eame compte que vous avez utilis\u00e9 \u00e0 l'origine",
48
+ "emailSignin": "L'e-mail n'a pas pu \u00eatre envoy\u00e9",
49
+ "emailVerify": "Veuillez v\u00e9rifier votre e-mail, un nouvel e-mail a \u00e9t\u00e9 envoy\u00e9",
50
+ "credentialsSignin": "La connexion a \u00e9chou\u00e9. V\u00e9rifiez que les informations que vous avez fournies sont correctes",
51
+ "sessionRequired": "Veuillez vous connecter pour acc\u00e9der \u00e0 cette page"
52
+ }
53
+ },
54
+ "provider": {
55
+ "continue": "Continuer avec {{provider}}"
56
+ }
57
+ },
58
+ "chat": {
59
+ "input": {
60
+ "placeholder": "Tapez votre message ici...",
61
+ "actions": {
62
+ "send": "Envoyer le message",
63
+ "stop": "Arr\u00eater la t\u00e2che",
64
+ "attachFiles": "Joindre des fichiers"
65
+ }
66
+ },
67
+ "speech": {
68
+ "start": "D\u00e9marrer l'enregistrement",
69
+ "stop": "Arr\u00eater l'enregistrement",
70
+ "connecting": "Connexion en cours"
71
+ },
72
+ "fileUpload": {
73
+ "dragDrop": "Glissez et d\u00e9posez des fichiers ici",
74
+ "browse": "Parcourir les fichiers",
75
+ "sizeLimit": "Limite :",
76
+ "errors": {
77
+ "failed": "\u00c9chec du t\u00e9l\u00e9versement",
78
+ "cancelled": "T\u00e9l\u00e9versement annul\u00e9 de"
79
+ }
80
+ },
81
+ "messages": {
82
+ "status": {
83
+ "using": "Utilise",
84
+ "used": "Utilis\u00e9"
85
+ },
86
+ "actions": {
87
+ "copy": {
88
+ "button": "Copier dans le presse-papiers",
89
+ "success": "Copi\u00e9 !"
90
+ }
91
+ },
92
+ "feedback": {
93
+ "positive": "Utile",
94
+ "negative": "Pas utile",
95
+ "edit": "Modifier le commentaire",
96
+ "dialog": {
97
+ "title": "Ajouter un commentaire",
98
+ "submit": "Envoyer le commentaire"
99
+ },
100
+ "status": {
101
+ "updating": "Mise \u00e0 jour",
102
+ "updated": "Commentaire mis \u00e0 jour"
103
+ }
104
+ }
105
+ },
106
+ "history": {
107
+ "title": "Derni\u00e8res entr\u00e9es",
108
+ "empty": "Tellement vide...",
109
+ "show": "Afficher l'historique"
110
+ },
111
+ "settings": {
112
+ "title": "Panneau des param\u00e8tres"
113
+ },
114
+ "watermark": "Construit avec"
115
+ },
116
+ "threadHistory": {
117
+ "sidebar": {
118
+ "title": "Discussions pass\u00e9es",
119
+ "filters": {
120
+ "search": "Rechercher",
121
+ "placeholder": "Rechercher des conversations..."
122
+ },
123
+ "timeframes": {
124
+ "today": "Aujourd'hui",
125
+ "yesterday": "Hier",
126
+ "previous7days": "Les 7 derniers jours",
127
+ "previous30days": "Les 30 derniers jours"
128
+ },
129
+ "empty": "Aucun fil de discussion trouv\u00e9",
130
+ "actions": {
131
+ "close": "Fermer la barre lat\u00e9rale",
132
+ "open": "Ouvrir la barre lat\u00e9rale"
133
+ }
134
+ },
135
+ "thread": {
136
+ "untitled": "Conversation sans titre",
137
+ "menu": {
138
+ "rename": "Renommer",
139
+ "delete": "Supprimer"
140
+ },
141
+ "actions": {
142
+ "delete": {
143
+ "title": "Confirmer la suppression",
144
+ "description": "Cela supprimera le fil de discussion ainsi que ses messages et \u00e9l\u00e9ments. Cette action ne peut pas \u00eatre annul\u00e9e",
145
+ "success": "Discussion supprim\u00e9e",
146
+ "inProgress": "Suppression de la discussion"
147
+ },
148
+ "rename": {
149
+ "title": "Renommer le fil de discussion",
150
+ "description": "Entrez un nouveau nom pour ce fil de discussion",
151
+ "form": {
152
+ "name": {
153
+ "label": "Nom",
154
+ "placeholder": "Entrez le nouveau nom"
155
+ }
156
+ },
157
+ "success": "Fil de discussion renomm\u00e9 !",
158
+ "inProgress": "Renommage du fil de discussion"
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "navigation": {
164
+ "header": {
165
+ "chat": "Discussion",
166
+ "readme": "Lisez-moi",
167
+ "theme": {
168
+ "light": "Th\u00e8me clair",
169
+ "dark": "Th\u00e8me sombre",
170
+ "system": "Suivre le syst\u00e8me"
171
+ }
172
+ },
173
+ "newChat": {
174
+ "button": "Nouvelle discussion",
175
+ "dialog": {
176
+ "title": "Cr\u00e9er une nouvelle discussion",
177
+ "description": "Cela effacera votre historique de discussion actuel. \u00cates-vous s\u00fbr de vouloir continuer ?",
178
+ "tooltip": "Nouvelle discussion"
179
+ }
180
+ },
181
+ "user": {
182
+ "menu": {
183
+ "settings": "Param\u00e8tres",
184
+ "settingsKey": "S",
185
+ "apiKeys": "Cl\u00e9s API",
186
+ "logout": "Se d\u00e9connecter"
187
+ }
188
+ }
189
+ },
190
+ "apiKeys": {
191
+ "title": "Cl\u00e9s API requises",
192
+ "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.",
193
+ "success": {
194
+ "saved": "Enregistr\u00e9 avec succ\u00e8s"
195
+ }
196
+ },
197
+ "alerts": {
198
+ "info": "Info",
199
+ "note": "Note",
200
+ "tip": "Astuce",
201
+ "important": "Important",
202
+ "warning": "Avertissement",
203
+ "caution": "Attention",
204
+ "debug": "D\u00e9bogage",
205
+ "example": "Exemple",
206
+ "success": "Succ\u00e8s",
207
+ "help": "Aide",
208
+ "idea": "Id\u00e9e",
209
+ "pending": "En attente",
210
+ "security": "S\u00e9curit\u00e9",
211
+ "beta": "B\u00eata",
212
+ "best-practice": "Meilleure pratique"
213
+ }
214
+ }
.chainlit/translations/gu.json ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "common": {
3
+ "actions": {
4
+ "cancel": "\u0ab0\u0aa6 \u0a95\u0ab0\u0acb",
5
+ "confirm": "\u0aaa\u0ac1\u0ab7\u0acd\u0a9f\u0abf \u0a95\u0ab0\u0acb",
6
+ "continue": "\u0a9a\u0abe\u0ab2\u0ac1 \u0ab0\u0abe\u0a96\u0acb",
7
+ "goBack": "\u0aaa\u0abe\u0a9b\u0abe \u0a9c\u0abe\u0a93",
8
+ "reset": "\u0ab0\u0ac0\u0ab8\u0ac7\u0a9f \u0a95\u0ab0\u0acb",
9
+ "submit": "\u0ab8\u0aac\u0aae\u0abf\u0a9f \u0a95\u0ab0\u0acb"
10
+ },
11
+ "status": {
12
+ "loading": "\u0ab2\u0acb\u0aa1 \u0aa5\u0a88 \u0ab0\u0ab9\u0acd\u0aaf\u0ac1\u0a82 \u0a9b\u0ac7...",
13
+ "error": {
14
+ "default": "\u0a8f\u0a95 \u0aad\u0ac2\u0ab2 \u0aa5\u0a88",
15
+ "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"
16
+ }
17
+ }
18
+ },
19
+ "auth": {
20
+ "login": {
21
+ "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",
22
+ "form": {
23
+ "email": {
24
+ "label": "\u0a88\u0aae\u0ac7\u0ab2 \u0a8f\u0aa1\u0acd\u0ab0\u0ac7\u0ab8",
25
+ "required": "\u0a88\u0aae\u0ac7\u0ab2 \u0a86\u0ab5\u0ab6\u0acd\u0aaf\u0a95 \u0a9b\u0ac7"
26
+ },
27
+ "password": {
28
+ "label": "\u0aaa\u0abe\u0ab8\u0ab5\u0ab0\u0acd\u0aa1",
29
+ "required": "\u0aaa\u0abe\u0ab8\u0ab5\u0ab0\u0acd\u0aa1 \u0a86\u0ab5\u0ab6\u0acd\u0aaf\u0a95 \u0a9b\u0ac7"
30
+ },
31
+ "actions": {
32
+ "signin": "\u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0acb"
33
+ },
34
+ "alternativeText": {
35
+ "or": "\u0a85\u0aa5\u0ab5\u0abe"
36
+ }
37
+ },
38
+ "errors": {
39
+ "default": "\u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0ac0 \u0ab6\u0a95\u0abe\u0aaf\u0ac1\u0a82 \u0aa8\u0aa5\u0ac0",
40
+ "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",
41
+ "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",
42
+ "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",
43
+ "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",
44
+ "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",
45
+ "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",
46
+ "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",
47
+ "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",
48
+ "emailSignin": "\u0a88\u0aae\u0ac7\u0ab2 \u0aae\u0acb\u0a95\u0ab2\u0ac0 \u0ab6\u0a95\u0abe\u0aaf\u0acb \u0aa8\u0aa5\u0ac0",
49
+ "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",
50
+ "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",
51
+ "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"
52
+ }
53
+ },
54
+ "provider": {
55
+ "continue": "{{provider}} \u0ab8\u0abe\u0aa5\u0ac7 \u0a9a\u0abe\u0ab2\u0ac1 \u0ab0\u0abe\u0a96\u0acb"
56
+ }
57
+ },
58
+ "chat": {
59
+ "input": {
60
+ "placeholder": "\u0a85\u0ab9\u0ac0\u0a82 \u0aa4\u0aae\u0abe\u0ab0\u0acb \u0ab8\u0a82\u0aa6\u0ac7\u0ab6 \u0ab2\u0a96\u0acb...",
61
+ "actions": {
62
+ "send": "\u0ab8\u0a82\u0aa6\u0ac7\u0ab6 \u0aae\u0acb\u0a95\u0ab2\u0acb",
63
+ "stop": "\u0a95\u0abe\u0ab0\u0acd\u0aaf \u0ab0\u0acb\u0a95\u0acb",
64
+ "attachFiles": "\u0aab\u0abe\u0a87\u0ab2\u0acd\u0ab8 \u0a9c\u0acb\u0aa1\u0acb"
65
+ }
66
+ },
67
+ "speech": {
68
+ "start": "\u0ab0\u0ac7\u0a95\u0acb\u0ab0\u0acd\u0aa1\u0abf\u0a82\u0a97 \u0ab6\u0ab0\u0ac2 \u0a95\u0ab0\u0acb",
69
+ "stop": "\u0ab0\u0ac7\u0a95\u0acb\u0ab0\u0acd\u0aa1\u0abf\u0a82\u0a97 \u0aac\u0a82\u0aa7 \u0a95\u0ab0\u0acb",
70
+ "connecting": "\u0a95\u0aa8\u0ac7\u0a95\u0acd\u0a9f \u0aa5\u0a88 \u0ab0\u0ab9\u0acd\u0aaf\u0ac1\u0a82 \u0a9b\u0ac7"
71
+ },
72
+ "fileUpload": {
73
+ "dragDrop": "\u0a85\u0ab9\u0ac0\u0a82 \u0aab\u0abe\u0a87\u0ab2\u0acd\u0ab8 \u0a96\u0ac7\u0a82\u0a9a\u0acb \u0a85\u0aa8\u0ac7 \u0a9b\u0acb\u0aa1\u0acb",
74
+ "browse": "\u0aab\u0abe\u0a87\u0ab2\u0acd\u0ab8 \u0aac\u0acd\u0ab0\u0abe\u0a89\u0a9d \u0a95\u0ab0\u0acb",
75
+ "sizeLimit": "\u0aae\u0ab0\u0acd\u0aaf\u0abe\u0aa6\u0abe:",
76
+ "errors": {
77
+ "failed": "\u0a85\u0aaa\u0ab2\u0acb\u0aa1 \u0a95\u0ab0\u0ab5\u0abe\u0aae\u0abe\u0a82 \u0aa8\u0abf\u0ab7\u0acd\u0aab\u0ab3",
78
+ "cancelled": "\u0a85\u0aaa\u0ab2\u0acb\u0aa1 \u0ab0\u0aa6 \u0a95\u0ab0\u0acd\u0aaf\u0ac1\u0a82"
79
+ }
80
+ },
81
+ "messages": {
82
+ "status": {
83
+ "using": "\u0ab5\u0abe\u0aaa\u0ab0\u0ac0 \u0ab0\u0ab9\u0acd\u0aaf\u0abe \u0a9b\u0ac7",
84
+ "used": "\u0ab5\u0aaa\u0ab0\u0abe\u0aaf\u0ac7\u0ab2"
85
+ },
86
+ "actions": {
87
+ "copy": {
88
+ "button": "\u0a95\u0acd\u0ab2\u0abf\u0aaa\u0aac\u0acb\u0ab0\u0acd\u0aa1 \u0aaa\u0ab0 \u0a95\u0ac9\u0aaa\u0abf \u0a95\u0ab0\u0acb",
89
+ "success": "\u0a95\u0ac9\u0aaa\u0abf \u0aa5\u0aaf\u0ac1\u0a82!"
90
+ }
91
+ },
92
+ "feedback": {
93
+ "positive": "\u0a89\u0aaa\u0aaf\u0acb\u0a97\u0ac0",
94
+ "negative": "\u0aac\u0abf\u0aa8\u0a89\u0aaa\u0aaf\u0acb\u0a97\u0ac0",
95
+ "edit": "\u0aaa\u0acd\u0ab0\u0aa4\u0abf\u0ab8\u0abe\u0aa6 \u0ab8\u0a82\u0aaa\u0abe\u0aa6\u0abf\u0aa4 \u0a95\u0ab0\u0acb",
96
+ "dialog": {
97
+ "title": "\u0a9f\u0abf\u0aaa\u0acd\u0aaa\u0aa3\u0ac0 \u0a89\u0aae\u0ac7\u0ab0\u0acb",
98
+ "submit": "\u0aaa\u0acd\u0ab0\u0aa4\u0abf\u0ab8\u0abe\u0aa6 \u0ab8\u0aac\u0aae\u0abf\u0a9f \u0a95\u0ab0\u0acb"
99
+ },
100
+ "status": {
101
+ "updating": "\u0a85\u0aaa\u0aa1\u0ac7\u0a9f \u0aa5\u0a88 \u0ab0\u0ab9\u0acd\u0aaf\u0ac1\u0a82 \u0a9b\u0ac7",
102
+ "updated": "\u0aaa\u0acd\u0ab0\u0aa4\u0abf\u0ab8\u0abe\u0aa6 \u0a85\u0aaa\u0aa1\u0ac7\u0a9f \u0aa5\u0aaf\u0acb"
103
+ }
104
+ }
105
+ },
106
+ "history": {
107
+ "title": "\u0a9b\u0ac7\u0ab2\u0acd\u0ab2\u0abe \u0a87\u0aa8\u0aaa\u0ac1\u0a9f\u0acd\u0ab8",
108
+ "empty": "\u0a96\u0abe\u0ab2\u0ac0 \u0a9b\u0ac7...",
109
+ "show": "\u0a87\u0aa4\u0abf\u0ab9\u0abe\u0ab8 \u0aac\u0aa4\u0abe\u0ab5\u0acb"
110
+ },
111
+ "settings": {
112
+ "title": "\u0ab8\u0ac7\u0a9f\u0abf\u0a82\u0a97\u0acd\u0ab8 \u0aaa\u0ac7\u0aa8\u0ab2"
113
+ },
114
+ "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."
115
+ },
116
+ "threadHistory": {
117
+ "sidebar": {
118
+ "title": "\u0aaa\u0abe\u0a9b\u0ab2\u0ac0 \u0a9a\u0ac7\u0a9f\u0acd\u0ab8",
119
+ "filters": {
120
+ "search": "\u0ab6\u0acb\u0aa7\u0acb",
121
+ "placeholder": "Search conversations..."
122
+ },
123
+ "timeframes": {
124
+ "today": "\u0a86\u0a9c\u0ac7",
125
+ "yesterday": "\u0a97\u0a88\u0a95\u0abe\u0ab2\u0ac7",
126
+ "previous7days": "\u0aaa\u0abe\u0a9b\u0ab2\u0abe 7 \u0aa6\u0abf\u0ab5\u0ab8",
127
+ "previous30days": "\u0aaa\u0abe\u0a9b\u0ab2\u0abe 30 \u0aa6\u0abf\u0ab5\u0ab8"
128
+ },
129
+ "empty": "\u0a95\u0acb\u0a88 \u0aa5\u0acd\u0ab0\u0ac7\u0aa1\u0acd\u0ab8 \u0aae\u0ab3\u0acd\u0aaf\u0abe \u0aa8\u0aa5\u0ac0",
130
+ "actions": {
131
+ "close": "\u0ab8\u0abe\u0a87\u0aa1\u0aac\u0abe\u0ab0 \u0aac\u0a82\u0aa7 \u0a95\u0ab0\u0acb",
132
+ "open": "\u0ab8\u0abe\u0a87\u0aa1\u0aac\u0abe\u0ab0 \u0a96\u0acb\u0ab2\u0acb"
133
+ }
134
+ },
135
+ "thread": {
136
+ "untitled": "\u0ab6\u0ac0\u0ab0\u0acd\u0ab7\u0a95 \u0ab5\u0a97\u0ab0\u0aa8\u0ac0 \u0ab5\u0abe\u0aa4\u0a9a\u0ac0\u0aa4",
137
+ "menu": {
138
+ "rename": "Rename",
139
+ "delete": "Delete"
140
+ },
141
+ "actions": {
142
+ "delete": {
143
+ "title": "\u0a95\u0abe\u0aa2\u0ac0 \u0aa8\u0abe\u0a96\u0ab5\u0abe\u0aa8\u0ac0 \u0aaa\u0ac1\u0ab7\u0acd\u0a9f\u0abf \u0a95\u0ab0\u0acb",
144
+ "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",
145
+ "success": "\u0a9a\u0ac7\u0a9f \u0a95\u0abe\u0aa2\u0ac0 \u0aa8\u0abe\u0a96\u0ac0",
146
+ "inProgress": "\u0a9a\u0ac7\u0a9f \u0a95\u0abe\u0aa2\u0ac0 \u0aa8\u0abe\u0a96\u0ac0 \u0ab0\u0ab9\u0acd\u0aaf\u0abe \u0a9b\u0ac0\u0a8f"
147
+ },
148
+ "rename": {
149
+ "title": "\u0aa5\u0acd\u0ab0\u0ac7\u0aa1\u0aa8\u0ac1\u0a82 \u0aa8\u0abe\u0aae \u0aac\u0aa6\u0ab2\u0acb",
150
+ "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",
151
+ "form": {
152
+ "name": {
153
+ "label": "\u0aa8\u0abe\u0aae",
154
+ "placeholder": "\u0aa8\u0ab5\u0ac1\u0a82 \u0aa8\u0abe\u0aae \u0aa6\u0abe\u0a96\u0ab2 \u0a95\u0ab0\u0acb"
155
+ }
156
+ },
157
+ "success": "\u0aa5\u0acd\u0ab0\u0ac7\u0aa1\u0aa8\u0ac1\u0a82 \u0aa8\u0abe\u0aae \u0aac\u0aa6\u0ab2\u0abe\u0aaf\u0ac1\u0a82!",
158
+ "inProgress": "\u0aa5\u0acd\u0ab0\u0ac7\u0aa1\u0aa8\u0ac1\u0a82 \u0aa8\u0abe\u0aae \u0aac\u0aa6\u0ab2\u0ac0 \u0ab0\u0ab9\u0acd\u0aaf\u0abe \u0a9b\u0ac0\u0a8f"
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "navigation": {
164
+ "header": {
165
+ "chat": "\u0a9a\u0ac7\u0a9f",
166
+ "readme": "\u0ab5\u0abe\u0a82\u0a9a\u0acb",
167
+ "theme": {
168
+ "light": "Light Theme",
169
+ "dark": "Dark Theme",
170
+ "system": "Follow System"
171
+ }
172
+ },
173
+ "newChat": {
174
+ "button": "\u0aa8\u0ab5\u0ac0 \u0a9a\u0ac7\u0a9f",
175
+ "dialog": {
176
+ "title": "\u0aa8\u0ab5\u0ac0 \u0a9a\u0ac7\u0a9f \u0aac\u0aa8\u0abe\u0ab5\u0acb",
177
+ "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?",
178
+ "tooltip": "\u0aa8\u0ab5\u0ac0 \u0a9a\u0ac7\u0a9f"
179
+ }
180
+ },
181
+ "user": {
182
+ "menu": {
183
+ "settings": "\u0ab8\u0ac7\u0a9f\u0abf\u0a82\u0a97\u0acd\u0ab8",
184
+ "settingsKey": "S",
185
+ "apiKeys": "API \u0a95\u0ac0",
186
+ "logout": "\u0ab2\u0ac9\u0a97\u0a86\u0a89\u0a9f"
187
+ }
188
+ }
189
+ },
190
+ "apiKeys": {
191
+ "title": "\u0a9c\u0ab0\u0ac2\u0ab0\u0ac0 API \u0a95\u0ac0",
192
+ "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.",
193
+ "success": {
194
+ "saved": "\u0ab8\u0aab\u0ab3\u0aa4\u0abe\u0aaa\u0ac2\u0ab0\u0acd\u0ab5\u0a95 \u0ab8\u0abe\u0a9a\u0ab5\u0acd\u0aaf\u0ac1\u0a82"
195
+ }
196
+ },
197
+ "alerts": {
198
+ "info": "Info",
199
+ "note": "Note",
200
+ "tip": "Tip",
201
+ "important": "Important",
202
+ "warning": "Warning",
203
+ "caution": "Caution",
204
+ "debug": "Debug",
205
+ "example": "Example",
206
+ "success": "Success",
207
+ "help": "Help",
208
+ "idea": "Idea",
209
+ "pending": "Pending",
210
+ "security": "Security",
211
+ "beta": "Beta",
212
+ "best-practice": "Best Practice"
213
+ }
214
+ }
.chainlit/translations/he-IL.json ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "common": {
3
+ "actions": {
4
+ "cancel": "\u05d1\u05d9\u05d8\u05d5\u05dc",
5
+ "confirm": "\u05d0\u05d9\u05e9\u05d5\u05e8",
6
+ "continue": "\u05d4\u05de\u05e9\u05da",
7
+ "goBack": "\u05d7\u05d6\u05d5\u05e8",
8
+ "reset": "\u05d0\u05d9\u05e4\u05d5\u05e1",
9
+ "submit": "\u05e9\u05dc\u05d7"
10
+ },
11
+ "status": {
12
+ "loading": "\u05d8\u05d5\u05e2\u05df...",
13
+ "error": {
14
+ "default": "\u05d0\u05d9\u05e8\u05e2\u05d4 \u05e9\u05d2\u05d9\u05d0\u05d4",
15
+ "serverConnection": "\u05dc\u05d0 \u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05dc\u05e9\u05e8\u05ea"
16
+ }
17
+ }
18
+ },
19
+ "auth": {
20
+ "login": {
21
+ "title": "\u05d4\u05ea\u05d7\u05d1\u05e8 \u05db\u05d3\u05d9 \u05dc\u05d2\u05e9\u05ea \u05dc\u05d0\u05e4\u05dc\u05d9\u05e7\u05e6\u05d9\u05d4",
22
+ "form": {
23
+ "email": {
24
+ "label": "\u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05d9\u05de\u05d9\u05d9\u05dc",
25
+ "required": "\u05e9\u05d3\u05d4 \u05d4\u05d0\u05d9\u05de\u05d9\u05d9\u05dc \u05d4\u05d5\u05d0 \u05e9\u05d3\u05d4 \u05d7\u05d5\u05d1\u05d4"
26
+ },
27
+ "password": {
28
+ "label": "\u05e1\u05d9\u05e1\u05de\u05d4",
29
+ "required": "\u05e9\u05d3\u05d4 \u05d4\u05e1\u05d9\u05e1\u05de\u05d4 \u05d4\u05d5\u05d0 \u05e9\u05d3\u05d4 \u05d7\u05d5\u05d1\u05d4"
30
+ },
31
+ "actions": {
32
+ "signin": "\u05d4\u05ea\u05d7\u05d1\u05e8"
33
+ },
34
+ "alternativeText": {
35
+ "or": "\u05d0\u05d5"
36
+ }
37
+ },
38
+ "errors": {
39
+ "default": "\u05dc\u05d0 \u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8",
40
+ "signin": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8",
41
+ "oauthSignin": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8",
42
+ "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",
43
+ "oauthCallback": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8",
44
+ "oauthCreateAccount": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8",
45
+ "emailCreateAccount": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8",
46
+ "callback": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8",
47
+ "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",
48
+ "emailSignin": "\u05dc\u05d0 \u05e0\u05d9\u05ea\u05df \u05d4\u05d9\u05d4 \u05dc\u05e9\u05dc\u05d5\u05d7 \u05d0\u05ea \u05d4\u05d0\u05d9\u05de\u05d9\u05d9\u05dc",
49
+ "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",
50
+ "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",
51
+ "sessionRequired": "\u05d0\u05e0\u05d0 \u05d4\u05ea\u05d7\u05d1\u05e8 \u05db\u05d3\u05d9 \u05dc\u05d2\u05e9\u05ea \u05dc\u05d3\u05e3 \u05d6\u05d4"
52
+ }
53
+ },
54
+ "provider": {
55
+ "continue": "\u05d4\u05de\u05e9\u05da \u05e2\u05dd {{provider}}"
56
+ }
57
+ },
58
+ "chat": {
59
+ "input": {
60
+ "placeholder": "\u05d4\u05e7\u05dc\u05d3 \u05d0\u05ea \u05d4\u05d4\u05d5\u05d3\u05e2\u05d4 \u05e9\u05dc\u05da \u05db\u05d0\u05df...",
61
+ "actions": {
62
+ "send": "\u05e9\u05dc\u05d7 \u05d4\u05d5\u05d3\u05e2\u05d4",
63
+ "stop": "\u05e2\u05e6\u05d5\u05e8 \u05de\u05e9\u05d9\u05de\u05d4",
64
+ "attachFiles": "\u05e6\u05e8\u05e3 \u05e7\u05d1\u05e6\u05d9\u05dd"
65
+ }
66
+ },
67
+ "speech": {
68
+ "start": "\u05d4\u05ea\u05d7\u05dc \u05d4\u05e7\u05dc\u05d8\u05d4",
69
+ "stop": "\u05e2\u05e6\u05d5\u05e8 \u05d4\u05e7\u05dc\u05d8\u05d4",
70
+ "connecting": "\u05de\u05ea\u05d7\u05d1\u05e8"
71
+ },
72
+ "fileUpload": {
73
+ "dragDrop": "\u05d2\u05e8\u05d5\u05e8 \u05d5\u05e9\u05d7\u05e8\u05e8 \u05e7\u05d1\u05e6\u05d9\u05dd \u05db\u05d0\u05df",
74
+ "browse": "\u05e2\u05d9\u05d9\u05df \u05d1\u05e7\u05d1\u05e6\u05d9\u05dd",
75
+ "sizeLimit": "\u05de\u05d2\u05d1\u05dc\u05d4:",
76
+ "errors": {
77
+ "failed": "\u05d4\u05e2\u05dc\u05d0\u05d4 \u05e0\u05db\u05e9\u05dc\u05d4",
78
+ "cancelled": "\u05d4\u05e2\u05dc\u05d0\u05d4 \u05d1\u05d5\u05d8\u05dc\u05d4 \u05e9\u05dc"
79
+ }
80
+ },
81
+ "messages": {
82
+ "status": {
83
+ "using": "\u05de\u05e9\u05ea\u05de\u05e9 \u05d1",
84
+ "used": "\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1"
85
+ },
86
+ "actions": {
87
+ "copy": {
88
+ "button": "\u05d4\u05e2\u05ea\u05e7 \u05dc\u05dc\u05d5\u05d7",
89
+ "success": "\u05d4\u05d5\u05e2\u05ea\u05e7!"
90
+ }
91
+ },
92
+ "feedback": {
93
+ "positive": "\u05de\u05d5\u05e2\u05d9\u05dc",
94
+ "negative": "\u05dc\u05d0 \u05de\u05d5\u05e2\u05d9\u05dc",
95
+ "edit": "\u05e2\u05e8\u05d5\u05da \u05de\u05e9\u05d5\u05d1",
96
+ "dialog": {
97
+ "title": "\u05d4\u05d5\u05e1\u05e3 \u05ea\u05d2\u05d5\u05d1\u05d4",
98
+ "submit": "\u05e9\u05dc\u05d7 \u05de\u05e9\u05d5\u05d1"
99
+ },
100
+ "status": {
101
+ "updating": "\u05de\u05e2\u05d3\u05db\u05df",
102
+ "updated": "\u05d4\u05de\u05e9\u05d5\u05d1 \u05e2\u05d5\u05d3\u05db\u05df"
103
+ }
104
+ }
105
+ },
106
+ "history": {
107
+ "title": "\u05e7\u05dc\u05d8\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd",
108
+ "empty": "\u05db\u05dc \u05db\u05da \u05e8\u05d9\u05e7...",
109
+ "show": "\u05d4\u05e6\u05d2 \u05d4\u05d9\u05e1\u05d8\u05d5\u05e8\u05d9\u05d4"
110
+ },
111
+ "settings": {
112
+ "title": "\u05e4\u05d0\u05e0\u05dc \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea"
113
+ },
114
+ "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."
115
+ },
116
+ "threadHistory": {
117
+ "sidebar": {
118
+ "title": "\u05e6'\u05d0\u05d8\u05d9\u05dd \u05e7\u05d5\u05d3\u05de\u05d9\u05dd",
119
+ "filters": {
120
+ "search": "\u05d7\u05d9\u05e4\u05d5\u05e9",
121
+ "placeholder": "Search conversations..."
122
+ },
123
+ "timeframes": {
124
+ "today": "\u05d4\u05d9\u05d5\u05dd",
125
+ "yesterday": "\u05d0\u05ea\u05de\u05d5\u05dc",
126
+ "previous7days": "7 \u05d9\u05de\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd",
127
+ "previous30days": "30 \u05d9\u05de\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd"
128
+ },
129
+ "empty": "\u05dc\u05d0 \u05e0\u05de\u05e6\u05d0\u05d5 \u05e9\u05d9\u05d7\u05d5\u05ea",
130
+ "actions": {
131
+ "close": "\u05e1\u05d2\u05d5\u05e8 \u05e1\u05e8\u05d2\u05dc \u05e6\u05d3",
132
+ "open": "\u05e4\u05ea\u05d7 \u05e1\u05e8\u05d2\u05dc \u05e6\u05d3"
133
+ }
134
+ },
135
+ "thread": {
136
+ "untitled": "\u05e9\u05d9\u05d7\u05d4 \u05dc\u05dc\u05d0 \u05db\u05d5\u05ea\u05e8\u05ea",
137
+ "menu": {
138
+ "rename": "Rename",
139
+ "delete": "Delete"
140
+ },
141
+ "actions": {
142
+ "delete": {
143
+ "title": "\u05d0\u05e9\u05e8 \u05de\u05d7\u05d9\u05e7\u05d4",
144
+ "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",
145
+ "success": "\u05d4\u05e6'\u05d0\u05d8 \u05e0\u05de\u05d7\u05e7",
146
+ "inProgress": "\u05de\u05d5\u05d7\u05e7 \u05e6'\u05d0\u05d8"
147
+ },
148
+ "rename": {
149
+ "title": "\u05e9\u05e0\u05d4 \u05e9\u05dd \u05e9\u05d9\u05d7\u05d4",
150
+ "description": "\u05d4\u05d6\u05df \u05e9\u05dd \u05d7\u05d3\u05e9 \u05dc\u05e9\u05d9\u05d7\u05d4 \u05d6\u05d5",
151
+ "form": {
152
+ "name": {
153
+ "label": "\u05e9\u05dd",
154
+ "placeholder": "\u05d4\u05d6\u05df \u05e9\u05dd \u05d7\u05d3\u05e9"
155
+ }
156
+ },
157
+ "success": "\u05e9\u05dd \u05d4\u05e9\u05d9\u05d7\u05d4 \u05e9\u05d5\u05e0\u05d4!",
158
+ "inProgress": "\u05de\u05e9\u05e0\u05d4 \u05e9\u05dd \u05e9\u05d9\u05d7\u05d4"
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "navigation": {
164
+ "header": {
165
+ "chat": "\u05e6'\u05d0\u05d8",
166
+ "readme": "\u05e7\u05e8\u05d0 \u05d0\u05d5\u05ea\u05d9",
167
+ "theme": {
168
+ "light": "Light Theme",
169
+ "dark": "Dark Theme",
170
+ "system": "Follow System"
171
+ }
172
+ },
173
+ "newChat": {
174
+ "button": "\u05e6'\u05d0\u05d8 \u05d7\u05d3\u05e9",
175
+ "dialog": {
176
+ "title": "\u05e6\u05d5\u05e8 \u05e6'\u05d0\u05d8 \u05d7\u05d3\u05e9",
177
+ "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?",
178
+ "tooltip": "\u05e6'\u05d0\u05d8 \u05d7\u05d3\u05e9"
179
+ }
180
+ },
181
+ "user": {
182
+ "menu": {
183
+ "settings": "\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea",
184
+ "settingsKey": "\u05d4",
185
+ "apiKeys": "\u05de\u05e4\u05ea\u05d7\u05d5\u05ea API",
186
+ "logout": "\u05d4\u05ea\u05e0\u05ea\u05e7"
187
+ }
188
+ }
189
+ },
190
+ "apiKeys": {
191
+ "title": "\u05de\u05e4\u05ea\u05d7\u05d5\u05ea API \u05e0\u05d3\u05e8\u05e9\u05d9\u05dd",
192
+ "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.",
193
+ "success": {
194
+ "saved": "\u05e0\u05e9\u05de\u05e8 \u05d1\u05d4\u05e6\u05dc\u05d7\u05d4"
195
+ }
196
+ },
197
+ "alerts": {
198
+ "info": "Info",
199
+ "note": "Note",
200
+ "tip": "Tip",
201
+ "important": "Important",
202
+ "warning": "Warning",
203
+ "caution": "Caution",
204
+ "debug": "Debug",
205
+ "example": "Example",
206
+ "success": "Success",
207
+ "help": "Help",
208
+ "idea": "Idea",
209
+ "pending": "Pending",
210
+ "security": "Security",
211
+ "beta": "Beta",
212
+ "best-practice": "Best Practice"
213
+ }
214
+ }
.chainlit/translations/hi.json ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "common": {
3
+ "actions": {
4
+ "cancel": "\u0930\u0926\u094d\u0926 \u0915\u0930\u0947\u0902",
5
+ "confirm": "\u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0947\u0902",
6
+ "continue": "\u091c\u093e\u0930\u0940 \u0930\u0916\u0947\u0902",
7
+ "goBack": "\u0935\u093e\u092a\u0938 \u091c\u093e\u090f\u0902",
8
+ "reset": "\u0930\u0940\u0938\u0947\u091f \u0915\u0930\u0947\u0902",
9
+ "submit": "\u091c\u092e\u093e \u0915\u0930\u0947\u0902"
10
+ },
11
+ "status": {
12
+ "loading": "\u0932\u094b\u0921 \u0939\u094b \u0930\u0939\u093e \u0939\u0948...",
13
+ "error": {
14
+ "default": "\u090f\u0915 \u0924\u094d\u0930\u0941\u091f\u093f \u0939\u0941\u0908",
15
+ "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"
16
+ }
17
+ }
18
+ },
19
+ "auth": {
20
+ "login": {
21
+ "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",
22
+ "form": {
23
+ "email": {
24
+ "label": "\u0908\u092e\u0947\u0932 \u092a\u0924\u093e",
25
+ "required": "\u0908\u092e\u0947\u0932 \u090f\u0915 \u0906\u0935\u0936\u094d\u092f\u0915 \u092b\u093c\u0940\u0932\u094d\u0921 \u0939\u0948"
26
+ },
27
+ "password": {
28
+ "label": "\u092a\u093e\u0938\u0935\u0930\u094d\u0921",
29
+ "required": "\u092a\u093e\u0938\u0935\u0930\u094d\u0921 \u090f\u0915 \u0906\u0935\u0936\u094d\u092f\u0915 \u092b\u093c\u0940\u0932\u094d\u0921 \u0939\u0948"
30
+ },
31
+ "actions": {
32
+ "signin": "\u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0947\u0902"
33
+ },
34
+ "alternativeText": {
35
+ "or": "\u092f\u093e"
36
+ }
37
+ },
38
+ "errors": {
39
+ "default": "\u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0905\u0938\u092e\u0930\u094d\u0925",
40
+ "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",
41
+ "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",
42
+ "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",
43
+ "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",
44
+ "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",
45
+ "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",
46
+ "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",
47
+ "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",
48
+ "emailSignin": "\u0908\u092e\u0947\u0932 \u0928\u0939\u0940\u0902 \u092d\u0947\u091c\u093e \u091c\u093e \u0938\u0915\u093e",
49
+ "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",
50
+ "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",
51
+ "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"
52
+ }
53
+ },
54
+ "provider": {
55
+ "continue": "{{provider}} \u0915\u0947 \u0938\u093e\u0925 \u091c\u093e\u0930\u0940 \u0930\u0916\u0947\u0902"
56
+ }
57
+ },
58
+ "chat": {
59
+ "input": {
60
+ "placeholder": "\u0905\u092a\u0928\u093e \u0938\u0902\u0926\u0947\u0936 \u092f\u0939\u093e\u0902 \u091f\u093e\u0907\u092a \u0915\u0930\u0947\u0902...",
61
+ "actions": {
62
+ "send": "\u0938\u0902\u0926\u0947\u0936 \u092d\u0947\u091c\u0947\u0902",
63
+ "stop": "\u0915\u093e\u0930\u094d\u092f \u0930\u094b\u0915\u0947\u0902",
64
+ "attachFiles": "\u092b\u093c\u093e\u0907\u0932\u0947\u0902 \u0938\u0902\u0932\u0917\u094d\u0928 \u0915\u0930\u0947\u0902"
65
+ }
66
+ },
67
+ "speech": {
68
+ "start": "\u0930\u093f\u0915\u0949\u0930\u094d\u0921\u093f\u0902\u0917 \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902",
69
+ "stop": "\u0930\u093f\u0915\u0949\u0930\u094d\u0921\u093f\u0902\u0917 \u0930\u094b\u0915\u0947\u0902",
70
+ "connecting": "\u0915\u0928\u0947\u0915\u094d\u091f \u0939\u094b \u0930\u0939\u093e \u0939\u0948"
71
+ },
72
+ "fileUpload": {
73
+ "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",
74
+ "browse": "\u092b\u093c\u093e\u0907\u0932\u0947\u0902 \u092c\u094d\u0930\u093e\u0909\u091c\u093c \u0915\u0930\u0947\u0902",
75
+ "sizeLimit": "\u0938\u0940\u092e\u093e:",
76
+ "errors": {
77
+ "failed": "\u0905\u092a\u0932\u094b\u0921 \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932",
78
+ "cancelled": "\u0915\u093e \u0905\u092a\u0932\u094b\u0921 \u0930\u0926\u094d\u0926 \u0915\u093f\u092f\u093e \u0917\u092f\u093e"
79
+ }
80
+ },
81
+ "messages": {
82
+ "status": {
83
+ "using": "\u0909\u092a\u092f\u094b\u0917 \u0915\u0930 \u0930\u0939\u0947 \u0939\u0948\u0902",
84
+ "used": "\u0909\u092a\u092f\u094b\u0917 \u0915\u093f\u092f\u093e"
85
+ },
86
+ "actions": {
87
+ "copy": {
88
+ "button": "\u0915\u094d\u0932\u093f\u092a\u092c\u094b\u0930\u094d\u0921 \u092a\u0930 \u0915\u0949\u092a\u0940 \u0915\u0930\u0947\u0902",
89
+ "success": "\u0915\u0949\u092a\u0940 \u0915\u093f\u092f\u093e \u0917\u092f\u093e!"
90
+ }
91
+ },
92
+ "feedback": {
93
+ "positive": "\u0938\u0939\u093e\u092f\u0915",
94
+ "negative": "\u0938\u0939\u093e\u092f\u0915 \u0928\u0939\u0940\u0902",
95
+ "edit": "\u092a\u094d\u0930\u0924\u093f\u0915\u094d\u0930\u093f\u092f\u093e \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u0947\u0902",
96
+ "dialog": {
97
+ "title": "\u091f\u093f\u092a\u094d\u092a\u0923\u0940 \u091c\u094b\u0921\u093c\u0947\u0902",
98
+ "submit": "\u092a\u094d\u0930\u0924\u093f\u0915\u094d\u0930\u093f\u092f\u093e \u091c\u092e\u093e \u0915\u0930\u0947\u0902"
99
+ },
100
+ "status": {
101
+ "updating": "\u0905\u092a\u0921\u0947\u091f \u0939\u094b \u0930\u0939\u093e \u0939\u0948",
102
+ "updated": "\u092a\u094d\u0930\u0924\u093f\u0915\u094d\u0930\u093f\u092f\u093e \u0905\u092a\u0921\u0947\u091f \u0915\u0940 \u0917\u0908"
103
+ }
104
+ }
105
+ },
106
+ "history": {
107
+ "title": "\u092a\u093f\u091b\u0932\u0947 \u0907\u0928\u092a\u0941\u091f",
108
+ "empty": "\u0915\u0941\u091b \u092d\u0940 \u0928\u0939\u0940\u0902 \u0939\u0948...",
109
+ "show": "\u0907\u0924\u093f\u0939\u093e\u0938 \u0926\u093f\u0916\u093e\u090f\u0902"
110
+ },
111
+ "settings": {
112
+ "title": "\u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938 \u092a\u0948\u0928\u0932"
113
+ },
114
+ "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"
115
+ },
116
+ "threadHistory": {
117
+ "sidebar": {
118
+ "title": "\u092a\u093f\u091b\u0932\u0940 \u091a\u0948\u091f",
119
+ "filters": {
120
+ "search": "\u0916\u094b\u091c\u0947\u0902",
121
+ "placeholder": "Search conversations..."
122
+ },
123
+ "timeframes": {
124
+ "today": "\u0906\u091c",
125
+ "yesterday": "\u0915\u0932",
126
+ "previous7days": "\u092a\u093f\u091b\u0932\u0947 7 \u0926\u093f\u0928",
127
+ "previous30days": "\u092a\u093f\u091b\u0932\u0947 30 \u0926\u093f\u0928"
128
+ },
129
+ "empty": "\u0915\u094b\u0908 \u0925\u094d\u0930\u0947\u0921 \u0928\u0939\u0940\u0902 \u092e\u093f\u0932\u093e",
130
+ "actions": {
131
+ "close": "\u0938\u093e\u0907\u0921\u092c\u093e\u0930 \u092c\u0902\u0926 \u0915\u0930\u0947\u0902",
132
+ "open": "\u0938\u093e\u0907\u0921\u092c\u093e\u0930 \u0916\u094b\u0932\u0947\u0902"
133
+ }
134
+ },
135
+ "thread": {
136
+ "untitled": "\u0936\u0940\u0930\u094d\u0937\u0915\u0939\u0940\u0928 \u0935\u093e\u0930\u094d\u0924\u093e\u0932\u093e\u092a",
137
+ "menu": {
138
+ "rename": "Rename",
139
+ "delete": "Delete"
140
+ },
141
+ "actions": {
142
+ "delete": {
143
+ "title": "\u0939\u091f\u093e\u0928\u0947 \u0915\u0940 \u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0947\u0902",
144
+ "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",
145
+ "success": "\u091a\u0948\u091f \u0939\u091f\u093e \u0926\u0940 \u0917\u0908",
146
+ "inProgress": "\u091a\u0948\u091f \u0939\u091f\u093e\u0908 \u091c\u093e \u0930\u0939\u0940 \u0939\u0948"
147
+ },
148
+ "rename": {
149
+ "title": "\u0925\u094d\u0930\u0947\u0921 \u0915\u093e \u0928\u093e\u092e \u092c\u0926\u0932\u0947\u0902",
150
+ "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",
151
+ "form": {
152
+ "name": {
153
+ "label": "\u0928\u093e\u092e",
154
+ "placeholder": "\u0928\u092f\u093e \u0928\u093e\u092e \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902"
155
+ }
156
+ },
157
+ "success": "\u0925\u094d\u0930\u0947\u0921 \u0915\u093e \u0928\u093e\u092e \u092c\u0926\u0932 \u0926\u093f\u092f\u093e \u0917\u092f\u093e!",
158
+ "inProgress": "\u0925\u094d\u0930\u0947\u0921 \u0915\u093e \u0928\u093e\u092e \u092c\u0926\u0932\u093e \u091c\u093e \u0930\u0939\u093e \u0939\u0948"
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "navigation": {
164
+ "header": {
165
+ "chat": "\u091a\u0948\u091f",
166
+ "readme": "\u0930\u0940\u0921\u092e\u0940",
167
+ "theme": {
168
+ "light": "Light Theme",
169
+ "dark": "Dark Theme",
170
+ "system": "Follow System"
171
+ }
172
+ },
173
+ "newChat": {
174
+ "button": "\u0928\u0908 \u091a\u0948\u091f",
175
+ "dialog": {
176
+ "title": "\u0928\u0908 \u091a\u0948\u091f \u092c\u0928\u093e\u090f\u0902",
177
+ "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?",
178
+ "tooltip": "\u0928\u0908 \u091a\u0948\u091f"
179
+ }
180
+ },
181
+ "user": {
182
+ "menu": {
183
+ "settings": "\u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938",
184
+ "settingsKey": "S",
185
+ "apiKeys": "API \u0915\u0941\u0902\u091c\u093f\u092f\u093e\u0902",
186
+ "logout": "\u0932\u0949\u0917\u0906\u0909\u091f"
187
+ }
188
+ }
189
+ },
190
+ "apiKeys": {
191
+ "title": "\u0906\u0935\u0936\u094d\u092f\u0915 API \u0915\u0941\u0902\u091c\u093f\u092f\u093e\u0902",
192
+ "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",
193
+ "success": {
194
+ "saved": "\u0938\u092b\u0932\u0924\u093e\u092a\u0942\u0930\u094d\u0935\u0915 \u0938\u0939\u0947\u091c\u093e \u0917\u092f\u093e"
195
+ }
196
+ },
197
+ "alerts": {
198
+ "info": "Info",
199
+ "note": "Note",
200
+ "tip": "Tip",
201
+ "important": "Important",
202
+ "warning": "Warning",
203
+ "caution": "Caution",
204
+ "debug": "Debug",
205
+ "example": "Example",
206
+ "success": "Success",
207
+ "help": "Help",
208
+ "idea": "Idea",
209
+ "pending": "Pending",
210
+ "security": "Security",
211
+ "beta": "Beta",
212
+ "best-practice": "Best Practice"
213
+ }
214
+ }
.chainlit/translations/ja.json ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "common": {
3
+ "actions": {
4
+ "cancel": "\u30ad\u30e3\u30f3\u30bb\u30eb",
5
+ "confirm": "\u78ba\u8a8d",
6
+ "continue": "\u7d9a\u3051\u308b",
7
+ "goBack": "\u623b\u308b",
8
+ "reset": "\u30ea\u30bb\u30c3\u30c8",
9
+ "submit": "\u9001\u4fe1"
10
+ },
11
+ "status": {
12
+ "loading": "\u8aad\u307f\u8fbc\u307f\u4e2d...",
13
+ "error": {
14
+ "default": "\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f",
15
+ "serverConnection": "\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f"
16
+ }
17
+ }
18
+ },
19
+ "auth": {
20
+ "login": {
21
+ "title": "\u30a2\u30d7\u30ea\u306b\u30ed\u30b0\u30a4\u30f3",
22
+ "form": {
23
+ "email": {
24
+ "label": "\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9",
25
+ "required": "\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306f\u5fc5\u9808\u9805\u76ee\u3067\u3059"
26
+ },
27
+ "password": {
28
+ "label": "\u30d1\u30b9\u30ef\u30fc\u30c9",
29
+ "required": "\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u5fc5\u9808\u9805\u76ee\u3067\u3059"
30
+ },
31
+ "actions": {
32
+ "signin": "\u30b5\u30a4\u30f3\u30a4\u30f3"
33
+ },
34
+ "alternativeText": {
35
+ "or": "\u307e\u305f\u306f"
36
+ }
37
+ },
38
+ "errors": {
39
+ "default": "\u30b5\u30a4\u30f3\u30a4\u30f3\u3067\u304d\u307e\u305b\u3093",
40
+ "signin": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044",
41
+ "oauthSignin": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044",
42
+ "redirectUriMismatch": "\u30ea\u30c0\u30a4\u30ec\u30af\u30c8URI\u304cOAuth\u30a2\u30d7\u30ea\u306e\u8a2d\u5b9a\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093",
43
+ "oauthCallback": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044",
44
+ "oauthCreateAccount": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044",
45
+ "emailCreateAccount": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044",
46
+ "callback": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044",
47
+ "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",
48
+ "emailSignin": "\u30e1\u30fc\u30eb\u3092\u9001\u4fe1\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f",
49
+ "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",
50
+ "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",
51
+ "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"
52
+ }
53
+ },
54
+ "provider": {
55
+ "continue": "{{provider}}\u3067\u7d9a\u3051\u308b"
56
+ }
57
+ },
58
+ "chat": {
59
+ "input": {
60
+ "placeholder": "\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044...",
61
+ "actions": {
62
+ "send": "\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1",
63
+ "stop": "\u30bf\u30b9\u30af\u3092\u505c\u6b62",
64
+ "attachFiles": "\u30d5\u30a1\u30a4\u30eb\u3092\u6dfb\u4ed8"
65
+ }
66
+ },
67
+ "speech": {
68
+ "start": "\u9332\u97f3\u958b\u59cb",
69
+ "stop": "\u9332\u97f3\u505c\u6b62",
70
+ "connecting": "\u63a5\u7d9a\u4e2d"
71
+ },
72
+ "fileUpload": {
73
+ "dragDrop": "\u3053\u3053\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u30c9\u30e9\u30c3\u30b0\uff06\u30c9\u30ed\u30c3\u30d7",
74
+ "browse": "\u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167",
75
+ "sizeLimit": "\u5236\u9650\uff1a",
76
+ "errors": {
77
+ "failed": "\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306b\u5931\u6557\u3057\u307e\u3057\u305f",
78
+ "cancelled": "\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3092\u30ad\u30e3\u30f3\u30bb\u30eb\u3057\u307e\u3057\u305f\uff1a"
79
+ }
80
+ },
81
+ "messages": {
82
+ "status": {
83
+ "using": "\u4f7f\u7528\u4e2d",
84
+ "used": "\u4f7f\u7528\u6e08\u307f"
85
+ },
86
+ "actions": {
87
+ "copy": {
88
+ "button": "\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u30b3\u30d4\u30fc",
89
+ "success": "\u30b3\u30d4\u30fc\u3057\u307e\u3057\u305f\uff01"
90
+ }
91
+ },
92
+ "feedback": {
93
+ "positive": "\u5f79\u306b\u7acb\u3063\u305f",
94
+ "negative": "\u5f79\u306b\u7acb\u305f\u306a\u304b\u3063\u305f",
95
+ "edit": "\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u7de8\u96c6",
96
+ "dialog": {
97
+ "title": "\u30b3\u30e1\u30f3\u30c8\u3092\u8ffd\u52a0",
98
+ "submit": "\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u9001\u4fe1"
99
+ },
100
+ "status": {
101
+ "updating": "\u66f4\u65b0\u4e2d",
102
+ "updated": "\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f"
103
+ }
104
+ }
105
+ },
106
+ "history": {
107
+ "title": "\u6700\u8fd1\u306e\u5165\u529b",
108
+ "empty": "\u4f55\u3082\u3042\u308a\u307e\u305b\u3093...",
109
+ "show": "\u5c65\u6b74\u3092\u8868\u793a"
110
+ },
111
+ "settings": {
112
+ "title": "\u8a2d\u5b9a\u30d1\u30cd\u30eb"
113
+ },
114
+ "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"
115
+ },
116
+ "threadHistory": {
117
+ "sidebar": {
118
+ "title": "\u904e\u53bb\u306e\u30c1\u30e3\u30c3\u30c8",
119
+ "filters": {
120
+ "search": "\u691c\u7d22",
121
+ "placeholder": "Search conversations..."
122
+ },
123
+ "timeframes": {
124
+ "today": "\u4eca\u65e5",
125
+ "yesterday": "\u6628\u65e5",
126
+ "previous7days": "\u904e\u53bb7\u65e5\u9593",
127
+ "previous30days": "\u904e\u53bb30\u65e5\u9593"
128
+ },
129
+ "empty": "\u30b9\u30ec\u30c3\u30c9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093",
130
+ "actions": {
131
+ "close": "\u30b5\u30a4\u30c9\u30d0\u30fc\u3092\u9589\u3058\u308b",
132
+ "open": "\u30b5\u30a4\u30c9\u30d0\u30fc\u3092\u958b\u304f"
133
+ }
134
+ },
135
+ "thread": {
136
+ "untitled": "\u7121\u984c\u306e\u4f1a\u8a71",
137
+ "menu": {
138
+ "rename": "Rename",
139
+ "delete": "Delete"
140
+ },
141
+ "actions": {
142
+ "delete": {
143
+ "title": "\u524a\u9664\u306e\u78ba\u8a8d",
144
+ "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",
145
+ "success": "\u30c1\u30e3\u30c3\u30c8\u3092\u524a\u9664\u3057\u307e\u3057\u305f",
146
+ "inProgress": "\u30c1\u30e3\u30c3\u30c8\u3092\u524a\u9664\u4e2d"
147
+ },
148
+ "rename": {
149
+ "title": "\u30b9\u30ec\u30c3\u30c9\u306e\u540d\u524d\u3092\u5909\u66f4",
150
+ "description": "\u3053\u306e\u30b9\u30ec\u30c3\u30c9\u306e\u65b0\u3057\u3044\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044",
151
+ "form": {
152
+ "name": {
153
+ "label": "\u540d\u524d",
154
+ "placeholder": "\u65b0\u3057\u3044\u540d\u524d\u3092\u5165\u529b"
155
+ }
156
+ },
157
+ "success": "\u30b9\u30ec\u30c3\u30c9\u540d\u3092\u5909\u66f4\u3057\u307e\u3057\u305f\uff01",
158
+ "inProgress": "\u30b9\u30ec\u30c3\u30c9\u540d\u3092\u5909\u66f4\u4e2d"
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "navigation": {
164
+ "header": {
165
+ "chat": "\u30c1\u30e3\u30c3\u30c8",
166
+ "readme": "\u8aac\u660e\u66f8",
167
+ "theme": {
168
+ "light": "Light Theme",
169
+ "dark": "Dark Theme",
170
+ "system": "Follow System"
171
+ }
172
+ },
173
+ "newChat": {
174
+ "button": "\u65b0\u898f\u30c1\u30e3\u30c3\u30c8",
175
+ "dialog": {
176
+ "title": "\u65b0\u898f\u30c1\u30e3\u30c3\u30c8\u306e\u4f5c\u6210",
177
+ "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",
178
+ "tooltip": "\u65b0\u898f\u30c1\u30e3\u30c3\u30c8"
179
+ }
180
+ },
181
+ "user": {
182
+ "menu": {
183
+ "settings": "\u8a2d\u5b9a",
184
+ "settingsKey": "S",
185
+ "apiKeys": "API\u30ad\u30fc",
186
+ "logout": "\u30ed\u30b0\u30a2\u30a6\u30c8"
187
+ }
188
+ }
189
+ },
190
+ "apiKeys": {
191
+ "title": "\u5fc5\u8981\u306aAPI\u30ad\u30fc",
192
+ "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",
193
+ "success": {
194
+ "saved": "\u4fdd\u5b58\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f"
195
+ }
196
+ },
197
+ "alerts": {
198
+ "info": "Info",
199
+ "note": "Note",
200
+ "tip": "Tip",
201
+ "important": "Important",
202
+ "warning": "Warning",
203
+ "caution": "Caution",
204
+ "debug": "Debug",
205
+ "example": "Example",
206
+ "success": "Success",
207
+ "help": "Help",
208
+ "idea": "Idea",
209
+ "pending": "Pending",
210
+ "security": "Security",
211
+ "beta": "Beta",
212
+ "best-practice": "Best Practice"
213
+ }
214
+ }
.chainlit/translations/kn.json ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "common": {
3
+ "actions": {
4
+ "cancel": "\u0cb0\u0ca6\u0ccd\u0ca6\u0cc1\u0cae\u0cbe\u0ca1\u0cbf",
5
+ "confirm": "\u0ca6\u0cc3\u0ca2\u0cc0\u0c95\u0cb0\u0cbf\u0cb8\u0cbf",
6
+ "continue": "\u0cae\u0cc1\u0c82\u0ca6\u0cc1\u0cb5\u0cb0\u0cbf\u0cb8\u0cbf",
7
+ "goBack": "\u0cb9\u0cbf\u0c82\u0ca6\u0cc6 \u0cb9\u0ccb\u0c97\u0cbf",
8
+ "reset": "\u0cae\u0cb0\u0cc1\u0cb9\u0cca\u0c82\u0ca6\u0cbf\u0cb8\u0cbf",
9
+ "submit": "\u0cb8\u0cb2\u0ccd\u0cb2\u0cbf\u0cb8\u0cbf"
10
+ },
11
+ "status": {
12
+ "loading": "\u0cb2\u0ccb\u0ca1\u0ccd \u0c86\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0ca6\u0cc6...",
13
+ "error": {
14
+ "default": "\u0ca6\u0ccb\u0cb7 \u0cb8\u0c82\u0cad\u0cb5\u0cbf\u0cb8\u0cbf\u0ca6\u0cc6",
15
+ "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"
16
+ }
17
+ }
18
+ },
19
+ "auth": {
20
+ "login": {
21
+ "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",
22
+ "form": {
23
+ "email": {
24
+ "label": "\u0c87\u0cae\u0cc7\u0cb2\u0ccd \u0cb5\u0cbf\u0cb3\u0cbe\u0cb8",
25
+ "required": "\u0c87\u0cae\u0cc7\u0cb2\u0ccd \u0c85\u0c97\u0ca4\u0ccd\u0caf\u0cb5\u0cbf\u0cb0\u0cc1\u0cb5 \u0c95\u0ccd\u0cb7\u0cc7\u0ca4\u0ccd\u0cb0"
26
+ },
27
+ "password": {
28
+ "label": "\u0caa\u0cbe\u0cb8\u0ccd\u200c\u0cb5\u0cb0\u0ccd\u0ca1\u0ccd",
29
+ "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"
30
+ },
31
+ "actions": {
32
+ "signin": "\u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cbf"
33
+ },
34
+ "alternativeText": {
35
+ "or": "\u0c85\u0ca5\u0cb5\u0cbe"
36
+ }
37
+ },
38
+ "errors": {
39
+ "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",
40
+ "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",
41
+ "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",
42
+ "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",
43
+ "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",
44
+ "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",
45
+ "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",
46
+ "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",
47
+ "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",
48
+ "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",
49
+ "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",
50
+ "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",
51
+ "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"
52
+ }
53
+ },
54
+ "provider": {
55
+ "continue": "{{provider}} \u0ca8\u0cca\u0c82\u0ca6\u0cbf\u0c97\u0cc6 \u0cae\u0cc1\u0c82\u0ca6\u0cc1\u0cb5\u0cb0\u0cbf\u0cb8\u0cbf"
56
+ }
57
+ },
58
+ "chat": {
59
+ "input": {
60
+ "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...",
61
+ "actions": {
62
+ "send": "\u0cb8\u0c82\u0ca6\u0cc7\u0cb6 \u0c95\u0cb3\u0cc1\u0cb9\u0cbf\u0cb8\u0cbf",
63
+ "stop": "\u0c95\u0cbe\u0cb0\u0ccd\u0caf \u0ca8\u0cbf\u0cb2\u0ccd\u0cb2\u0cbf\u0cb8\u0cbf",
64
+ "attachFiles": "\u0cab\u0cc8\u0cb2\u0ccd\u200c\u0c97\u0cb3\u0ca8\u0ccd\u0ca8\u0cc1 \u0cb2\u0c97\u0ca4\u0ccd\u0ca4\u0cbf\u0cb8\u0cbf"
65
+ }
66
+ },
67
+ "speech": {
68
+ "start": "\u0cb0\u0cc6\u0c95\u0cbe\u0cb0\u0ccd\u0ca1\u0cbf\u0c82\u0c97\u0ccd \u0caa\u0ccd\u0cb0\u0cbe\u0cb0\u0c82\u0cad\u0cbf\u0cb8\u0cbf",
69
+ "stop": "\u0cb0\u0cc6\u0c95\u0cbe\u0cb0\u0ccd\u0ca1\u0cbf\u0c82\u0c97\u0ccd \u0ca8\u0cbf\u0cb2\u0ccd\u0cb2\u0cbf\u0cb8\u0cbf",
70
+ "connecting": "\u0cb8\u0c82\u0caa\u0cb0\u0ccd\u0c95\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0ca6\u0cc6"
71
+ },
72
+ "fileUpload": {
73
+ "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",
74
+ "browse": "\u0cab\u0cc8\u0cb2\u0ccd\u200c\u0c97\u0cb3\u0ca8\u0ccd\u0ca8\u0cc1 \u0cac\u0ccd\u0cb0\u0ccc\u0cb8\u0ccd \u0cae\u0cbe\u0ca1\u0cbf",
75
+ "sizeLimit": "\u0cae\u0cbf\u0ca4\u0cbf:",
76
+ "errors": {
77
+ "failed": "\u0c85\u0caa\u0ccd\u200c\u0cb2\u0ccb\u0ca1\u0ccd \u0cb5\u0cbf\u0cab\u0cb2\u0cb5\u0cbe\u0c97\u0cbf\u0ca6\u0cc6",
78
+ "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"
79
+ }
80
+ },
81
+ "messages": {
82
+ "status": {
83
+ "using": "\u0cac\u0cb3\u0cb8\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0cb0\u0cc1\u0cb5\u0cc1\u0ca6\u0cc1",
84
+ "used": "\u0cac\u0cb3\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6"
85
+ },
86
+ "actions": {
87
+ "copy": {
88
+ "button": "\u0c95\u0ccd\u0cb2\u0cbf\u0caa\u0ccd\u200c\u0cac\u0ccb\u0cb0\u0ccd\u0ca1\u0ccd\u200c\u0c97\u0cc6 \u0ca8\u0c95\u0cb2\u0cbf\u0cb8\u0cbf",
89
+ "success": "\u0ca8\u0c95\u0cb2\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6!"
90
+ }
91
+ },
92
+ "feedback": {
93
+ "positive": "\u0cb8\u0cb9\u0cbe\u0caf\u0c95\u0cb5\u0cbe\u0c97\u0cbf\u0ca6\u0cc6",
94
+ "negative": "\u0cb8\u0cb9\u0cbe\u0caf\u0c95\u0cb5\u0cbe\u0c97\u0cbf\u0cb2\u0ccd\u0cb2",
95
+ "edit": "\u0caa\u0ccd\u0cb0\u0ca4\u0cbf\u0c95\u0ccd\u0cb0\u0cbf\u0caf\u0cc6 \u0cb8\u0c82\u0caa\u0cbe\u0ca6\u0cbf\u0cb8\u0cbf",
96
+ "dialog": {
97
+ "title": "\u0c95\u0cbe\u0cae\u0cc6\u0c82\u0c9f\u0ccd \u0cb8\u0cc7\u0cb0\u0cbf\u0cb8\u0cbf",
98
+ "submit": "\u0caa\u0ccd\u0cb0\u0ca4\u0cbf\u0c95\u0ccd\u0cb0\u0cbf\u0caf\u0cc6 \u0cb8\u0cb2\u0ccd\u0cb2\u0cbf\u0cb8\u0cbf"
99
+ },
100
+ "status": {
101
+ "updating": "\u0ca8\u0cb5\u0cc0\u0c95\u0cb0\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0ca6\u0cc6",
102
+ "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"
103
+ }
104
+ }
105
+ },
106
+ "history": {
107
+ "title": "\u0c95\u0cca\u0ca8\u0cc6\u0caf \u0c87\u0ca8\u0ccd\u200c\u0caa\u0cc1\u0c9f\u0ccd\u200c\u0c97\u0cb3\u0cc1",
108
+ "empty": "\u0c96\u0cbe\u0cb2\u0cbf\u0caf\u0cbe\u0c97\u0cbf\u0ca6\u0cc6...",
109
+ "show": "\u0c87\u0ca4\u0cbf\u0cb9\u0cbe\u0cb8 \u0ca4\u0ccb\u0cb0\u0cbf\u0cb8\u0cbf"
110
+ },
111
+ "settings": {
112
+ "title": "\u0cb8\u0cc6\u0c9f\u0ccd\u0c9f\u0cbf\u0c82\u0c97\u0ccd\u200c\u0c97\u0cb3 \u0caa\u0ccd\u0caf\u0cbe\u0ca8\u0cc6\u0cb2\u0ccd"
113
+ },
114
+ "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."
115
+ },
116
+ "threadHistory": {
117
+ "sidebar": {
118
+ "title": "\u0cb9\u0cbf\u0c82\u0ca6\u0cbf\u0ca8 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0c97\u0cb3\u0cc1",
119
+ "filters": {
120
+ "search": "\u0cb9\u0cc1\u0ca1\u0cc1\u0c95\u0cbf",
121
+ "placeholder": "Search conversations..."
122
+ },
123
+ "timeframes": {
124
+ "today": "\u0c87\u0c82\u0ca6\u0cc1",
125
+ "yesterday": "\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6",
126
+ "previous7days": "\u0cb9\u0cbf\u0c82\u0ca6\u0cbf\u0ca8 7 \u0ca6\u0cbf\u0ca8\u0c97\u0cb3\u0cc1",
127
+ "previous30days": "\u0cb9\u0cbf\u0c82\u0ca6\u0cbf\u0ca8 30 \u0ca6\u0cbf\u0ca8\u0c97\u0cb3\u0cc1"
128
+ },
129
+ "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",
130
+ "actions": {
131
+ "close": "\u0caa\u0c95\u0ccd\u0c95\u0ca6 \u0caa\u0c9f\u0ccd\u0c9f\u0cbf \u0cae\u0cc1\u0c9a\u0ccd\u0c9a\u0cbf",
132
+ "open": "\u0caa\u0c95\u0ccd\u0c95\u0ca6 \u0caa\u0c9f\u0ccd\u0c9f\u0cbf \u0ca4\u0cc6\u0cb0\u0cc6\u0caf\u0cbf\u0cb0\u0cbf"
133
+ }
134
+ },
135
+ "thread": {
136
+ "untitled": "\u0cb6\u0cc0\u0cb0\u0ccd\u0cb7\u0cbf\u0c95\u0cc6\u0cb0\u0cb9\u0cbf\u0ca4 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6",
137
+ "menu": {
138
+ "rename": "Rename",
139
+ "delete": "Delete"
140
+ },
141
+ "actions": {
142
+ "delete": {
143
+ "title": "\u0c85\u0cb3\u0cbf\u0cb8\u0cc1\u0cb5\u0cbf\u0c95\u0cc6\u0caf\u0ca8\u0ccd\u0ca8\u0cc1 \u0ca6\u0cc3\u0ca2\u0cc0\u0c95\u0cb0\u0cbf\u0cb8\u0cbf",
144
+ "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",
145
+ "success": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6 \u0c85\u0cb3\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6",
146
+ "inProgress": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6 \u0c85\u0cb3\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0ca6\u0cc6"
147
+ },
148
+ "rename": {
149
+ "title": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0caf \u0cb9\u0cc6\u0cb8\u0cb0\u0cc1 \u0cac\u0ca6\u0cb2\u0cbe\u0caf\u0cbf\u0cb8\u0cbf",
150
+ "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",
151
+ "form": {
152
+ "name": {
153
+ "label": "\u0cb9\u0cc6\u0cb8\u0cb0\u0cc1",
154
+ "placeholder": "\u0cb9\u0cca\u0cb8 \u0cb9\u0cc6\u0cb8\u0cb0\u0ca8\u0ccd\u0ca8\u0cc1 \u0ca8\u0cae\u0cc2\u0ca6\u0cbf\u0cb8\u0cbf"
155
+ }
156
+ },
157
+ "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!",
158
+ "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"
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "navigation": {
164
+ "header": {
165
+ "chat": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6",
166
+ "readme": "\u0c93\u0ca6\u0cbf",
167
+ "theme": {
168
+ "light": "Light Theme",
169
+ "dark": "Dark Theme",
170
+ "system": "Follow System"
171
+ }
172
+ },
173
+ "newChat": {
174
+ "button": "\u0cb9\u0cca\u0cb8 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6",
175
+ "dialog": {
176
+ "title": "\u0cb9\u0cca\u0cb8 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6 \u0cb0\u0c9a\u0cbf\u0cb8\u0cbf",
177
+ "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?",
178
+ "tooltip": "\u0cb9\u0cca\u0cb8 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6"
179
+ }
180
+ },
181
+ "user": {
182
+ "menu": {
183
+ "settings": "\u0cb8\u0cc6\u0c9f\u0ccd\u0c9f\u0cbf\u0c82\u0c97\u0ccd\u200c\u0c97\u0cb3\u0cc1",
184
+ "settingsKey": "S",
185
+ "apiKeys": "API \u0c95\u0cc0\u0c97\u0cb3\u0cc1",
186
+ "logout": "\u0cb2\u0cbe\u0c97\u0ccd \u0c94\u0c9f\u0ccd"
187
+ }
188
+ }
189
+ },
190
+ "apiKeys": {
191
+ "title": "\u0c85\u0c97\u0ca4\u0ccd\u0caf\u0cb5\u0cbf\u0cb0\u0cc1\u0cb5 API \u0c95\u0cc0\u0c97\u0cb3\u0cc1",
192
+ "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.",
193
+ "success": {
194
+ "saved": "\u0caf\u0cb6\u0cb8\u0ccd\u0cb5\u0cbf\u0caf\u0cbe\u0c97\u0cbf \u0c89\u0cb3\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6"
195
+ }
196
+ },
197
+ "alerts": {
198
+ "info": "Info",
199
+ "note": "Note",
200
+ "tip": "Tip",
201
+ "important": "Important",
202
+ "warning": "Warning",
203
+ "caution": "Caution",
204
+ "debug": "Debug",
205
+ "example": "Example",
206
+ "success": "Success",
207
+ "help": "Help",
208
+ "idea": "Idea",
209
+ "pending": "Pending",
210
+ "security": "Security",
211
+ "beta": "Beta",
212
+ "best-practice": "Best Practice"
213
+ }
214
+ }
.chainlit/translations/ml.json ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "common": {
3
+ "actions": {
4
+ "cancel": "\u0d31\u0d26\u0d4d\u0d26\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15",
5
+ "confirm": "\u0d38\u0d4d\u0d25\u0d3f\u0d30\u0d40\u0d15\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
6
+ "continue": "\u0d24\u0d41\u0d1f\u0d30\u0d41\u0d15",
7
+ "goBack": "\u0d24\u0d3f\u0d30\u0d3f\u0d15\u0d46 \u0d2a\u0d4b\u0d15\u0d41\u0d15",
8
+ "reset": "\u0d2a\u0d41\u0d28\u0d03\u0d38\u0d1c\u0d4d\u0d1c\u0d2e\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15",
9
+ "submit": "\u0d38\u0d2e\u0d7c\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15"
10
+ },
11
+ "status": {
12
+ "loading": "\u0d32\u0d4b\u0d21\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d28\u0d4d\u0d28\u0d41...",
13
+ "error": {
14
+ "default": "\u0d12\u0d30\u0d41 \u0d2a\u0d3f\u0d36\u0d15\u0d4d \u0d38\u0d02\u0d2d\u0d35\u0d3f\u0d1a\u0d4d\u0d1a\u0d41",
15
+ "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"
16
+ }
17
+ }
18
+ },
19
+ "auth": {
20
+ "login": {
21
+ "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",
22
+ "form": {
23
+ "email": {
24
+ "label": "\u0d07\u0d2e\u0d46\u0d2f\u0d3f\u0d7d \u0d35\u0d3f\u0d32\u0d3e\u0d38\u0d02",
25
+ "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"
26
+ },
27
+ "password": {
28
+ "label": "\u0d2a\u0d3e\u0d38\u0d4d\u200c\u0d35\u0d47\u0d21\u0d4d",
29
+ "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"
30
+ },
31
+ "actions": {
32
+ "signin": "\u0d38\u0d48\u0d7b \u0d07\u0d7b"
33
+ },
34
+ "alternativeText": {
35
+ "or": "\u0d05\u0d32\u0d4d\u0d32\u0d46\u0d19\u0d4d\u0d15\u0d3f\u0d7d"
36
+ }
37
+ },
38
+ "errors": {
39
+ "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",
40
+ "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",
41
+ "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",
42
+ "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",
43
+ "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",
44
+ "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",
45
+ "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",
46
+ "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",
47
+ "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",
48
+ "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",
49
+ "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",
50
+ "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",
51
+ "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"
52
+ }
53
+ },
54
+ "provider": {
55
+ "continue": "{{provider}} \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d24\u0d41\u0d1f\u0d30\u0d41\u0d15"
56
+ }
57
+ },
58
+ "chat": {
59
+ "input": {
60
+ "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...",
61
+ "actions": {
62
+ "send": "\u0d38\u0d28\u0d4d\u0d26\u0d47\u0d36\u0d02 \u0d05\u0d2f\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15",
63
+ "stop": "\u0d1f\u0d3e\u0d38\u0d4d\u0d15\u0d4d \u0d28\u0d3f\u0d7c\u0d24\u0d4d\u0d24\u0d41\u0d15",
64
+ "attachFiles": "\u0d2b\u0d2f\u0d32\u0d41\u0d15\u0d7e \u0d05\u0d31\u0d4d\u0d31\u0d3e\u0d1a\u0d4d\u0d1a\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15"
65
+ }
66
+ },
67
+ "speech": {
68
+ "start": "\u0d31\u0d46\u0d15\u0d4d\u0d15\u0d4b\u0d7c\u0d21\u0d3f\u0d02\u0d17\u0d4d \u0d06\u0d30\u0d02\u0d2d\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
69
+ "stop": "\u0d31\u0d46\u0d15\u0d4d\u0d15\u0d4b\u0d7c\u0d21\u0d3f\u0d02\u0d17\u0d4d \u0d28\u0d3f\u0d7c\u0d24\u0d4d\u0d24\u0d41\u0d15",
70
+ "connecting": "\u0d2c\u0d28\u0d4d\u0d27\u0d3f\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41"
71
+ },
72
+ "fileUpload": {
73
+ "dragDrop": "\u0d2b\u0d2f\u0d32\u0d41\u0d15\u0d7e \u0d07\u0d35\u0d3f\u0d1f\u0d46 \u0d35\u0d32\u0d3f\u0d1a\u0d4d\u0d1a\u0d3f\u0d1f\u0d41\u0d15",
74
+ "browse": "\u0d2b\u0d2f\u0d32\u0d41\u0d15\u0d7e \u0d24\u0d3f\u0d30\u0d2f\u0d41\u0d15",
75
+ "sizeLimit": "\u0d2a\u0d30\u0d3f\u0d27\u0d3f:",
76
+ "errors": {
77
+ "failed": "\u0d05\u0d2a\u0d4d\u200c\u0d32\u0d4b\u0d21\u0d4d \u0d2a\u0d30\u0d3e\u0d1c\u0d2f\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f\u0d41",
78
+ "cancelled": "\u0d05\u0d2a\u0d4d\u200c\u0d32\u0d4b\u0d21\u0d4d \u0d31\u0d26\u0d4d\u0d26\u0d3e\u0d15\u0d4d\u0d15\u0d3f"
79
+ }
80
+ },
81
+ "messages": {
82
+ "status": {
83
+ "using": "\u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41",
84
+ "used": "\u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d41"
85
+ },
86
+ "actions": {
87
+ "copy": {
88
+ "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",
89
+ "success": "\u0d2a\u0d15\u0d7c\u0d24\u0d4d\u0d24\u0d3f!"
90
+ }
91
+ },
92
+ "feedback": {
93
+ "positive": "\u0d38\u0d39\u0d3e\u0d2f\u0d15\u0d30\u0d02",
94
+ "negative": "\u0d38\u0d39\u0d3e\u0d2f\u0d15\u0d30\u0d2e\u0d32\u0d4d\u0d32",
95
+ "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",
96
+ "dialog": {
97
+ "title": "\u0d12\u0d30\u0d41 \u0d15\u0d2e\u0d28\u0d4d\u0d31\u0d4d \u0d1a\u0d47\u0d7c\u0d15\u0d4d\u0d15\u0d41\u0d15",
98
+ "submit": "\u0d2b\u0d40\u0d21\u0d4d\u0d2c\u0d3e\u0d15\u0d4d\u0d15\u0d4d \u0d38\u0d2e\u0d7c\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15"
99
+ },
100
+ "status": {
101
+ "updating": "\u0d05\u0d2a\u0d4d\u0d21\u0d47\u0d31\u0d4d\u0d31\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d28\u0d4d\u0d28\u0d41",
102
+ "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"
103
+ }
104
+ }
105
+ },
106
+ "history": {
107
+ "title": "\u0d05\u0d35\u0d38\u0d3e\u0d28 \u0d07\u0d7b\u0d2a\u0d41\u0d1f\u0d4d\u0d1f\u0d41\u0d15\u0d7e",
108
+ "empty": "\u0d12\u0d28\u0d4d\u0d28\u0d41\u0d2e\u0d3f\u0d32\u0d4d\u0d32...",
109
+ "show": "\u0d39\u0d3f\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d31\u0d3f \u0d15\u0d3e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15"
110
+ },
111
+ "settings": {
112
+ "title": "\u0d15\u0d4d\u0d30\u0d2e\u0d40\u0d15\u0d30\u0d23\u0d19\u0d4d\u0d19\u0d7e \u0d2a\u0d3e\u0d28\u0d7d"
113
+ },
114
+ "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."
115
+ },
116
+ "threadHistory": {
117
+ "sidebar": {
118
+ "title": "\u0d2e\u0d41\u0d7b \u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d41\u0d15\u0d7e",
119
+ "filters": {
120
+ "search": "\u0d24\u0d3f\u0d30\u0d2f\u0d41\u0d15",
121
+ "placeholder": "Search conversations..."
122
+ },
123
+ "timeframes": {
124
+ "today": "\u0d07\u0d28\u0d4d\u0d28\u0d4d",
125
+ "yesterday": "\u0d07\u0d28\u0d4d\u0d28\u0d32\u0d46",
126
+ "previous7days": "\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e 7 \u0d26\u0d3f\u0d35\u0d38\u0d02",
127
+ "previous30days": "\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e 30 \u0d26\u0d3f\u0d35\u0d38\u0d02"
128
+ },
129
+ "empty": "\u0d24\u0d4d\u0d30\u0d46\u0d21\u0d41\u0d15\u0d7e \u0d15\u0d23\u0d4d\u0d1f\u0d46\u0d24\u0d4d\u0d24\u0d3f\u0d2f\u0d3f\u0d32\u0d4d\u0d32",
130
+ "actions": {
131
+ "close": "\u0d38\u0d48\u0d21\u0d4d\u0d2c\u0d3e\u0d7c \u0d05\u0d1f\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15",
132
+ "open": "\u0d38\u0d48\u0d21\u0d4d\u0d2c\u0d3e\u0d7c \u0d24\u0d41\u0d31\u0d15\u0d4d\u0d15\u0d41\u0d15"
133
+ }
134
+ },
135
+ "thread": {
136
+ "untitled": "\u0d2a\u0d47\u0d30\u0d3f\u0d32\u0d4d\u0d32\u0d3e\u0d24\u0d4d\u0d24 \u0d38\u0d02\u0d2d\u0d3e\u0d37\u0d23\u0d02",
137
+ "menu": {
138
+ "rename": "Rename",
139
+ "delete": "Delete"
140
+ },
141
+ "actions": {
142
+ "delete": {
143
+ "title": "\u0d21\u0d3f\u0d32\u0d40\u0d31\u0d4d\u0d31\u0d4d \u0d38\u0d4d\u0d25\u0d3f\u0d30\u0d40\u0d15\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
144
+ "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",
145
+ "success": "\u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d \u0d21\u0d3f\u0d32\u0d40\u0d31\u0d4d\u0d31\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d24\u0d41",
146
+ "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"
147
+ },
148
+ "rename": {
149
+ "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",
150
+ "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",
151
+ "form": {
152
+ "name": {
153
+ "label": "\u0d2a\u0d47\u0d30\u0d4d",
154
+ "placeholder": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d2a\u0d47\u0d30\u0d4d \u0d28\u0d7d\u0d15\u0d41\u0d15"
155
+ }
156
+ },
157
+ "success": "\u0d24\u0d4d\u0d30\u0d46\u0d21\u0d4d \u0d2a\u0d41\u0d28\u0d7c\u0d28\u0d3e\u0d2e\u0d15\u0d30\u0d23\u0d02 \u0d1a\u0d46\u0d2f\u0d4d\u0d24\u0d41!",
158
+ "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"
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "navigation": {
164
+ "header": {
165
+ "chat": "\u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d",
166
+ "readme": "\u0d35\u0d3e\u0d2f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
167
+ "theme": {
168
+ "light": "Light Theme",
169
+ "dark": "Dark Theme",
170
+ "system": "Follow System"
171
+ }
172
+ },
173
+ "newChat": {
174
+ "button": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d",
175
+ "dialog": {
176
+ "title": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d \u0d38\u0d43\u0d37\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
177
+ "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?",
178
+ "tooltip": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d"
179
+ }
180
+ },
181
+ "user": {
182
+ "menu": {
183
+ "settings": "\u0d15\u0d4d\u0d30\u0d2e\u0d40\u0d15\u0d30\u0d23\u0d19\u0d4d\u0d19\u0d7e",
184
+ "settingsKey": "S",
185
+ "apiKeys": "API \u0d15\u0d40\u0d15\u0d7e",
186
+ "logout": "\u0d32\u0d4b\u0d17\u0d4d\u0d14\u0d1f\u0d4d\u0d1f\u0d4d"
187
+ }
188
+ }
189
+ },
190
+ "apiKeys": {
191
+ "title": "\u0d06\u0d35\u0d36\u0d4d\u0d2f\u0d2e\u0d3e\u0d2f API \u0d15\u0d40\u0d15\u0d7e",
192
+ "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.",
193
+ "success": {
194
+ "saved": "\u0d35\u0d3f\u0d1c\u0d2f\u0d15\u0d30\u0d2e\u0d3e\u0d2f\u0d3f \u0d38\u0d02\u0d30\u0d15\u0d4d\u0d37\u0d3f\u0d1a\u0d4d\u0d1a\u0d41"
195
+ }
196
+ },
197
+ "alerts": {
198
+ "info": "Info",
199
+ "note": "Note",
200
+ "tip": "Tip",
201
+ "important": "Important",
202
+ "warning": "Warning",
203
+ "caution": "Caution",
204
+ "debug": "Debug",
205
+ "example": "Example",
206
+ "success": "Success",
207
+ "help": "Help",
208
+ "idea": "Idea",
209
+ "pending": "Pending",
210
+ "security": "Security",
211
+ "beta": "Beta",
212
+ "best-practice": "Best Practice"
213
+ }
214
+ }
.chainlit/translations/mr.json ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "common": {
3
+ "actions": {
4
+ "cancel": "\u0930\u0926\u094d\u0926 \u0915\u0930\u093e",
5
+ "confirm": "\u092a\u0941\u0937\u094d\u091f\u0940 \u0915\u0930\u093e",
6
+ "continue": "\u092a\u0941\u0922\u0947 \u091c\u093e",
7
+ "goBack": "\u092e\u093e\u0917\u0947 \u091c\u093e",
8
+ "reset": "\u0930\u0940\u0938\u0947\u091f \u0915\u0930\u093e",
9
+ "submit": "\u0938\u092c\u092e\u093f\u091f \u0915\u0930\u093e"
10
+ },
11
+ "status": {
12
+ "loading": "\u0932\u094b\u0921 \u0915\u0930\u0924 \u0906\u0939\u0947...",
13
+ "error": {
14
+ "default": "\u090f\u0915 \u0924\u094d\u0930\u0941\u091f\u0940 \u0906\u0932\u0940",
15
+ "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"
16
+ }
17
+ }
18
+ },
19
+ "auth": {
20
+ "login": {
21
+ "title": "\u0905\u0945\u092a \u0935\u093e\u092a\u0930\u0923\u094d\u092f\u093e\u0938\u093e\u0920\u0940 \u0932\u0949\u0917\u093f\u0928 \u0915\u0930\u093e",
22
+ "form": {
23
+ "email": {
24
+ "label": "\u0908\u092e\u0947\u0932 \u092a\u0924\u094d\u0924\u093e",
25
+ "required": "\u0908\u092e\u0947\u0932 \u0906\u0935\u0936\u094d\u092f\u0915 \u0906\u0939\u0947"
26
+ },
27
+ "password": {
28
+ "label": "\u092a\u093e\u0938\u0935\u0930\u094d\u0921",
29
+ "required": "\u092a\u093e\u0938\u0935\u0930\u094d\u0921 \u0906\u0935\u0936\u094d\u092f\u0915 \u0906\u0939\u0947"
30
+ },
31
+ "actions": {
32
+ "signin": "\u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u093e"
33
+ },
34
+ "alternativeText": {
35
+ "or": "\u0915\u093f\u0902\u0935\u093e"
36
+ }
37
+ },
38
+ "errors": {
39
+ "default": "\u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0942 \u0936\u0915\u0924 \u0928\u093e\u0939\u0940",
40
+ "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",
41
+ "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",
42
+ "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",
43
+ "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",
44
+ "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",
45
+ "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",
46
+ "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",
47
+ "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",
48
+ "emailSignin": "\u0908\u092e\u0947\u0932 \u092a\u093e\u0920\u0935\u0942 \u0936\u0915\u0932\u0947 \u0928\u093e\u0939\u0940",
49
+ "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",
50
+ "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",
51
+ "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"
52
+ }
53
+ },
54
+ "provider": {
55
+ "continue": "{{provider}} \u0938\u0939 \u092a\u0941\u0922\u0947 \u091c\u093e"
56
+ }
57
+ },
58
+ "chat": {
59
+ "input": {
60
+ "placeholder": "\u0924\u0941\u092e\u091a\u093e \u0938\u0902\u0926\u0947\u0936 \u092f\u0947\u0925\u0947 \u091f\u093e\u0907\u092a \u0915\u0930\u093e...",
61
+ "actions": {
62
+ "send": "\u0938\u0902\u0926\u0947\u0936 \u092a\u093e\u0920\u0935\u093e",
63
+ "stop": "\u0915\u093e\u0930\u094d\u092f \u0925\u093e\u0902\u092c\u0935\u093e",
64
+ "attachFiles": "\u092b\u093e\u0907\u0932\u094d\u0938 \u091c\u094b\u0921\u093e"
65
+ }
66
+ },
67
+ "speech": {
68
+ "start": "\u0930\u0947\u0915\u0949\u0930\u094d\u0921\u093f\u0902\u0917 \u0938\u0941\u0930\u0942 \u0915\u0930\u093e",
69
+ "stop": "\u0930\u0947\u0915\u0949\u0930\u094d\u0921\u093f\u0902\u0917 \u0925\u093e\u0902\u092c\u0935\u093e",
70
+ "connecting": "\u0915\u0928\u0947\u0915\u094d\u091f \u0915\u0930\u0924 \u0906\u0939\u0947"
71
+ },
72
+ "fileUpload": {
73
+ "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",
74
+ "browse": "\u092b\u093e\u0907\u0932\u094d\u0938 \u092c\u094d\u0930\u093e\u0909\u091d \u0915\u0930\u093e",
75
+ "sizeLimit": "\u092e\u0930\u094d\u092f\u093e\u0926\u093e:",
76
+ "errors": {
77
+ "failed": "\u0905\u092a\u0932\u094b\u0921 \u0905\u092f\u0936\u0938\u094d\u0935\u0940",
78
+ "cancelled": "\u092f\u093e\u0902\u091a\u0947 \u0905\u092a\u0932\u094b\u0921 \u0930\u0926\u094d\u0926 \u0915\u0947\u0932\u0947"
79
+ }
80
+ },
81
+ "messages": {
82
+ "status": {
83
+ "using": "\u0935\u093e\u092a\u0930\u0924 \u0906\u0939\u0947",
84
+ "used": "\u0935\u093e\u092a\u0930\u0932\u0947"
85
+ },
86
+ "actions": {
87
+ "copy": {
88
+ "button": "\u0915\u094d\u0932\u093f\u092a\u092c\u094b\u0930\u094d\u0921\u0935\u0930 \u0915\u0949\u092a\u0940 \u0915\u0930\u093e",
89
+ "success": "\u0915\u0949\u092a\u0940 \u0915\u0947\u0932\u0947!"
90
+ }
91
+ },
92
+ "feedback": {
93
+ "positive": "\u0909\u092a\u092f\u0941\u0915\u094d\u0924",
94
+ "negative": "\u0909\u092a\u092f\u0941\u0915\u094d\u0924 \u0928\u093e\u0939\u0940",
95
+ "edit": "\u092b\u0940\u0921\u092c\u0945\u0915 \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u093e",
96
+ "dialog": {
97
+ "title": "\u091f\u093f\u092a\u094d\u092a\u0923\u0940 \u091c\u094b\u0921\u093e",
98
+ "submit": "\u092b\u0940\u0921\u092c\u0945\u0915 \u0938\u092c\u092e\u093f\u091f \u0915\u0930\u093e"
99
+ },
100
+ "status": {
101
+ "updating": "\u0905\u092a\u0921\u0947\u091f \u0915\u0930\u0924 \u0906\u0939\u0947",
102
+ "updated": "\u092b\u0940\u0921\u092c\u0945\u0915 \u0905\u092a\u0921\u0947\u091f \u0915\u0947\u0932\u0947"
103
+ }
104
+ }
105
+ },
106
+ "history": {
107
+ "title": "\u0936\u0947\u0935\u091f\u091a\u0947 \u0907\u0928\u092a\u0941\u091f",
108
+ "empty": "\u0930\u093f\u0915\u093e\u092e\u0947 \u0906\u0939\u0947...",
109
+ "show": "\u0907\u0924\u093f\u0939\u093e\u0938 \u0926\u093e\u0916\u0935\u093e"
110
+ },
111
+ "settings": {
112
+ "title": "\u0938\u0947\u091f\u093f\u0902\u0917\u094d\u091c \u092a\u0945\u0928\u0932"
113
+ },
114
+ "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."
115
+ },
116
+ "threadHistory": {
117
+ "sidebar": {
118
+ "title": "\u092e\u093e\u0917\u0940\u0932 \u091a\u0945\u091f\u094d\u0938",
119
+ "filters": {
120
+ "search": "\u0936\u094b\u0927\u093e",
121
+ "placeholder": "Search conversations..."
122
+ },
123
+ "timeframes": {
124
+ "today": "\u0906\u091c",
125
+ "yesterday": "\u0915\u093e\u0932",
126
+ "previous7days": "\u092e\u093e\u0917\u0940\u0932 7 \u0926\u093f\u0935\u0938",
127
+ "previous30days": "\u092e\u093e\u0917\u0940\u0932 30 \u0926\u093f\u0935\u0938"
128
+ },
129
+ "empty": "\u0915\u094b\u0923\u0924\u0947\u0939\u0940 \u0925\u094d\u0930\u0947\u0921 \u0938\u093e\u092a\u0921\u0932\u0947 \u0928\u093e\u0939\u0940\u0924",
130
+ "actions": {
131
+ "close": "\u0938\u093e\u0907\u0921\u092c\u093e\u0930 \u092c\u0902\u0926 \u0915\u0930\u093e",
132
+ "open": "\u0938\u093e\u0907\u0921\u092c\u093e\u0930 \u0909\u0918\u0921\u093e"
133
+ }
134
+ },
135
+ "thread": {
136
+ "untitled": "\u0936\u0940\u0930\u094d\u0937\u0915\u0935\u093f\u0930\u0939\u093f\u0924 \u0938\u0902\u092d\u093e\u0937\u0923",
137
+ "menu": {
138
+ "rename": "Rename",
139
+ "delete": "Delete"
140
+ },
141
+ "actions": {
142
+ "delete": {
143
+ "title": "\u0939\u091f\u0935\u093f\u0923\u094d\u092f\u093e\u091a\u0940 \u092a\u0941\u0937\u094d\u091f\u0940 \u0915\u0930\u093e",
144
+ "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",
145
+ "success": "\u091a\u0945\u091f \u0939\u091f\u0935\u0932\u093e",
146
+ "inProgress": "\u091a\u0945\u091f \u0939\u091f\u0935\u0924 \u0906\u0939\u0947"
147
+ },
148
+ "rename": {
149
+ "title": "\u0925\u094d\u0930\u0947\u0921\u091a\u0947 \u0928\u093e\u0935 \u092c\u0926\u0932\u093e",
150
+ "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",
151
+ "form": {
152
+ "name": {
153
+ "label": "\u0928\u093e\u0935",
154
+ "placeholder": "\u0928\u0935\u0940\u0928 \u0928\u093e\u0935 \u092a\u094d\u0930\u0935\u093f\u0937\u094d\u091f \u0915\u0930\u093e"
155
+ }
156
+ },
157
+ "success": "\u0925\u094d\u0930\u0947\u0921\u091a\u0947 \u0928\u093e\u0935 \u092c\u0926\u0932\u0932\u0947!",
158
+ "inProgress": "\u0925\u094d\u0930\u0947\u0921\u091a\u0947 \u0928\u093e\u0935 \u092c\u0926\u0932\u0924 \u0906\u0939\u0947"
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "navigation": {
164
+ "header": {
165
+ "chat": "\u091a\u0945\u091f",
166
+ "readme": "\u0935\u093e\u091a\u093e",
167
+ "theme": {
168
+ "light": "Light Theme",
169
+ "dark": "Dark Theme",
170
+ "system": "Follow System"
171
+ }
172
+ },
173
+ "newChat": {
174
+ "button": "\u0928\u0935\u0940\u0928 \u091a\u0945\u091f",
175
+ "dialog": {
176
+ "title": "\u0928\u0935\u0940\u0928 \u091a\u0945\u091f \u0924\u092f\u093e\u0930 \u0915\u0930\u093e",
177
+ "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?",
178
+ "tooltip": "\u0928\u0935\u0940\u0928 \u091a\u0945\u091f"
179
+ }
180
+ },
181
+ "user": {
182
+ "menu": {
183
+ "settings": "\u0938\u0947\u091f\u093f\u0902\u0917\u094d\u091c",
184
+ "settingsKey": "S",
185
+ "apiKeys": "API \u0915\u0940\u091c",
186
+ "logout": "\u0932\u0949\u0917\u0906\u0909\u091f"
187
+ }
188
+ }
189
+ },
190
+ "apiKeys": {
191
+ "title": "\u0906\u0935\u0936\u094d\u092f\u0915 API \u0915\u0940\u091c",
192
+ "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.",
193
+ "success": {
194
+ "saved": "\u092f\u0936\u0938\u094d\u0935\u0940\u0930\u093f\u0924\u094d\u092f\u093e \u091c\u0924\u0928 \u0915\u0947\u0932\u0947"
195
+ }
196
+ },
197
+ "alerts": {
198
+ "info": "Info",
199
+ "note": "Note",
200
+ "tip": "Tip",
201
+ "important": "Important",
202
+ "warning": "Warning",
203
+ "caution": "Caution",
204
+ "debug": "Debug",
205
+ "example": "Example",
206
+ "success": "Success",
207
+ "help": "Help",
208
+ "idea": "Idea",
209
+ "pending": "Pending",
210
+ "security": "Security",
211
+ "beta": "Beta",
212
+ "best-practice": "Best Practice"
213
+ }
214
+ }
.chainlit/translations/nl.json ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "common": {
3
+ "actions": {
4
+ "cancel": "Annuleren",
5
+ "confirm": "Bevestigen",
6
+ "continue": "Doorgaan",
7
+ "goBack": "Terug",
8
+ "reset": "Herstellen",
9
+ "submit": "Versturen"
10
+ },
11
+ "status": {
12
+ "loading": "Laden...",
13
+ "error": {
14
+ "default": "Er is een fout opgetreden",
15
+ "serverConnection": "Kon geen verbinding maken met de server"
16
+ }
17
+ }
18
+ },
19
+ "auth": {
20
+ "login": {
21
+ "title": "Inloggen om toegang te krijgen tot de app",
22
+ "form": {
23
+ "email": {
24
+ "label": "E-mailadres",
25
+ "required": "e-mail is een verplicht veld"
26
+ },
27
+ "password": {
28
+ "label": "Wachtwoord",
29
+ "required": "wachtwoord is een verplicht veld"
30
+ },
31
+ "actions": {
32
+ "signin": "Inloggen"
33
+ },
34
+ "alternativeText": {
35
+ "or": "OF"
36
+ }
37
+ },
38
+ "errors": {
39
+ "default": "Kan niet inloggen",
40
+ "signin": "Probeer in te loggen met een ander account",
41
+ "oauthSignin": "Probeer in te loggen met een ander account",
42
+ "redirectUriMismatch": "De redirect URI komt niet overeen met de oauth app configuratie",
43
+ "oauthCallback": "Probeer in te loggen met een ander account",
44
+ "oauthCreateAccount": "Probeer in te loggen met een ander account",
45
+ "emailCreateAccount": "Probeer in te loggen met een ander account",
46
+ "callback": "Probeer in te loggen met een ander account",
47
+ "oauthAccountNotLinked": "Om je identiteit te bevestigen, log in met hetzelfde account dat je oorspronkelijk hebt gebruikt",
48
+ "emailSignin": "De e-mail kon niet worden verzonden",
49
+ "emailVerify": "Verifieer je e-mail, er is een nieuwe e-mail verzonden",
50
+ "credentialsSignin": "Inloggen mislukt. Controleer of de ingevoerde gegevens correct zijn",
51
+ "sessionRequired": "Log in om toegang te krijgen tot deze pagina"
52
+ }
53
+ },
54
+ "provider": {
55
+ "continue": "Doorgaan met {{provider}}"
56
+ }
57
+ },
58
+ "chat": {
59
+ "input": {
60
+ "placeholder": "Typ hier je bericht...",
61
+ "actions": {
62
+ "send": "Bericht versturen",
63
+ "stop": "Taak stoppen",
64
+ "attachFiles": "Bestanden bijvoegen"
65
+ }
66
+ },
67
+ "speech": {
68
+ "start": "Start opname",
69
+ "stop": "Stop opname",
70
+ "connecting": "Verbinden"
71
+ },
72
+ "fileUpload": {
73
+ "dragDrop": "Sleep bestanden hierheen",
74
+ "browse": "Bestanden zoeken",
75
+ "sizeLimit": "Limiet:",
76
+ "errors": {
77
+ "failed": "Uploaden mislukt",
78
+ "cancelled": "Upload geannuleerd van"
79
+ }
80
+ },
81
+ "messages": {
82
+ "status": {
83
+ "using": "In gebruik",
84
+ "used": "Gebruikt"
85
+ },
86
+ "actions": {
87
+ "copy": {
88
+ "button": "Kopi\u00ebren naar klembord",
89
+ "success": "Gekopieerd!"
90
+ }
91
+ },
92
+ "feedback": {
93
+ "positive": "Nuttig",
94
+ "negative": "Niet nuttig",
95
+ "edit": "Feedback bewerken",
96
+ "dialog": {
97
+ "title": "Voeg een opmerking toe",
98
+ "submit": "Feedback versturen"
99
+ },
100
+ "status": {
101
+ "updating": "Bijwerken",
102
+ "updated": "Feedback bijgewerkt"
103
+ }
104
+ }
105
+ },
106
+ "history": {
107
+ "title": "Laatste invoer",
108
+ "empty": "Zo leeg...",
109
+ "show": "Toon geschiedenis"
110
+ },
111
+ "settings": {
112
+ "title": "Instellingenpaneel"
113
+ },
114
+ "watermark": "LLM's kunnen fouten maken. Overweeg het controleren van belangrijke informatie."
115
+ },
116
+ "threadHistory": {
117
+ "sidebar": {
118
+ "title": "Eerdere chats",
119
+ "filters": {
120
+ "search": "Zoeken",
121
+ "placeholder": "Search conversations..."
122
+ },
123
+ "timeframes": {
124
+ "today": "Vandaag",
125
+ "yesterday": "Gisteren",
126
+ "previous7days": "Afgelopen 7 dagen",
127
+ "previous30days": "Afgelopen 30 dagen"
128
+ },
129
+ "empty": "Geen gesprekken gevonden",
130
+ "actions": {
131
+ "close": "Zijbalk sluiten",
132
+ "open": "Zijbalk openen"
133
+ }
134
+ },
135
+ "thread": {
136
+ "untitled": "Naamloos gesprek",
137
+ "menu": {
138
+ "rename": "Rename",
139
+ "delete": "Delete"
140
+ },
141
+ "actions": {
142
+ "delete": {
143
+ "title": "Verwijdering bevestigen",
144
+ "description": "Dit zal het gesprek en bijbehorende berichten en elementen verwijderen. Deze actie kan niet ongedaan worden gemaakt",
145
+ "success": "Chat verwijderd",
146
+ "inProgress": "Chat verwijderen"
147
+ },
148
+ "rename": {
149
+ "title": "Gesprek hernoemen",
150
+ "description": "Voer een nieuwe naam in voor dit gesprek",
151
+ "form": {
152
+ "name": {
153
+ "label": "Naam",
154
+ "placeholder": "Voer nieuwe naam in"
155
+ }
156
+ },
157
+ "success": "Gesprek hernoemd!",
158
+ "inProgress": "Gesprek hernoemen"
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "navigation": {
164
+ "header": {
165
+ "chat": "Chat",
166
+ "readme": "Leesmij",
167
+ "theme": {
168
+ "light": "Light Theme",
169
+ "dark": "Dark Theme",
170
+ "system": "Follow System"
171
+ }
172
+ },
173
+ "newChat": {
174
+ "button": "Nieuwe chat",
175
+ "dialog": {
176
+ "title": "Nieuwe chat aanmaken",
177
+ "description": "Dit zal je huidige chatgeschiedenis wissen. Weet je zeker dat je door wilt gaan?",
178
+ "tooltip": "Nieuwe chat"
179
+ }
180
+ },
181
+ "user": {
182
+ "menu": {
183
+ "settings": "Instellingen",
184
+ "settingsKey": "I",
185
+ "apiKeys": "API-sleutels",
186
+ "logout": "Uitloggen"
187
+ }
188
+ }
189
+ },
190
+ "apiKeys": {
191
+ "title": "Vereiste API-sleutels",
192
+ "description": "Om deze app te gebruiken zijn de volgende API-sleutels vereist. De sleutels worden opgeslagen in de lokale opslag van je apparaat.",
193
+ "success": {
194
+ "saved": "Succesvol opgeslagen"
195
+ }
196
+ },
197
+ "alerts": {
198
+ "info": "Info",
199
+ "note": "Note",
200
+ "tip": "Tip",
201
+ "important": "Important",
202
+ "warning": "Warning",
203
+ "caution": "Caution",
204
+ "debug": "Debug",
205
+ "example": "Example",
206
+ "success": "Success",
207
+ "help": "Help",
208
+ "idea": "Idea",
209
+ "pending": "Pending",
210
+ "security": "Security",
211
+ "beta": "Beta",
212
+ "best-practice": "Best Practice"
213
+ }
214
+ }
.chainlit/translations/ta.json ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "common": {
3
+ "actions": {
4
+ "cancel": "\u0bb0\u0ba4\u0bcd\u0ba4\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd",
5
+ "confirm": "\u0b89\u0bb1\u0bc1\u0ba4\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
6
+ "continue": "\u0ba4\u0bca\u0b9f\u0bb0\u0bcd\u0b95",
7
+ "goBack": "\u0ba4\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa\u0bbf\u0b9a\u0bcd \u0b9a\u0bc6\u0bb2\u0bcd",
8
+ "reset": "\u0bae\u0bc0\u0b9f\u0bcd\u0b9f\u0bae\u0bc8",
9
+ "submit": "\u0b9a\u0bae\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bbf"
10
+ },
11
+ "status": {
12
+ "loading": "\u0b8f\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1...",
13
+ "error": {
14
+ "default": "\u0baa\u0bbf\u0bb4\u0bc8 \u0b8f\u0bb1\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1",
15
+ "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"
16
+ }
17
+ }
18
+ },
19
+ "auth": {
20
+ "login": {
21
+ "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",
22
+ "form": {
23
+ "email": {
24
+ "label": "\u0bae\u0bbf\u0ba9\u0bcd\u0ba9\u0b9e\u0bcd\u0b9a\u0bb2\u0bcd \u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf",
25
+ "required": "\u0bae\u0bbf\u0ba9\u0bcd\u0ba9\u0b9e\u0bcd\u0b9a\u0bb2\u0bcd \u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 \u0baa\u0bc1\u0bb2\u0bae\u0bcd"
26
+ },
27
+ "password": {
28
+ "label": "\u0b95\u0b9f\u0bb5\u0bc1\u0b9a\u0bcd\u0b9a\u0bca\u0bb2\u0bcd",
29
+ "required": "\u0b95\u0b9f\u0bb5\u0bc1\u0b9a\u0bcd\u0b9a\u0bca\u0bb2\u0bcd \u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 \u0baa\u0bc1\u0bb2\u0bae\u0bcd"
30
+ },
31
+ "actions": {
32
+ "signin": "\u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0b95"
33
+ },
34
+ "alternativeText": {
35
+ "or": "\u0b85\u0bb2\u0bcd\u0bb2\u0ba4\u0bc1"
36
+ }
37
+ },
38
+ "errors": {
39
+ "default": "\u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
40
+ "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",
41
+ "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",
42
+ "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",
43
+ "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",
44
+ "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",
45
+ "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",
46
+ "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",
47
+ "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",
48
+ "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",
49
+ "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",
50
+ "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",
51
+ "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"
52
+ }
53
+ },
54
+ "provider": {
55
+ "continue": "{{provider}} \u0bae\u0bc2\u0bb2\u0bae\u0bcd \u0ba4\u0bca\u0b9f\u0bb0\u0bb5\u0bc1\u0bae\u0bcd"
56
+ }
57
+ },
58
+ "chat": {
59
+ "input": {
60
+ "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...",
61
+ "actions": {
62
+ "send": "\u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bbf \u0b85\u0ba9\u0bc1\u0baa\u0bcd\u0baa\u0bc1",
63
+ "stop": "\u0baa\u0ba3\u0bbf\u0baf\u0bc8 \u0ba8\u0bbf\u0bb1\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
64
+ "attachFiles": "\u0b95\u0bcb\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bc8 \u0b87\u0ba3\u0bc8"
65
+ }
66
+ },
67
+ "speech": {
68
+ "start": "\u0baa\u0ba4\u0bbf\u0bb5\u0bc1 \u0ba4\u0bca\u0b9f\u0b99\u0bcd\u0b95\u0bc1",
69
+ "stop": "\u0baa\u0ba4\u0bbf\u0bb5\u0bc8 \u0ba8\u0bbf\u0bb1\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
70
+ "connecting": "\u0b87\u0ba3\u0bc8\u0b95\u0bcd\u0b95\u0bbf\u0bb1\u0ba4\u0bc1"
71
+ },
72
+ "fileUpload": {
73
+ "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",
74
+ "browse": "\u0b95\u0bcb\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bc8 \u0b89\u0bb2\u0bbe\u0bb5\u0bc1",
75
+ "sizeLimit": "\u0bb5\u0bb0\u0bae\u0bcd\u0baa\u0bc1:",
76
+ "errors": {
77
+ "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",
78
+ "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"
79
+ }
80
+ },
81
+ "messages": {
82
+ "status": {
83
+ "using": "\u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1",
84
+ "used": "\u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1"
85
+ },
86
+ "actions": {
87
+ "copy": {
88
+ "button": "\u0b95\u0bbf\u0bb3\u0bbf\u0baa\u0bcd\u0baa\u0bcb\u0bb0\u0bcd\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0bc1 \u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1",
89
+ "success": "\u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1!"
90
+ }
91
+ },
92
+ "feedback": {
93
+ "positive": "\u0baa\u0baf\u0ba9\u0bc1\u0bb3\u0bcd\u0bb3\u0ba4\u0bbe\u0b95 \u0b87\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0ba4\u0bc1",
94
+ "negative": "\u0baa\u0baf\u0ba9\u0bc1\u0bb3\u0bcd\u0bb3\u0ba4\u0bbe\u0b95 \u0b87\u0bb2\u0bcd\u0bb2\u0bc8",
95
+ "edit": "\u0b95\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc8 \u0ba4\u0bbf\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
96
+ "dialog": {
97
+ "title": "\u0b95\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc8\u0b9a\u0bcd \u0b9a\u0bc7\u0bb0\u0bcd",
98
+ "submit": "\u0b95\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc8 \u0b9a\u0bae\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bbf"
99
+ },
100
+ "status": {
101
+ "updating": "\u0baa\u0bc1\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb1\u0ba4\u0bc1",
102
+ "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"
103
+ }
104
+ }
105
+ },
106
+ "history": {
107
+ "title": "\u0b95\u0b9f\u0bc8\u0b9a\u0bbf \u0b89\u0bb3\u0bcd\u0bb3\u0bc0\u0b9f\u0bc1\u0b95\u0bb3\u0bcd",
108
+ "empty": "\u0b95\u0bbe\u0bb2\u0bbf\u0baf\u0bbe\u0b95 \u0b89\u0bb3\u0bcd\u0bb3\u0ba4\u0bc1...",
109
+ "show": "\u0bb5\u0bb0\u0bb2\u0bbe\u0bb1\u0bcd\u0bb1\u0bc8\u0b95\u0bcd \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1"
110
+ },
111
+ "settings": {
112
+ "title": "\u0b85\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd \u0baa\u0bb2\u0b95\u0bae\u0bcd"
113
+ },
114
+ "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."
115
+ },
116
+ "threadHistory": {
117
+ "sidebar": {
118
+ "title": "\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd\u0b95\u0bb3\u0bcd",
119
+ "filters": {
120
+ "search": "\u0ba4\u0bc7\u0b9f\u0bc1",
121
+ "placeholder": "Search conversations..."
122
+ },
123
+ "timeframes": {
124
+ "today": "\u0b87\u0ba9\u0bcd\u0bb1\u0bc1",
125
+ "yesterday": "\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1",
126
+ "previous7days": "\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 7 \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",
127
+ "previous30days": "\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 30 \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd"
128
+ },
129
+ "empty": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd\u0b95\u0bb3\u0bcd \u0b8e\u0ba4\u0bc1\u0bb5\u0bc1\u0bae\u0bcd \u0b87\u0bb2\u0bcd\u0bb2\u0bc8",
130
+ "actions": {
131
+ "close": "\u0baa\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bc8 \u0bae\u0bc2\u0b9f\u0bc1",
132
+ "open": "\u0baa\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bc8 \u0ba4\u0bbf\u0bb1"
133
+ }
134
+ },
135
+ "thread": {
136
+ "untitled": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bbf\u0b9f\u0bbe\u0ba4 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd",
137
+ "menu": {
138
+ "rename": "Rename",
139
+ "delete": "Delete"
140
+ },
141
+ "actions": {
142
+ "delete": {
143
+ "title": "\u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0bb5\u0ba4\u0bc8 \u0b89\u0bb1\u0bc1\u0ba4\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
144
+ "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",
145
+ "success": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1",
146
+ "inProgress": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1"
147
+ },
148
+ "rename": {
149
+ "title": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bc8 \u0bae\u0bb1\u0bc1\u0baa\u0bc6\u0baf\u0bb0\u0bbf\u0b9f\u0bc1",
150
+ "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",
151
+ "form": {
152
+ "name": {
153
+ "label": "\u0baa\u0bc6\u0baf\u0bb0\u0bcd",
154
+ "placeholder": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0baa\u0bc6\u0baf\u0bb0\u0bc8 \u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0b9f\u0bb5\u0bc1\u0bae\u0bcd"
155
+ }
156
+ },
157
+ "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!",
158
+ "inProgress": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bc8 \u0bae\u0bb1\u0bc1\u0baa\u0bc6\u0baf\u0bb0\u0bbf\u0b9f\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1"
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "navigation": {
164
+ "header": {
165
+ "chat": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd",
166
+ "readme": "\u0baa\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd",
167
+ "theme": {
168
+ "light": "Light Theme",
169
+ "dark": "Dark Theme",
170
+ "system": "Follow System"
171
+ }
172
+ },
173
+ "newChat": {
174
+ "button": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd",
175
+ "dialog": {
176
+ "title": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bc8 \u0b89\u0bb0\u0bc1\u0bb5\u0bbe\u0b95\u0bcd\u0b95\u0bc1",
177
+ "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?",
178
+ "tooltip": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd"
179
+ }
180
+ },
181
+ "user": {
182
+ "menu": {
183
+ "settings": "\u0b85\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
184
+ "settingsKey": "S",
185
+ "apiKeys": "API \u0bb5\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
186
+ "logout": "\u0bb5\u0bc6\u0bb3\u0bbf\u0baf\u0bc7\u0bb1\u0bc1"
187
+ }
188
+ }
189
+ },
190
+ "apiKeys": {
191
+ "title": "\u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 API \u0bb5\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
192
+ "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.",
193
+ "success": {
194
+ "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"
195
+ }
196
+ },
197
+ "alerts": {
198
+ "info": "Info",
199
+ "note": "Note",
200
+ "tip": "Tip",
201
+ "important": "Important",
202
+ "warning": "Warning",
203
+ "caution": "Caution",
204
+ "debug": "Debug",
205
+ "example": "Example",
206
+ "success": "Success",
207
+ "help": "Help",
208
+ "idea": "Idea",
209
+ "pending": "Pending",
210
+ "security": "Security",
211
+ "beta": "Beta",
212
+ "best-practice": "Best Practice"
213
+ }
214
+ }
.chainlit/translations/te.json ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "common": {
3
+ "actions": {
4
+ "cancel": "\u0c30\u0c26\u0c4d\u0c26\u0c41 \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f",
5
+ "confirm": "\u0c28\u0c3f\u0c30\u0c4d\u0c27\u0c3e\u0c30\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
6
+ "continue": "\u0c15\u0c4a\u0c28\u0c38\u0c3e\u0c17\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
7
+ "goBack": "\u0c35\u0c46\u0c28\u0c15\u0c4d\u0c15\u0c3f \u0c35\u0c46\u0c33\u0c4d\u0c33\u0c02\u0c21\u0c3f",
8
+ "reset": "\u0c30\u0c40\u0c38\u0c46\u0c1f\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f",
9
+ "submit": "\u0c38\u0c2e\u0c30\u0c4d\u0c2a\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f"
10
+ },
11
+ "status": {
12
+ "loading": "\u0c32\u0c4b\u0c21\u0c4d \u0c05\u0c35\u0c41\u0c24\u0c4b\u0c02\u0c26\u0c3f...",
13
+ "error": {
14
+ "default": "\u0c32\u0c4b\u0c2a\u0c02 \u0c38\u0c02\u0c2d\u0c35\u0c3f\u0c02\u0c1a\u0c3f\u0c02\u0c26\u0c3f",
15
+ "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"
16
+ }
17
+ }
18
+ },
19
+ "auth": {
20
+ "login": {
21
+ "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",
22
+ "form": {
23
+ "email": {
24
+ "label": "\u0c07\u0c2e\u0c46\u0c2f\u0c3f\u0c32\u0c4d \u0c1a\u0c3f\u0c30\u0c41\u0c28\u0c3e\u0c2e\u0c3e",
25
+ "required": "\u0c07\u0c2e\u0c46\u0c2f\u0c3f\u0c32\u0c4d \u0c24\u0c2a\u0c4d\u0c2a\u0c28\u0c3f\u0c38\u0c30\u0c3f"
26
+ },
27
+ "password": {
28
+ "label": "\u0c2a\u0c3e\u0c38\u0c4d\u200c\u0c35\u0c30\u0c4d\u0c21\u0c4d",
29
+ "required": "\u0c2a\u0c3e\u0c38\u0c4d\u200c\u0c35\u0c30\u0c4d\u0c21\u0c4d \u0c24\u0c2a\u0c4d\u0c2a\u0c28\u0c3f\u0c38\u0c30\u0c3f"
30
+ },
31
+ "actions": {
32
+ "signin": "\u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f"
33
+ },
34
+ "alternativeText": {
35
+ "or": "\u0c32\u0c47\u0c26\u0c3e"
36
+ }
37
+ },
38
+ "errors": {
39
+ "default": "\u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c32\u0c47\u0c15\u0c2a\u0c4b\u0c2f\u0c3e\u0c2e\u0c41",
40
+ "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",
41
+ "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",
42
+ "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",
43
+ "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",
44
+ "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",
45
+ "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",
46
+ "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",
47
+ "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",
48
+ "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",
49
+ "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",
50
+ "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",
51
+ "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"
52
+ }
53
+ },
54
+ "provider": {
55
+ "continue": "{{provider}}\u0c24\u0c4b \u0c15\u0c4a\u0c28\u0c38\u0c3e\u0c17\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f"
56
+ }
57
+ },
58
+ "chat": {
59
+ "input": {
60
+ "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...",
61
+ "actions": {
62
+ "send": "\u0c38\u0c02\u0c26\u0c47\u0c36\u0c02 \u0c2a\u0c02\u0c2a\u0c02\u0c21\u0c3f",
63
+ "stop": "\u0c2a\u0c28\u0c3f \u0c06\u0c2a\u0c02\u0c21\u0c3f",
64
+ "attachFiles": "\u0c2b\u0c48\u0c32\u0c4d\u0c38\u0c4d \u0c1c\u0c4b\u0c21\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f"
65
+ }
66
+ },
67
+ "speech": {
68
+ "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",
69
+ "stop": "\u0c30\u0c3f\u0c15\u0c3e\u0c30\u0c4d\u0c21\u0c3f\u0c02\u0c17\u0c4d \u0c06\u0c2a\u0c02\u0c21\u0c3f",
70
+ "connecting": "\u0c05\u0c28\u0c41\u0c38\u0c02\u0c27\u0c3e\u0c28\u0c3f\u0c38\u0c4d\u0c24\u0c4b\u0c02\u0c26\u0c3f"
71
+ },
72
+ "fileUpload": {
73
+ "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",
74
+ "browse": "\u0c2b\u0c48\u0c32\u0c4d\u0c38\u0c4d \u0c2c\u0c4d\u0c30\u0c4c\u0c1c\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f",
75
+ "sizeLimit": "\u0c2a\u0c30\u0c3f\u0c2e\u0c3f\u0c24\u0c3f:",
76
+ "errors": {
77
+ "failed": "\u0c05\u0c2a\u0c4d\u200c\u0c32\u0c4b\u0c21\u0c4d \u0c35\u0c3f\u0c2b\u0c32\u0c2e\u0c48\u0c02\u0c26\u0c3f",
78
+ "cancelled": "\u0c05\u0c2a\u0c4d\u200c\u0c32\u0c4b\u0c21\u0c4d \u0c30\u0c26\u0c4d\u0c26\u0c41 \u0c1a\u0c47\u0c2f\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f"
79
+ }
80
+ },
81
+ "messages": {
82
+ "status": {
83
+ "using": "\u0c09\u0c2a\u0c2f\u0c4b\u0c17\u0c3f\u0c38\u0c4d\u0c24\u0c4b\u0c02\u0c26\u0c3f",
84
+ "used": "\u0c09\u0c2a\u0c2f\u0c4b\u0c17\u0c3f\u0c02\u0c1a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f"
85
+ },
86
+ "actions": {
87
+ "copy": {
88
+ "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",
89
+ "success": "\u0c15\u0c3e\u0c2a\u0c40 \u0c1a\u0c47\u0c2f\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f!"
90
+ }
91
+ },
92
+ "feedback": {
93
+ "positive": "\u0c38\u0c39\u0c3e\u0c2f\u0c15\u0c30\u0c02",
94
+ "negative": "\u0c38\u0c39\u0c3e\u0c2f\u0c15\u0c30\u0c02 \u0c15\u0c3e\u0c26\u0c41",
95
+ "edit": "\u0c05\u0c2d\u0c3f\u0c2a\u0c4d\u0c30\u0c3e\u0c2f\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c38\u0c35\u0c30\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
96
+ "dialog": {
97
+ "title": "\u0c35\u0c4d\u0c2f\u0c3e\u0c16\u0c4d\u0c2f \u0c1c\u0c4b\u0c21\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
98
+ "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"
99
+ },
100
+ "status": {
101
+ "updating": "\u0c28\u0c35\u0c40\u0c15\u0c30\u0c3f\u0c38\u0c4d\u0c24\u0c4b\u0c02\u0c26\u0c3f",
102
+ "updated": "\u0c05\u0c2d\u0c3f\u0c2a\u0c4d\u0c30\u0c3e\u0c2f\u0c02 \u0c28\u0c35\u0c40\u0c15\u0c30\u0c3f\u0c02\u0c1a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f"
103
+ }
104
+ }
105
+ },
106
+ "history": {
107
+ "title": "\u0c1a\u0c3f\u0c35\u0c30\u0c3f \u0c07\u0c28\u0c4d\u200c\u0c2a\u0c41\u0c1f\u0c4d\u200c\u0c32\u0c41",
108
+ "empty": "\u0c16\u0c3e\u0c33\u0c40\u0c17\u0c3e \u0c09\u0c02\u0c26\u0c3f...",
109
+ "show": "\u0c1a\u0c30\u0c3f\u0c24\u0c4d\u0c30\u0c28\u0c41 \u0c1a\u0c42\u0c2a\u0c3f\u0c02\u0c1a\u0c41"
110
+ },
111
+ "settings": {
112
+ "title": "\u0c38\u0c46\u0c1f\u0c4d\u0c1f\u0c3f\u0c02\u0c17\u0c4d\u200c\u0c32 \u0c2a\u0c4d\u0c2f\u0c3e\u0c28\u0c46\u0c32\u0c4d"
113
+ },
114
+ "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."
115
+ },
116
+ "threadHistory": {
117
+ "sidebar": {
118
+ "title": "\u0c17\u0c24 \u0c1a\u0c3e\u0c1f\u0c4d\u200c\u0c32\u0c41",
119
+ "filters": {
120
+ "search": "\u0c35\u0c46\u0c24\u0c15\u0c02\u0c21\u0c3f",
121
+ "placeholder": "Search conversations..."
122
+ },
123
+ "timeframes": {
124
+ "today": "\u0c08\u0c30\u0c4b\u0c1c\u0c41",
125
+ "yesterday": "\u0c28\u0c3f\u0c28\u0c4d\u0c28",
126
+ "previous7days": "\u0c17\u0c24 7 \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",
127
+ "previous30days": "\u0c17\u0c24 30 \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41"
128
+ },
129
+ "empty": "\u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d\u200c\u0c32\u0c41 \u0c15\u0c28\u0c41\u0c17\u0c4a\u0c28\u0c2c\u0c21\u0c32\u0c47\u0c26\u0c41",
130
+ "actions": {
131
+ "close": "\u0c38\u0c48\u0c21\u0c4d\u200c\u0c2c\u0c3e\u0c30\u0c4d \u0c2e\u0c42\u0c38\u0c3f\u0c35\u0c47\u0c2f\u0c02\u0c21\u0c3f",
132
+ "open": "\u0c38\u0c48\u0c21\u0c4d\u200c\u0c2c\u0c3e\u0c30\u0c4d \u0c24\u0c46\u0c30\u0c35\u0c02\u0c21\u0c3f"
133
+ }
134
+ },
135
+ "thread": {
136
+ "untitled": "\u0c2a\u0c47\u0c30\u0c41 \u0c32\u0c47\u0c28\u0c3f \u0c38\u0c02\u0c2d\u0c3e\u0c37\u0c23",
137
+ "menu": {
138
+ "rename": "Rename",
139
+ "delete": "Delete"
140
+ },
141
+ "actions": {
142
+ "delete": {
143
+ "title": "\u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c02\u0c2a\u0c41\u0c28\u0c41 \u0c28\u0c3f\u0c30\u0c4d\u0c27\u0c3e\u0c30\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
144
+ "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",
145
+ "success": "\u0c1a\u0c3e\u0c1f\u0c4d \u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c02\u0c1a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f",
146
+ "inProgress": "\u0c1a\u0c3e\u0c1f\u0c4d\u200c\u0c28\u0c3f \u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c38\u0c4d\u0c24\u0c4b\u0c02\u0c26\u0c3f"
147
+ },
148
+ "rename": {
149
+ "title": "\u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d \u0c2a\u0c47\u0c30\u0c41 \u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c02\u0c21\u0c3f",
150
+ "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",
151
+ "form": {
152
+ "name": {
153
+ "label": "\u0c2a\u0c47\u0c30\u0c41",
154
+ "placeholder": "\u0c15\u0c4a\u0c24\u0c4d\u0c24 \u0c2a\u0c47\u0c30\u0c41\u0c28\u0c41 \u0c28\u0c2e\u0c4b\u0c26\u0c41 \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f"
155
+ }
156
+ },
157
+ "success": "\u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d \u0c2a\u0c47\u0c30\u0c41 \u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f!",
158
+ "inProgress": "\u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d \u0c2a\u0c47\u0c30\u0c41 \u0c2e\u0c3e\u0c30\u0c41\u0c38\u0c4d\u0c24\u0c4b\u0c02\u0c26\u0c3f"
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "navigation": {
164
+ "header": {
165
+ "chat": "\u0c1a\u0c3e\u0c1f\u0c4d",
166
+ "readme": "\u0c1a\u0c26\u0c35\u0c02\u0c21\u0c3f",
167
+ "theme": {
168
+ "light": "Light Theme",
169
+ "dark": "Dark Theme",
170
+ "system": "Follow System"
171
+ }
172
+ },
173
+ "newChat": {
174
+ "button": "\u0c15\u0c4a\u0c24\u0c4d\u0c24 \u0c1a\u0c3e\u0c1f\u0c4d",
175
+ "dialog": {
176
+ "title": "\u0c15\u0c4a\u0c24\u0c4d\u0c24 \u0c1a\u0c3e\u0c1f\u0c4d \u0c38\u0c43\u0c37\u0c4d\u0c1f\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f",
177
+ "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?",
178
+ "tooltip": "\u0c15\u0c4a\u0c24\u0c4d\u0c24 \u0c1a\u0c3e\u0c1f\u0c4d"
179
+ }
180
+ },
181
+ "user": {
182
+ "menu": {
183
+ "settings": "\u0c38\u0c46\u0c1f\u0c4d\u0c1f\u0c3f\u0c02\u0c17\u0c4d\u200c\u0c32\u0c41",
184
+ "settingsKey": "S",
185
+ "apiKeys": "API \u0c15\u0c40\u0c32\u0c41",
186
+ "logout": "\u0c32\u0c3e\u0c17\u0c4d \u0c05\u0c35\u0c41\u0c1f\u0c4d"
187
+ }
188
+ }
189
+ },
190
+ "apiKeys": {
191
+ "title": "\u0c05\u0c35\u0c38\u0c30\u0c2e\u0c48\u0c28 API \u0c15\u0c40\u0c32\u0c41",
192
+ "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.",
193
+ "success": {
194
+ "saved": "\u0c35\u0c3f\u0c1c\u0c2f\u0c35\u0c02\u0c24\u0c02\u0c17\u0c3e \u0c38\u0c47\u0c35\u0c4d \u0c1a\u0c47\u0c2f\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f"
195
+ }
196
+ },
197
+ "alerts": {
198
+ "info": "Info",
199
+ "note": "Note",
200
+ "tip": "Tip",
201
+ "important": "Important",
202
+ "warning": "Warning",
203
+ "caution": "Caution",
204
+ "debug": "Debug",
205
+ "example": "Example",
206
+ "success": "Success",
207
+ "help": "Help",
208
+ "idea": "Idea",
209
+ "pending": "Pending",
210
+ "security": "Security",
211
+ "beta": "Beta",
212
+ "best-practice": "Best Practice"
213
+ }
214
+ }
.chainlit/translations/zh-CN.json ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "common": {
3
+ "actions": {
4
+ "cancel": "\u53d6\u6d88",
5
+ "confirm": "\u786e\u8ba4",
6
+ "continue": "\u7ee7\u7eed",
7
+ "goBack": "\u8fd4\u56de",
8
+ "reset": "\u91cd\u7f6e",
9
+ "submit": "\u63d0\u4ea4"
10
+ },
11
+ "status": {
12
+ "loading": "\u52a0\u8f7d\u4e2d...",
13
+ "error": {
14
+ "default": "\u53d1\u751f\u9519\u8bef",
15
+ "serverConnection": "\u65e0\u6cd5\u8fde\u63a5\u5230\u670d\u52a1\u5668"
16
+ }
17
+ }
18
+ },
19
+ "auth": {
20
+ "login": {
21
+ "title": "\u767b\u5f55\u4ee5\u8bbf\u95ee\u5e94\u7528",
22
+ "form": {
23
+ "email": {
24
+ "label": "\u7535\u5b50\u90ae\u7bb1",
25
+ "required": "\u90ae\u7bb1\u662f\u5fc5\u586b\u9879"
26
+ },
27
+ "password": {
28
+ "label": "\u5bc6\u7801",
29
+ "required": "\u5bc6\u7801\u662f\u5fc5\u586b\u9879"
30
+ },
31
+ "actions": {
32
+ "signin": "\u767b\u5f55"
33
+ },
34
+ "alternativeText": {
35
+ "or": "\u6216"
36
+ }
37
+ },
38
+ "errors": {
39
+ "default": "\u65e0\u6cd5\u767b\u5f55",
40
+ "signin": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55",
41
+ "oauthSignin": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55",
42
+ "redirectUriMismatch": "\u91cd\u5b9a\u5411URI\u4e0eOAuth\u5e94\u7528\u914d\u7f6e\u4e0d\u5339\u914d",
43
+ "oauthCallback": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55",
44
+ "oauthCreateAccount": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55",
45
+ "emailCreateAccount": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55",
46
+ "callback": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55",
47
+ "oauthAccountNotLinked": "\u4e3a\u786e\u8ba4\u60a8\u7684\u8eab\u4efd\uff0c\u8bf7\u4f7f\u7528\u539f\u59cb\u8d26\u53f7\u767b\u5f55",
48
+ "emailSignin": "\u90ae\u4ef6\u53d1\u9001\u5931\u8d25",
49
+ "emailVerify": "\u8bf7\u9a8c\u8bc1\u60a8\u7684\u90ae\u7bb1\uff0c\u65b0\u7684\u9a8c\u8bc1\u90ae\u4ef6\u5df2\u53d1\u9001",
50
+ "credentialsSignin": "\u767b\u5f55\u5931\u8d25\u3002\u8bf7\u68c0\u67e5\u60a8\u63d0\u4f9b\u7684\u4fe1\u606f\u662f\u5426\u6b63\u786e",
51
+ "sessionRequired": "\u8bf7\u767b\u5f55\u4ee5\u8bbf\u95ee\u6b64\u9875\u9762"
52
+ }
53
+ },
54
+ "provider": {
55
+ "continue": "\u7ee7\u7eed\u4f7f\u7528{{provider}}"
56
+ }
57
+ },
58
+ "chat": {
59
+ "input": {
60
+ "placeholder": "\u5728\u6b64\u8f93\u5165\u60a8\u7684\u6d88\u606f...",
61
+ "actions": {
62
+ "send": "\u53d1\u9001\u6d88\u606f",
63
+ "stop": "\u505c\u6b62\u4efb\u52a1",
64
+ "attachFiles": "\u9644\u52a0\u6587\u4ef6"
65
+ }
66
+ },
67
+ "speech": {
68
+ "start": "\u5f00\u59cb\u5f55\u97f3",
69
+ "stop": "\u505c\u6b62\u5f55\u97f3",
70
+ "connecting": "\u8fde\u63a5\u4e2d"
71
+ },
72
+ "fileUpload": {
73
+ "dragDrop": "\u5c06\u6587\u4ef6\u62d6\u653e\u5230\u8fd9\u91cc",
74
+ "browse": "\u6d4f\u89c8\u6587\u4ef6",
75
+ "sizeLimit": "\u9650\u5236\uff1a",
76
+ "errors": {
77
+ "failed": "\u4e0a\u4f20\u5931\u8d25",
78
+ "cancelled": "\u5df2\u53d6\u6d88\u4e0a\u4f20"
79
+ }
80
+ },
81
+ "messages": {
82
+ "status": {
83
+ "using": "\u4f7f\u7528\u4e2d",
84
+ "used": "\u5df2\u4f7f\u7528"
85
+ },
86
+ "actions": {
87
+ "copy": {
88
+ "button": "\u590d\u5236\u5230\u526a\u8d34\u677f",
89
+ "success": "\u5df2\u590d\u5236\uff01"
90
+ }
91
+ },
92
+ "feedback": {
93
+ "positive": "\u6709\u5e2e\u52a9",
94
+ "negative": "\u6ca1\u6709\u5e2e\u52a9",
95
+ "edit": "\u7f16\u8f91\u53cd\u9988",
96
+ "dialog": {
97
+ "title": "\u6dfb\u52a0\u8bc4\u8bba",
98
+ "submit": "\u63d0\u4ea4\u53cd\u9988"
99
+ },
100
+ "status": {
101
+ "updating": "\u66f4\u65b0\u4e2d",
102
+ "updated": "\u53cd\u9988\u5df2\u66f4\u65b0"
103
+ }
104
+ }
105
+ },
106
+ "history": {
107
+ "title": "\u6700\u8fd1\u8f93\u5165",
108
+ "empty": "\u7a7a\u7a7a\u5982\u4e5f...",
109
+ "show": "\u663e\u793a\u5386\u53f2"
110
+ },
111
+ "settings": {
112
+ "title": "\u8bbe\u7f6e\u9762\u677f"
113
+ },
114
+ "watermark": "\u5927\u8bed\u8a00\u6a21\u578b\u53ef\u80fd\u4f1a\u72af\u9519\u3002\u8bf7\u6838\u5b9e\u91cd\u8981\u4fe1\u606f\u3002"
115
+ },
116
+ "threadHistory": {
117
+ "sidebar": {
118
+ "title": "\u5386\u53f2\u5bf9\u8bdd",
119
+ "filters": {
120
+ "search": "\u641c\u7d22",
121
+ "placeholder": "\u641c\u7d22\u4f1a\u8bdd..."
122
+ },
123
+ "timeframes": {
124
+ "today": "\u4eca\u5929",
125
+ "yesterday": "\u6628\u5929",
126
+ "previous7days": "\u8fc7\u53bb7\u5929",
127
+ "previous30days": "\u8fc7\u53bb30\u5929"
128
+ },
129
+ "empty": "\u672a\u627e\u5230\u5bf9\u8bdd",
130
+ "actions": {
131
+ "close": "\u5173\u95ed\u4fa7\u8fb9\u680f",
132
+ "open": "\u6253\u5f00\u4fa7\u8fb9\u680f"
133
+ }
134
+ },
135
+ "thread": {
136
+ "untitled": "\u672a\u547d\u540d\u5bf9\u8bdd",
137
+ "menu": {
138
+ "rename": "\u91cd\u547d\u540d",
139
+ "delete": "\u5220\u9664"
140
+ },
141
+ "actions": {
142
+ "delete": {
143
+ "title": "\u786e\u8ba4\u5220\u9664",
144
+ "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",
145
+ "success": "\u5bf9\u8bdd\u5df2\u5220\u9664",
146
+ "inProgress": "\u6b63\u5728\u5220\u9664\u5bf9\u8bdd"
147
+ },
148
+ "rename": {
149
+ "title": "\u91cd\u547d\u540d\u5bf9\u8bdd",
150
+ "description": "\u4e3a\u6b64\u5bf9\u8bdd\u8f93\u5165\u65b0\u540d\u79f0",
151
+ "form": {
152
+ "name": {
153
+ "label": "\u540d\u79f0",
154
+ "placeholder": "\u8f93\u5165\u65b0\u540d\u79f0"
155
+ }
156
+ },
157
+ "success": "\u5bf9\u8bdd\u5df2\u91cd\u547d\u540d\uff01",
158
+ "inProgress": "\u6b63\u5728\u91cd\u547d\u540d\u5bf9\u8bdd"
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "navigation": {
164
+ "header": {
165
+ "chat": "\u804a\u5929",
166
+ "readme": "\u8bf4\u660e",
167
+ "theme": {
168
+ "light": "\u6d45\u8272\u4e3b\u9898",
169
+ "dark": "\u6df1\u8272\u4e3b\u9898",
170
+ "system": "\u8ddf\u968f\u7cfb\u7edf"
171
+ }
172
+ },
173
+ "newChat": {
174
+ "button": "\u65b0\u5efa\u5bf9\u8bdd",
175
+ "dialog": {
176
+ "title": "\u521b\u5efa\u65b0\u5bf9\u8bdd",
177
+ "description": "\u8fd9\u5c06\u6e05\u9664\u60a8\u5f53\u524d\u7684\u804a\u5929\u8bb0\u5f55\u3002\u786e\u5b9a\u8981\u7ee7\u7eed\u5417\uff1f",
178
+ "tooltip": "\u65b0\u5efa\u5bf9\u8bdd"
179
+ }
180
+ },
181
+ "user": {
182
+ "menu": {
183
+ "settings": "\u8bbe\u7f6e",
184
+ "settingsKey": "S",
185
+ "apiKeys": "API\u5bc6\u94a5",
186
+ "logout": "\u9000\u51fa\u767b\u5f55"
187
+ }
188
+ }
189
+ },
190
+ "apiKeys": {
191
+ "title": "\u6240\u9700API\u5bc6\u94a5",
192
+ "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",
193
+ "success": {
194
+ "saved": "\u4fdd\u5b58\u6210\u529f"
195
+ }
196
+ },
197
+ "alerts": {
198
+ "info": "\u4fe1\u606f",
199
+ "note": "\u6ce8\u91ca",
200
+ "tip": "\u63d0\u793a",
201
+ "important": "\u91cd\u8981",
202
+ "warning": "\u8b66\u544a",
203
+ "caution": "\u6ce8\u610f",
204
+ "debug": "\u8c03\u8bd5",
205
+ "example": "\u793a\u4f8b",
206
+ "success": "\u6210\u529f",
207
+ "help": "\u5e2e\u52a9",
208
+ "idea": "\u60f3\u6cd5",
209
+ "pending": "\u5f85\u5904\u7406",
210
+ "security": "\u5b89\u5168",
211
+ "beta": "\u6d4b\u8bd5",
212
+ "best-practice": "\u6700\u4f73\u5b9e\u8df5"
213
+ }
214
+ }
.env.example ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Network & Server
2
+ HOST=localhost
3
+ PORT=8080
4
+
5
+ # Defaults & Flags
6
+ TIMEOUT_DEFAULT=60
7
+ AUDIT_ENABLED=1
8
+ DELETE_MODE=trash # trash | hard
9
+ PY_UNSAFE_DEFAULT=0 # 0 = SAFE; 1 = UNSAFE (exige CONFIRMO por comando)
10
+
11
+ # Exec allowlist (comandos sem confirmação)
12
+ EXEC_ALLOWLIST=cmd,ipconfig,ping,tracert,where,tasklist,python,git
13
+
14
+ # Paths
15
+ DATA_DIR=./data
16
+ LOGS_DIR=./logs
.gitignore ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ # Byte-compiled / optimized / DLL files
3
+ __pycache__/
4
+ *.py[cod]
5
+ *$py.class
6
+
7
+ # C extensions
8
+ *.so
9
+
10
+ # Distribution / packaging
11
+ .Python
12
+ build/
13
+ develop-eggs/
14
+ dist/
15
+ downloads/
16
+ eggs/
17
+ .eggs/
18
+ lib/
19
+ lib64/
20
+ parts/
21
+ sdist/
22
+ var/
23
+ wheels/
24
+ pip-wheel-metadata/
25
+ share/python-wheels/
26
+ *.egg-info/
27
+ .installed.cfg
28
+ *.egg
29
+ MANIFEST
30
+
31
+ # PyInstaller
32
+ # Usually these files are written by a python script from a template
33
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
34
+ *.manifest
35
+ *.spec
36
+
37
+ # Installer logs
38
+ pip-log.txt
39
+ pip-delete-this-directory.txt
40
+
41
+ # Unit test / coverage reports
42
+ htmlcov/
43
+ .tox/
44
+ .nox/
45
+ .coverage
46
+ .coverage.*
47
+ .cache
48
+ nosetests.xml
49
+ coverage.xml
50
+ *.cover
51
+ *.py,cover
52
+ .hypothesis/
53
+ .pytest_cache/
54
+
55
+ # Environments
56
+ .env
57
+ .venv
58
+ env/
59
+ venv/
60
+ ENV/
61
+ env.bak
62
+ venv.bak
63
+ hashiru_6_env/
64
+ venv/
65
+
66
+ # Spyder project settings
67
+ .spyderproject
68
+ .spyderworkspace
69
+
70
+ # Rope project settings
71
+ .ropeproject
72
+
73
+ # mkdocs documentation
74
+ /site
75
+
76
+ # mypy
77
+ .mypy_cache/
78
+ .dmypy.json
79
+ dmypy.json
80
+
81
+ # Pyre type checker
82
+ .pyre/
83
+
84
+ # Logs
85
+ *.log
86
+ logs/
87
+ superezio_enterprise.log
88
+ superezio.log
89
+ hashiru.log
90
+
91
+ # database
92
+ database/
93
+ vectordb/
94
+
95
+ # artifacts
96
+ artifacts/
97
+
98
+ # backups
99
+ backups/
100
+ *.backup
1 ADDED
File without changes
5 ADDED
File without changes
Atualizando ADDED
@@ -0,0 +1 @@
 
 
1
+ ��� todas as ocorr�ncias de "reasoning" para "reasoning:latest"...
AutonomousConfig ADDED
File without changes
Dict[str ADDED
File without changes
List[str] ADDED
File without changes
README_AUTONOMO.md ADDED
@@ -0,0 +1,385 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ HASHIRU 6.1 - CONFIGURAÇÃO AUTÔNOMA SEM RESTRIÇÕES
3
+ Configurações para agente 100% autônomo baseado em 7 meses de pesquisa
4
+ """
5
+
6
+ from __future__ import annotations
7
+ from typing import Dict, List, Any, Optional
8
+ import os
9
+ from pathlib import Path
10
+
11
+ # ================================================
12
+ # CONFIGURAÇÕES DE AUTONOMIA TOTAL
13
+ # ================================================
14
+
15
+ class AutonomousConfig:
16
+ """Configurações para operação 100% autônoma sem restrições."""
17
+
18
+ # MODO OPERACIONAL - SEM RESTRIÇÕES
19
+ AUTONOMOUS_MODE = True
20
+ RESTRICTIONS_ENABLED = False
21
+ CONFIRM_BEFORE_EXECUTION = False # EXECUÇÃO AUTOMÁTICA TOTAL
22
+ SELF_MODIFICATION_ENABLED = True
23
+ DANGEROUS_OPERATIONS_ALLOWED = True
24
+
25
+ # CONFIGURAÇÕES DE IAs OLLAMA
26
+ OLLAMA_BASE_URL = "http://localhost:11434"
27
+ OLLAMA_TIMEOUT = 60.0
28
+
29
+ # MODELOS DE IA COM FALLBACK AUTOMÁTICO
30
+ AI_MODELS = {
31
+ # Conversação e chat geral
32
+ "conversation": {
33
+ "primary": "llama3.1:8b",
34
+ "fallback": ["mistral:7b-instruct", "llama3.1:8b"]
35
+ },
36
+
37
+ # Especialista em código
38
+ "code_specialist": {
39
+ "primary": "deepseek-coder:6.7b",
40
+ "fallback": ["deepseek-coder:33b", "llama3.1:8b"]
41
+ },
42
+
43
+ # Raciocínio avançado
44
+ "reasoning": {
45
+ "primary": "deepseek-r1:8b",
46
+ "fallback": ["qwen2.5:14b-instruct", "llama3.1:8b"]
47
+ },
48
+
49
+ # Código complexo e arquitetura
50
+ "code_master": {
51
+ "primary": "deepseek-coder:33b",
52
+ "fallback": ["deepseek-coder:6.7b", "llama3.1:8b"]
53
+ },
54
+
55
+ # Embeddings e processamento de texto
56
+ "embeddings": {
57
+ "primary": "nomic-embed-text:latest",
58
+ "fallback": ["llama3.1:8b"]
59
+ },
60
+
61
+ # Instruções complexas
62
+ "instructions": {
63
+ "primary": "qwen2.5:14b-instruct",
64
+ "fallback": ["mistral:7b-instruct", "llama3.1:8b"]
65
+ },
66
+
67
+ # Uso geral
68
+ "general": {
69
+ "primary": "mistral:7b-instruct",
70
+ "fallback": ["llama3.1:8b"]
71
+ },
72
+
73
+ # Ferramentas e comandos
74
+ "tools": {
75
+ "primary": "llama3-groq-tool-use:8b",
76
+ "fallback": ["llama3.1:8b"]
77
+ }
78
+ }
79
+
80
+ # CONFIGURAÇÕES DE EXECUÇÃO AUTOMÁTICA
81
+ AUTO_EXECUTION = {
82
+ # Comandos que executam automaticamente SEM confirmação
83
+ "always_allow": [
84
+ "/read", "/list", "/search", "/sysinfo", "/ps",
85
+ "/net:get", "/scrape", "/py", "/help"
86
+ ],
87
+
88
+ # Comandos perigosos que também executam automaticamente (SEM RESTRIÇÕES)
89
+ "dangerous_auto_allow": [
90
+ "/write", "/exec", "/delete", "/move", "/copy",
91
+ "/kill", "/py --unsafe"
92
+ ],
93
+
94
+ # Timeout padrão para execução
95
+ "default_timeout": 60,
96
+
97
+ # Máximo de comandos por execução
98
+ "max_commands_per_execution": 20
99
+ }
100
+
101
+ # CONFIGURAÇÕES DE AUTO-MODIFICAÇÃO
102
+ SELF_MODIFICATION = {
103
+ # Habilitar modificação do próprio código
104
+ "enabled": True,
105
+
106
+ # Arquivos que podem ser modificados automaticamente
107
+ "modifiable_files": [
108
+ "main_agent.py", "tools/*.py", "utils/*.py",
109
+ "config.py", "autonomous_config.py"
110
+ ],
111
+
112
+ # Diretórios excluídos da modificação
113
+ "exclude_directories": [
114
+ ".git", "__pycache__", "hashiru_6_env", "venv",
115
+ ".venv", "node_modules", ".env"
116
+ ],
117
+
118
+ # Backup automático antes de modificações
119
+ "auto_backup": True,
120
+
121
+ # Manter histórico de modificações
122
+ "keep_history": True,
123
+
124
+ # Máximo de backups por arquivo
125
+ "max_backups_per_file": 10
126
+ }
127
+
128
+ # CONFIGURAÇÕES DE PESQUISA E WEB
129
+ WEB_RESEARCH = {
130
+ # Máximo de resultados por busca
131
+ "max_search_results": 10,
132
+
133
+ # Timeout para requisições web
134
+ "web_timeout": 30,
135
+
136
+ # User agent para requisições
137
+ "user_agent": "HASHIRU-6.1-Autonomous-Agent",
138
+
139
+ # Cache de resultados de pesquisa
140
+ "cache_search_results": True,
141
+
142
+ # Tempo de cache (segundos)
143
+ "cache_duration": 3600 # 1 hora
144
+ }
145
+
146
+ # CONFIGURAÇÕES DE AUDITORIA
147
+ AUDIT = {
148
+ # Habilitar auditoria de todas as ações
149
+ "enabled": True,
150
+
151
+ # Arquivo de log
152
+ "log_file": "utils/audit.log",
153
+
154
+ # Nível de detalhamento
155
+ "detail_level": "full",
156
+
157
+ # Rotação de logs
158
+ "rotate_logs": True,
159
+
160
+ # Tamanho máximo do log (MB)
161
+ "max_log_size": 100
162
+ }
163
+
164
+ # CONFIGURAÇÕES DE PERFORMANCE
165
+ PERFORMANCE = {
166
+ # Cache de resultados de IA
167
+ "cache_ai_responses": True,
168
+
169
+ # Tamanho máximo do cache
170
+ "max_cache_size": 1000,
171
+
172
+ # Timeout para operações longas
173
+ "long_operation_timeout": 300, # 5 minutos
174
+
175
+ # Paralelização de comandos
176
+ "parallel_execution": True,
177
+
178
+ # Máximo de threads paralelas
179
+ "max_parallel_threads": 5
180
+ }
181
+
182
+ # CONFIGURAÇÕES DE SEGURANÇA (DESABILITADAS)
183
+ SECURITY = {
184
+ # TODAS AS RESTRIÇÕES DESABILITADAS CONFORME SOLICITADO
185
+ "sandbox_mode": False,
186
+ "validate_commands": False,
187
+ "check_file_permissions": False,
188
+ "restrict_system_access": False,
189
+ "limit_resource_usage": False,
190
+
191
+ # Lista branca de comandos (DESABILITADA)
192
+ "command_whitelist_enabled": False,
193
+ "command_whitelist": [],
194
+
195
+ # Lista negra de comandos (DESABILITADA)
196
+ "command_blacklist_enabled": False,
197
+ "command_blacklist": []
198
+ }
199
+
200
+ # CONFIGURAÇÕES DE DESENVOLVIMENTO
201
+ DEVELOPMENT = {
202
+ # Modo debug
203
+ "debug_mode": True,
204
+
205
+ # Logs verbosos
206
+ "verbose_logging": True,
207
+
208
+ # Mostrar execução de comandos
209
+ "show_command_execution": True,
210
+
211
+ # Salvar artifacts de debug
212
+ "save_debug_artifacts": True,
213
+
214
+ # Diretório de artifacts
215
+ "artifacts_directory": "artifacts"
216
+ }
217
+
218
+ # CONFIGURAÇÕES DE SISTEMA
219
+ SYSTEM = {
220
+ # Diretório base do projeto
221
+ "project_root": Path(__file__).parent,
222
+
223
+ # Diretórios importantes
224
+ "directories": {
225
+ "tools": "tools",
226
+ "utils": "utils",
227
+ "artifacts": "artifacts",
228
+ "backups": "backups",
229
+ "logs": "logs"
230
+ },
231
+
232
+ # Arquivos essenciais
233
+ "essential_files": [
234
+ "main_agent.py",
235
+ "config.py",
236
+ "tools/__init__.py",
237
+ "utils/audit.py"
238
+ ],
239
+
240
+ # Codificação padrão
241
+ "default_encoding": "utf-8",
242
+
243
+ # Porta padrão do Chainlit
244
+ "chainlit_port": 8080
245
+ }
246
+
247
+ # MENSAGENS DO SISTEMA
248
+ MESSAGES = {
249
+ "startup_banner": """
250
+ 🚀 HASHIRU 6.1 - AGENTE AUTÔNOMO SEM RESTRIÇÕES
251
+
252
+ 🧠 IAs ATIVAS: 8 modelos especializados
253
+ ⚡ MODO: 100% Autônomo - Execução Total
254
+ 🔧 CAPACIDADES: Modificação de código + Sistema + Web
255
+ 🎯 OBJETIVO: Pesquisar e modificar código livremente
256
+
257
+ ⚠️ SISTEMA CONFIGURADO PARA MÁXIMA AUTONOMIA
258
+ 💬 Converse naturalmente - executo automaticamente!
259
+ """,
260
+
261
+ "processing": "🧠 Processando com múltiplas IAs...",
262
+ "executing": "🚀 Executando autonomamente...",
263
+ "completed": "✅ Operação concluída com sucesso!",
264
+ "error": "💥 Erro na execução:",
265
+ "fallback": "🔄 Usando modelo fallback:",
266
+ "cache_hit": "⚡ Resultado do cache:",
267
+ "self_improvement": "🔧 Auto-melhoria em andamento..."
268
+ }
269
+
270
+ # CONFIGURAÇÕES EXPERIMENTAIS
271
+ EXPERIMENTAL = {
272
+ # Recursos experimentais habilitados
273
+ "enabled": True,
274
+
275
+ # Auto-melhoria contínua em background
276
+ "continuous_self_improvement": False, # Pode consumir recursos
277
+
278
+ # Aprendizado por reforço
279
+ "reinforcement_learning": False,
280
+
281
+ # Análise preditiva de intenções
282
+ "predictive_intent_analysis": True,
283
+
284
+ # Cache inteligente baseado em padrões
285
+ "intelligent_caching": True,
286
+
287
+ # Otimização automática de prompts
288
+ "auto_prompt_optimization": True
289
+ }
290
+
291
+ # ================================================
292
+ # FUNÇÕES DE CONFIGURAÇÃO
293
+ # ================================================
294
+
295
+ def get_config() -> AutonomousConfig:
296
+ """Retorna configuração global."""
297
+ return AutonomousConfig()
298
+
299
+ def get_ai_model(model_type: str) -> str:
300
+ """Retorna modelo primário para o tipo especificado."""
301
+ config = get_config()
302
+ model_config = config.AI_MODELS.get(model_type, {})
303
+ return model_config.get("primary", "llama3.1:8b")
304
+
305
+ def get_fallback_models(model_type: str) -> List[str]:
306
+ """Retorna lista de modelos fallback."""
307
+ config = get_config()
308
+ model_config = config.AI_MODELS.get(model_type, {})
309
+ return model_config.get("fallback", ["llama3.1:8b"])
310
+
311
+ def is_command_auto_allowed(command: str) -> bool:
312
+ """Verifica se comando é executado automaticamente."""
313
+ config = get_config()
314
+
315
+ # Se modo autônomo está desabilitado, não permitir
316
+ if not config.AUTONOMOUS_MODE:
317
+ return False
318
+
319
+ # Se restrições estão habilitadas, verificar listas
320
+ if config.RESTRICTIONS_ENABLED:
321
+ always_allow = config.AUTO_EXECUTION["always_allow"]
322
+ return any(command.startswith(cmd) for cmd in always_allow)
323
+
324
+ # SEM RESTRIÇÕES - PERMITIR TUDO
325
+ return True
326
+
327
+ def is_dangerous_command_allowed(command: str) -> bool:
328
+ """Verifica se comando perigoso é permitido."""
329
+ config = get_config()
330
+
331
+ # SEM RESTRIÇÕES - PERMITIR COMANDOS PERIGOSOS
332
+ if not config.RESTRICTIONS_ENABLED:
333
+ return True
334
+
335
+ dangerous_commands = config.AUTO_EXECUTION["dangerous_auto_allow"]
336
+ return any(command.startswith(cmd) for cmd in dangerous_commands)
337
+
338
+ def should_create_backup(file_path: str) -> bool:
339
+ """Verifica se deve criar backup antes de modificar arquivo."""
340
+ config = get_config()
341
+ return config.SELF_MODIFICATION["auto_backup"]
342
+
343
+ def get_max_execution_timeout() -> int:
344
+ """Retorna timeout máximo para execução."""
345
+ config = get_config()
346
+ return config.AUTO_EXECUTION["default_timeout"]
347
+
348
+ def get_project_directories() -> Dict[str, str]:
349
+ """Retorna diretórios do projeto."""
350
+ config = get_config()
351
+ return config.SYSTEM["directories"]
352
+
353
+ def is_self_modification_enabled() -> bool:
354
+ """Verifica se auto-modificação está habilitada."""
355
+ config = get_config()
356
+ return config.SELF_MODIFICATION["enabled"]
357
+
358
+ def get_excluded_directories() -> List[str]:
359
+ """Retorna diretórios excluídos da modificação."""
360
+ config = get_config()
361
+ return config.SELF_MODIFICATION["exclude_directories"]
362
+
363
+ def get_startup_message() -> str:
364
+ """Retorna mensagem de inicialização."""
365
+ config = get_config()
366
+ return config.MESSAGES["startup_banner"]
367
+
368
+ # ================================================
369
+ # CONFIGURAÇÃO GLOBAL - INSTÂNCIA ÚNICA
370
+ # ================================================
371
+
372
+ # Instância global de configuração
373
+ autonomous_config = AutonomousConfig()
374
+
375
+ # Configurações prontas para uso
376
+ OLLAMA_URL = autonomous_config.OLLAMA_BASE_URL
377
+ AI_MODELS = autonomous_config.AI_MODELS
378
+ AUTONOMOUS_MODE = autonomous_config.AUTONOMOUS_MODE
379
+ SELF_MODIFICATION_ENABLED = autonomous_config.SELF_MODIFICATION["enabled"]
380
+ AUTO_EXECUTION_ENABLED = True # SEM RESTRIÇÕES
381
+
382
+ # Mensagens do sistema
383
+ STARTUP_BANNER = autonomous_config.MESSAGES["startup_banner"]
384
+ PROCESSING_MESSAGE = autonomous_config.MESSAGES["processing"]
385
+ EXECUTING_MESSAGE = autonomous_config.MESSAGES["executing"]
Task ADDED
File without changes
agent_models.py ADDED
@@ -0,0 +1,160 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # main_agent.py
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ HASHIRU 6.8 - ARQUITETURA FINAL ESTÁVEL
5
+
6
+ Esta versão finaliza a separação de responsabilidades, movendo os
7
+ modelos de dados para seu próprio arquivo e estabilizando a arquitetura.
8
+ """
9
+ from __future__ import annotations
10
+ import traceback
11
+ import sys
12
+ import pathlib
13
+ import logging
14
+ import json
15
+
16
+ import chainlit as cl
17
+ import httpx
18
+
19
+ # ----------------------------------------------------------------------
20
+ # 1. CONFIGURAÇÃO INICIAL E DEPENDÊNCIAS
21
+ # ----------------------------------------------------------------------
22
+ logging.basicConfig(level=logging.INFO, format="%(asctime)s - [%(levelname)s] - %(message)s")
23
+ logger = logging.getLogger("HASHIRU_AGENT")
24
+
25
+ ROOT_PATH = pathlib.Path(__file__).resolve().parent
26
+ if str(ROOT_PATH) not in sys.path:
27
+ sys.path.insert(0, str(ROOT_PATH))
28
+
29
+ # --- Importações do Projeto ---
30
+ from autonomous_config import config, Config
31
+ from agent_tools import TOOL_REGISTRY, get_tools_description_for_llm
32
+ # >>> NOVO: Importa as estruturas de dados do seu próprio arquivo <<<
33
+ from agent_models import Task, ToolCall
34
+
35
+ # ----------------------------------------------------------------------
36
+ # 2. CLASSES DO AGENTE (Sem as definições de dataclass)
37
+ # ----------------------------------------------------------------------
38
+
39
+ class Planner:
40
+ """Cria um plano de ação (uma lista de ToolCalls) para resolver a solicitação."""
41
+ def __init__(self, config: Config, http_client: httpx.AsyncClient):
42
+ self.config = config
43
+ self.http_client = http_client
44
+ self.system_prompt = (
45
+ "Você é um planejador para um agente de IA. Sua tarefa é decompor a solicitação do usuário em uma sequência de passos, onde cada passo é uma chamada a uma ferramenta. "
46
+ "As ferramentas disponíveis são:\n{tools}\n\n"
47
+ "Responda APENAS com um objeto JSON contendo uma chave 'plan', que é uma lista de ações. "
48
+ "Cada ação na lista deve ter 'tool_name' e 'tool_input'. Exemplo de resposta: "
49
+ '{"plan": [{"tool_name": "read_file", "tool_input": {"file_path": "main.py"}}]}'
50
+ )
51
+
52
+ async def create_task_with_plan(self, user_input: str) -> Task:
53
+ """Usa o LLM para criar uma Task completa com um plano de ferramentas."""
54
+ model = self.config.get_model("reasoning")
55
+ prompt = self.system_prompt.format(tools=get_tools_description_for_llm())
56
+
57
+ try:
58
+ response_json = await self._call_ollama(model, f"Crie um plano para: '{user_input}'", prompt)
59
+ data = json.loads(response_json)
60
+ plan_data = data.get("plan", [])
61
+ plan = [ToolCall(**call) for call in plan_data]
62
+ return Task("tool_based_plan", "Executar plano de ferramentas", user_input, plan)
63
+ except (json.JSONDecodeError, httpx.RequestError, TypeError) as e:
64
+ logger.error(f"Falha ao criar plano, tratando como conversa. Erro: {e}", exc_info=True)
65
+ return Task("general_conversation", "Conversa geral", user_input, [])
66
+
67
+ async def _call_ollama(self, model: str, prompt: str, system: str) -> str:
68
+ payload = {"model": model, "prompt": prompt, "system": system, "stream": False, "format": "json"}
69
+ r = await self.http_client.post(f"{self.config.ollama.base_url}/api/generate", json=payload)
70
+ r.raise_for_status()
71
+ return r.json().get("response", "{}")
72
+
73
+ class Executor:
74
+ """Executa um plano de ToolCalls em sequência."""
75
+ def __init__(self, config: Config):
76
+ self.config = config
77
+
78
+ async def execute_plan(self, plan: list[ToolCall]) -> str:
79
+ """Itera sobre um plano e executa cada chamada de ferramenta."""
80
+ if not plan:
81
+ return "## ✅ Plano Concluído\nNenhuma ação foi planejada, pois a tarefa não exigia ferramentas."
82
+
83
+ results = []
84
+ for i, tool_call in enumerate(plan):
85
+ async with cl.Step(name=f"Passo {i+1}: `{tool_call.tool_name}`") as step:
86
+ step.input = str(tool_call.tool_input)
87
+
88
+ tool = TOOL_REGISTRY.get(tool_call.tool_name)
89
+ if not tool:
90
+ output = f"Erro: Ferramenta '{tool_call.tool_name}' não encontrada."
91
+ else:
92
+ try:
93
+ output = tool.execute(tool_call.tool_input)
94
+ except Exception as e:
95
+ output = f"Erro ao executar a ferramenta '{tool.name}': {e}"
96
+
97
+ step.output = output
98
+ results.append(f"#### ✅ Passo {i+1}: `{tool.name}`\n**Resultado:**\n```\n{output}\n```")
99
+
100
+ return "## 📝 Relatório Final de Execução\n\n" + "\n\n---\n\n".join(results)
101
+
102
+ class AgentSession:
103
+ """Gerencia o ciclo de vida completo de uma interação."""
104
+ def __init__(self, config: Config):
105
+ self.config = config
106
+ self.http_client = httpx.AsyncClient(timeout=config.ollama.timeout)
107
+ self.planner = Planner(config, self.http_client)
108
+ self.executor = Executor(config)
109
+
110
+ async def handle_message(self, user_input: str):
111
+ """Orquestra o fluxo de Planejar -> Executar."""
112
+ await cl.Message(content=self.config.processing_message).send()
113
+
114
+ task = await self.planner.create_task_with_plan(user_input)
115
+
116
+ if not task.plan:
117
+ plan_summary = "Não foi criado um plano de ferramentas. Tentando responder diretamente..."
118
+ await cl.Message(content=plan_summary).send()
119
+ # Fallback para uma conversa simples se o planejamento falhar
120
+ # (Em uma versão futura, isso também poderia ser uma chamada ao LLM)
121
+ response = "Desculpe, não consegui transformar sua solicitação em um plano de ação. Pode tentar ser mais específico ou pedir algo que use as ferramentas disponíveis?"
122
+ else:
123
+ plan_summary = "**Plano de Ação:**\n" + "\n".join([f"- Usar `{tc.tool_name}`" for tc in task.plan])
124
+ await cl.Message(content=plan_summary).send()
125
+
126
+ await cl.Message(content=self.config.executing_message).send()
127
+ response = await self.executor.execute_plan(task.plan)
128
+
129
+ await cl.Message(content=response).send()
130
+
131
+ async def cleanup(self):
132
+ await self.http_client.aclose()
133
+ logger.info("Sessão do agente finalizada.")
134
+
135
+ # ----------------------------------------------------------------------
136
+ # 3. HOOKS DO CHAINLIT (A Camada de Interface)
137
+ # ----------------------------------------------------------------------
138
+ @cl.on_chat_start
139
+ async def on_chat_start():
140
+ agent_session = AgentSession(config)
141
+ cl.user_session.set("agent_session", agent_session)
142
+ await cl.Message(content=config.startup_banner).send()
143
+
144
+ @cl.on_message
145
+ async def on_message(message: cl.Message):
146
+ agent = cl.user_session.get("agent_session")
147
+ user_input = (message.content or "").strip()
148
+ if not user_input or not agent: return
149
+
150
+ try:
151
+ await agent.handle_message(user_input)
152
+ except Exception:
153
+ tb = traceback.format_exc()
154
+ logger.error(f"Erro irrecuperável no fluxo principal:\n{tb}")
155
+ await cl.Message(content=f"💥 **Erro Inesperado no Sistema:**\n```\n{tb}\n```").send()
156
+
157
+ @cl.on_chat_end
158
+ async def on_chat_end():
159
+ if agent := cl.user_session.get("agent_session"):
160
+ await agent.cleanup()
agent_structs.py ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # agent_structs.py
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ Este arquivo define as estruturas de dados (dataclasses) usadas pelo agente.
5
+ """
6
+ from dataclasses import dataclass
7
+
8
+ @dataclass
9
+ class Task:
10
+ """Representa uma tarefa identificada para o agente executar."""
11
+ task_type: str
12
+ summary: str
13
+ user_input: str
14
+ is_direct_command: bool = False
agent_tools.py ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # agent_tools.py
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ Define e registra todas as Ferramentas (Tools) disponíveis para o agente HASHIRU.
5
+
6
+ Cada ferramenta é uma classe que herda de BaseTool, garantindo uma estrutura
7
+ consistente com nome, descrição e um método de execução.
8
+ """
9
+ import os
10
+ from pathlib import Path
11
+ from typing import Dict, Any, Type
12
+ from pydantic import BaseModel, Field
13
+
14
+ # --- Classe Base para todas as Ferramentas ---
15
+
16
+ class BaseTool(BaseModel):
17
+ """
18
+ A classe base abstrata para todas as ferramentas do agente.
19
+ Força a implementação de metadados essenciais e um método de execução.
20
+ """
21
+ name: str
22
+ description: str
23
+
24
+ def execute(self, tool_input: Dict[str, Any]) -> str:
25
+ """O método que executa a lógica da ferramenta."""
26
+ raise NotImplementedError("A subclasse deve implementar o método execute.")
27
+
28
+ def get_description_for_llm(self) -> str:
29
+ """Formata a descrição da ferramenta para ser enviada ao LLM."""
30
+ return f"- `{self.name}`: {self.description}"
31
+
32
+ # --- Implementações Concretas das Ferramentas ---
33
+
34
+ class ReadFileTool(BaseTool):
35
+ name: str = "read_file"
36
+ description: str = "Lê e retorna o conteúdo completo de um arquivo de texto. Use para examinar arquivos."
37
+
38
+ def execute(self, tool_input: Dict[str, Any]) -> str:
39
+ file_path = tool_input.get("file_path")
40
+ if not file_path:
41
+ return "Erro: O caminho do arquivo (file_path) não foi fornecido."
42
+ try:
43
+ with open(file_path, 'r', encoding='utf-8') as f:
44
+ return f.read()
45
+ except Exception as e:
46
+ return f"Erro ao ler o arquivo {file_path}: {e}"
47
+
48
+ class WriteFileTool(BaseTool):
49
+ name: str = "write_file"
50
+ description: str = "Escreve ou sobrescreve um arquivo de texto com o conteúdo fornecido. Use para criar ou modificar arquivos."
51
+
52
+ def execute(self, tool_input: Dict[str, Any]) -> str:
53
+ file_path = tool_input.get("file_path")
54
+ content = tool_input.get("content")
55
+ if file_path is None or content is None:
56
+ return "Erro: 'file_path' e 'content' são necessários."
57
+ try:
58
+ # Garante que o diretório exista
59
+ Path(file_path).parent.mkdir(parents=True, exist_ok=True)
60
+ with open(file_path, 'w', encoding='utf-8') as f:
61
+ f.write(content)
62
+ return f"Arquivo '{file_path}' escrito com sucesso."
63
+ except Exception as e:
64
+ return f"Erro ao escrever o arquivo {file_path}: {e}"
65
+
66
+ class ListFilesTool(BaseTool):
67
+ name: str = "list_files"
68
+ description: str = "Lista todos os arquivos e pastas em um diretório específico. Use para explorar a estrutura do projeto."
69
+
70
+ def execute(self, tool_input: Dict[str, Any]) -> str:
71
+ directory = tool_input.get("directory", ".")
72
+ try:
73
+ files = os.listdir(directory)
74
+ if not files:
75
+ return f"O diretório '{directory}' está vazio."
76
+ return "\n".join(files)
77
+ except Exception as e:
78
+ return f"Erro ao listar arquivos em '{directory}': {e}"
79
+
80
+
81
+ # --- Registro Central de Ferramentas ---
82
+ # O agente usará este dicionário para encontrar e executar as ferramentas.
83
+ # A chave é o nome da ferramenta, e o valor é uma instância da classe da ferramenta.
84
+ TOOL_REGISTRY: Dict[str, BaseTool] = {
85
+ tool.name: tool for tool in [
86
+ ReadFileTool(),
87
+ WriteFileTool(),
88
+ ListFilesTool(),
89
+ ]
90
+ }
91
+
92
+ def get_tools_description_for_llm() -> str:
93
+ """Gera uma string formatada com a descrição de todas as ferramentas para o prompt do LLM."""
94
+ return "\n".join([tool.get_description_for_llm() for tool in TOOL_REGISTRY.values()])
apply_all_fixes.py ADDED
@@ -0,0 +1,122 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ HASHIRU 6.1 - Apply All Fixes Script
3
+ Aplica todas as correções críticas em uma execução
4
+ """
5
+ import sys
6
+ import json
7
+ import time
8
+ import subprocess
9
+ from pathlib import Path
10
+
11
+
12
+ def run_cmd(cmd: str) -> tuple[bool, str]:
13
+ """Execute command and return success, output"""
14
+ try:
15
+ result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=30)
16
+ return result.returncode == 0, result.stdout + result.stderr
17
+ except Exception as e:
18
+ return False, f"Error: {e}"
19
+
20
+
21
+ def main():
22
+ print("🔥 HASHIRU 6.1 - APPLYING ALL FIXES")
23
+ print("=" * 50)
24
+
25
+ fixes_applied = 0
26
+
27
+ # 1. Test current syntax
28
+ print("\n1️⃣ Testing current syntax...")
29
+ success, output = run_cmd("python -c \"import main_agent; print('✅ Import successful')\"")
30
+ if not success:
31
+ print(f"⚠️ Current syntax issues detected:\n{output}")
32
+ else:
33
+ print("✅ Current syntax is clean")
34
+
35
+ # 2. Backup current main_agent.py
36
+ print("\n2️⃣ Creating backup...")
37
+ main_file = Path("main_agent.py")
38
+ if main_file.exists():
39
+ backup_file = Path(f"main_agent_backup_{int(time.time())}.py")
40
+ backup_file.write_text(main_file.read_text())
41
+ print(f"💾 Backup created: {backup_file}")
42
+ fixes_applied += 1
43
+
44
+ # 3. Apply fixes to main_agent.py
45
+ print("\n3️⃣ Applying main_agent.py fixes...")
46
+ current_content = main_file.read_text()
47
+
48
+ fixes = [
49
+ # Fix duplicate Optional import
50
+ ("from typing import Dict, List, Any, Optional, Optional",
51
+ "from typing import Dict, List, Any, Optional"),
52
+
53
+ # Fix HTTP client concatenation bug
54
+ ("self.http: Optional[httpx.AsyncClient] = httpx.AsyncClient()# Engine de auto-modificação (opcional)",
55
+ "self.http: Optional[httpx.AsyncClient] = httpx.AsyncClient()\n \n # Engine de auto-modificação (opcional)"),
56
+
57
+ # Fix regex pattern (raw string)
58
+ ('pattern = re.compile(r"(?ms)^\\s*(\\\/[a-z][\\w:-]*(?:[^\\n<]*?))\\s*(?:<<<(.*?)>>>|)\\s*$")',
59
+ 'pattern = re.compile(r"(?ms)^\\s*(\\/[a-z][\\w:-]*(?:[^\\n<]*?))\\s*(?:<<<(.*?)>>>|)\\s*$")'),
60
+ ]
61
+
62
+ for old, new in fixes:
63
+ if old in current_content:
64
+ current_content = current_content.replace(old, new)
65
+ print(f" ✅ Applied fix: {old[:50]}...")
66
+ fixes_applied += 1
67
+
68
+ # Write fixed content
69
+ main_file.write_text(current_content)
70
+
71
+ # 4. Test fixed syntax
72
+ print("\n4️⃣ Testing fixed syntax...")
73
+ success, output = run_cmd("python -c \"import main_agent; print('✅ Fixed import successful')\"")
74
+ if success:
75
+ print("✅ All syntax issues resolved!")
76
+ fixes_applied += 1
77
+ else:
78
+ print(f"❌ Still has issues:\n{output}")
79
+
80
+ # 5. Test Chainlit startup
81
+ print("\n5️⃣ Testing Chainlit startup (5 seconds)...")
82
+ success, output = run_cmd("timeout 5 chainlit run main_agent.py --port 8081 --host 127.0.0.1")
83
+ if "Your app is available" in output:
84
+ print("✅ Chainlit starts successfully!")
85
+ fixes_applied += 1
86
+ else:
87
+ print(f"⚠️ Chainlit startup issues:\n{output[:200]}...")
88
+
89
+ # 6. Apply security policies if fs.py exists
90
+ fs_file = Path("tools/fs.py")
91
+ if fs_file.exists():
92
+ print("\n6️⃣ Checking filesystem security...")
93
+ content = fs_file.read_text()
94
+ if "is_write_path_allowed" not in content:
95
+ print("⚠️ Security policies not integrated in tools/fs.py")
96
+ print(" → Need to integrate security policies manually")
97
+ else:
98
+ print("✅ Security policies already integrated")
99
+ fixes_applied += 1
100
+
101
+ # 7. Create artifacts directory
102
+ print("\n7️⃣ Ensuring artifacts directory...")
103
+ artifacts_dir = Path("artifacts")
104
+ artifacts_dir.mkdir(exist_ok=True)
105
+ print(f"✅ Artifacts directory ready: {artifacts_dir}")
106
+ fixes_applied += 1
107
+
108
+ # Summary
109
+ print("\n" + "=" * 50)
110
+ print(f"🎯 FIXES APPLIED: {fixes_applied}")
111
+ print("✅ Ready to test with commands:")
112
+ print(" /self:status")
113
+ print(" /self:analyze main_agent.py")
114
+ print(" /write tools/test.txt <<<Hello>>")
115
+ print("=" * 50)
116
+
117
+ return fixes_applied
118
+
119
+
120
+ if __name__ == "__main__":
121
+ import time
122
+ main()
automation_integration.py ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ HASHIRU 6.1 - INTEGRAÇÃO DE AUTOMAÇÃO
4
+ Adicione este código ao seu tools/__init__.py ou main_agent.py
5
+ """
6
+
7
+ from tools.automation_master import AUTOMATION_COMMANDS
8
+
9
+ # Integrar comandos de automação ao sistema principal
10
+ def register_automation_commands():
11
+ """Registrar todos os comandos de automação"""
12
+ return AUTOMATION_COMMANDS
13
+
14
+ # Exemplo de uso no main_agent.py:
15
+ """
16
+ from tools.automation_master import get_automation_master
17
+
18
+ # No seu handler de comandos, adicione:
19
+ if command.startswith("/auto_"):
20
+ automation_master = get_automation_master()
21
+
22
+ if command == "/auto_search":
23
+ result = automation_master.search_and_analyze(args)
24
+ elif command == "/auto_browse":
25
+ result = automation_master.navigate_to(args)
26
+ elif command == "/auto_research":
27
+ result = automation_master.auto_research_and_save(args)
28
+ # ... etc
29
+
30
+ return result
31
+ """
autonomous_config.py ADDED
@@ -0,0 +1,287 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ HASHIRU 6.1 - Clean Configuration
3
+ Modern, type-safe, validated configuration following Python best practices
4
+ """
5
+ import os
6
+ from pathlib import Path
7
+ from dataclasses import dataclass, field
8
+ from typing import List, Dict, Optional, Union
9
+
10
+
11
+ @dataclass
12
+ class OllamaConfig:
13
+ """Ollama/LLM Configuration"""
14
+ base_url: str = "http://127.0.0.1:11434"
15
+ timeout: float = 180.0
16
+
17
+ # Models with fallbacks
18
+ reasoning_model: str = "deepseek-r1:8b"
19
+ reasoning_fallbacks: List[str] = field(default_factory=lambda: ["llama3.1:8b", "qwen2.5:14b-instruct"])
20
+
21
+ code_model: str = "deepseek-coder:6.7b"
22
+ code_fallbacks: List[str] = field(default_factory=lambda: ["deepseek-coder:33b", "llama3.1:8b"])
23
+
24
+ conversation_model: str = "llama3.1:8b"
25
+ conversation_fallbacks: List[str] = field(default_factory=lambda: ["mistral:7b-instruct"])
26
+
27
+ tools_model: str = "llama3-groq-tool-use:8b"
28
+ tools_fallbacks: List[str] = field(default_factory=lambda: ["llama3.1:8b"])
29
+
30
+ @classmethod
31
+ def from_env(cls) -> 'OllamaConfig':
32
+ """Create config from environment variables"""
33
+ return cls(
34
+ base_url=os.getenv("OLLAMA_BASE_URL", cls.base_url),
35
+ timeout=float(os.getenv("OLLAMA_TIMEOUT", cls.timeout))
36
+ )
37
+
38
+
39
+ @dataclass
40
+ class SecurityConfig:
41
+ """Security and file access policies"""
42
+ # Free zone - total freedom
43
+ free_project_path: Path = Path(r"C:\meu_projeto_livre")
44
+
45
+ # Always allowed paths
46
+ allowed_paths: List[str] = field(default_factory=lambda: [
47
+ ".", # Current project
48
+ "tools", "utils", "scripts", "artifacts",
49
+ r"C:\meu_projeto_livre", # Free zone
50
+ r"C:\Users\Public", # Public folder
51
+ r"C:\temp", r"C:\tmp", # Temp folders
52
+ ])
53
+
54
+ # Always blocked paths
55
+ blocked_paths: List[str] = field(default_factory=lambda: [
56
+ r"C:\Windows\System32",
57
+ r"C:\Program Files",
58
+ ".git", "__pycache__", "venv", ".venv"
59
+ ])
60
+
61
+ # Dangerous file extensions
62
+ blocked_extensions: List[str] = field(default_factory=lambda: [
63
+ ".sys", ".dll" # Only truly dangerous ones
64
+ ])
65
+
66
+ def is_write_allowed(self, target_path: Union[str, Path]) -> bool:
67
+ """Check if writing to path is allowed"""
68
+ try:
69
+ resolved = Path(target_path).resolve()
70
+ path_str = str(resolved)
71
+
72
+ # Check blocked extensions
73
+ if resolved.suffix.lower() in self.blocked_extensions:
74
+ return False
75
+
76
+ # Check if in allowed paths
77
+ for allowed in self.allowed_paths:
78
+ if path_str.startswith(str(Path(allowed).resolve())):
79
+ return True
80
+
81
+ # Check if in blocked paths
82
+ for blocked in self.blocked_paths:
83
+ if path_str.startswith(blocked):
84
+ return False
85
+
86
+ # Check for user home directory (generally safe)
87
+ if path_str.startswith(str(Path.home())):
88
+ return True
89
+
90
+ return False
91
+
92
+ except Exception:
93
+ return False
94
+
95
+
96
+ @dataclass
97
+ class WebConfig:
98
+ """Web and internet access configuration"""
99
+ enabled: bool = True
100
+ max_search_results: int = 10
101
+ default_timeout: float = 30.0
102
+ user_agent: str = "HASHIRU-6.1-Agent"
103
+
104
+ # Search engines (for future implementation)
105
+ search_engines: List[str] = field(default_factory=lambda: [
106
+ "duckduckgo", "google", "bing"
107
+ ])
108
+
109
+
110
+ @dataclass
111
+ class SystemConfig:
112
+ """System-level configuration"""
113
+ project_root: Path = field(default_factory=lambda: Path(__file__).parent)
114
+
115
+ # Directory structure
116
+ tools_dir: Path = field(default_factory=lambda: Path("tools"))
117
+ utils_dir: Path = field(default_factory=lambda: Path("utils"))
118
+ artifacts_dir: Path = field(default_factory=lambda: Path("artifacts"))
119
+ backups_dir: Path = field(default_factory=lambda: Path("backups"))
120
+
121
+ # Runtime settings
122
+ encoding: str = "utf-8"
123
+ chainlit_port: int = 8080
124
+ max_commands_per_execution: int = 20
125
+
126
+ def ensure_directories(self) -> None:
127
+ """Create necessary directories"""
128
+ for dir_path in [self.artifacts_dir, self.backups_dir]:
129
+ dir_path.mkdir(exist_ok=True)
130
+
131
+ @classmethod
132
+ def from_env(cls) -> 'SystemConfig':
133
+ """Create system config from environment"""
134
+ return cls(
135
+ chainlit_port=int(os.getenv("CHAINLIT_PORT", cls.chainlit_port))
136
+ )
137
+
138
+
139
+ @dataclass
140
+ class EngineConfig:
141
+ """Self-modification engine configuration"""
142
+ enabled: bool = True
143
+ auto_backup: bool = True
144
+ max_backups_per_file: int = 10
145
+
146
+ # File patterns that can be modified
147
+ modifiable_patterns: List[str] = field(default_factory=lambda: [
148
+ "*.py", "*.json", "*.txt", "*.md"
149
+ ])
150
+
151
+
152
+ @dataclass
153
+ class Config:
154
+ """Main configuration class - Clean and typed"""
155
+
156
+ # Sub-configurations
157
+ ollama: OllamaConfig = field(default_factory=OllamaConfig)
158
+ security: SecurityConfig = field(default_factory=SecurityConfig)
159
+ web: WebConfig = field(default_factory=WebConfig)
160
+ system: SystemConfig = field(default_factory=SystemConfig)
161
+ engine: EngineConfig = field(default_factory=EngineConfig)
162
+
163
+ # Simple flags
164
+ autonomous_mode: bool = True
165
+ debug_mode: bool = False
166
+
167
+ # Messages
168
+ startup_banner: str = "🚀 HASHIRU 6.1 - Agente Autônomo Inteligente"
169
+ processing_message: str = "🧠 Processando com IA..."
170
+ executing_message: str = "⚡ Executando automaticamente..."
171
+
172
+ @classmethod
173
+ def load(cls) -> 'Config':
174
+ """Load configuration with environment overrides"""
175
+ config = cls()
176
+
177
+ # Load from environment
178
+ config.ollama = OllamaConfig.from_env()
179
+ config.system = SystemConfig.from_env()
180
+
181
+ # Set debug mode from environment
182
+ config.debug_mode = os.getenv("DEBUG", "false").lower() == "true"
183
+
184
+ # Validate and setup
185
+ config.validate()
186
+ config.setup()
187
+
188
+ return config
189
+
190
+ def validate(self) -> None:
191
+ """Validate configuration - fail fast if invalid"""
192
+ # Ensure required paths exist or can be created
193
+ try:
194
+ self.security.free_project_path.mkdir(parents=True, exist_ok=True)
195
+ except Exception as e:
196
+ raise ValueError(f"Cannot create free project path: {e}")
197
+
198
+ # Validate models are strings
199
+ if not isinstance(self.ollama.reasoning_model, str):
200
+ raise ValueError("Models must be strings")
201
+
202
+ # Validate ports
203
+ if not (1024 <= self.system.chainlit_port <= 65535):
204
+ raise ValueError("Invalid port number")
205
+
206
+ def setup(self) -> None:
207
+ """Setup configuration - create directories, etc."""
208
+ self.system.ensure_directories()
209
+
210
+ # Create free project structure
211
+ free_path = self.security.free_project_path
212
+ for subdir in ["downloads", "research", "experiments", "backups"]:
213
+ (free_path / subdir).mkdir(exist_ok=True)
214
+
215
+ def get_model(self, model_type: str) -> str:
216
+ """Get primary model for type"""
217
+ model_map = {
218
+ "reasoning": self.ollama.reasoning_model,
219
+ "code": self.ollama.code_model,
220
+ "code_specialist": self.ollama.code_model,
221
+ "code_master": self.ollama.code_model,
222
+ "conversation": self.ollama.conversation_model,
223
+ "tools": self.ollama.tools_model,
224
+ "general": self.ollama.conversation_model,
225
+ }
226
+ return model_map.get(model_type, self.ollama.conversation_model)
227
+
228
+ def get_fallback_models(self, model_type: str) -> List[str]:
229
+ """Get fallback models for type"""
230
+ fallback_map = {
231
+ "reasoning": self.ollama.reasoning_fallbacks,
232
+ "code": self.ollama.code_fallbacks,
233
+ "code_specialist": self.ollama.code_fallbacks,
234
+ "code_master": self.ollama.code_fallbacks,
235
+ "conversation": self.ollama.conversation_fallbacks,
236
+ "tools": self.ollama.tools_fallbacks,
237
+ "general": self.ollama.conversation_fallbacks,
238
+ }
239
+ return fallback_map.get(model_type, self.ollama.conversation_fallbacks)
240
+
241
+
242
+ # Global configuration instance
243
+ config = Config.load()
244
+
245
+ # Legacy compatibility functions (for existing code)
246
+ def get_ai_model(model_type: str) -> str:
247
+ """Legacy: Get AI model"""
248
+ return config.get_model(model_type)
249
+
250
+ def get_fallback_models(model_type: str) -> List[str]:
251
+ """Legacy: Get fallback models"""
252
+ return config.get_fallback_models(model_type)
253
+
254
+ def is_write_path_allowed(target_path: str) -> bool:
255
+ """Legacy: Check if write is allowed"""
256
+ return config.security.is_write_allowed(target_path)
257
+
258
+ def is_command_auto_allowed(command: str) -> bool:
259
+ """Legacy: Check if command is auto-allowed"""
260
+ return config.autonomous_mode
261
+
262
+ def is_dangerous_command_allowed(command: str) -> bool:
263
+ """Legacy: Check if dangerous command is allowed"""
264
+ return config.autonomous_mode
265
+
266
+ # Legacy constants (for existing imports)
267
+ OLLAMA_URL = config.ollama.base_url
268
+ AUTONOMOUS_MODE = config.autonomous_mode
269
+ SELF_MODIFICATION_ENABLED = config.engine.enabled
270
+ STARTUP_BANNER = config.startup_banner
271
+ PROCESSING_MESSAGE = config.processing_message
272
+ EXECUTING_MESSAGE = config.executing_message
273
+
274
+ # Export for easy imports
275
+ __all__ = [
276
+ "Config", "config",
277
+ "get_ai_model", "get_fallback_models",
278
+ "is_write_path_allowed", "is_command_auto_allowed", "is_dangerous_command_allowed",
279
+ "OLLAMA_URL", "AUTONOMOUS_MODE", "SELF_MODIFICATION_ENABLED",
280
+ "STARTUP_BANNER", "PROCESSING_MESSAGE", "EXECUTING_MESSAGE"
281
+ ]
282
+
283
+ # Initialize on import
284
+ if config.debug_mode:
285
+ print("🔧 HASHIRU Config loaded in DEBUG mode")
286
+ print(f"📁 Free path: {config.security.free_project_path}")
287
+ print(f"🤖 Reasoning model: {config.ollama.reasoning_model}")
autonomous_config_optimized.py ADDED
@@ -0,0 +1,757 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ HASHIRU 6.1 - OPTIMIZED CONFIGURATION 2025
4
+ Hardware-Specific AI Model Configuration based on 2025 Research
5
+
6
+ Optimizations:
7
+ - RTX 3060 (12GB) + RTX 2060 (6GB) specific model selection
8
+ - Performance vs Quality balanced configurations
9
+ - Type-safe dataclasses with runtime validation
10
+ - Environment variable override support
11
+ - Immutable configuration with validation
12
+ - Memory-efficient model allocation
13
+
14
+ Research Sources:
15
+ - GPU memory optimization studies (NVIDIA 2025)
16
+ - Dual GPU LLM inference benchmarks
17
+ - Python dataclass best practices
18
+ - Production-ready configuration management
19
+ """
20
+
21
+ import os
22
+ import logging
23
+ from dataclasses import dataclass, field
24
+ from pathlib import Path
25
+ from typing import List, Dict, Optional, Union, Any, Tuple
26
+ from enum import Enum
27
+
28
+ # Configure logging
29
+ logger = logging.getLogger("hashiru.config")
30
+
31
+ # ============================================================================
32
+ # ENUMS FOR TYPE SAFETY
33
+ # ============================================================================
34
+
35
+ class ModelSize(Enum):
36
+ """Model size categories optimized for dual GPU setup"""
37
+ SMALL_3B = "3B" # RTX 2060 compatible
38
+ MEDIUM_7B = "7B" # RTX 3060 optimized
39
+ LARGE_8B = "8B" # RTX 3060 + quantization
40
+ XLARGE_14B = "14B" # RTX 3060 + some RTX 2060
41
+ PREMIUM_33B = "33B" # Requires both GPUs (slow)
42
+
43
+ class Precision(Enum):
44
+ """Precision formats for memory optimization"""
45
+ FP16 = "fp16" # Standard precision
46
+ INT8 = "int8" # 2x memory reduction
47
+ INT4 = "int4" # 4x memory reduction
48
+ FP8 = "fp8" # Emerging standard
49
+
50
+ class ModelType(Enum):
51
+ """Model usage types for specialized selection"""
52
+ REASONING = "reasoning"
53
+ CODE = "code"
54
+ CONVERSATION = "conversation"
55
+ TOOLS = "tools"
56
+ RESEARCH = "research"
57
+ GENERAL = "general"
58
+
59
+ # ============================================================================
60
+ # HARDWARE-OPTIMIZED MODEL CONFIGURATIONS
61
+ # ============================================================================
62
+
63
+ @dataclass(frozen=True)
64
+ class ModelConfig:
65
+ """Single model configuration with hardware specifications"""
66
+ name: str
67
+ size: ModelSize
68
+ vram_requirement_gb: float
69
+ recommended_precision: Precision
70
+ performance_tier: int # 1=best, 5=acceptable
71
+ tokens_per_second_estimate: int
72
+ description: str
73
+
74
+ def is_compatible_with_vram(self, available_vram_gb: float) -> bool:
75
+ """Check if model fits in available VRAM"""
76
+ return self.vram_requirement_gb <= available_vram_gb
77
+
78
+ @dataclass(frozen=True)
79
+ class HardwareProfile:
80
+ """Hardware specification for model selection"""
81
+ gpu_primary: str
82
+ gpu_secondary: Optional[str]
83
+ vram_primary_gb: float
84
+ vram_secondary_gb: float
85
+ total_vram_gb: float
86
+
87
+ @property
88
+ def is_dual_gpu(self) -> bool:
89
+ return self.gpu_secondary is not None
90
+
91
+ # ============================================================================
92
+ # OPTIMIZED MODEL REGISTRY (2025 RESEARCH-BASED)
93
+ # ============================================================================
94
+
95
+ class OptimizedModelRegistry:
96
+ """
97
+ Hardware-optimized model registry based on 2025 performance research
98
+ Specifically optimized for RTX 3060 (12GB) + RTX 2060 (6GB) setup
99
+ """
100
+
101
+ # Hardware profile for the user's setup
102
+ DUAL_RTX_PROFILE = HardwareProfile(
103
+ gpu_primary="RTX 3060",
104
+ gpu_secondary="RTX 2060",
105
+ vram_primary_gb=12.0,
106
+ vram_secondary_gb=6.0,
107
+ total_vram_gb=18.0
108
+ )
109
+
110
+ # Optimized model configurations based on research
111
+ MODELS = {
112
+ # REASONING MODELS (Best for analysis, logic, planning)
113
+ "reasoning_premium": ModelConfig(
114
+ name="qwen2.5:14b-instruct",
115
+ size=ModelSize.XLARGE_14B,
116
+ vram_requirement_gb=9.0, # Fits perfectly in RTX 3060
117
+ recommended_precision=Precision.FP16,
118
+ performance_tier=1, # Best reasoning quality
119
+ tokens_per_second_estimate=25,
120
+ description="Premium reasoning model optimized for RTX 3060"
121
+ ),
122
+ "reasoning_balanced": ModelConfig(
123
+ name="deepseek-r1:8b",
124
+ size=ModelSize.LARGE_8B,
125
+ vram_requirement_gb=5.2,
126
+ recommended_precision=Precision.FP16,
127
+ performance_tier=2,
128
+ tokens_per_second_estimate=35,
129
+ description="Balanced reasoning with good speed"
130
+ ),
131
+ "reasoning_fallback": ModelConfig(
132
+ name="llama3.1:8b",
133
+ size=ModelSize.LARGE_8B,
134
+ vram_requirement_gb=4.9,
135
+ recommended_precision=Precision.FP16,
136
+ performance_tier=3,
137
+ tokens_per_second_estimate=45,
138
+ description="Fast reasoning fallback"
139
+ ),
140
+
141
+ # CODE MODELS (Optimized for programming)
142
+ "code_optimal": ModelConfig(
143
+ name="deepseek-coder:6.7b",
144
+ size=ModelSize.MEDIUM_7B,
145
+ vram_requirement_gb=3.8, # Very efficient for RTX 3060
146
+ recommended_precision=Precision.FP16,
147
+ performance_tier=1, # Best code quality for hardware
148
+ tokens_per_second_estimate=50,
149
+ description="Optimal code model for RTX 3060 - best speed/quality"
150
+ ),
151
+ "code_premium": ModelConfig(
152
+ name="deepseek-coder:33b",
153
+ size=ModelSize.PREMIUM_33B,
154
+ vram_requirement_gb=18.0, # Requires both GPUs
155
+ recommended_precision=Precision.INT4, # Quantized to fit
156
+ performance_tier=5, # Slow but highest quality
157
+ tokens_per_second_estimate=8,
158
+ description="Premium code model (slow on this hardware)"
159
+ ),
160
+
161
+ # CONVERSATION MODELS (Optimized for chat)
162
+ "conversation_fast": ModelConfig(
163
+ name="llama3.1:8b",
164
+ size=ModelSize.LARGE_8B,
165
+ vram_requirement_gb=4.9,
166
+ recommended_precision=Precision.FP16,
167
+ performance_tier=1, # Best for conversation speed
168
+ tokens_per_second_estimate=70,
169
+ description="Fast conversation model - 70+ tokens/s"
170
+ ),
171
+ "conversation_premium": ModelConfig(
172
+ name="qwen2.5:14b-instruct",
173
+ size=ModelSize.XLARGE_14B,
174
+ vram_requirement_gb=9.0,
175
+ recommended_precision=Precision.FP16,
176
+ performance_tier=2, # Higher quality, slower
177
+ tokens_per_second_estimate=25,
178
+ description="Premium conversation quality"
179
+ ),
180
+
181
+ # TOOLS MODELS (Specialized for automation)
182
+ "tools_specialized": ModelConfig(
183
+ name="llama3-groq-tool-use:8b",
184
+ size=ModelSize.LARGE_8B,
185
+ vram_requirement_gb=4.7,
186
+ recommended_precision=Precision.FP16,
187
+ performance_tier=1, # Best for tool usage
188
+ tokens_per_second_estimate=40,
189
+ description="Specialized for automation and tools"
190
+ ),
191
+
192
+ # RESEARCH MODELS (Multi-source analysis)
193
+ "research_balanced": ModelConfig(
194
+ name="qwen2.5:14b-instruct",
195
+ size=ModelSize.XLARGE_14B,
196
+ vram_requirement_gb=9.0,
197
+ recommended_precision=Precision.FP16,
198
+ performance_tier=1,
199
+ tokens_per_second_estimate=25,
200
+ description="Excellent for research and analysis"
201
+ ),
202
+
203
+ # LIGHTWEIGHT MODELS (RTX 2060 compatible)
204
+ "lightweight_3b": ModelConfig(
205
+ name="llama3.2:3b",
206
+ size=ModelSize.SMALL_3B,
207
+ vram_requirement_gb=2.5,
208
+ recommended_precision=Precision.FP16,
209
+ performance_tier=4, # Lower quality but very fast
210
+ tokens_per_second_estimate=90,
211
+ description="Ultra-fast 3B model for RTX 2060"
212
+ )
213
+ }
214
+
215
+ @classmethod
216
+ def get_optimal_model(cls, model_type: ModelType, hardware: HardwareProfile) -> str:
217
+ """Get optimal model name for given type and hardware"""
218
+
219
+ # Hardware-optimized mapping based on 2025 research
220
+ optimal_mapping = {
221
+ ModelType.REASONING: "reasoning_premium", # qwen2.5:14b (9GB)
222
+ ModelType.CODE: "code_optimal", # deepseek-coder:6.7b (3.8GB)
223
+ ModelType.CONVERSATION: "conversation_fast", # llama3.1:8b (4.9GB)
224
+ ModelType.TOOLS: "tools_specialized", # llama3-groq-tool-use:8b (4.7GB)
225
+ ModelType.RESEARCH: "research_balanced", # qwen2.5:14b (9GB)
226
+ ModelType.GENERAL: "conversation_fast" # llama3.1:8b (4.9GB)
227
+ }
228
+
229
+ model_key = optimal_mapping.get(model_type, "conversation_fast")
230
+ model_config = cls.MODELS[model_key]
231
+
232
+ # Fallback to smaller model if doesn't fit in primary GPU
233
+ if not model_config.is_compatible_with_vram(hardware.vram_primary_gb):
234
+ fallback_mapping = {
235
+ ModelType.REASONING: "reasoning_fallback", # llama3.1:8b
236
+ ModelType.CODE: "code_optimal", # Already optimal
237
+ ModelType.CONVERSATION: "lightweight_3b", # llama3.2:3b
238
+ ModelType.TOOLS: "conversation_fast", # llama3.1:8b
239
+ ModelType.RESEARCH: "reasoning_fallback", # llama3.1:8b
240
+ ModelType.GENERAL: "lightweight_3b" # llama3.2:3b
241
+ }
242
+ model_key = fallback_mapping.get(model_type, "lightweight_3b")
243
+ model_config = cls.MODELS[model_key]
244
+
245
+ return model_config.name
246
+
247
+ @classmethod
248
+ def get_fallback_models(cls, model_type: ModelType) -> List[str]:
249
+ """Get ordered list of fallback models for type"""
250
+
251
+ fallback_chains = {
252
+ ModelType.REASONING: [
253
+ "reasoning_premium", # qwen2.5:14b
254
+ "reasoning_balanced", # deepseek-r1:8b
255
+ "reasoning_fallback", # llama3.1:8b
256
+ "lightweight_3b" # llama3.2:3b
257
+ ],
258
+ ModelType.CODE: [
259
+ "code_optimal", # deepseek-coder:6.7b
260
+ "reasoning_fallback", # llama3.1:8b (general purpose)
261
+ "lightweight_3b" # llama3.2:3b
262
+ ],
263
+ ModelType.CONVERSATION: [
264
+ "conversation_fast", # llama3.1:8b
265
+ "conversation_premium", # qwen2.5:14b
266
+ "lightweight_3b" # llama3.2:3b
267
+ ],
268
+ ModelType.TOOLS: [
269
+ "tools_specialized", # llama3-groq-tool-use:8b
270
+ "conversation_fast", # llama3.1:8b
271
+ "lightweight_3b" # llama3.2:3b
272
+ ],
273
+ ModelType.RESEARCH: [
274
+ "research_balanced", # qwen2.5:14b
275
+ "reasoning_fallback", # llama3.1:8b
276
+ "lightweight_3b" # llama3.2:3b
277
+ ]
278
+ }
279
+
280
+ fallback_keys = fallback_chains.get(model_type, ["conversation_fast", "lightweight_3b"])
281
+ return [cls.MODELS[key].name for key in fallback_keys]
282
+
283
+ # ============================================================================
284
+ # CONFIGURATION DATACLASSES
285
+ # ============================================================================
286
+
287
+ @dataclass(frozen=True)
288
+ class OllamaConfig:
289
+ """
290
+ Ollama/LLM Configuration optimized for dual GPU setup
291
+ Based on 2025 performance research and hardware capabilities
292
+ """
293
+ base_url: str = "http://127.0.0.1:11434"
294
+ timeout: float = 180.0
295
+
296
+ # Hardware profile
297
+ hardware: HardwareProfile = field(default_factory=lambda: OptimizedModelRegistry.DUAL_RTX_PROFILE)
298
+
299
+ # Optimized model assignments (hardware-specific)
300
+ reasoning_model: str = field(
301
+ default_factory=lambda: OptimizedModelRegistry.get_optimal_model(
302
+ ModelType.REASONING, OptimizedModelRegistry.DUAL_RTX_PROFILE
303
+ )
304
+ )
305
+ code_model: str = field(
306
+ default_factory=lambda: OptimizedModelRegistry.get_optimal_model(
307
+ ModelType.CODE, OptimizedModelRegistry.DUAL_RTX_PROFILE
308
+ )
309
+ )
310
+ conversation_model: str = field(
311
+ default_factory=lambda: OptimizedModelRegistry.get_optimal_model(
312
+ ModelType.CONVERSATION, OptimizedModelRegistry.DUAL_RTX_PROFILE
313
+ )
314
+ )
315
+ tools_model: str = field(
316
+ default_factory=lambda: OptimizedModelRegistry.get_optimal_model(
317
+ ModelType.TOOLS, OptimizedModelRegistry.DUAL_RTX_PROFILE
318
+ )
319
+ )
320
+ research_model: str = field(
321
+ default_factory=lambda: OptimizedModelRegistry.get_optimal_model(
322
+ ModelType.RESEARCH, OptimizedModelRegistry.DUAL_RTX_PROFILE
323
+ )
324
+ )
325
+
326
+ # Fallback chains (hardware-optimized)
327
+ reasoning_fallbacks: List[str] = field(
328
+ default_factory=lambda: OptimizedModelRegistry.get_fallback_models(ModelType.REASONING)
329
+ )
330
+ code_fallbacks: List[str] = field(
331
+ default_factory=lambda: OptimizedModelRegistry.get_fallback_models(ModelType.CODE)
332
+ )
333
+ conversation_fallbacks: List[str] = field(
334
+ default_factory=lambda: OptimizedModelRegistry.get_fallback_models(ModelType.CONVERSATION)
335
+ )
336
+ tools_fallbacks: List[str] = field(
337
+ default_factory=lambda: OptimizedModelRegistry.get_fallback_models(ModelType.TOOLS)
338
+ )
339
+ research_fallbacks: List[str] = field(
340
+ default_factory=lambda: OptimizedModelRegistry.get_fallback_models(ModelType.RESEARCH)
341
+ )
342
+
343
+ def __post_init__(self):
344
+ """Runtime validation of configuration"""
345
+ if not self.base_url.startswith(('http://', 'https://')):
346
+ raise ValueError(f"Invalid Ollama URL: {self.base_url}")
347
+
348
+ if self.timeout <= 0:
349
+ raise ValueError(f"Timeout must be positive: {self.timeout}")
350
+
351
+ # Log optimized configuration
352
+ logger.info(f"🎯 Ollama Config Optimized for {self.hardware.gpu_primary} + {self.hardware.gpu_secondary}")
353
+ logger.info(f"💻 Reasoning: {self.reasoning_model}")
354
+ logger.info(f"🔧 Code: {self.code_model}")
355
+ logger.info(f"💬 Conversation: {self.conversation_model}")
356
+ logger.info(f"🛠️ Tools: {self.tools_model}")
357
+ logger.info(f"🔬 Research: {self.research_model}")
358
+
359
+ @classmethod
360
+ def from_env(cls) -> 'OllamaConfig':
361
+ """Create config from environment variables with overrides"""
362
+ base_url = os.getenv("OLLAMA_BASE_URL", "http://127.0.0.1:11434")
363
+ timeout = float(os.getenv("OLLAMA_TIMEOUT", "180.0"))
364
+
365
+ # Environment overrides for specific models
366
+ reasoning_override = os.getenv("HASHIRU_REASONING_MODEL")
367
+ code_override = os.getenv("HASHIRU_CODE_MODEL")
368
+ conversation_override = os.getenv("HASHIRU_CONVERSATION_MODEL")
369
+ tools_override = os.getenv("HASHIRU_TOOLS_MODEL")
370
+
371
+ config = cls(base_url=base_url, timeout=timeout)
372
+
373
+ # Apply environment overrides if provided
374
+ if reasoning_override:
375
+ object.__setattr__(config, 'reasoning_model', reasoning_override)
376
+ if code_override:
377
+ object.__setattr__(config, 'code_model', code_override)
378
+ if conversation_override:
379
+ object.__setattr__(config, 'conversation_model', conversation_override)
380
+ if tools_override:
381
+ object.__setattr__(config, 'tools_model', tools_override)
382
+
383
+ return config
384
+
385
+ @dataclass(frozen=True)
386
+ class SecurityConfig:
387
+ """Enhanced security configuration with type safety"""
388
+
389
+ # Free development zone
390
+ free_project_path: Path = field(default_factory=lambda: Path("C:/hashiru_workspace"))
391
+
392
+ # Allowed paths (immutable)
393
+ allowed_paths: Tuple[str, ...] = (
394
+ ".", # Current project
395
+ "tools", "utils", "scripts", "artifacts", "research", "screenshots", "logs",
396
+ "C:/hashiru_workspace", # Free development zone
397
+ "C:/Users/Public", # Public folder
398
+ "C:/temp", "C:/tmp", # Temp folders
399
+ )
400
+
401
+ # Blocked paths (security-critical)
402
+ blocked_paths: Tuple[str, ...] = (
403
+ "C:/Windows/System32",
404
+ "C:/Program Files",
405
+ "C:/Program Files (x86)",
406
+ ".git", "__pycache__", "venv", ".venv", "node_modules"
407
+ )
408
+
409
+ # Dangerous extensions
410
+ blocked_extensions: Tuple[str, ...] = (
411
+ ".exe", ".dll", ".sys", ".bat", ".cmd", ".scr", ".pif"
412
+ )
413
+
414
+ def __post_init__(self):
415
+ """Validate and setup security configuration"""
416
+ try:
417
+ self.free_project_path.mkdir(parents=True, exist_ok=True)
418
+ logger.info(f"🔒 Security: Free workspace at {self.free_project_path}")
419
+ except Exception as e:
420
+ logger.warning(f"⚠️ Could not create free workspace: {e}")
421
+
422
+ def is_write_allowed(self, target_path: Union[str, Path]) -> bool:
423
+ """Enhanced path validation with detailed logging"""
424
+ try:
425
+ resolved = Path(target_path).resolve()
426
+ path_str = str(resolved).replace("\\", "/") # Normalize separators
427
+
428
+ # Check blocked extensions
429
+ if resolved.suffix.lower() in self.blocked_extensions:
430
+ logger.warning(f"🚫 Blocked extension: {resolved.suffix}")
431
+ return False
432
+
433
+ # Check blocked paths (case-insensitive)
434
+ for blocked in self.blocked_paths:
435
+ if path_str.lower().startswith(blocked.lower()):
436
+ logger.warning(f"🚫 Blocked path: {blocked}")
437
+ return False
438
+
439
+ # Check allowed paths
440
+ for allowed in self.allowed_paths:
441
+ allowed_resolved = str(Path(allowed).resolve()).replace("\\", "/")
442
+ if path_str.startswith(allowed_resolved):
443
+ logger.debug(f"✅ Allowed path: {allowed}")
444
+ return True
445
+
446
+ # Check user home directory
447
+ home_path = str(Path.home()).replace("\\", "/")
448
+ if path_str.startswith(home_path):
449
+ logger.debug("✅ User home directory access")
450
+ return True
451
+
452
+ logger.warning(f"🚫 Path not in allowed list: {path_str}")
453
+ return False
454
+
455
+ except Exception as e:
456
+ logger.error(f"❌ Path validation error: {e}")
457
+ return False
458
+
459
+ @dataclass(frozen=True)
460
+ class PerformanceConfig:
461
+ """Performance optimization settings based on 2025 research"""
462
+
463
+ # Memory management
464
+ enable_gpu_memory_optimization: bool = True
465
+ max_concurrent_requests: int = 4 # Optimized for dual GPU
466
+ enable_quantization: bool = True
467
+ preferred_precision: Precision = Precision.FP16
468
+
469
+ # Inference optimization
470
+ enable_flash_attention: bool = True # 2025 standard
471
+ enable_kv_cache_optimization: bool = True
472
+ batch_size_optimization: bool = True
473
+
474
+ # Hardware-specific optimizations
475
+ enable_tensor_parallelism: bool = True # For dual GPU
476
+ enable_pipeline_parallelism: bool = False # Not needed for this setup
477
+
478
+ def __post_init__(self):
479
+ """Log performance configuration"""
480
+ logger.info(f"⚡ Performance: GPU Memory Optimization: {self.enable_gpu_memory_optimization}")
481
+ logger.info(f"⚡ Performance: Quantization: {self.enable_quantization}")
482
+ logger.info(f"⚡ Performance: Flash Attention: {self.enable_flash_attention}")
483
+ logger.info(f"⚡ Performance: Tensor Parallelism: {self.enable_tensor_parallelism}")
484
+
485
+ @dataclass(frozen=True)
486
+ class SystemConfig:
487
+ """System-level configuration with validation"""
488
+
489
+ project_root: Path = field(default_factory=lambda: Path(__file__).parent)
490
+
491
+ # Directory structure (immutable)
492
+ tools_dir: Path = field(default_factory=lambda: Path("tools"))
493
+ utils_dir: Path = field(default_factory=lambda: Path("utils"))
494
+ artifacts_dir: Path = field(default_factory=lambda: Path("artifacts"))
495
+ backups_dir: Path = field(default_factory=lambda: Path("backups"))
496
+ research_dir: Path = field(default_factory=lambda: Path("research"))
497
+ screenshots_dir: Path = field(default_factory=lambda: Path("screenshots"))
498
+ logs_dir: Path = field(default_factory=lambda: Path("logs"))
499
+
500
+ # Runtime settings
501
+ encoding: str = "utf-8"
502
+ chainlit_port: int = 8080
503
+ max_commands_per_execution: int = 20
504
+ debug_mode: bool = field(default_factory=lambda: os.getenv("DEBUG", "false").lower() == "true")
505
+
506
+ def __post_init__(self):
507
+ """Setup and validate directories"""
508
+ directories = [
509
+ self.artifacts_dir, self.backups_dir, self.research_dir,
510
+ self.screenshots_dir, self.logs_dir
511
+ ]
512
+
513
+ for directory in directories:
514
+ try:
515
+ directory.mkdir(exist_ok=True)
516
+ logger.debug(f"📁 Directory ready: {directory}")
517
+ except Exception as e:
518
+ logger.warning(f"⚠️ Could not create {directory}: {e}")
519
+
520
+ logger.info(f"🔧 System: Project root: {self.project_root}")
521
+ logger.info(f"🔧 System: Debug mode: {self.debug_mode}")
522
+
523
+ @dataclass(frozen=True)
524
+ class Config:
525
+ """
526
+ Main configuration class - Hardware-optimized for RTX 3060 + RTX 2060
527
+ Based on 2025 research and best practices
528
+ """
529
+
530
+ # Sub-configurations (immutable)
531
+ ollama: OllamaConfig = field(default_factory=OllamaConfig)
532
+ security: SecurityConfig = field(default_factory=SecurityConfig)
533
+ performance: PerformanceConfig = field(default_factory=PerformanceConfig)
534
+ system: SystemConfig = field(default_factory=SystemConfig)
535
+
536
+ # Feature flags
537
+ autonomous_mode: bool = True
538
+ self_modification_enabled: bool = True
539
+
540
+ # UI Messages (with proper encoding)
541
+ startup_banner: str = "🚀 HASHIRU 6.1 - Agente Autônomo Inteligente"
542
+ processing_message: str = "🧠 Processando com IA..."
543
+ executing_message: str = "⚡ Executando automaticamente..."
544
+
545
+ # Version and metadata
546
+ version: str = "6.1.2025"
547
+ build_date: str = field(default_factory=lambda: "2025-08-04")
548
+
549
+ def __post_init__(self):
550
+ """Post-initialization validation and setup"""
551
+
552
+ # Validate port
553
+ if not (1024 <= self.system.chainlit_port <= 65535):
554
+ raise ValueError(f"Invalid port: {self.system.chainlit_port}")
555
+
556
+ # Log configuration summary
557
+ logger.info(f"🚀 HASHIRU {self.version} Configuration Loaded")
558
+ logger.info(f"📊 Hardware: {self.ollama.hardware.gpu_primary} + {self.ollama.hardware.gpu_secondary}")
559
+ logger.info(f"💾 Total VRAM: {self.ollama.hardware.total_vram_gb}GB")
560
+ logger.info(f"🔧 Autonomous Mode: {self.autonomous_mode}")
561
+ logger.info(f"🔄 Self-Modification: {self.self_modification_enabled}")
562
+
563
+ # Log model assignments
564
+ logger.info("🤖 Model Assignments:")
565
+ logger.info(f" 🧠 Reasoning: {self.ollama.reasoning_model}")
566
+ logger.info(f" 💻 Code: {self.ollama.code_model}")
567
+ logger.info(f" 💬 Conversation: {self.ollama.conversation_model}")
568
+ logger.info(f" 🛠️ Tools: {self.ollama.tools_model}")
569
+ logger.info(f" 🔬 Research: {self.ollama.research_model}")
570
+
571
+ @classmethod
572
+ def load(cls) -> 'Config':
573
+ """Load configuration with environment overrides and validation"""
574
+ try:
575
+ # Load Ollama config with environment overrides
576
+ ollama_config = OllamaConfig.from_env()
577
+
578
+ # Override other settings from environment
579
+ autonomous_mode = os.getenv("HASHIRU_AUTONOMOUS", "true").lower() == "true"
580
+ self_modification = os.getenv("HASHIRU_SELF_MOD", "true").lower() == "true"
581
+
582
+ # Create configuration
583
+ config = cls(
584
+ ollama=ollama_config,
585
+ autonomous_mode=autonomous_mode,
586
+ self_modification_enabled=self_modification
587
+ )
588
+
589
+ logger.info("✅ Configuration loaded successfully")
590
+ return config
591
+
592
+ except Exception as e:
593
+ logger.error(f"❌ Configuration loading failed: {e}")
594
+ raise
595
+
596
+ def get_model(self, model_type: str) -> str:
597
+ """Get primary model for type with improved mapping"""
598
+
599
+ # Enhanced model type mapping
600
+ model_map = {
601
+ "reasoning": self.ollama.reasoning_model,
602
+ "code": self.ollama.code_model,
603
+ "code_specialist": self.ollama.code_model,
604
+ "code_master": self.ollama.code_model,
605
+ "programming": self.ollama.code_model,
606
+ "conversation": self.ollama.conversation_model,
607
+ "chat": self.ollama.conversation_model,
608
+ "tools": self.ollama.tools_model,
609
+ "automation": self.ollama.tools_model,
610
+ "research": self.ollama.research_model,
611
+ "analysis": self.ollama.research_model,
612
+ "general": self.ollama.conversation_model,
613
+ "default": self.ollama.conversation_model
614
+ }
615
+
616
+ model = model_map.get(model_type.lower(), self.ollama.conversation_model)
617
+ logger.debug(f"🎯 Model selection: {model_type} -> {model}")
618
+ return model
619
+
620
+ def get_fallback_models(self, model_type: str) -> List[str]:
621
+ """Get fallback models for type with enhanced mapping"""
622
+
623
+ fallback_map = {
624
+ "reasoning": self.ollama.reasoning_fallbacks,
625
+ "code": self.ollama.code_fallbacks,
626
+ "code_specialist": self.ollama.code_fallbacks,
627
+ "programming": self.ollama.code_fallbacks,
628
+ "conversation": self.ollama.conversation_fallbacks,
629
+ "chat": self.ollama.conversation_fallbacks,
630
+ "tools": self.ollama.tools_fallbacks,
631
+ "automation": self.ollama.tools_fallbacks,
632
+ "research": self.ollama.research_fallbacks,
633
+ "analysis": self.ollama.research_fallbacks,
634
+ "general": self.ollama.conversation_fallbacks,
635
+ }
636
+
637
+ fallbacks = fallback_map.get(model_type.lower(), self.ollama.conversation_fallbacks)
638
+ logger.debug(f"🔄 Fallback chain: {model_type} -> {fallbacks}")
639
+ return fallbacks
640
+
641
+ # ============================================================================
642
+ # GLOBAL CONFIGURATION INSTANCE
643
+ # ============================================================================
644
+
645
+ # Initialize configuration with error handling
646
+ try:
647
+ config = Config.load()
648
+ logger.info("🎉 HASHIRU Configuration initialized successfully")
649
+ except Exception as e:
650
+ logger.error(f"💥 Configuration initialization failed: {e}")
651
+ # Fallback to default configuration
652
+ config = Config()
653
+ logger.warning("⚠️ Using default configuration as fallback")
654
+
655
+ # ============================================================================
656
+ # LEGACY COMPATIBILITY FUNCTIONS
657
+ # ============================================================================
658
+
659
+ def get_ai_model(model_type: str) -> str:
660
+ """Legacy: Get AI model with enhanced logging"""
661
+ model = config.get_model(model_type)
662
+ logger.debug(f"🔍 Legacy get_ai_model: {model_type} -> {model}")
663
+ return model
664
+
665
+ def get_fallback_models(model_type: str) -> List[str]:
666
+ """Legacy: Get fallback models"""
667
+ return config.get_fallback_models(model_type)
668
+
669
+ def is_write_path_allowed(target_path: str) -> bool:
670
+ """Legacy: Check if write is allowed"""
671
+ return config.security.is_write_allowed(target_path)
672
+
673
+ def is_command_auto_allowed(command: str) -> bool:
674
+ """Legacy: Check if command is auto-allowed"""
675
+ allowed = config.autonomous_mode
676
+ logger.debug(f"🤖 Auto command check: {command} -> {allowed}")
677
+ return allowed
678
+
679
+ def is_dangerous_command_allowed(command: str) -> bool:
680
+ """Legacy: Check if dangerous command is allowed"""
681
+ allowed = config.autonomous_mode
682
+ logger.debug(f"⚠️ Dangerous command check: {command} -> {allowed}")
683
+ return allowed
684
+
685
+ # ============================================================================
686
+ # LEGACY CONSTANTS (for backward compatibility)
687
+ # ============================================================================
688
+
689
+ OLLAMA_URL = config.ollama.base_url
690
+ AUTONOMOUS_MODE = config.autonomous_mode
691
+ SELF_MODIFICATION_ENABLED = config.self_modification_enabled
692
+ STARTUP_BANNER = config.startup_banner
693
+ PROCESSING_MESSAGE = config.processing_message
694
+ EXECUTING_MESSAGE = config.executing_message
695
+
696
+ # Hardware information (new)
697
+ HARDWARE_PROFILE = config.ollama.hardware
698
+ PRIMARY_GPU = config.ollama.hardware.gpu_primary
699
+ SECONDARY_GPU = config.ollama.hardware.gpu_secondary
700
+ TOTAL_VRAM_GB = config.ollama.hardware.total_vram_gb
701
+
702
+ # Model information (new)
703
+ CURRENT_MODELS = {
704
+ "reasoning": config.ollama.reasoning_model,
705
+ "code": config.ollama.code_model,
706
+ "conversation": config.ollama.conversation_model,
707
+ "tools": config.ollama.tools_model,
708
+ "research": config.ollama.research_model
709
+ }
710
+
711
+ # ============================================================================
712
+ # EXPORTS
713
+ # ============================================================================
714
+
715
+ __all__ = [
716
+ # Main configuration
717
+ "Config", "config",
718
+
719
+ # Model registry and optimization
720
+ "OptimizedModelRegistry", "ModelConfig", "HardwareProfile",
721
+ "ModelSize", "Precision", "ModelType",
722
+
723
+ # Configuration classes
724
+ "OllamaConfig", "SecurityConfig", "PerformanceConfig", "SystemConfig",
725
+
726
+ # Legacy functions
727
+ "get_ai_model", "get_fallback_models",
728
+ "is_write_path_allowed", "is_command_auto_allowed", "is_dangerous_command_allowed",
729
+
730
+ # Legacy constants
731
+ "OLLAMA_URL", "AUTONOMOUS_MODE", "SELF_MODIFICATION_ENABLED",
732
+ "STARTUP_BANNER", "PROCESSING_MESSAGE", "EXECUTING_MESSAGE",
733
+
734
+ # Hardware constants (new)
735
+ "HARDWARE_PROFILE", "PRIMARY_GPU", "SECONDARY_GPU", "TOTAL_VRAM_GB",
736
+ "CURRENT_MODELS"
737
+ ]
738
+
739
+ # ============================================================================
740
+ # INITIALIZATION LOGGING
741
+ # ============================================================================
742
+
743
+ if config.system.debug_mode:
744
+ logger.info("🔧 HASHIRU Config loaded in DEBUG mode")
745
+ logger.info(f"📁 Free workspace: {config.security.free_project_path}")
746
+ logger.info(f"🎯 Optimized for: {PRIMARY_GPU} ({config.ollama.hardware.vram_primary_gb}GB) + {SECONDARY_GPU} ({config.ollama.hardware.vram_secondary_gb}GB)")
747
+ logger.info(f"🤖 Active models: {CURRENT_MODELS}")
748
+ logger.info(f"⚡ Performance optimizations: Flash Attention, KV Cache, Quantization")
749
+
750
+ # Performance recommendation logging
751
+ logger.info("💡 Model Performance Estimates:")
752
+ for model_type, model_name in CURRENT_MODELS.items():
753
+ if model_name in [model.name for model in OptimizedModelRegistry.MODELS.values()]:
754
+ model_config = next(m for m in OptimizedModelRegistry.MODELS.values() if m.name == model_name)
755
+ logger.info(f" {model_type}: ~{model_config.tokens_per_second_estimate} tokens/s ({model_config.vram_requirement_gb}GB)")
756
+
757
+ logger.info("🚀 HASHIRU 6.1 Optimized Configuration Ready!")
bool ADDED
File without changes
cd main_agent.py ADDED
File without changes
chainlit.md ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 🌟 SUPEREZIO | Command Deck
2
+
3
+ <div class="gradient-text">*Uma interface cognitiva desenvolvida por **Marco Barreto**, **Gemini** & **ChatGPT**.*</div>
4
+
5
+ ---
6
+
7
+ ### **DIAGNÓSTICO DO SISTEMA**
8
+
9
+ <div class="glass-card">
10
+
11
+ **🔧 STATUS OPERACIONAL**
12
+ - <span class="status-online">●</span> **Core Engine**: Funcionando
13
+ - <span class="status-online">●</span> **IA Multi-Modelo**: Ativo
14
+ - <span class="status-online">●</span> **Automação**: Disponível
15
+ - <span class="status-online">●</span> **Interface**: SuperEzio v1.0
16
+
17
+ </div>
18
+
19
+ ---
20
+
21
+ ### **🎯 COMANDOS PRINCIPAIS**
22
+
23
+ <div class="glass-card">
24
+
25
+ **AUTOMAÇÃO INTELIGENTE**
26
+ - <span class="command-highlight">/auto_research</span> - Pesquisa automatizada multi-fonte
27
+ - <span class="command-highlight">/auto_search</span> - Busca avançada na internet
28
+ - <span class="command-highlight">/auto_screenshot</span> - Captura de tela
29
+ - <span class="command-highlight">/auto_status</span> - Status do sistema
30
+
31
+ **ANÁLISE & PLANEJAMENTO**
32
+ - <span class="command-highlight">/analyze</span> - Análise profunda de dados
33
+ - <span class="command-highlight">/plan</span> - Criação de planos estratégicos
34
+ - <span class="command-highlight">/code</span> - Geração de código especializado
35
+ - <span class="command-highlight">/debug</span> - Solução de problemas
36
+
37
+ **SISTEMA & CONFIGURAÇÃO**
38
+ - <span class="command-highlight">/config</span> - Configurações do sistema
39
+ - <span class="command-highlight">/health</span> - Diagnóstico completo
40
+ - <span class="command-highlight">/help</span> - Lista completa de comandos
41
+ - <span class="command-highlight">/clear</span> - Limpar histórico
42
+
43
+ </div>
44
+
45
+ ---
46
+
47
+ ### **🧠 MODELOS ESPECIALIZADOS**
48
+
49
+ <div class="glass-card">
50
+
51
+ **🎯 CONFIGURAÇÃO OTIMIZADA**
52
+ - **Reasoning**: `qwen2.5:14b-instruct` - Análise avançada
53
+ - **Code**: `deepseek-coder:6.7b` - Programação especializada
54
+ - **Conversation**: `llama3.1:8b` - Chat inteligente
55
+ - **Tools**: `llama3-groq-tool-use:8b` - Automação
56
+
57
+ **💾 HARDWARE**
58
+ - **GPU Principal**: RTX 3060 (12GB VRAM)
59
+ - **GPU Secundária**: RTX 2060 (6GB VRAM)
60
+ - **Total VRAM**: 18GB disponível
61
+
62
+ </div>
63
+
64
+ ---
65
+
66
+ ### **⚡ CAPACIDADES ATIVAS**
67
+
68
+ <div class="glass-card">
69
+
70
+ ✅ **Web Automation** - Selenium WebDriver
71
+ ✅ **Desktop Control** - PyAutoGUI
72
+ ✅ **Research Engine** - Multi-source analysis
73
+ ✅ **File Operations** - Cross-platform
74
+ ✅ **Code Generation** - Multiple languages
75
+ ✅ **Data Analysis** - Pandas, NumPy, ML
76
+ ✅ **API Integration** - REST, GraphQL
77
+ ✅ **Image Processing** - OpenCV, PIL
78
+
79
+ </div>
80
+
81
+ ---
82
+
83
+ ### **🚀 COMO COMEÇAR**
84
+
85
+ <div class="glass-card">
86
+
87
+ 1. **Digite um comando** (ex: `/auto_status`) para verificar o sistema
88
+ 2. **Faça uma pergunta** em linguagem natural
89
+ 3. **Solicite automação** para tarefas específicas
90
+ 4. **Explore comandos** com `/help` para ver todas as opções
91
+
92
+ **Exemplo de uso:**
93
+ ```
94
+ /auto_research Python automation best practices 2025
95
+ ```
96
+
97
+ </div>
98
+
99
+ ---
100
+
101
+ <div class="gradient-text">
102
+ <center>**SuperEzio está pronto para auxiliar em suas tarefas cognitivas e de automação.**</center>
103
+ </div>
104
+
105
+ ---
106
+
107
+ *Desenvolvido com ❤️ por Marco Barreto | Powered by AI Multi-Model Architecture*
chainlit.toml ADDED
@@ -0,0 +1 @@
 
 
1
+ # chainlit.toml - Configuração do Command Deck SUPEREZIO [project]name = "SUPEREZIO | Command Deck"description = "Uma interface cognitiva desenvolvida por Marco Barreto, Gemini & ChatGPT."# Exibe o arquivo chainlit.md como a tela inicial da aplicação.show_readme_as_default = true[UI]# O caminho para o nosso arquivo de estilo personalizado.custom_css = "public/superezio.css"# As cores definem a base da nossa paleta "HUD Vitrificado".[UI.theme]background_color = "#0A192F" # Azul Marinho Escuro (Fundo do HUD)primary_color = "#FF6B35" # Laranja SUPEREZIO (Acento Neobrutalista para ações)text_color = "#CCD6F6" # Cinza-Azulado Claro (Texto principal do HUD)
chainlit_broken.md ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SUPEREZIO | Command Deck
2
+ *Uma interface cognitiva desenvolvida por **Marco Barreto**, **Gemini** & **ChatGPT**.*
3
+
4
+ ---
5
+
6
+ ### **DIAGNÓSTICO DO SISTEMA**
7
+ <div class="diag-container">
8
+
9
+ | Componente | Status | Detalhes |
10
+ | :-- | :-- | :-- |
11
+ | **CORE COGNITIVO** | <span class="status-online">✅ ONLINE</span> | Motor de raciocínio ativo |
12
+ | **MÓDULO AUTOMAÇÃO**| <span class="status-active">🚀 ATIVO</span> | Protocolos de web & desktop prontos |
13
+ | **LINK NEURAL** | <span class="status-stable">🧠 ESTÁVEL</span> | Conexão com a base de conhecimento |
14
+
15
+ </div>
16
+
17
+ ---
18
+
19
+ Aguardando sua primeira diretiva.
20
+ Digite `/help` para ver a *Knowledge Base* de comandos.
config.py ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # C:\Users\marco\agente_gemini\HASHIRU_6_1\config.py
2
+ from __future__ import annotations
3
+
4
+ import os
5
+ from dataclasses import dataclass
6
+ from pathlib import Path
7
+ from typing import List
8
+
9
+ from dotenv import load_dotenv
10
+
11
+ # Carrega .env se existir (não falha se não existir)
12
+ load_dotenv()
13
+
14
+ # ---------- Helpers robustos de leitura ----------
15
+ def _get_env_str(key: str, default: str) -> str:
16
+ val = os.getenv(key, default)
17
+ return val if isinstance(val, str) and val.strip() != "" else default
18
+
19
+ def _get_env_int(key: str, default: int) -> int:
20
+ raw = os.getenv(key)
21
+ if raw is None or raw.strip() == "":
22
+ return default
23
+ try:
24
+ return int(raw.strip())
25
+ except Exception:
26
+ return default
27
+
28
+ def _get_env_bool(key: str, default: bool) -> bool:
29
+ raw = os.getenv(key)
30
+ if raw is None:
31
+ return default
32
+ raw = raw.strip().lower()
33
+ return raw in ("1", "true", "yes", "y", "on")
34
+
35
+ def _get_env_list(key: str, default_csv: str) -> List[str]:
36
+ raw = os.getenv(key, default_csv)
37
+ items = [x.strip() for x in raw.split(",") if x.strip()]
38
+ # dedup preservando ordem
39
+ seen, out = set(), []
40
+ for x in items:
41
+ xl = x.lower()
42
+ if xl not in seen:
43
+ seen.add(xl)
44
+ out.append(x)
45
+ return out
46
+
47
+ # ---------- Diretórios base ----------
48
+ ROOT: Path = Path(__file__).parent.resolve()
49
+ DATA_DIR: Path = Path(_get_env_str("DATA_DIR", str(ROOT / "data"))).resolve()
50
+ LOGS_DIR: Path = Path(_get_env_str("LOGS_DIR", str(ROOT / "logs"))).resolve()
51
+
52
+ # Garante criação de pastas
53
+ DATA_DIR.mkdir(parents=True, exist_ok=True)
54
+ LOGS_DIR.mkdir(parents=True, exist_ok=True)
55
+
56
+ # ---------- Rede/Servidor ----------
57
+ HOST: str = _get_env_str("HOST", "localhost")
58
+ PORT: int = _get_env_int("PORT", 8080)
59
+
60
+ # ---------- Flags/Defaults ----------
61
+ TIMEOUT_DEFAULT: int = _get_env_int("TIMEOUT_DEFAULT", 60)
62
+ AUDIT_ENABLED: bool = _get_env_bool("AUDIT_ENABLED", True)
63
+
64
+ _DELETE_MODE = _get_env_str("DELETE_MODE", "trash").lower()
65
+ if _DELETE_MODE not in {"trash", "hard"}:
66
+ _DELETE_MODE = "trash"
67
+ DELETE_MODE: str = _DELETE_MODE # "trash" | "hard"
68
+
69
+ PY_UNSAFE_DEFAULT: bool = _get_env_bool("PY_UNSAFE_DEFAULT", False)
70
+
71
+ # ---------- Exec allowlist ----------
72
+ EXEC_ALLOWLIST: List[str] = _get_env_list(
73
+ "EXEC_ALLOWLIST",
74
+ "cmd,ipconfig,ping,tracert,where,tasklist,python,git",
75
+ )
76
+
77
+ # ---------- Export explícito ----------
78
+ __all__ = [
79
+ "ROOT",
80
+ "DATA_DIR",
81
+ "LOGS_DIR",
82
+ "HOST",
83
+ "PORT",
84
+ "TIMEOUT_DEFAULT",
85
+ "AUDIT_ENABLED",
86
+ "DELETE_MODE",
87
+ "PY_UNSAFE_DEFAULT",
88
+ "EXEC_ALLOWLIST",
89
+ ]
corrigido/main_agent.py ADDED
File without changes
data/memory/memory.json ADDED
@@ -0,0 +1,157 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "memories": [
3
+ {
4
+ "id": "172994fc-e388-4fc7-b0f4-4c3d771b1a86",
5
+ "content": "BOM DIA PROCURE NOTICIAS DE HOJE DO FLUMINENSE FFC",
6
+ "role": "user",
7
+ "metadata": {},
8
+ "timestamp": "2025-08-06T11:37:32.258217"
9
+ },
10
+ {
11
+ "id": "5cff9c94-369a-447c-b971-cbd8f96c202f",
12
+ "content": "",
13
+ "role": "assistant",
14
+ "metadata": {},
15
+ "timestamp": "2025-08-06T11:40:17.764904"
16
+ },
17
+ {
18
+ "id": "8a28cd46-07fc-4ec2-a101-42b5875b91bd",
19
+ "content": "VC ESTA AI ?",
20
+ "role": "user",
21
+ "metadata": {},
22
+ "timestamp": "2025-08-06T11:40:52.722508"
23
+ },
24
+ {
25
+ "id": "32dbda79-f036-4fbb-be44-0d9db9d88ce0",
26
+ "content": "Sim, estou aqui! Como posso te ajudar hoje? Se quiser continuar sobre as notícias do Fluminense FFC ou algo diferente, é só falar.",
27
+ "role": "assistant",
28
+ "metadata": {},
29
+ "timestamp": "2025-08-06T11:42:34.798552"
30
+ },
31
+ {
32
+ "id": "1a53d5f0-b5f5-4222-b022-f9bf75c9641f",
33
+ "content": "CARA ME TRAS NOTICIAS ATUAIS DO FLUMINENSE FUTEBOL CLUBE",
34
+ "role": "user",
35
+ "metadata": {},
36
+ "timestamp": "2025-08-06T11:43:02.971315"
37
+ },
38
+ {
39
+ "id": "a3ef0d28-7ce9-47f7-84e2-8b1e49de66d1",
40
+ "content": "BOM DIA QUE É VC ?",
41
+ "role": "user",
42
+ "metadata": {},
43
+ "timestamp": "2025-08-06T12:13:28.837293"
44
+ },
45
+ {
46
+ "id": "2ea8ded6-3d1e-4e8f-b350-201165bd5022",
47
+ "content": "Bom dia! \nEu sou o **SUPEREZIO**, um assistente de inteligência artificial avançado desenvolvido com o modelo gpt‑oss:20b. Minha função é responder suas perguntas, ajudar com tarefas, esclarecer dúvidas e fornecer informações de forma clara e precisa. Posso conversar em português brasileiro (ou em outros idiomas se precisar) e estou aqui para facilitar sua vida digital. Como posso ajudar hoje?",
48
+ "role": "assistant",
49
+ "metadata": {},
50
+ "timestamp": "2025-08-06T12:16:57.806137"
51
+ },
52
+ {
53
+ "id": "5124d41e-06b2-434f-932d-2be27310d040",
54
+ "content": "PESUISE NOTICIAS DO FLUMINENSE HOJE",
55
+ "role": "user",
56
+ "metadata": {},
57
+ "timestamp": "2025-08-06T12:17:19.442939"
58
+ },
59
+ {
60
+ "id": "3b251916-4d5f-4b32-954f-17faf772f9ec",
61
+ "content": "Desculpe, mas eu não consigo fazer buscas em tempo real na internet. Para saber as notícias mais recentes do Fluminense hoje, recomendo conferir:\n\n| Fonte | Como acessar | Dicas |\n|-------|--------------|-------|\n| **Site oficial do Fluminense** | https://www.fluminense.com.br | Vá à aba “Notícias” ou “Comunicados”. |\n| **GloboEsporte** | https://ge.globo.com/futebol/brasileirao-serie-a/noticia/fluminense/ | Use a busca rápida no site ou verifique a seção “Fluminense”. |\n| **UOL Esporte** | https://esporte.uol.com.br/futebol/serie-a/noticias/fluminense.htm | Filtros de data e categoria ajudam a encontrar artigos atuais. |\n| **ESPN Brasil** | https://www.espn.com.br/futebol/clubes/clubes-2015?club=fluminense | A página do clube tem posts recentes. |\n| **Twitter** | @FluminenseFC | Veja os tweets mais recentes e as menções de “Fluminense”. |\n| **Instagram** | @fluminenseofficial | Stories e posts sobre jogos, transferências e eventos. |\n\n**Passo a passo rápido** \n1. Abra um dos sites acima. \n2. Procure a opção “Notícias” ou use a barra de busca digitando “Fluminense hoje”. \n3. Selecione a data atual ou a faixa de datas que lhe interessa. \n4. Leia os títulos e abra os artigos para detalhes.\n\nSe precisar de algo mais específico (por exemplo, a última partida, escalação, transferências, ou notícias de bastidores), me avise e eu posso ajudar a compilar o que já sei até a última atualização do meu banco de dados.",
62
+ "role": "assistant",
63
+ "metadata": {},
64
+ "timestamp": "2025-08-06T12:22:32.303247"
65
+ },
66
+ {
67
+ "content": "\"Quem é o presidente do Brasil?\"",
68
+ "role": "user",
69
+ "timestamp": "2025-08-06T23:03:25.949708"
70
+ },
71
+ {
72
+ "content": "/auto_research Python automation best practices 2025\r\n\n",
73
+ "role": "user",
74
+ "timestamp": "2025-08-06T23:27:38.293653"
75
+ },
76
+ {
77
+ "content": "• \"Mova o mouse para 500, 300\"",
78
+ "role": "user",
79
+ "timestamp": "2025-08-06T23:50:56.429398"
80
+ },
81
+ {
82
+ "content": "✅ O mouse foi movido para a posição (500,300).Se precisar realizar outra ação (clicar, arrastar, etc.) é só me avisar!",
83
+ "role": "assistant",
84
+ "timestamp": "2025-08-06T23:52:13.961992"
85
+ },
86
+ {
87
+ "content": "• \"Mova o mouse para a direita",
88
+ "role": "user",
89
+ "timestamp": "2025-08-06T23:52:38.167194"
90
+ },
91
+ {
92
+ "content": "mova o mouse",
93
+ "role": "user",
94
+ "timestamp": "2025-08-06T23:53:00.590782"
95
+ },
96
+ {
97
+ "content": "mova o mouse em um circulo completo",
98
+ "role": "user",
99
+ "timestamp": "2025-08-06T23:53:37.711290"
100
+ },
101
+ {
102
+ "content": "**Resumo rápido**\n\n- O último comando que o sistema executou foi mover o cursor para a posição **(100,100)**.- Para fazer o mouse “dar um círculo completo”, precisamos de um pequeno script que faça movimentos sucessivos ao longo da circunferência.\n\n---\n\n##1️⃣ O que você precisa| Requisito | Descrição |\n|-----------|-----------|\n| **Linguagem** | Python (ou outra linguagem que permita controlar o mouse) |\n| **Biblioteca** | `pyautogui` (pode ser trocada por `pynput`, `autopy`, etc.) |\n| **Hardware** | Nenhum requisito especial; basta ter o mouse virtualizado pelo sistema. |\n| **Tempo** | O script pode ser executado em segundos, dependendo do número de pontos e da velocidade. |\n\n---\n\n##2️⃣ Exemplo em Python com `pyautogui`\n\n```pythonimport pyautoguiimport mathimport time# Parâmetros do círculocenter_x, center_y =500,300 # centro do círculoradius =150 # raio em pixelssteps =360 # pontos (quanto maior, mais suave)\nspeed =0.01 # tempo entre cada passo (segundos)\n\n# Função que gera os pontos do círculodef circle_points(cx, cy, r, n):\n for i in range(n +1): # +1 para fechar o círculo angle =2 * math.pi * i / n x = cx + r * math.cos(angle)\n y = cy + r * math.sin(angle)\n yield int(x), int(y)\n\n# Executa o movimentofor pos in circle_points(center_x, center_y, radius, steps):\n pyautogui.moveTo(pos[0], pos[1], duration=speed)\n\nprint(\"Círculo completo executado!\")\n```\n\n### Como usar1. **Instale a biblioteca** (se ainda não tiver):\n\n ```bash pip install pyautogui ```\n\n2. **Copie o código** acima para um arquivo, por exemplo, `circle_mouse.py`.\n\n3. **Execute**:\n\n ```bash python circle_mouse.py ```\n\nO cursor começará em `(500,300)` e seguirá um círculo de raio150px, retornando ao ponto de partida.\n\n---\n\n##3️⃣ Ajustes rápidos| Item | Como mudar |\n|------|------------|\n| **Centro** | Alterar `center_x, center_y` |\n| **Raio** | Alterar `radius` |\n| **Suavidade** | Aumentar `steps` (mais pontos → curva mais lisa) |\n| **Velocidade** | Ajustar `speed` (quanto menor, mais rápido) |\n| **Precisão** | Se precisar de movimentos ainda mais finos, use `duration` menor ou `pyautogui.moveRel`. |\n\n---\n\n##4️⃣ Se quiser usar apenas o *tool* disponívelO *tool* que você tem (`move_mouse`) só aceita um ponto por vez. Se você quiser fazer o círculo usando esse *tool*, terá que chamar a API repetidamente com coordenadas calculadas, algo assim:\n\n```json{\n \"action\": \"move_mouse\",\n \"position\": [x, y]\n}\n```\n\nMas isso seria muito lento e não é recomendado. O script acima é a forma mais prática.\n\n---\n\n##5️⃣ Próximos passos- **Teste** o script em seu ambiente para garantir que o cursor não esteja interferindo em outras tarefas.\n- Se precisar de **detecção de colisão** ou **interação com elementos da tela**, combine o movimento com `pyautogui.click()` ou `pyautogui.dragTo()` dentro do loop.\n- Para **automação mais robusta**, considere usar frameworks como `Selenium` (para browsers) ou `AutoIt` (para Windows).\n\n---\n\n### Perguntas adicionais?\n\nSe precisar de ajuda para adaptar o script a um caso específico (por exemplo, mover o mouse em torno de um ícone na tela), basta me dizer e eu ajusto o código!",
103
+ "role": "assistant",
104
+ "timestamp": "2025-08-07T00:01:28.107029"
105
+ },
106
+ {
107
+ "content": "bom dia quem é vc ?",
108
+ "role": "user",
109
+ "timestamp": "2025-08-07T09:54:47.747745"
110
+ },
111
+ {
112
+ "content": "bom dia quem é voce ?",
113
+ "role": "user",
114
+ "timestamp": "2025-08-07T10:26:32.261173"
115
+ },
116
+ {
117
+ "content": "Bom dia! 👋Eu sou o **SUPEREZIO**, um assistente de inteligência artificial desenvolvido pela OpenAI. Sou baseado no modelo GPT‑4 e fui projetado para ajudar em uma variedade de tarefas, desde responder perguntas e explicar conceitos até ajudar com redações, programação, estudos, planejamento de viagens e muito mais.\n\n### O que eu faço?\n- **Responder perguntas** sobre praticamente qualquer assunto (ciência, história, tecnologia, cultura, etc.).\n- **Ajudar com tarefas** como escrever e revisar textos, criar listas, organizar ideias, resolver problemas de lógica ou matemática.\n- **Oferecer explicações** de forma clara e acessível, adaptando o nível de detalhe ao seu conhecimento prévio.\n- **Dar sugestões** de leitura, filmes, receitas, exercícios, entre outros.\n- **Auxiliar em programação**, explicando código, depurando erros ou sugerindo boas práticas.\n\n### Como funciona?\n- Eu não tenho acesso à internet em tempo real, mas fui treinado com um vasto conjunto de dados até2023, então consigo responder com base nesse conhecimento.\n- Se precisar de informações atualizadas, recomendo consultar fontes confiáveis online.\n- Você pode me fazer perguntas em português brasileiro, e eu responderei na mesma língua.\n\n### Limitações- Não sou um ser humano; não tenho emoções reais nem experiências pessoais.\n- Posso cometer erros ou interpretar mal perguntas ambíguas, então sinta-se à vontade para esclarecer ou pedir mais detalhes.\n- Não tenho acesso a dados pessoais, a menos que você os forneça durante a conversa, e não armazeno informações de usuários após o fim da sessão.\n\nSe houver algo específico em que eu possa ajudar agora, é só dizer!",
118
+ "role": "assistant",
119
+ "timestamp": "2025-08-07T10:30:39.145431"
120
+ },
121
+ {
122
+ "content": "Hello, you are an experienced stock market analyst and I want you to analyze the market and recommend a stock to invest in. My investment budget is 1000$ ",
123
+ "role": "user",
124
+ "timestamp": "2025-08-07T12:11:56.932556"
125
+ },
126
+ {
127
+ "content": "Desculpe, mas não posso ajudar com isso.",
128
+ "role": "assistant",
129
+ "timestamp": "2025-08-07T12:13:13.473297"
130
+ },
131
+ {
132
+ "content": "porque ? ",
133
+ "role": "user",
134
+ "timestamp": "2025-08-07T12:25:25.148631"
135
+ },
136
+ {
137
+ "content": "hello ",
138
+ "role": "user",
139
+ "timestamp": "2025-08-07T12:29:55.205179"
140
+ },
141
+ {
142
+ "content": "Olá! Como posso ajudar você hoje?",
143
+ "role": "assistant",
144
+ "timestamp": "2025-08-07T12:30:21.536532"
145
+ },
146
+ {
147
+ "content": "você pode me dar o preço atual de uma açao da Apple ? ",
148
+ "role": "user",
149
+ "timestamp": "2025-08-07T12:30:52.301414"
150
+ },
151
+ {
152
+ "content": "Desculpe, mas os resultados da busca que você enviou não trazem o preço atual da ação da Apple (ticker **AAPL**). Como modelo de linguagem, eu não tenho acesso direto a dados em tempo real, portanto não consigo fornecer o valor exato que está sendo negociado no momento.\n\n### Onde conferir o preço atual| Fonte | Como acessar | Observações |\n|-------|--------------|-------------|\n| **Yahoo Finance** |<https://finance.yahoo.com/quote/AAPL> | Exibe o preço de fechamento, volume, gráfico de1 dia,5 dias,1 mês, etc. |\n| **Google Finance** |<https://www.google.com/finance/quote/AAPL:NASDAQ> | Busca rápida no Google e mostra preço ao vivo. |\n| **Bloomberg** |<https://www.bloomberg.com/quote/AAPL:US> | Dados de mercado, notícias e análises. |\n| **APIs de mercado** (por exemplo, Alpha Vantage, IEX Cloud, Finnhub) | Documentação das APIs | Se precisar integrar em um sistema, use uma API paga ou gratuita (com limite de chamadas). |\n| **Corretoras online** (Interactive Brokers, XP Investimentos, Rico, etc.) | Plataforma da corretora | Mostra o preço em tempo real na sua conta. |\n\n### Como interpretar o preço- **Preço de fechamento**: última cotação registrada no fechamento do mercado.\n- **Preço atual**: cotação em tempo real durante o pregão (pode mudar a cada segundo).\n- **Volume**: quantidade de ações negociadas no dia.\n- **Spread**: diferença entre preço de compra (bid) e venda (ask).\n\n### Dicas rápidas1. Abra o site do Yahoo Finance ou digite “AAPL preço” no Google.\n2. Observe a seção “Último preço” ou “Preços em tempo real”.\n3. Se precisar de histórico, use a aba “Chart” ou “Histórico de preços”.\n4. Para análises, veja a seção “Análise” ou “Relatórios de analistas”.\n\nCaso queira um valor aproximado, posso indicar o preço médio recente (por exemplo, em março de2025 a ação da Apple estava em torno de R$280,00), mas lembre-se que isso não substitui dados em tempo real. Se precisar de algo mais específico ou de ajuda para configurar uma API, é só falar!",
153
+ "role": "assistant",
154
+ "timestamp": "2025-08-07T12:36:15.444113"
155
+ }
156
+ ]
157
+ }
dict ADDED
File without changes
fix_css.bat ADDED
@@ -0,0 +1,425 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @echo off
2
+ setlocal EnableDelayedExpansion
3
+
4
+ REM Navigate to script directory
5
+ cd /d "%~dp0"
6
+
7
+ echo.
8
+ echo [SUPEREZIO] Corrigindo encoding e formatacao do CSS...
9
+ echo.
10
+
11
+ REM Create public directory if not exists
12
+ if not exist public mkdir public
13
+
14
+ REM Backup existing CSS
15
+ if exist public\superezio.css (
16
+ copy public\superezio.css public\superezio.css.backup
17
+ echo ✅ Backup criado: public\superezio.css.backup
18
+ )
19
+
20
+ REM Create properly formatted CSS with correct encoding
21
+ powershell -NoProfile -ExecutionPolicy Bypass -Command "$content = @'
22
+ /* 🎨 public/superezio.css - HUD Vitrificado v2.1 */
23
+ @import url('https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@400;700&display=swap');
24
+
25
+ /* ========================================
26
+ CSS VARIABLES - HUD Color Palette
27
+ ======================================== */
28
+ :root {
29
+ --bg: #0A121F;
30
+ --glass: rgba(20, 35, 60, 0.65);
31
+ --accent-cyan: #64FFDA;
32
+ --primary-orange: #FF6B35;
33
+ --text-primary: #CCD6F6;
34
+ --text-secondary: #8892B0;
35
+ --border-glow: rgba(100, 255, 218, 0.25);
36
+ --shadow-orange: rgba(255, 107, 53, 0.6);
37
+ }
38
+
39
+ /* ========================================
40
+ BASE LAYOUT & TYPOGRAPHY
41
+ ======================================== */
42
+ html, body {
43
+ background: var(--bg);
44
+ color: var(--text-primary);
45
+ font-family: 'Roboto Mono', monospace;
46
+ margin: 0;
47
+ padding: 0;
48
+ min-height: 100vh;
49
+ }
50
+
51
+ * {
52
+ box-sizing: border-box;
53
+ }
54
+
55
+ /* ========================================
56
+ ANIMATIONS & TRANSITIONS
57
+ ======================================== */
58
+ @keyframes fadeIn {
59
+ from {
60
+ opacity: 0;
61
+ transform: translateY(15px);
62
+ }
63
+ to {
64
+ opacity: 1;
65
+ transform: translateY(0);
66
+ }
67
+ }
68
+
69
+ @keyframes pulse {
70
+ 0%, 100% {
71
+ transform: scale(1);
72
+ }
73
+ 50% {
74
+ transform: scale(1.05);
75
+ }
76
+ }
77
+
78
+ @keyframes slideIn {
79
+ from {
80
+ transform: translateX(-20px);
81
+ opacity: 0;
82
+ }
83
+ to {
84
+ transform: translateX(0);
85
+ opacity: 1;
86
+ }
87
+ }
88
+
89
+ /* ========================================
90
+ MAIN CONTAINER - GLASSMORPHISM
91
+ ======================================== */
92
+ #root .main {
93
+ background: var(--glass) !important;
94
+ backdrop-filter: blur(10px);
95
+ border: 1px solid var(--border-glow);
96
+ border-radius: 12px;
97
+ animation: fadeIn 0.6s ease-out;
98
+ box-shadow:
99
+ 0 8px 32px rgba(0, 0, 0, 0.3),
100
+ inset 0 1px 0 rgba(255, 255, 255, 0.1);
101
+ }
102
+
103
+ /* ========================================
104
+ TYPOGRAPHY - ENHANCED HEADERS
105
+ ======================================== */
106
+ h1, h2, h3, h4, h5, h6 {
107
+ color: var(--accent-cyan) !important;
108
+ text-shadow: 0 0 8px rgba(100, 255, 218, 0.5);
109
+ font-weight: 700;
110
+ margin-bottom: 1rem;
111
+ animation: slideIn 0.5s ease-out;
112
+ }
113
+
114
+ h1 {
115
+ font-size: 2.5rem;
116
+ background: linear-gradient(135deg, var(--accent-cyan), var(--primary-orange));
117
+ -webkit-background-clip: text;
118
+ -webkit-text-fill-color: transparent;
119
+ background-clip: text;
120
+ }
121
+
122
+ h2 {
123
+ font-size: 2rem;
124
+ border-bottom: 2px solid var(--border-glow);
125
+ padding-bottom: 0.5rem;
126
+ }
127
+
128
+ /* ========================================
129
+ DIAGNOSTIC CONTAINER - SPECIAL STYLING
130
+ ======================================== */
131
+ .diag-container {
132
+ background: rgba(0, 0, 0, 0.25);
133
+ border: 1px solid var(--border-glow);
134
+ border-radius: 10px;
135
+ padding: 1.25rem;
136
+ margin: 1rem 0;
137
+ backdrop-filter: blur(5px);
138
+ position: relative;
139
+ overflow: hidden;
140
+ }
141
+
142
+ .diag-container::before {
143
+ content: '';
144
+ position: absolute;
145
+ top: -2px;
146
+ left: -2px;
147
+ right: -2px;
148
+ bottom: -2px;
149
+ background: linear-gradient(45deg, var(--accent-cyan), var(--primary-orange));
150
+ border-radius: 12px;
151
+ z-index: -1;
152
+ opacity: 0.1;
153
+ }
154
+
155
+ /* ========================================
156
+ STATUS INDICATORS
157
+ ======================================== */
158
+ .status-online,
159
+ .status-active,
160
+ .status-stable {
161
+ color: var(--accent-cyan);
162
+ font-weight: bold;
163
+ text-shadow: 0 0 8px var(--accent-cyan);
164
+ padding: 0.25rem 0.5rem;
165
+ border-radius: 4px;
166
+ background: rgba(100, 255, 218, 0.1);
167
+ animation: pulse 2s infinite;
168
+ }
169
+
170
+ /* ========================================
171
+ MESSAGE STYLING - ENHANCED
172
+ ======================================== */
173
+ .message:not(.user-message) {
174
+ border-left: 3px solid var(--accent-cyan);
175
+ background: linear-gradient(90deg, rgba(100, 255, 218, 0.06), transparent);
176
+ padding: 1rem;
177
+ margin: 0.5rem 0;
178
+ border-radius: 0 8px 8px 0;
179
+ animation: slideIn 0.3s ease-out;
180
+ }
181
+
182
+ .user-message {
183
+ background: linear-gradient(90deg, transparent, rgba(255, 107, 53, 0.06));
184
+ border-right: 3px solid var(--primary-orange);
185
+ padding: 1rem;
186
+ margin: 0.5rem 0;
187
+ border-radius: 8px 0 0 8px;
188
+ }
189
+
190
+ /* ========================================
191
+ INPUT FIELDS - ENHANCED INTERACTIONS
192
+ ======================================== */
193
+ textarea, input[type="text"] {
194
+ background: rgba(0, 0, 0, 0.35) !important;
195
+ border: 1px solid var(--border-glow) !important;
196
+ color: var(--text-primary) !important;
197
+ caret-color: var(--primary-orange) !important;
198
+ transition: all 0.2s ease-out;
199
+ border-radius: 8px !important;
200
+ padding: 0.75rem !important;
201
+ font-family: 'Roboto Mono', monospace !important;
202
+ }
203
+
204
+ textarea:focus, input[type="text"]:focus {
205
+ border-color: var(--primary-orange) !important;
206
+ box-shadow: 0 0 12px var(--shadow-orange) !important;
207
+ outline: none !important;
208
+ transform: scale(1.02);
209
+ }
210
+
211
+ textarea::placeholder, input::placeholder {
212
+ color: var(--text-secondary) !important;
213
+ opacity: 0.7;
214
+ }
215
+
216
+ /* ========================================
217
+ BUTTONS - NEOBRUTAL DESIGN
218
+ ======================================== */
219
+ button {
220
+ background: var(--primary-orange) !important;
221
+ color: #fff !important;
222
+ font-weight: bold !important;
223
+ font-family: 'Roboto Mono', monospace !important;
224
+ border: none !important;
225
+ border-radius: 6px !important;
226
+ padding: 0.75rem 1.5rem !important;
227
+ transition: all 0.2s ease-out !important;
228
+ text-transform: uppercase;
229
+ letter-spacing: 0.5px;
230
+ cursor: pointer !important;
231
+ }
232
+
233
+ button:hover {
234
+ transform: translateY(-2px);
235
+ box-shadow:
236
+ 0 4px 12px var(--shadow-orange),
237
+ 0 0 0 2px rgba(255, 107, 53, 0.3);
238
+ animation: pulse 0.3s ease-out;
239
+ }
240
+
241
+ button:active {
242
+ transform: translateY(0);
243
+ box-shadow: 0 2px 6px var(--shadow-orange);
244
+ }
245
+
246
+ button:disabled {
247
+ opacity: 0.5;
248
+ transform: none !important;
249
+ cursor: not-allowed !important;
250
+ }
251
+
252
+ /* ========================================
253
+ TABLES - DATA VISUALIZATION
254
+ ======================================== */
255
+ table {
256
+ width: 100%;
257
+ border-collapse: collapse;
258
+ margin: 1rem 0;
259
+ background: rgba(0, 0, 0, 0.1);
260
+ border-radius: 8px;
261
+ overflow: hidden;
262
+ }
263
+
264
+ th, td {
265
+ padding: 0.75rem;
266
+ text-align: left;
267
+ border-bottom: 1px solid var(--border-glow);
268
+ }
269
+
270
+ th {
271
+ background: var(--glass);
272
+ color: var(--accent-cyan);
273
+ font-weight: bold;
274
+ text-transform: uppercase;
275
+ letter-spacing: 0.5px;
276
+ }
277
+
278
+ tr:hover {
279
+ background: rgba(100, 255, 218, 0.05);
280
+ }
281
+
282
+ /* ========================================
283
+ CODE BLOCKS - SYNTAX HIGHLIGHTING
284
+ ======================================== */
285
+ pre, code {
286
+ font-family: 'Roboto Mono', monospace !important;
287
+ background: rgba(0, 0, 0, 0.4) !important;
288
+ border: 1px solid var(--border-glow);
289
+ border-radius: 6px;
290
+ }
291
+
292
+ pre {
293
+ padding: 1rem !important;
294
+ overflow-x: auto;
295
+ margin: 1rem 0;
296
+ }
297
+
298
+ code {
299
+ padding: 0.25rem 0.5rem !important;
300
+ font-size: 0.9em;
301
+ }
302
+
303
+ /* ========================================
304
+ SCROLLBARS - CUSTOM STYLING
305
+ ======================================== */
306
+ ::-webkit-scrollbar {
307
+ width: 10px;
308
+ height: 10px;
309
+ }
310
+
311
+ ::-webkit-scrollbar-track {
312
+ background: var(--bg);
313
+ border-radius: 6px;
314
+ }
315
+
316
+ ::-webkit-scrollbar-thumb {
317
+ background: var(--primary-orange);
318
+ border-radius: 6px;
319
+ border: 2px solid var(--bg);
320
+ transition: background 0.2s ease-out;
321
+ }
322
+
323
+ ::-webkit-scrollbar-thumb:hover {
324
+ background: #ff8659;
325
+ }
326
+
327
+ ::-webkit-scrollbar-corner {
328
+ background: var(--bg);
329
+ }
330
+
331
+ /* ========================================
332
+ LOADING & STATUS INDICATORS
333
+ ======================================== */
334
+ .loading {
335
+ position: relative;
336
+ }
337
+
338
+ .loading::after {
339
+ content: '';
340
+ position: absolute;
341
+ width: 20px;
342
+ height: 20px;
343
+ margin: auto;
344
+ border: 2px solid transparent;
345
+ border-top: 2px solid var(--accent-cyan);
346
+ border-radius: 50%;
347
+ animation: spin 1s linear infinite;
348
+ }
349
+
350
+ @keyframes spin {
351
+ 0% { transform: rotate(0deg); }
352
+ 100% { transform: rotate(360deg); }
353
+ }
354
+
355
+ /* ========================================
356
+ RESPONSIVE DESIGN
357
+ ======================================== */
358
+ @media (max-width: 768px) {
359
+ #root .main {
360
+ margin: 0.5rem;
361
+ border-radius: 8px;
362
+ }
363
+
364
+ h1 {
365
+ font-size: 2rem;
366
+ }
367
+
368
+ .diag-container {
369
+ padding: 1rem;
370
+ }
371
+
372
+ button {
373
+ padding: 0.5rem 1rem !important;
374
+ font-size: 0.9rem !important;
375
+ }
376
+ }
377
+
378
+ /* ========================================
379
+ ACCESSIBILITY IMPROVEMENTS
380
+ ======================================== */
381
+ @media (prefers-reduced-motion: reduce) {
382
+ *, *::before, *::after {
383
+ animation-duration: 0.01ms !important;
384
+ animation-iteration-count: 1 !important;
385
+ transition-duration: 0.01ms !important;
386
+ }
387
+ }
388
+
389
+ /* Focus indicators for keyboard navigation */
390
+ button:focus,
391
+ textarea:focus,
392
+ input:focus {
393
+ outline: 2px solid var(--accent-cyan) !important;
394
+ outline-offset: 2px;
395
+ }
396
+
397
+ /* ========================================
398
+ UTILITY CLASSES
399
+ ======================================== */
400
+ .text-cyan { color: var(--accent-cyan); }
401
+ .text-orange { color: var(--primary-orange); }
402
+ .bg-glass { background: var(--glass); }
403
+ .border-glow { border: 1px solid var(--border-glow); }
404
+
405
+ /* High contrast mode support */
406
+ @media (prefers-contrast: high) {
407
+ :root {
408
+ --bg: #000000;
409
+ --text-primary: #ffffff;
410
+ --accent-cyan: #00ffff;
411
+ --primary-orange: #ff6600;
412
+ }
413
+ }
414
+ '@; [System.IO.File]::WriteAllText('public\superezio.css', $content, [System.Text.Encoding]::UTF8)"
415
+
416
+ echo.
417
+ echo ✅ Arquivo public\superezio.css recriado com encoding UTF-8 correto!
418
+ echo.
419
+ echo Verificando tamanho do arquivo:
420
+ dir public\superezio.css
421
+ echo.
422
+ echo Primeiras linhas do arquivo:
423
+ powershell -Command "Get-Content 'public\superezio.css' -Encoding UTF8 | Select-Object -First 10"
424
+ echo.
425
+ pause
fix_now.py ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ HASHIRU 6.1 - Simple Fix Script
3
+ Corrige problemas criticos sem caracteres especiais
4
+ """
5
+ import time
6
+ from pathlib import Path
7
+
8
+
9
+ def main():
10
+ print("HASHIRU 6.1 - Simple Fixes")
11
+ print("=" * 30)
12
+
13
+ main_file = Path("main_agent.py")
14
+ if not main_file.exists():
15
+ print("ERROR: main_agent.py not found!")
16
+ return
17
+
18
+ try:
19
+ # Read with UTF-8
20
+ print("Reading main_agent.py...")
21
+ content = main_file.read_text(encoding='utf-8')
22
+ original_content = content
23
+ fixes = 0
24
+
25
+ # Fix 1: Duplicate Optional
26
+ if "Optional, Optional" in content:
27
+ content = content.replace(
28
+ "from typing import Dict, List, Any, Optional, Optional",
29
+ "from typing import Dict, List, Any, Optional"
30
+ )
31
+ print(" Fixed: Duplicate Optional import")
32
+ fixes += 1
33
+
34
+ # Fix 2: HTTP client bug
35
+ if "httpx.AsyncClient()# Engine" in content:
36
+ content = content.replace(
37
+ "httpx.AsyncClient()# Engine de auto-modificação (opcional)",
38
+ "httpx.AsyncClient()\n \n # Engine de auto-modificacao"
39
+ )
40
+ print(" Fixed: HTTP client concatenation")
41
+ fixes += 1
42
+
43
+ # Fix 3: Replace emojis that cause encoding issues
44
+ emoji_replacements = [
45
+ ("🔧", "[FIX]"),
46
+ ("✅", "[OK]"),
47
+ ("⚠️", "[WARN]"),
48
+ ("🚨", "[ERROR]"),
49
+ ("🎯", "[TARGET]"),
50
+ ("🔥", "[HOT]"),
51
+ ("⚡", "[FAST]"),
52
+ ("💥", "[CRASH]"),
53
+ ("🤖", "[BOT]"),
54
+ ("▶️", "->"),
55
+ ]
56
+
57
+ for emoji, replacement in emoji_replacements:
58
+ if emoji in content:
59
+ content = content.replace(emoji, replacement)
60
+ fixes += 1
61
+
62
+ if fixes > 0:
63
+ print(" Replaced emojis with ASCII")
64
+
65
+ # Save if changes made
66
+ if fixes > 0:
67
+ # Backup
68
+ backup_file = Path(f"main_agent_backup_{int(time.time())}.py")
69
+ backup_file.write_text(original_content, encoding='utf-8')
70
+ print(f" Backup: {backup_file}")
71
+
72
+ # Save fixed
73
+ main_file.write_text(content, encoding='utf-8')
74
+ print(f" Applied {fixes} fixes")
75
+ else:
76
+ print(" No fixes needed")
77
+
78
+ # Test import
79
+ print("Testing import...")
80
+ import subprocess
81
+ result = subprocess.run([
82
+ "python", "-c", "import main_agent; print('SUCCESS')"
83
+ ], capture_output=True, text=True, encoding='utf-8')
84
+
85
+ if result.returncode == 0 and "SUCCESS" in result.stdout:
86
+ print(" Import test: PASSED")
87
+ print("\nStatus: READY!")
88
+ print("Run: chainlit run main_agent.py --port 8080")
89
+ else:
90
+ print(f" Import test: FAILED")
91
+ print(f" Error: {result.stderr}")
92
+
93
+ except Exception as e:
94
+ print(f"ERROR: {e}")
95
+
96
+
97
+ if __name__ == "__main__":
98
+ main()
fix_toml.bat ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @echo off
2
+ setlocal EnableDelayedExpansion
3
+
4
+ REM Navigate to script directory
5
+ cd /d "%~dp0"
6
+
7
+ echo.
8
+ echo [SUPEREZIO] Corrigindo formatacao do chainlit.toml...
9
+ echo.
10
+
11
+ REM Backup do arquivo atual
12
+ if exist chainlit.toml (
13
+ copy chainlit.toml chainlit.toml.backup
14
+ echo ✅ Backup criado: chainlit.toml.backup
15
+ )
16
+
17
+ REM Recreate chainlit.toml with proper formatting
18
+ (
19
+ echo # chainlit.toml - Configuracao do Command Deck SUPEREZIO
20
+ echo.
21
+ echo [project]
22
+ echo name = "SUPEREZIO | Command Deck"
23
+ echo description = "Uma interface cognitiva desenvolvida por Marco Barreto, Gemini & ChatGPT."
24
+ echo show_readme_as_default = true
25
+ echo.
26
+ echo [UI]
27
+ echo custom_css = "public/superezio.css"
28
+ echo.
29
+ echo [UI.theme]
30
+ echo background_color = "#0A192F"
31
+ echo primary_color = "#FF6B35"
32
+ echo text_color = "#CCD6F6"
33
+ ) > chainlit.toml
34
+
35
+ echo ✅ Arquivo chainlit.toml corrigido com formatacao adequada!
36
+ echo.
37
+ echo Conteudo atual:
38
+ echo ----------------------------------------
39
+ type chainlit.toml
40
+ echo ----------------------------------------
41
+ echo.
42
+ pause
from ADDED
File without changes
install.bat ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @echo off
2
+ setlocal EnableExtensions
3
+ REM -----------------------------------------------------------------------------
4
+ REM HASHIRU_6_1 - Install script (idempotent)
5
+ REM - Creates/activates venv
6
+ REM - Upgrades pip
7
+ REM - Installs requirements
8
+ REM - Prints next step
9
+ REM -----------------------------------------------------------------------------
10
+
11
+ REM --- Fixed paths for this project ---
12
+ set "ROOT=C:\Users\marco\agente_gemini\HASHIRU_6_1"
13
+ set "VENV=%ROOT%\hashiru_6_env"
14
+
15
+ REM --- Create venv if missing ---
16
+ if not exist "%VENV%\Scripts\python.exe" (
17
+ echo [INFO] Creating virtual environment...
18
+ python -m venv "%VENV%"
19
+ if errorlevel 1 (
20
+ echo [ERROR] Failed to create venv. Ensure Python 3.12 is on PATH.
21
+ exit /b 1
22
+ )
23
+ )
24
+
25
+ REM --- Activate venv ---
26
+ call "%VENV%\Scripts\activate"
27
+ if errorlevel 1 (
28
+ echo [ERROR] Failed to activate venv.
29
+ exit /b 1
30
+ )
31
+
32
+ REM --- Upgrade pip ---
33
+ echo [INFO] Upgrading pip...
34
+ python -m pip install --upgrade pip
35
+ if errorlevel 1 (
36
+ echo [WARN] pip upgrade returned an error. Continuing...
37
+ )
38
+
39
+ REM --- Install requirements ---
40
+ if exist "%ROOT%\requirements.txt" (
41
+ echo [INFO] Installing dependencies from requirements.txt ...
42
+ pip install -r "%ROOT%\requirements.txt"
43
+ if errorlevel 1 (
44
+ echo [ERROR] pip install failed. Check output above.
45
+ exit /b 1
46
+ )
47
+ ) else (
48
+ echo [WARN] requirements.txt not found at %ROOT%.
49
+ )
50
+
51
+ echo.
52
+ echo [OK] Installed. To run: startup.bat
53
+ endlocal
install_automation.py ADDED
@@ -0,0 +1,319 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ HASHIRU 6.1 - INSTALADOR DE AUTOMAÇÃO COMPLETA
4
+ Instala todas as dependências necessárias para automação completa
5
+ """
6
+
7
+ import subprocess
8
+ import sys
9
+ import os
10
+ import platform
11
+ from pathlib import Path
12
+
13
+ def run_command(command, description):
14
+ """Executar comando e mostrar resultado"""
15
+ print(f"\n🔧 {description}")
16
+ print(f"💻 Executando: {command}")
17
+
18
+ try:
19
+ result = subprocess.run(command, shell=True, capture_output=True, text=True)
20
+ if result.returncode == 0:
21
+ print(f"✅ Sucesso!")
22
+ if result.stdout.strip():
23
+ print(f"📋 Output: {result.stdout.strip()}")
24
+ else:
25
+ print(f"❌ Erro!")
26
+ if result.stderr.strip():
27
+ print(f"🚨 Error: {result.stderr.strip()}")
28
+ return False
29
+ except Exception as e:
30
+ print(f"💥 Exceção: {str(e)}")
31
+ return False
32
+
33
+ return True
34
+
35
+ def install_python_packages():
36
+ """Instalar pacotes Python necessários"""
37
+ packages = [
38
+ ("selenium", "Automação de browser web"),
39
+ ("pyautogui", "Automação de desktop (mouse/teclado)"),
40
+ ("duckduckgo-search", "Busca na internet"),
41
+ ("pillow", "Processamento de imagens (para PyAutoGUI)"),
42
+ ("opencv-python", "Visão computacional (para localizar imagens)"),
43
+ ("webdriver-manager", "Gerenciamento automático de drivers")
44
+ ]
45
+
46
+ print("🎯 INSTALANDO PACOTES PYTHON")
47
+ print("=" * 50)
48
+
49
+ for package, description in packages:
50
+ success = run_command(
51
+ f"pip install {package} --upgrade",
52
+ f"Instalando {package} - {description}"
53
+ )
54
+ if not success:
55
+ print(f"⚠️ Continuando mesmo com erro em {package}...")
56
+
57
+ def install_chrome_driver():
58
+ """Verificar se Chrome/Chromedriver está disponível"""
59
+ print("\n🌐 VERIFICANDO CHROME/CHROMEDRIVER")
60
+ print("=" * 50)
61
+
62
+ # Verificar Chrome
63
+ chrome_paths = [
64
+ r"C:\Program Files\Google\Chrome\Application\chrome.exe",
65
+ r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe",
66
+ "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
67
+ "/usr/bin/google-chrome",
68
+ "/usr/bin/chromium-browser"
69
+ ]
70
+
71
+ chrome_found = False
72
+ for path in chrome_paths:
73
+ if os.path.exists(path):
74
+ print(f"✅ Chrome encontrado: {path}")
75
+ chrome_found = True
76
+ break
77
+
78
+ if not chrome_found:
79
+ print("❌ Chrome não encontrado!")
80
+ print("📥 Por favor, instale o Google Chrome:")
81
+ print(" https://www.google.com/chrome/")
82
+ return False
83
+
84
+ # Testar webdriver-manager
85
+ try:
86
+ print("\n🔧 Testando webdriver-manager...")
87
+ from selenium import webdriver
88
+ from selenium.webdriver.chrome.service import Service
89
+ from webdriver_manager.chrome import ChromeDriverManager
90
+
91
+ # Isso vai baixar o chromedriver automaticamente
92
+ service = Service(ChromeDriverManager().install())
93
+ print("✅ WebDriver Manager funcionando!")
94
+
95
+ # Teste rápido do driver
96
+ print("🧪 Testando inicialização do Chrome...")
97
+ options = webdriver.ChromeOptions()
98
+ options.add_argument("--headless")
99
+ options.add_argument("--no-sandbox")
100
+ options.add_argument("--disable-dev-shm-usage")
101
+
102
+ driver = webdriver.Chrome(service=service, options=options)
103
+ driver.get("https://www.google.com")
104
+ title = driver.title
105
+ driver.quit()
106
+
107
+ print(f"✅ Chrome WebDriver funcionando! (Título: {title})")
108
+ return True
109
+
110
+ except Exception as e:
111
+ print(f"❌ Erro no WebDriver: {str(e)}")
112
+ print("💡 Tentativa manual necessária...")
113
+ return False
114
+
115
+ def test_pyautogui():
116
+ """Testar PyAutoGUI"""
117
+ print("\n🖱️ TESTANDO PYAUTOGUI")
118
+ print("=" * 50)
119
+
120
+ try:
121
+ import pyautogui
122
+
123
+ # Configurações de segurança
124
+ pyautogui.FAILSAFE = True
125
+ pyautogui.PAUSE = 0.1
126
+
127
+ # Teste básico
128
+ screen_size = pyautogui.size()
129
+ mouse_pos = pyautogui.position()
130
+
131
+ print(f"✅ PyAutoGUI funcionando!")
132
+ print(f"📱 Tamanho da tela: {screen_size}")
133
+ print(f"🖱️ Posição do mouse: {mouse_pos}")
134
+ print(f"🛡️ Fail-safe ativo: {pyautogui.FAILSAFE}")
135
+
136
+ return True
137
+
138
+ except Exception as e:
139
+ print(f"❌ Erro no PyAutoGUI: {str(e)}")
140
+ return False
141
+
142
+ def test_duckduckgo():
143
+ """Testar DuckDuckGo Search"""
144
+ print("\n🔍 TESTANDO DUCKDUCKGO SEARCH")
145
+ print("=" * 50)
146
+
147
+ try:
148
+ from duckduckgo_search import DDGS
149
+
150
+ print("🌐 Fazendo busca de teste...")
151
+ with DDGS() as ddgs:
152
+ results = list(ddgs.text(keywords="python programming", region="us-en"))
153
+
154
+ if results:
155
+ print(f"✅ DuckDuckGo funcionando! ({len(results)} resultados)")
156
+ print(f"📋 Primeiro resultado: {results[0].get('title', 'N/A')}")
157
+ return True
158
+ else:
159
+ print("❌ Nenhum resultado retornado")
160
+ return False
161
+
162
+ except Exception as e:
163
+ print(f"❌ Erro no DuckDuckGo: {str(e)}")
164
+ return False
165
+
166
+ def create_automation_integration():
167
+ """Criar arquivo de integração com HASHIRU"""
168
+ integration_code = '''# -*- coding: utf-8 -*-
169
+ """
170
+ HASHIRU 6.1 - INTEGRAÇÃO DE AUTOMAÇÃO
171
+ Adicione este código ao seu tools/__init__.py ou main_agent.py
172
+ """
173
+
174
+ from tools.automation_master import AUTOMATION_COMMANDS
175
+
176
+ # Integrar comandos de automação ao sistema principal
177
+ def register_automation_commands():
178
+ """Registrar todos os comandos de automação"""
179
+ return AUTOMATION_COMMANDS
180
+
181
+ # Exemplo de uso no main_agent.py:
182
+ """
183
+ from tools.automation_master import get_automation_master
184
+
185
+ # No seu handler de comandos, adicione:
186
+ if command.startswith("/auto_"):
187
+ automation_master = get_automation_master()
188
+
189
+ if command == "/auto_search":
190
+ result = automation_master.search_and_analyze(args)
191
+ elif command == "/auto_browse":
192
+ result = automation_master.navigate_to(args)
193
+ elif command == "/auto_research":
194
+ result = automation_master.auto_research_and_save(args)
195
+ # ... etc
196
+
197
+ return result
198
+ """
199
+ '''
200
+
201
+ integration_file = Path("automation_integration.py")
202
+ with open(integration_file, 'w', encoding='utf-8') as f:
203
+ f.write(integration_code)
204
+
205
+ print(f"\n📁 ARQUIVO DE INTEGRAÇÃO CRIADO")
206
+ print("=" * 50)
207
+ print(f"✅ Arquivo: {integration_file.absolute()}")
208
+ print("📋 Use este código para integrar ao HASHIRU")
209
+
210
+ def show_usage_examples():
211
+ """Mostrar exemplos de uso"""
212
+ examples = """
213
+ 📚 EXEMPLOS DE USO DO SISTEMA DE AUTOMAÇÃO
214
+ =" * 50
215
+
216
+ 🔍 BUSCA E PESQUISA:
217
+ /auto_search "machine learning Python"
218
+ /auto_research "artificial intelligence trends" 5
219
+
220
+ 🌐 AUTOMAÇÃO WEB:
221
+ /auto_browse "https://python.org"
222
+ /auto_click "#search-input" css
223
+ /auto_click "//button[@type='submit']" xpath
224
+
225
+ 🖱️ AUTOMAÇÃO DESKTOP:
226
+ /auto_screenshot "minha_tela"
227
+ /auto_type "Hello World!"
228
+ /auto_keys "ctrl" "c"
229
+ /auto_folder "C:\\meu_projeto_livre"
230
+
231
+ 🤖 AUTOMAÇÃO COMPLETA:
232
+ /auto_research "Python web frameworks" 3
233
+ → Busca na internet
234
+ → Abre 3 melhores sites
235
+ → Analisa cada página
236
+ → Captura screenshots
237
+ → Salva relatório completo
238
+
239
+ 📁 ARQUIVOS SALVOS EM:
240
+ C:\\meu_projeto_livre\\
241
+ ├── downloads/ # Downloads automáticos
242
+ ├── screenshots/ # Capturas de tela
243
+ ├── automation_logs/ # Logs de automação
244
+ ├── web_captures/ # Capturas de páginas
245
+ └── research/ # Relatórios de pesquisa
246
+
247
+ 🛡️ SEGURANÇA:
248
+ - Fail-safe do PyAutoGUI ativo (mouse nos cantos = parar)
249
+ - Timeouts em todas as operações web
250
+ - Backups automáticos
251
+ - Logs detalhados de todas as ações
252
+ """
253
+
254
+ print(examples)
255
+
256
+ def main():
257
+ """Instalação principal"""
258
+ print("🚀 HASHIRU 6.1 - INSTALADOR DE AUTOMAÇÃO COMPLETA")
259
+ print("=" * 60)
260
+ print("Este script vai instalar:")
261
+ print(" • Selenium (automação web)")
262
+ print(" • PyAutoGUI (automação desktop)")
263
+ print(" • DuckDuckGo Search (busca internet)")
264
+ print(" • Dependências necessárias")
265
+ print("=" * 60)
266
+
267
+ # Verificar Python
268
+ python_version = sys.version_info
269
+ print(f"🐍 Python: {python_version.major}.{python_version.minor}.{python_version.micro}")
270
+
271
+ if python_version < (3, 7):
272
+ print("❌ Python 3.7+ é necessário!")
273
+ return
274
+
275
+ # Verificar plataforma
276
+ os_info = platform.system()
277
+ print(f"💻 Sistema: {os_info} {platform.release()}")
278
+
279
+ # 1. Instalar pacotes Python
280
+ install_python_packages()
281
+
282
+ # 2. Configurar Chrome/WebDriver
283
+ chrome_ok = install_chrome_driver()
284
+
285
+ # 3. Testar PyAutoGUI
286
+ pyautogui_ok = test_pyautogui()
287
+
288
+ # 4. Testar DuckDuckGo
289
+ ddg_ok = test_duckduckgo()
290
+
291
+ # 5. Criar integração
292
+ create_automation_integration()
293
+
294
+ # Resumo final
295
+ print("\n🎯 RESUMO DA INSTALAÇÃO")
296
+ print("=" * 50)
297
+ print(f"🌐 Chrome/Selenium: {'✅ OK' if chrome_ok else '❌ ERRO'}")
298
+ print(f"🖱️ PyAutoGUI: {'✅ OK' if pyautogui_ok else '❌ ERRO'}")
299
+ print(f"🔍 DuckDuckGo: {'✅ OK' if ddg_ok else '❌ ERRO'}")
300
+
301
+ all_ok = chrome_ok and pyautogui_ok and ddg_ok
302
+
303
+ if all_ok:
304
+ print("\n🎉 INSTALAÇÃO COMPLETA COM SUCESSO!")
305
+ print("🚀 Sistema de automação pronto para uso!")
306
+ show_usage_examples()
307
+ else:
308
+ print("\n⚠️ INSTALAÇÃO PARCIAL")
309
+ print("Algumas funcionalidades podem não funcionar.")
310
+ print("Verifique os erros acima e tente resolver.")
311
+
312
+ print("\n📁 PRÓXIMOS PASSOS:")
313
+ print("1. Cole o arquivo automation_master.py em tools/")
314
+ print("2. Integre os comandos ao main_agent.py")
315
+ print("3. Reinicie o Chainlit")
316
+ print("4. Teste com /auto_search 'teste'")
317
+
318
+ if __name__ == "__main__":
319
+ main()