PraisonAI 2.0.61__cp313-cp313-manylinux_2_39_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of PraisonAI might be problematic. Click here for more details.
- praisonai/__init__.py +6 -0
- praisonai/__main__.py +10 -0
- praisonai/agents_generator.py +648 -0
- praisonai/api/call.py +292 -0
- praisonai/auto.py +238 -0
- praisonai/chainlit_ui.py +304 -0
- praisonai/cli.py +518 -0
- praisonai/deploy.py +138 -0
- praisonai/inbuilt_tools/__init__.py +24 -0
- praisonai/inbuilt_tools/autogen_tools.py +117 -0
- praisonai/inc/__init__.py +2 -0
- praisonai/inc/config.py +96 -0
- praisonai/inc/models.py +128 -0
- praisonai/public/android-chrome-192x192.png +0 -0
- praisonai/public/android-chrome-512x512.png +0 -0
- praisonai/public/apple-touch-icon.png +0 -0
- praisonai/public/fantasy.svg +3 -0
- praisonai/public/favicon-16x16.png +0 -0
- praisonai/public/favicon-32x32.png +0 -0
- praisonai/public/favicon.ico +0 -0
- praisonai/public/game.svg +3 -0
- praisonai/public/logo_dark.png +0 -0
- praisonai/public/logo_light.png +0 -0
- praisonai/public/movie.svg +3 -0
- praisonai/public/praison-ai-agents-architecture-dark.png +0 -0
- praisonai/public/praison-ai-agents-architecture.png +0 -0
- praisonai/public/thriller.svg +3 -0
- praisonai/setup/__init__.py +1 -0
- praisonai/setup/build.py +21 -0
- praisonai/setup/config.yaml +60 -0
- praisonai/setup/post_install.py +23 -0
- praisonai/setup/setup_conda_env.py +25 -0
- praisonai/setup/setup_conda_env.sh +72 -0
- praisonai/setup.py +16 -0
- praisonai/test.py +105 -0
- praisonai/train.py +276 -0
- praisonai/ui/README.md +21 -0
- praisonai/ui/agents.py +822 -0
- praisonai/ui/callbacks.py +57 -0
- praisonai/ui/chat.py +387 -0
- praisonai/ui/code.py +440 -0
- praisonai/ui/colab.py +474 -0
- praisonai/ui/colab_chainlit.py +81 -0
- praisonai/ui/components/aicoder.py +269 -0
- praisonai/ui/config/.chainlit/config.toml +120 -0
- praisonai/ui/config/.chainlit/translations/bn.json +231 -0
- praisonai/ui/config/.chainlit/translations/en-US.json +229 -0
- praisonai/ui/config/.chainlit/translations/gu.json +231 -0
- praisonai/ui/config/.chainlit/translations/he-IL.json +231 -0
- praisonai/ui/config/.chainlit/translations/hi.json +231 -0
- praisonai/ui/config/.chainlit/translations/kn.json +231 -0
- praisonai/ui/config/.chainlit/translations/ml.json +231 -0
- praisonai/ui/config/.chainlit/translations/mr.json +231 -0
- praisonai/ui/config/.chainlit/translations/ta.json +231 -0
- praisonai/ui/config/.chainlit/translations/te.json +231 -0
- praisonai/ui/config/.chainlit/translations/zh-CN.json +229 -0
- praisonai/ui/config/chainlit.md +1 -0
- praisonai/ui/config/translations/bn.json +231 -0
- praisonai/ui/config/translations/en-US.json +229 -0
- praisonai/ui/config/translations/gu.json +231 -0
- praisonai/ui/config/translations/he-IL.json +231 -0
- praisonai/ui/config/translations/hi.json +231 -0
- praisonai/ui/config/translations/kn.json +231 -0
- praisonai/ui/config/translations/ml.json +231 -0
- praisonai/ui/config/translations/mr.json +231 -0
- praisonai/ui/config/translations/ta.json +231 -0
- praisonai/ui/config/translations/te.json +231 -0
- praisonai/ui/config/translations/zh-CN.json +229 -0
- praisonai/ui/context.py +283 -0
- praisonai/ui/db.py +291 -0
- praisonai/ui/public/fantasy.svg +3 -0
- praisonai/ui/public/game.svg +3 -0
- praisonai/ui/public/logo_dark.png +0 -0
- praisonai/ui/public/logo_light.png +0 -0
- praisonai/ui/public/movie.svg +3 -0
- praisonai/ui/public/praison.css +3 -0
- praisonai/ui/public/thriller.svg +3 -0
- praisonai/ui/realtime.py +476 -0
- praisonai/ui/realtimeclient/__init__.py +653 -0
- praisonai/ui/realtimeclient/realtimedocs.txt +1484 -0
- praisonai/ui/realtimeclient/tools.py +236 -0
- praisonai/ui/sql_alchemy.py +707 -0
- praisonai/ui/tools.md +133 -0
- praisonai/version.py +1 -0
- praisonai-2.0.61.dist-info/LICENSE +20 -0
- praisonai-2.0.61.dist-info/METADATA +679 -0
- praisonai-2.0.61.dist-info/RECORD +89 -0
- praisonai-2.0.61.dist-info/WHEEL +4 -0
- praisonai-2.0.61.dist-info/entry_points.txt +5 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import asyncio
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
import difflib
|
|
5
|
+
from typing import Dict, Any
|
|
6
|
+
from litellm import acompletion
|
|
7
|
+
import json
|
|
8
|
+
import dotenv
|
|
9
|
+
from tavily import TavilyClient
|
|
10
|
+
from crawl4ai import AsyncWebCrawler
|
|
11
|
+
|
|
12
|
+
dotenv.load_dotenv()
|
|
13
|
+
|
|
14
|
+
class AICoder:
|
|
15
|
+
def __init__(self, cwd: str = None, tavily_api_key: str = None):
|
|
16
|
+
self.cwd = cwd or os.getcwd()
|
|
17
|
+
self.tools = [
|
|
18
|
+
{
|
|
19
|
+
"type": "function",
|
|
20
|
+
"function": {
|
|
21
|
+
"name": "write_to_file",
|
|
22
|
+
"description": "Write content to a file at the specified path. If the file exists, it will be overwritten.",
|
|
23
|
+
"parameters": {
|
|
24
|
+
"type": "object",
|
|
25
|
+
"properties": {
|
|
26
|
+
"path": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"description": "The path of the file to write to."
|
|
29
|
+
},
|
|
30
|
+
"content": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"description": "The content to write to the file."
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"required": ["path", "content"]
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"type": "function",
|
|
41
|
+
"function": {
|
|
42
|
+
"name": "execute_command",
|
|
43
|
+
"description": "Execute a CLI command on the system.",
|
|
44
|
+
"parameters": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"properties": {
|
|
47
|
+
"command": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"description": "The CLI command to execute."
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"required": ["command"]
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"type": "function",
|
|
58
|
+
"function": {
|
|
59
|
+
"name": "read_file",
|
|
60
|
+
"description": "Read the contents of a file at the specified path.",
|
|
61
|
+
"parameters": {
|
|
62
|
+
"type": "object",
|
|
63
|
+
"properties": {
|
|
64
|
+
"path": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"description": "The path of the file to read."
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"required": ["path"]
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
|
|
75
|
+
self.tavily_api_key = tavily_api_key
|
|
76
|
+
if self.tavily_api_key:
|
|
77
|
+
self.tavily_client = TavilyClient(api_key=self.tavily_api_key)
|
|
78
|
+
self.tools.append({
|
|
79
|
+
"type": "function",
|
|
80
|
+
"function": {
|
|
81
|
+
"name": "tavily_web_search",
|
|
82
|
+
"description": "Search the web using Tavily API and crawl the resulting URLs",
|
|
83
|
+
"parameters": {
|
|
84
|
+
"type": "object",
|
|
85
|
+
"properties": {
|
|
86
|
+
"query": {"type": "string", "description": "Search query"}
|
|
87
|
+
},
|
|
88
|
+
"required": ["query"]
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
})
|
|
92
|
+
else:
|
|
93
|
+
self.tavily_client = None
|
|
94
|
+
|
|
95
|
+
async def create_directories(self, file_path):
|
|
96
|
+
file_path_obj = Path(file_path)
|
|
97
|
+
dir_path = file_path_obj.parent
|
|
98
|
+
if not dir_path.exists():
|
|
99
|
+
os.makedirs(dir_path, exist_ok=True)
|
|
100
|
+
return dir_path
|
|
101
|
+
|
|
102
|
+
async def file_exists(self, file_path):
|
|
103
|
+
return Path(file_path).exists()
|
|
104
|
+
|
|
105
|
+
async def write_to_file(self, file_path, content, existing=False):
|
|
106
|
+
if not existing:
|
|
107
|
+
await self.create_directories(file_path)
|
|
108
|
+
try:
|
|
109
|
+
with open(file_path, 'w') as file:
|
|
110
|
+
file.write(content)
|
|
111
|
+
return True
|
|
112
|
+
except Exception as e:
|
|
113
|
+
return False
|
|
114
|
+
|
|
115
|
+
async def read_file(self, file_path):
|
|
116
|
+
try:
|
|
117
|
+
with open(file_path, 'r') as file:
|
|
118
|
+
return file.read()
|
|
119
|
+
except:
|
|
120
|
+
return None
|
|
121
|
+
|
|
122
|
+
async def execute_command(self, command: str):
|
|
123
|
+
try:
|
|
124
|
+
process = await asyncio.create_subprocess_shell(
|
|
125
|
+
command,
|
|
126
|
+
stdout=asyncio.subprocess.PIPE,
|
|
127
|
+
stderr=asyncio.subprocess.PIPE,
|
|
128
|
+
cwd=self.cwd
|
|
129
|
+
)
|
|
130
|
+
stdout, stderr = await process.communicate()
|
|
131
|
+
if stdout:
|
|
132
|
+
return f"Command output:\n{stdout.decode()}"
|
|
133
|
+
if stderr:
|
|
134
|
+
return f"Command error:\n{stderr.decode()}"
|
|
135
|
+
return process.returncode == 0
|
|
136
|
+
except Exception as e:
|
|
137
|
+
return f"Error executing command: {str(e)}"
|
|
138
|
+
|
|
139
|
+
async def tavily_web_search(self, query):
|
|
140
|
+
if not self.tavily_client:
|
|
141
|
+
return json.dumps({
|
|
142
|
+
"query": query,
|
|
143
|
+
"error": "Tavily API key is not set. Web search is unavailable."
|
|
144
|
+
})
|
|
145
|
+
response = self.tavily_client.search(query)
|
|
146
|
+
results = []
|
|
147
|
+
async with AsyncWebCrawler() as crawler:
|
|
148
|
+
for result in response.get('results', []):
|
|
149
|
+
url = result.get('url')
|
|
150
|
+
if url:
|
|
151
|
+
try:
|
|
152
|
+
crawl_result = await crawler.arun(url=url)
|
|
153
|
+
results.append({
|
|
154
|
+
"content": result.get('content'),
|
|
155
|
+
"url": url,
|
|
156
|
+
"full_content": crawl_result.markdown
|
|
157
|
+
})
|
|
158
|
+
except Exception:
|
|
159
|
+
results.append({
|
|
160
|
+
"content": result.get('content'),
|
|
161
|
+
"url": url,
|
|
162
|
+
"full_content": "Error: Unable to crawl this URL"
|
|
163
|
+
})
|
|
164
|
+
return json.dumps({
|
|
165
|
+
"query": query,
|
|
166
|
+
"results": results
|
|
167
|
+
})
|
|
168
|
+
|
|
169
|
+
def generate_diff(self, original_content: str, new_content: str, filename="file.txt"):
|
|
170
|
+
diff_lines = difflib.unified_diff(
|
|
171
|
+
original_content.splitlines(keepends=True),
|
|
172
|
+
new_content.splitlines(keepends=True),
|
|
173
|
+
fromfile=f"original_{filename}",
|
|
174
|
+
tofile=f"modified_{filename}"
|
|
175
|
+
)
|
|
176
|
+
return "".join(diff_lines)
|
|
177
|
+
|
|
178
|
+
def parse_json_response(self, json_object: Dict) -> Dict[str, Any]:
|
|
179
|
+
if 'choices' in json_object and json_object['choices'][0]['message']:
|
|
180
|
+
message = json_object['choices'][0]['message']
|
|
181
|
+
if 'tool_calls' in message and message['tool_calls']:
|
|
182
|
+
return {"type": "tool_calls", "data": message['tool_calls']}
|
|
183
|
+
return {"type": "content", "data": message.get('content', "")}
|
|
184
|
+
return {"type": "content", "data": json.dumps(json_object)}
|
|
185
|
+
|
|
186
|
+
def parse_llm_response(self, response: Any) -> Dict[str, Any]:
|
|
187
|
+
if response is None:
|
|
188
|
+
return {"type": "content", "data": ""}
|
|
189
|
+
if isinstance(response, str):
|
|
190
|
+
try:
|
|
191
|
+
json_object = json.loads(response)
|
|
192
|
+
if isinstance(json_object, dict):
|
|
193
|
+
return self.parse_json_response(json_object)
|
|
194
|
+
except json.JSONDecodeError:
|
|
195
|
+
return {"type": "content", "data": response}
|
|
196
|
+
if hasattr(response, 'choices') and response.choices:
|
|
197
|
+
message = response.choices[0].message
|
|
198
|
+
if hasattr(message, 'tool_calls') and message.tool_calls:
|
|
199
|
+
tool_calls_data = []
|
|
200
|
+
for tool_call in message.tool_calls:
|
|
201
|
+
tool_calls_data.append({
|
|
202
|
+
'id': tool_call.id,
|
|
203
|
+
'type': tool_call.type,
|
|
204
|
+
'function': {
|
|
205
|
+
'name': tool_call.function.name,
|
|
206
|
+
'arguments': tool_call.function.arguments
|
|
207
|
+
}
|
|
208
|
+
})
|
|
209
|
+
return {"type": "tool_calls", "data": tool_calls_data}
|
|
210
|
+
return {"type": "content", "data": message.content or ""}
|
|
211
|
+
return {"type": "content", "data": str(response)}
|
|
212
|
+
|
|
213
|
+
async def apply_llm_response(self, task, llm_response):
|
|
214
|
+
parsed_response = self.parse_llm_response(llm_response)
|
|
215
|
+
if parsed_response["type"] == "tool_calls":
|
|
216
|
+
for tool_call in parsed_response["data"]:
|
|
217
|
+
if tool_call["function"]["name"] == "write_to_file":
|
|
218
|
+
args = json.loads(tool_call["function"]["arguments"])
|
|
219
|
+
file_path = os.path.join(self.cwd, args["path"].strip())
|
|
220
|
+
content = args["content"]
|
|
221
|
+
if await self.file_exists(file_path):
|
|
222
|
+
original_content = await self.read_file(file_path)
|
|
223
|
+
file_diff = self.generate_diff(original_content, content, os.path.basename(file_path))
|
|
224
|
+
# Interaction with user removed for automation context
|
|
225
|
+
return await self.write_to_file(file_path, content, True)
|
|
226
|
+
else:
|
|
227
|
+
return await self.write_to_file(file_path, content)
|
|
228
|
+
elif tool_call["function"]["name"] == "execute_command":
|
|
229
|
+
args = json.loads(tool_call["function"]["arguments"])
|
|
230
|
+
command = args.get("command", "").strip()
|
|
231
|
+
if command:
|
|
232
|
+
return await self.execute_command(command)
|
|
233
|
+
else:
|
|
234
|
+
return False
|
|
235
|
+
elif tool_call["function"]["name"] == "read_file":
|
|
236
|
+
args = json.loads(tool_call["function"]["arguments"])
|
|
237
|
+
file_path = args.get("path", "").strip()
|
|
238
|
+
if file_path:
|
|
239
|
+
content = await self.read_file(os.path.join(self.cwd, file_path))
|
|
240
|
+
return True if content is not None else False
|
|
241
|
+
else:
|
|
242
|
+
return False
|
|
243
|
+
elif tool_call["function"]["name"] == "tavily_web_search":
|
|
244
|
+
args = json.loads(tool_call["function"]["arguments"])
|
|
245
|
+
return await self.tavily_web_search(args.get("query"))
|
|
246
|
+
else:
|
|
247
|
+
return False
|
|
248
|
+
return True
|
|
249
|
+
|
|
250
|
+
async def process_task(self, task: str):
|
|
251
|
+
llm_response = await acompletion(
|
|
252
|
+
model="gpt-4",
|
|
253
|
+
messages=[
|
|
254
|
+
{"role": "user", "content": task}
|
|
255
|
+
],
|
|
256
|
+
tools=self.tools,
|
|
257
|
+
tool_choice="auto"
|
|
258
|
+
)
|
|
259
|
+
return await self.apply_llm_response(task, llm_response)
|
|
260
|
+
|
|
261
|
+
async def main():
|
|
262
|
+
ai_coder = AICoder()
|
|
263
|
+
await ai_coder.process_task("Create a file called `hello.txt` with the content 'Hello, world!'")
|
|
264
|
+
await ai_coder.process_task("Edit the file called `hello.txt` and change the content to 'Hello again, world!'")
|
|
265
|
+
await ai_coder.process_task("Show me the current working directory")
|
|
266
|
+
await ai_coder.process_task("Read the contents of hello.txt")
|
|
267
|
+
|
|
268
|
+
if __name__ == "__main__":
|
|
269
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
# Whether to enable telemetry (default: true). No personal data is collected.
|
|
3
|
+
enable_telemetry = false
|
|
4
|
+
|
|
5
|
+
# List of environment variables to be provided by each user to use the app.
|
|
6
|
+
user_env = []
|
|
7
|
+
|
|
8
|
+
# Duration (in seconds) during which the session is saved when the connection is lost
|
|
9
|
+
session_timeout = 3600
|
|
10
|
+
|
|
11
|
+
# Enable third parties caching (e.g LangChain cache)
|
|
12
|
+
cache = false
|
|
13
|
+
|
|
14
|
+
# Authorized origins
|
|
15
|
+
allow_origins = ["*"]
|
|
16
|
+
|
|
17
|
+
# Follow symlink for asset mount (see https://github.com/Chainlit/chainlit/issues/317)
|
|
18
|
+
# follow_symlink = false
|
|
19
|
+
|
|
20
|
+
[features]
|
|
21
|
+
# Process and display HTML in messages. This can be a security risk (see https://stackoverflow.com/questions/19603097/why-is-it-dangerous-to-render-user-generated-html-or-javascript)
|
|
22
|
+
unsafe_allow_html = false
|
|
23
|
+
|
|
24
|
+
# Process and display mathematical expressions. This can clash with "$" characters in messages.
|
|
25
|
+
latex = false
|
|
26
|
+
|
|
27
|
+
# Automatically tag threads with the current chat profile (if a chat profile is used)
|
|
28
|
+
auto_tag_thread = true
|
|
29
|
+
|
|
30
|
+
# Allow users to edit their own messages
|
|
31
|
+
edit_message = true
|
|
32
|
+
|
|
33
|
+
# Authorize users to spontaneously upload files with messages
|
|
34
|
+
[features.spontaneous_file_upload]
|
|
35
|
+
enabled = true
|
|
36
|
+
accept = ["*/*"]
|
|
37
|
+
max_files = 20
|
|
38
|
+
max_size_mb = 500
|
|
39
|
+
|
|
40
|
+
[features.audio]
|
|
41
|
+
# Threshold for audio recording
|
|
42
|
+
min_decibels = -45
|
|
43
|
+
# Delay for the user to start speaking in MS
|
|
44
|
+
initial_silence_timeout = 3000
|
|
45
|
+
# Delay for the user to continue speaking in MS. If the user stops speaking for this duration, the recording will stop.
|
|
46
|
+
silence_timeout = 1500
|
|
47
|
+
# Above this duration (MS), the recording will forcefully stop.
|
|
48
|
+
max_duration = 15000
|
|
49
|
+
# Duration of the audio chunks in MS
|
|
50
|
+
chunk_duration = 1000
|
|
51
|
+
# Sample rate of the audio
|
|
52
|
+
sample_rate = 44100
|
|
53
|
+
|
|
54
|
+
[UI]
|
|
55
|
+
# Name of the assistant.
|
|
56
|
+
name = "Assistant"
|
|
57
|
+
|
|
58
|
+
# Description of the assistant. This is used for HTML tags.
|
|
59
|
+
# description = ""
|
|
60
|
+
|
|
61
|
+
# Large size content are by default collapsed for a cleaner ui
|
|
62
|
+
default_collapse_content = true
|
|
63
|
+
|
|
64
|
+
# Chain of Thought (CoT) display mode. Can be "hidden", "tool_call" or "full".
|
|
65
|
+
cot = "full"
|
|
66
|
+
|
|
67
|
+
# Link to your github repo. This will add a github button in the UI's header.
|
|
68
|
+
# github = ""
|
|
69
|
+
|
|
70
|
+
# Specify a CSS file that can be used to customize the user interface.
|
|
71
|
+
# The CSS file can be served from the public directory or via an external link.
|
|
72
|
+
custom_css = "https://cdn.jsdelivr.net/gh/MervinPraison/PraisonAI@2.0.0/praisonai/ui/public/praison.css"
|
|
73
|
+
|
|
74
|
+
# Specify a Javascript file that can be used to customize the user interface.
|
|
75
|
+
# The Javascript file can be served from the public directory.
|
|
76
|
+
# custom_js = "/public/test.js"
|
|
77
|
+
|
|
78
|
+
# Specify a custom font url.
|
|
79
|
+
# custom_font = "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&display=swap"
|
|
80
|
+
|
|
81
|
+
# Specify a custom meta image url.
|
|
82
|
+
# custom_meta_image_url = "https://chainlit-cloud.s3.eu-west-3.amazonaws.com/logo/chainlit_banner.png"
|
|
83
|
+
|
|
84
|
+
# Specify a custom build directory for the frontend.
|
|
85
|
+
# This can be used to customize the frontend code.
|
|
86
|
+
# Be careful: If this is a relative path, it should not start with a slash.
|
|
87
|
+
# custom_build = "./public/build"
|
|
88
|
+
|
|
89
|
+
[UI.theme]
|
|
90
|
+
default = "dark"
|
|
91
|
+
#layout = "wide"
|
|
92
|
+
#font_family = "Inter, sans-serif"
|
|
93
|
+
# Override default MUI light theme. (Check theme.ts)
|
|
94
|
+
[UI.theme.light]
|
|
95
|
+
#background = "#FAFAFA"
|
|
96
|
+
#paper = "#FFFFFF"
|
|
97
|
+
|
|
98
|
+
[UI.theme.light.primary]
|
|
99
|
+
#main = "#F80061"
|
|
100
|
+
#dark = "#980039"
|
|
101
|
+
#light = "#FFE7EB"
|
|
102
|
+
[UI.theme.light.text]
|
|
103
|
+
#primary = "#212121"
|
|
104
|
+
#secondary = "#616161"
|
|
105
|
+
|
|
106
|
+
# Override default MUI dark theme. (Check theme.ts)
|
|
107
|
+
[UI.theme.dark]
|
|
108
|
+
#background = "#FAFAFA"
|
|
109
|
+
#paper = "#FFFFFF"
|
|
110
|
+
|
|
111
|
+
[UI.theme.dark.primary]
|
|
112
|
+
#main = "#F80061"
|
|
113
|
+
#dark = "#980039"
|
|
114
|
+
#light = "#FFE7EB"
|
|
115
|
+
[UI.theme.dark.text]
|
|
116
|
+
#primary = "#EEEEEE"
|
|
117
|
+
#secondary = "#BDBDBD"
|
|
118
|
+
|
|
119
|
+
[meta]
|
|
120
|
+
generated_by = "1.3.2"
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
{
|
|
2
|
+
"components": {
|
|
3
|
+
"atoms": {
|
|
4
|
+
"buttons": {
|
|
5
|
+
"userButton": {
|
|
6
|
+
"menu": {
|
|
7
|
+
"settings": "\u09b8\u09c7\u099f\u09bf\u0982\u09b8",
|
|
8
|
+
"settingsKey": "S",
|
|
9
|
+
"APIKeys": "\u098f\u09aa\u09bf\u0986\u0987 \u0995\u09c0",
|
|
10
|
+
"logout": "\u09b2\u0997\u0986\u0989\u099f"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"molecules": {
|
|
16
|
+
"newChatButton": {
|
|
17
|
+
"newChat": "\u09a8\u09a4\u09c1\u09a8 \u0986\u09a1\u09cd\u09a1\u09be"
|
|
18
|
+
},
|
|
19
|
+
"tasklist": {
|
|
20
|
+
"TaskList": {
|
|
21
|
+
"title": "\ud83d\uddd2\ufe0f \u0995\u09be\u09b0\u09cd\u09af \u09a4\u09be\u09b2\u09bf\u0995\u09be",
|
|
22
|
+
"loading": "\u09b2\u09cb\u09a1\u0964\u0964\u0964",
|
|
23
|
+
"error": "\u098f\u0995\u099f\u09bf \u09a4\u09cd\u09b0\u09c1\u099f\u09bf \u09b8\u0982\u0998\u099f\u09bf\u09a4 \u09b9\u09af\u09bc\u09c7\u099b\u09c7"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"attachments": {
|
|
27
|
+
"cancelUpload": "\u0986\u09aa\u09b2\u09cb\u09a1 \u09ac\u09be\u09a4\u09bf\u09b2 \u0995\u09b0\u09c1\u09a8",
|
|
28
|
+
"removeAttachment": "\u09b8\u0982\u09af\u09c1\u0995\u09cd\u09a4\u09bf \u09b8\u09b0\u09be\u09a8"
|
|
29
|
+
},
|
|
30
|
+
"newChatDialog": {
|
|
31
|
+
"createNewChat": "\u09a8\u09a4\u09c1\u09a8 \u099a\u09cd\u09af\u09be\u099f \u09a4\u09c8\u09b0\u09bf \u0995\u09b0\u09ac\u09c7\u09a8?",
|
|
32
|
+
"clearChat": "\u098f\u099f\u09bf \u09ac\u09b0\u09cd\u09a4\u09ae\u09be\u09a8 \u09ac\u09be\u09b0\u09cd\u09a4\u09be\u0997\u09c1\u09b2\u09bf \u09b8\u09be\u09ab \u0995\u09b0\u09ac\u09c7 \u098f\u09ac\u0982 \u098f\u0995\u099f\u09bf \u09a8\u09a4\u09c1\u09a8 \u099a\u09cd\u09af\u09be\u099f \u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09ac\u09c7\u0964",
|
|
33
|
+
"cancel": "\u09ac\u09be\u09a4\u09bf\u09b2",
|
|
34
|
+
"confirm": "\u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4"
|
|
35
|
+
},
|
|
36
|
+
"settingsModal": {
|
|
37
|
+
"settings": "\u09b8\u09c7\u099f\u09bf\u0982\u09b8",
|
|
38
|
+
"expandMessages": "\u09ac\u09be\u09b0\u09cd\u09a4\u09be\u0997\u09c1\u09b2\u09bf \u09aa\u09cd\u09b0\u09b8\u09be\u09b0\u09bf\u09a4 \u0995\u09b0\u09c1\u09a8",
|
|
39
|
+
"hideChainOfThought": "\u099a\u09bf\u09a8\u09cd\u09a4\u09be\u09b0 \u09b6\u09c3\u0999\u09cd\u0996\u09b2 \u09b2\u09c1\u0995\u09be\u09a8",
|
|
40
|
+
"darkMode": "\u09a1\u09be\u09b0\u09cd\u0995 \u09ae\u09cb\u09a1"
|
|
41
|
+
},
|
|
42
|
+
"detailsButton": {
|
|
43
|
+
"using": "\u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0",
|
|
44
|
+
"running": "\u099a\u09b2\u09ae\u09be\u09a8",
|
|
45
|
+
"took_one": "{{count}} \u09aa\u09a6\u0995\u09cd\u09b7\u09c7\u09aa \u09a8\u09bf\u09af\u09bc\u09c7\u099b\u09c7",
|
|
46
|
+
"took_other": "{{count}}\u099f\u09bf \u09aa\u09a6\u0995\u09cd\u09b7\u09c7\u09aa \u09a8\u09bf\u09af\u09bc\u09c7\u099b\u09c7"
|
|
47
|
+
},
|
|
48
|
+
"auth": {
|
|
49
|
+
"authLogin": {
|
|
50
|
+
"title": "\u0985\u09cd\u09af\u09be\u09aa\u099f\u09bf \u0985\u09cd\u09af\u09be\u0995\u09cd\u09b8\u09c7\u09b8 \u0995\u09b0\u09a4\u09c7 \u09b2\u0997\u0987\u09a8 \u0995\u09b0\u09c1\u09a8\u0964",
|
|
51
|
+
"form": {
|
|
52
|
+
"email": "\u0987-\u09ae\u09c7\u0987\u09b2 \u09a0\u09bf\u0995\u09be\u09a8\u09be",
|
|
53
|
+
"password": "\u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1",
|
|
54
|
+
"noAccount": "\u0995\u09cb\u09a8\u0993 \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f \u09a8\u09c7\u0987?",
|
|
55
|
+
"alreadyHaveAccount": "\u0987\u09a4\u09bf\u09ae\u09a7\u09cd\u09af\u09c7 \u098f\u0995\u099f\u09bf \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f \u0986\u099b\u09c7?",
|
|
56
|
+
"signup": "\u09b8\u09be\u0987\u09a8 \u0986\u09aa \u0995\u09b0\u09cb",
|
|
57
|
+
"signin": "\u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09cb",
|
|
58
|
+
"or": "\u09ac\u09be",
|
|
59
|
+
"continue": "\u0985\u09ac\u09bf\u09b0\u09a4",
|
|
60
|
+
"forgotPassword": "\u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 \u09ad\u09c1\u09b2\u09c7 \u0997\u09c7\u099b\u09c7\u09a8?",
|
|
61
|
+
"passwordMustContain": "\u0986\u09aa\u09a8\u09be\u09b0 \u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1\u09c7 \u0985\u09ac\u09b6\u09cd\u09af\u0987 \u09a5\u09be\u0995\u09a4\u09c7 \u09b9\u09ac\u09c7:",
|
|
62
|
+
"emailRequired": "\u0987\u09ae\u09c7\u09b2 \u098f\u0995\u099f\u09bf \u09aa\u09cd\u09b0\u09af\u09bc\u09cb\u099c\u09a8\u09c0\u09af\u09bc \u0995\u09cd\u09b7\u09c7\u09a4\u09cd\u09b0",
|
|
63
|
+
"passwordRequired": "\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"
|
|
64
|
+
},
|
|
65
|
+
"error": {
|
|
66
|
+
"default": "\u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09a4\u09c7 \u0985\u0995\u09cd\u09b7\u09ae\u0964",
|
|
67
|
+
"signin": "\u098f\u0995\u099f\u09bf \u09ad\u09bf\u09a8\u09cd\u09a8 \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\u0964",
|
|
68
|
+
"oauthsignin": "\u098f\u0995\u099f\u09bf \u09ad\u09bf\u09a8\u09cd\u09a8 \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\u0964",
|
|
69
|
+
"redirect_uri_mismatch": "\u09aa\u09c1\u09a8\u0983\u09a8\u09bf\u09b0\u09cd\u09a6\u09c7\u09b6\u09bf\u09a4 URI OAUTH \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\u0964",
|
|
70
|
+
"oauthcallbackerror": "\u098f\u0995\u099f\u09bf \u09ad\u09bf\u09a8\u09cd\u09a8 \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\u0964",
|
|
71
|
+
"oauthcreateaccount": "\u098f\u0995\u099f\u09bf \u09ad\u09bf\u09a8\u09cd\u09a8 \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\u0964",
|
|
72
|
+
"emailcreateaccount": "\u098f\u0995\u099f\u09bf \u09ad\u09bf\u09a8\u09cd\u09a8 \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\u0964",
|
|
73
|
+
"callback": "\u098f\u0995\u099f\u09bf \u09ad\u09bf\u09a8\u09cd\u09a8 \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\u0964",
|
|
74
|
+
"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 \u09ae\u09c2\u09b2\u09a4 \u09af\u09c7 \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f\u099f\u09bf \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09c7\u099b\u09c7\u09a8 \u09b8\u09c7\u0987 \u098f\u0995\u0987 \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f \u09a6\u09bf\u09af\u09bc\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09c1\u09a8\u0964",
|
|
75
|
+
"emailsignin": "\u0987-\u09ae\u09c7\u0987\u09b2\u099f\u09bf \u09aa\u09cd\u09b0\u09c7\u09b0\u09a3 \u0995\u09b0\u09be \u09af\u09be\u09af\u09bc\u09a8\u09bf\u0964",
|
|
76
|
+
"emailverify": "\u0985\u09a8\u09c1\u0997\u09cd\u09b0\u09b9 \u0995\u09b0\u09c7 \u0986\u09aa\u09a8\u09be\u09b0 \u0987\u09ae\u09c7\u09b2\u099f\u09bf \u09af\u09be\u099a\u09be\u0987 \u0995\u09b0\u09c1\u09a8, \u098f\u0995\u099f\u09bf \u09a8\u09a4\u09c1\u09a8 \u0987\u09ae\u09c7\u09b2 \u09aa\u09cd\u09b0\u09c7\u09b0\u09a3 \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7\u0964",
|
|
77
|
+
"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 \u09aa\u09cd\u09b0\u09a6\u09a4\u09cd\u09a4 \u09ac\u09bf\u09ac\u09b0\u09a3\u0997\u09c1\u09b2\u09bf \u09b8\u09a0\u09bf\u0995 \u0995\u09bf\u09a8\u09be \u09a4\u09be \u09aa\u09b0\u09c0\u0995\u09cd\u09b7\u09be \u0995\u09b0\u09c1\u09a8\u0964",
|
|
78
|
+
"sessionrequired": "\u098f\u0987 \u09aa\u09c3\u09b7\u09cd\u09a0\u09be\u099f\u09bf \u0985\u09cd\u09af\u09be\u0995\u09cd\u09b8\u09c7\u09b8 \u0995\u09b0\u09a4\u09c7 \u09a6\u09af\u09bc\u09be \u0995\u09b0\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09c1\u09a8\u0964"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"authVerifyEmail": {
|
|
82
|
+
"almostThere": "\u0986\u09aa\u09a8\u09bf \u09aa\u09cd\u09b0\u09be\u09af\u09bc \u09b8\u09c7\u0996\u09be\u09a8\u09c7 \u09aa\u09cc\u0981\u099b\u09c7\u099b\u09c7\u09a8! \u0986\u09ae\u09b0\u09be \u098f\u0995\u099f\u09bf \u0987\u09ae\u09c7\u0987\u09b2 \u09aa\u09be\u09a0\u09bf\u09af\u09bc\u09c7\u099b\u09bf ",
|
|
83
|
+
"verifyEmailLink": "\u0986\u09aa\u09a8\u09be\u09b0 \u09b8\u09be\u0987\u09a8\u0986\u09aa \u09b8\u09ae\u09cd\u09aa\u09c2\u09b0\u09cd\u09a3 \u0995\u09b0\u09a4\u09c7 \u09a6\u09af\u09bc\u09be \u0995\u09b0\u09c7 \u09b8\u09c7\u0987 \u0987\u09ae\u09c7\u09b2\u09c7\u09b0 \u09b2\u09bf\u0999\u09cd\u0995\u099f\u09bf\u09a4\u09c7 \u0995\u09cd\u09b2\u09bf\u0995 \u0995\u09b0\u09c1\u09a8\u0964",
|
|
84
|
+
"didNotReceive": "\u0987\u09ae\u09c7\u0987\u09b2 \u0996\u09c1\u0981\u099c\u09c7 \u09aa\u09be\u099a\u09cd\u099b\u09c7\u09a8 \u09a8\u09be?",
|
|
85
|
+
"resendEmail": "\u0987\u09ae\u09c7\u0987\u09b2 \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u09aa\u09be\u09a0\u09be\u09a8",
|
|
86
|
+
"goBack": "\u09ab\u09bf\u09b0\u09c7 \u09af\u09be\u0993",
|
|
87
|
+
"emailSent": "\u0987\u09ae\u09c7\u09b2 \u09b8\u09ab\u09b2\u09ad\u09be\u09ac\u09c7 \u09aa\u09be\u09a0\u09be\u09a8\u09cb \u09b9\u09af\u09bc\u09c7\u099b\u09c7\u0964",
|
|
88
|
+
"verifyEmail": "\u0986\u09aa\u09a8\u09be\u09b0 \u0987\u09ae\u09c7\u09b2 \u09a0\u09bf\u0995\u09be\u09a8\u09be \u09af\u09be\u099a\u09be\u0987 \u0995\u09b0\u09c1\u09a8"
|
|
89
|
+
},
|
|
90
|
+
"providerButton": {
|
|
91
|
+
"continue": "{{provider}} \u09a6\u09bf\u09af\u09bc\u09c7 \u099a\u09be\u09b2\u09bf\u09af\u09bc\u09c7 \u09af\u09be\u09a8",
|
|
92
|
+
"signup": "{{provider}} \u09a6\u09bf\u09af\u09bc\u09c7 \u09b8\u09be\u0987\u09a8 \u0986\u09aa \u0995\u09b0\u09c1\u09a8"
|
|
93
|
+
},
|
|
94
|
+
"authResetPassword": {
|
|
95
|
+
"newPasswordRequired": "\u09a8\u09a4\u09c1\u09a8 \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",
|
|
96
|
+
"passwordsMustMatch": "\u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 \u0985\u09ac\u09b6\u09cd\u09af\u0987 \u09ae\u09bf\u09b2\u09a4\u09c7 \u09b9\u09ac\u09c7",
|
|
97
|
+
"confirmPasswordRequired": "\u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 \u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u0995\u09b0\u09be \u098f\u0995\u099f\u09bf \u0986\u09ac\u09b6\u09cd\u09af\u0995 \u0995\u09cd\u09b7\u09c7\u09a4\u09cd\u09b0",
|
|
98
|
+
"newPassword": "\u09a8\u09a4\u09c1\u09a8 \u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1",
|
|
99
|
+
"confirmPassword": "\u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 \u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u0995\u09b0\u09c1\u09a8",
|
|
100
|
+
"resetPassword": "\u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 \u09b0\u09bf\u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8"
|
|
101
|
+
},
|
|
102
|
+
"authForgotPassword": {
|
|
103
|
+
"email": "\u0987-\u09ae\u09c7\u0987\u09b2 \u09a0\u09bf\u0995\u09be\u09a8\u09be",
|
|
104
|
+
"emailRequired": "\u0987\u09ae\u09c7\u09b2 \u098f\u0995\u099f\u09bf \u09aa\u09cd\u09b0\u09af\u09bc\u09cb\u099c\u09a8\u09c0\u09af\u09bc \u0995\u09cd\u09b7\u09c7\u09a4\u09cd\u09b0",
|
|
105
|
+
"emailSent": "\u0986\u09aa\u09a8\u09be\u09b0 \u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1\u099f\u09bf \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u09b8\u09c7\u099f \u0995\u09b0\u09be\u09b0 \u09a8\u09bf\u09b0\u09cd\u09a6\u09c7\u09b6\u09be\u09ac\u09b2\u09c0\u09b0 \u099c\u09a8\u09cd\u09af \u09a6\u09af\u09bc\u09be \u0995\u09b0\u09c7 \u0987\u09ae\u09c7\u09b2 \u09a0\u09bf\u0995\u09be\u09a8\u09be {{email}} \u09aa\u09b0\u09c0\u0995\u09cd\u09b7\u09be \u0995\u09b0\u09c1\u09a8\u0964",
|
|
106
|
+
"enterEmail": "\u0986\u09aa\u09a8\u09be\u09b0 \u0987\u09ae\u09c7\u09b2 \u09a0\u09bf\u0995\u09be\u09a8\u09be \u09b2\u09bf\u0996\u09c1\u09a8 \u098f\u09ac\u0982 \u0986\u09ae\u09b0\u09be \u0986\u09aa\u09a8\u09be\u0995\u09c7 \u0986\u09aa\u09a8\u09be\u09b0 \u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u09b8\u09c7\u099f \u0995\u09b0\u09a4\u09c7 \u09a8\u09bf\u09b0\u09cd\u09a6\u09c7\u09b6\u09be\u09ac\u09b2\u09c0 \u09aa\u09be\u09a0\u09be\u09ac\u0964",
|
|
107
|
+
"resendEmail": "\u0987\u09ae\u09c7\u0987\u09b2 \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u09aa\u09be\u09a0\u09be\u09a8",
|
|
108
|
+
"continue": "\u0985\u09ac\u09bf\u09b0\u09a4",
|
|
109
|
+
"goBack": "\u09ab\u09bf\u09b0\u09c7 \u09af\u09be\u0993"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"organisms": {
|
|
114
|
+
"chat": {
|
|
115
|
+
"history": {
|
|
116
|
+
"index": {
|
|
117
|
+
"showHistory": "\u0987\u09a4\u09bf\u09b9\u09be\u09b8 \u09a6\u09c7\u0996\u09be\u09a8",
|
|
118
|
+
"lastInputs": "\u09b8\u09b0\u09cd\u09ac\u09b6\u09c7\u09b7 \u0987\u09a8\u09aa\u09c1\u099f",
|
|
119
|
+
"noInputs": "\u098f\u09a4 \u09ab\u09be\u0981\u0995\u09be...",
|
|
120
|
+
"loading": "\u09b2\u09cb\u09a1\u0964\u0964\u0964"
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"inputBox": {
|
|
124
|
+
"input": {
|
|
125
|
+
"placeholder": "\u098f\u0996\u09be\u09a8\u09c7 \u0986\u09aa\u09a8\u09be\u09b0 \u09ac\u09be\u09b0\u09cd\u09a4\u09be \u099f\u09be\u0987\u09aa \u0995\u09b0\u09c1\u09a8..."
|
|
126
|
+
},
|
|
127
|
+
"speechButton": {
|
|
128
|
+
"start": "\u09b0\u09c7\u0995\u09b0\u09cd\u09a1\u09bf\u0982 \u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09c1\u09a8",
|
|
129
|
+
"stop": "\u09b0\u09c7\u0995\u09b0\u09cd\u09a1\u09bf\u0982 \u09ac\u09a8\u09cd\u09a7 \u0995\u09b0\u09c1\u09a8"
|
|
130
|
+
},
|
|
131
|
+
"SubmitButton": {
|
|
132
|
+
"sendMessage": "\u09ac\u09be\u09b0\u09cd\u09a4\u09be \u09aa\u09cd\u09b0\u09c7\u09b0\u09a3 \u0995\u09b0\u09c1\u09a8",
|
|
133
|
+
"stopTask": "\u09b8\u09cd\u099f\u09aa \u099f\u09be\u09b8\u09cd\u0995"
|
|
134
|
+
},
|
|
135
|
+
"UploadButton": {
|
|
136
|
+
"attachFiles": "\u09ab\u09be\u0987\u09b2 \u09b8\u0982\u09af\u09c1\u0995\u09cd\u09a4 \u0995\u09b0\u09c1\u09a8"
|
|
137
|
+
},
|
|
138
|
+
"waterMark": {
|
|
139
|
+
"text": "\u09b8\u0999\u09cd\u0997\u09c7 \u09a8\u09bf\u09b0\u09cd\u09ae\u09bf\u09a4"
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
"Messages": {
|
|
143
|
+
"index": {
|
|
144
|
+
"running": "\u099a\u09b2\u09ae\u09be\u09a8",
|
|
145
|
+
"executedSuccessfully": "\u09b8\u09ab\u09b2\u09ad\u09be\u09ac\u09c7 \u09b8\u09ae\u09cd\u09aa\u09be\u09a6\u09bf\u09a4 \u09b9\u09af\u09bc\u09c7\u099b\u09c7",
|
|
146
|
+
"failed": "\u09ac\u09cd\u09af\u09b0\u09cd\u09a5",
|
|
147
|
+
"feedbackUpdated": "\u09ab\u09bf\u09a1\u09ac\u09cd\u09af\u09be\u0995 \u0986\u09aa\u09a1\u09c7\u099f \u09b9\u09af\u09bc\u09c7\u099b\u09c7",
|
|
148
|
+
"updating": "\u0986\u09a7\u09c1\u09a8\u09bf\u0995\u09c0\u0995\u09b0\u09a3"
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"dropScreen": {
|
|
152
|
+
"dropYourFilesHere": "\u0986\u09aa\u09a8\u09be\u09b0 \u09ab\u09be\u0987\u09b2\u0997\u09c1\u09b2\u09bf \u098f\u0996\u09be\u09a8\u09c7 \u09ab\u09c7\u09b2\u09c7 \u09a6\u09bf\u09a8"
|
|
153
|
+
},
|
|
154
|
+
"index": {
|
|
155
|
+
"failedToUpload": "\u0986\u09aa\u09b2\u09cb\u09a1 \u0995\u09b0\u09a4\u09c7 \u09ac\u09cd\u09af\u09b0\u09cd\u09a5 \u09b9\u09af\u09bc\u09c7\u099b\u09c7",
|
|
156
|
+
"cancelledUploadOf": "\u098f\u09b0 \u0986\u09aa\u09b2\u09cb\u09a1 \u09ac\u09be\u09a4\u09bf\u09b2",
|
|
157
|
+
"couldNotReachServer": "\u09b8\u09be\u09b0\u09cd\u09ad\u09be\u09b0\u09c7 \u09aa\u09cc\u0981\u099b\u09be\u09a8\u09cb \u09af\u09be\u09af\u09bc\u09a8\u09bf",
|
|
158
|
+
"continuingChat": "\u09aa\u09c2\u09b0\u09cd\u09ac\u09ac\u09b0\u09cd\u09a4\u09c0 \u099a\u09cd\u09af\u09be\u099f \u0985\u09ac\u09bf\u09b0\u09a4 \u09b0\u09be\u0996\u09be"
|
|
159
|
+
},
|
|
160
|
+
"settings": {
|
|
161
|
+
"settingsPanel": "\u09b8\u09c7\u099f\u09bf\u0982\u09b8 \u09aa\u09cd\u09af\u09be\u09a8\u09c7\u09b2",
|
|
162
|
+
"reset": "\u09b0\u09bf\u09b8\u09c7\u099f",
|
|
163
|
+
"cancel": "\u09ac\u09be\u09a4\u09bf\u09b2",
|
|
164
|
+
"confirm": "\u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4"
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
"threadHistory": {
|
|
168
|
+
"sidebar": {
|
|
169
|
+
"filters": {
|
|
170
|
+
"FeedbackSelect": {
|
|
171
|
+
"feedbackAll": "\u09aa\u09cd\u09b0\u09a4\u09bf\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be: \u09b8\u09ac",
|
|
172
|
+
"feedbackPositive": "\u09aa\u09cd\u09b0\u09a4\u09bf\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be: \u0987\u09a4\u09bf\u09ac\u09be\u099a\u0995",
|
|
173
|
+
"feedbackNegative": "\u09aa\u09cd\u09b0\u09a4\u09bf\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be: \u09a8\u09c7\u09a4\u09bf\u09ac\u09be\u099a\u0995"
|
|
174
|
+
},
|
|
175
|
+
"SearchBar": {
|
|
176
|
+
"search": "\u09b8\u09a8\u09cd\u09a7\u09be\u09a8"
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
"DeleteThreadButton": {
|
|
180
|
+
"confirmMessage": "\u098f\u099f\u09bf \u09a5\u09cd\u09b0\u09c7\u09a1\u09c7\u09b0 \u09aa\u09be\u09b6\u09be\u09aa\u09be\u09b6\u09bf \u098f\u09b0 \u09ac\u09be\u09b0\u09cd\u09a4\u09be \u098f\u09ac\u0982 \u0989\u09aa\u09be\u09a6\u09be\u09a8\u0997\u09c1\u09b2\u09bf\u0993 \u09ae\u09c1\u099b\u09c7 \u09ab\u09c7\u09b2\u09ac\u09c7\u0964",
|
|
181
|
+
"cancel": "\u09ac\u09be\u09a4\u09bf\u09b2",
|
|
182
|
+
"confirm": "\u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4",
|
|
183
|
+
"deletingChat": "\u099a\u09cd\u09af\u09be\u099f \u09ae\u09cb\u099b\u09be \u09b9\u099a\u09cd\u099b\u09c7",
|
|
184
|
+
"chatDeleted": "\u099a\u09cd\u09af\u09be\u099f \u09ae\u09cb\u099b\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7"
|
|
185
|
+
},
|
|
186
|
+
"index": {
|
|
187
|
+
"pastChats": "\u0985\u09a4\u09c0\u09a4 \u099a\u09cd\u09af\u09be\u099f"
|
|
188
|
+
},
|
|
189
|
+
"ThreadList": {
|
|
190
|
+
"empty": "\u0996\u09be\u09b2\u09bf\u0964\u0964\u0964",
|
|
191
|
+
"today": "\u0986\u099c",
|
|
192
|
+
"yesterday": "\u0997\u09a4\u0995\u09be\u09b2",
|
|
193
|
+
"previous7days": "Previous 7 \u09a6\u09bf\u09a8",
|
|
194
|
+
"previous30days": "\u09aa\u09c2\u09b0\u09cd\u09ac\u09ac\u09b0\u09cd\u09a4\u09c0 30 \u09a6\u09bf\u09a8"
|
|
195
|
+
},
|
|
196
|
+
"TriggerButton": {
|
|
197
|
+
"closeSidebar": "\u09b8\u09be\u0987\u09a1\u09ac\u09be\u09b0 \u09ac\u09a8\u09cd\u09a7 \u0995\u09b0\u09c1\u09a8",
|
|
198
|
+
"openSidebar": "\u09b8\u09be\u0987\u09a1\u09ac\u09be\u09b0 \u0996\u09c1\u09b2\u09c1\u09a8"
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
"Thread": {
|
|
202
|
+
"backToChat": "\u099a\u09cd\u09af\u09be\u099f\u09c7 \u09ab\u09bf\u09b0\u09c7 \u09af\u09be\u09a8",
|
|
203
|
+
"chatCreatedOn": "\u098f\u0987 \u099a\u09cd\u09af\u09be\u099f\u099f\u09bf \u09a4\u09c8\u09b0\u09bf \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09bf\u09b2"
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
"header": {
|
|
207
|
+
"chat": "\u0986\u09b2\u09be\u09aa",
|
|
208
|
+
"readme": "\u09b0\u09bf\u09a1\u09ae\u09bf"
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
"hooks": {
|
|
213
|
+
"useLLMProviders": {
|
|
214
|
+
"failedToFetchProviders": "\u09b8\u09b0\u09ac\u09b0\u09be\u09b9\u0995\u09be\u09b0\u09c0\u09a6\u09c7\u09b0 \u0986\u09a8\u09a4\u09c7 \u09ac\u09cd\u09af\u09b0\u09cd\u09a5:"
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
"pages": {
|
|
218
|
+
"Design": {},
|
|
219
|
+
"Env": {
|
|
220
|
+
"savedSuccessfully": "\u09b8\u09ab\u09b2\u09ad\u09be\u09ac\u09c7 \u09b8\u0982\u09b0\u0995\u09cd\u09b7\u09a3 \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7",
|
|
221
|
+
"requiredApiKeys": "\u0986\u09ac\u09b6\u09cd\u09af\u0995 API \u0995\u09c0",
|
|
222
|
+
"requiredApiKeysInfo": "\u098f\u0987 \u0985\u09cd\u09af\u09be\u09aa\u099f\u09bf \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09a4\u09c7, \u09a8\u09bf\u09ae\u09cd\u09a8\u09b2\u09bf\u0996\u09bf\u09a4 API \u0995\u09c0\u0997\u09c1\u09b2\u09bf\u09b0 \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 \u09b8\u09cd\u09a5\u09be\u09a8\u09c0\u09af\u09bc \u09b8\u09cd\u099f\u09cb\u09b0\u09c7\u099c\u09c7 \u09b8\u099e\u09cd\u099a\u09bf\u09a4 \u09b0\u09af\u09bc\u09c7\u099b\u09c7\u0964"
|
|
223
|
+
},
|
|
224
|
+
"Page": {
|
|
225
|
+
"notPartOfProject": "\u0986\u09aa\u09a8\u09bf \u098f\u0987 \u09aa\u09cd\u09b0\u0995\u09b2\u09cd\u09aa\u09c7\u09b0 \u0985\u0982\u09b6 \u09a8\u09a8\u0964"
|
|
226
|
+
},
|
|
227
|
+
"ResumeButton": {
|
|
228
|
+
"resumeChat": "\u099a\u09cd\u09af\u09be\u099f \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09c1\u09a8"
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|