diff --git a/telegram-agy-bot/formatters.py b/telegram-agy-bot/formatters.py
index 90a611a..14873df 100644
--- a/telegram-agy-bot/formatters.py
+++ b/telegram-agy-bot/formatters.py
@@ -218,86 +218,79 @@ def format_tool_call(tool_name: str, tool_args: Any, lang: str = "fa") -> str:
# Tool specific highlights
if tool_name == "run_command":
cmd = params.get("CommandLine", "")
- target = f"💻 {escape_html(cmd[:120])}" if cmd else ""
- elif tool_name == "write_to_file":
+ target = escape_html(cmd[:120]) if cmd else ""
+ elif tool_name in ("write_to_file", "replace_file_content"):
file_p = params.get("TargetFile", "")
instr = params.get("Instruction", "")
if file_p:
- target = f"📝 {escape_html(Path(file_p).name if '/' in file_p else file_p)}"
- if instr and not action:
- action = instr[:100]
- elif tool_name == "replace_file_content":
- file_p = params.get("TargetFile", "")
- instr = params.get("Instruction", "")
- if file_p:
- target = f"✏️ {escape_html(Path(file_p).name if '/' in file_p else file_p)}"
+ target = escape_html(Path(file_p).name if "/" in file_p else file_p)
if instr and not action:
action = instr[:100]
elif tool_name in ("view_file", "view_image"):
file_p = params.get("AbsolutePath", "")
if file_p:
- target = f"👁️ {escape_html(Path(file_p).name if '/' in file_p else file_p)}"
+ target = escape_html(Path(file_p).name if "/" in file_p else file_p)
elif tool_name == "list_dir":
dir_p = params.get("DirectoryPath", "")
if dir_p:
- target = f"📂 {escape_html(dir_p[:80])}"
+ target = escape_html(dir_p[:80])
elif tool_name == "grep_search":
q = params.get("Query", "")
if q:
- target = f"🔍 {escape_html(q[:80])}"
+ target = escape_html(q[:80])
elif tool_name == "find_by_name":
pat = params.get("Pattern", "")
if pat:
- target = f"📁 {escape_html(pat[:80])}"
+ target = escape_html(pat[:80])
elif tool_name == "search_web":
q = params.get("query", "")
if q:
- target = f"🌐 {escape_html(q[:80])}"
+ target = escape_html(q[:80])
elif tool_name == "read_url_content":
u = params.get("Url", "")
if u:
- target = f"🔗 {escape_html(u[:80])}"
+ target = escape_html(u[:80])
elif tool_name == "generate_image":
p = params.get("Prompt", "")
if p:
- target = f"🎨 {escape_html(p[:80])}"
+ target = escape_html(p[:80])
elif tool_name == "schedule":
timing = params.get("CronExpression") or (f"{params.get('DurationSeconds')}s" if params.get("DurationSeconds") else "") or params.get("Prompt", "")
if timing:
- target = f"⏰ {escape_html(str(timing)[:80])}"
+ target = escape_html(str(timing)[:80])
elif tool_name == "manage_task":
act = params.get("Action", "")
tid = params.get("TaskId", "")
- target = f"⚙️ {escape_html(act)} {escape_html(tid)}"
+ target = f"{escape_html(act)} {escape_html(tid)}".strip()
elif tool_name == "invoke_subagent":
subagents = params.get("Subagents", [])
roles = [s.get("Role", s.get("TypeName", "Agent")) for s in subagents if isinstance(s, dict)]
if roles:
- target = f"🤖 {escape_html(', '.join(roles)[:80])}"
+ target = escape_html(", ".join(roles)[:80])
elif tool_name == "define_subagent":
name = params.get("name", "")
if name:
- target = f"🧠 {escape_html(name[:80])}"
+ target = escape_html(name[:80])
elif tool_name == "manage_subagents":
act = params.get("Action", "")
- target = f"👥 {escape_html(act)}" if act else ""
+ target = escape_html(act) if act else ""
elif tool_name == "send_message":
msg = params.get("Message", "")
- target = f"💬 {escape_html(msg[:80])}" if msg else ""
+ target = escape_html(msg[:80]) if msg else ""
elif tool_name == "ask_question":
- target = "❓ درخواست تایید / سوال"
+ target = "درخواست تایید / سوال"
if not action and not target and isinstance(tool_args, str) and tool_args.strip():
# Fallback short string preview
short_args = tool_args.strip().replace("\n", " ")
if len(short_args) > 100:
short_args = short_args[:100] + "..."
- target = f"{escape_html(short_args)}"
+ target = escape_html(short_args)
action_text = f" ({escape_html(action)})" if action else ""
- out = f"{tool_emoji} {label}: {escape_html(tool_name)}{action_text}"
+ out = f"{label}: {escape_html(tool_name)} {tool_emoji}{action_text}"
if target:
- out += f"\n ↳ {target}"
+ out += f"\n ↳ {target}"
return out + "\n"
def markdown_to_telegram_html(text: str) -> str:
diff --git a/telegram-agy-bot/sessions.json b/telegram-agy-bot/sessions.json
index 6ee6fe2..92f4739 100644
--- a/telegram-agy-bot/sessions.json
+++ b/telegram-agy-bot/sessions.json
@@ -16,9 +16,9 @@
"model": "gemini-3.7-flash-auto",
"effort": "high",
"language": "fa",
- "last_context_length": 12547,
- "last_total_tokens": 138536,
- "last_response": "\u0642\u0627\u0644\u0628 \u0648 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0632\u0646\u062f\u0647 \u0627\u062c\u0631\u0627\u06cc \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u062f\u0631 \u0631\u0628\u0627\u062a \u062a\u0644\u06af\u0631\u0627\u0645 \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0627\u0633\u062a:\n\n---\n\n### \ud83e\udde9 \u0627\u062c\u0632\u0627 \u0648 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u0628\u0631\u0627\u06cc \u0647\u0631 \u0627\u0628\u0632\u0627\u0631:\n1. `{tool_emoji}` : \u0627\u06cc\u0645\u0648\u062c\u06cc \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0627\u0628\u0632\u0627\u0631 (\u0645\u062b\u0644\u0627\u064b \ud83d\udcbb \u06cc\u0627 \ud83d\udc41\ufe0f)\n2. `{label}` : \u0628\u0631\u0686\u0633\u0628 \u06a9\u0644\u0645\u0647 \u0627\u0628\u0632\u0627\u0631 (\u062f\u0631 \u0632\u0628\u0627\u0646 \u0641\u0627\u0631\u0633\u06cc: `\u0627\u0628\u0632\u0627\u0631` / \u062f\u0631 \u0632\u0628\u0627\u0646 \u0627\u0646\u06af\u0644\u06cc\u0633\u06cc: `Tool`)\n3. `{tool_name}` : \u0646\u0627\u0645 \u0633\u06cc\u0633\u062a\u0645\u06cc \u0627\u0628\u0632\u0627\u0631 (\u0645\u062b\u0644\u0627\u064b `run_command` \u06cc\u0627 `view_file`)\n4. `{action}` : \u062a\u0648\u0636\u06cc\u062d \u062e\u0644\u0627\u0635\u0647 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u0646\u062c\u0627\u0645 \u0627\u0633\u062a (\u0645\u062b\u0644\u0627\u064b: `\u0628\u0631\u0631\u0633\u06cc \u0641\u0627\u06cc\u0644 \u06a9\u0627\u0646\u0641\u06cc\u06af`)\n5. `{target}` : \u0645\u0642\u062f\u0627\u0631 \u0627\u0635\u0644\u06cc \u0648\u0631\u0648\u062f\u06cc \u0627\u0628\u0632\u0627\u0631 \u0645\u0627\u0646\u0646\u062f \u0646\u0627\u0645 \u0641\u0627\u06cc\u0644\u060c \u06a9\u0627\u0645\u0646\u062f \u06cc\u0627 \u06a9\u0648\u0626\u0631\u06cc (\u0645\u062b\u0644\u0627\u064b: `formatters.py`)\n\n---\n\n### \ud83d\udcd0 \u0633\u0627\u062e\u062a\u0627\u0631 \u0641\u0639\u0644\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0634\u062f\u0647 (\u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0645\u062b\u0627\u0644 \u062e\u0631\u0648\u062c\u06cc \u062a\u0644\u06af\u0631\u0627\u0645):\n\n**\u0642\u0627\u0644\u0628 \u0645\u062a\u0646\u06cc (Template):**\n```text\n{tool_emoji} {label}: {tool_name} ({action})\n \u21b3 {tool_emoji} {target}\n```\n\n**\u0646\u0645\u0648\u0646\u0647 \u062e\u0631\u0648\u062c\u06cc \u0648\u0627\u0642\u0639\u06cc \u062f\u0631 \u062a\u0644\u06af\u0631\u0627\u0645:**\n> \ud83d\udcbb **\u0627\u0628\u0632\u0627\u0631:** `run_command` (\u0628\u0631\u0631\u0633\u06cc \u067e\u0631\u062f\u0627\u0632\u0634\u200c\u0647\u0627\u06cc \u0633\u0631\u0648\u0631) \n> \u21b3 \ud83d\udcbb `ps aux | grep bot` \n> \n> \ud83d\udc41\ufe0f **\u0627\u0628\u0632\u0627\u0631:** `view_file` (\u0645\u0634\u0627\u0647\u062f\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0628\u0627\u062a) \n> \u21b3 \ud83d\udc41\ufe0f `formatters.py` \n> \n> \ud83d\udcdd **\u0627\u0628\u0632\u0627\u0631:** `write_to_file` (\u0633\u0627\u062e\u062a \u06a9\u0646\u062a\u0631\u0644\u0631 \u062c\u062f\u06cc\u062f) \n> \u21b3 \ud83d\udcdd `index.php` \n\n---\n\n### \u270d\ufe0f \u0642\u0627\u0644\u0628 \u062e\u0627\u0645 \u062c\u0647\u062a \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0648 \u0627\u0631\u0633\u0627\u0644 \u062a\u0648\u0633\u0637 \u0634\u0645\u0627:\n\n\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0627\u0632 \u062e\u0637\u200c\u0647\u0627\u060c \u0686\u06cc\u062f\u0645\u0627\u0646\u060c \u067e\u0631\u0627\u0646\u062a\u0632\u0647\u0627\u060c \u0627\u06cc\u0645\u0648\u062c\u06cc\u200c\u0647\u0627\u060c \u0628\u0648\u0644\u062f \u06cc\u0627 \u06a9\u062f \u0628\u0648\u062f\u0646\u060c \u06cc\u0627 \u062d\u062a\u06cc \u062a\u06a9\u200c\u062e\u0637\u06cc/\u062f\u0648\u062e\u0637\u06cc \u0628\u0648\u062f\u0646 \u0631\u0627 \u0637\u0628\u0642 \u0633\u0644\u06cc\u0642\u0647 \u062e\u0648\u062f \u062f\u0631 \u0628\u0627\u06a9\u0633 \u0632\u06cc\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0631\u062f\u0647 \u0648 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f:\n\n```text\n\u0642\u0627\u0644\u0628 \u062e\u0637 \u0627\u0648\u0644:\n{tool_emoji} {label}: {tool_name} ({action})\n\n\u0642\u0627\u0644\u0628 \u062e\u0637 \u062f\u0648\u0645 (\u062f\u0631 \u0635\u0648\u0631\u062a \u0648\u062c\u0648\u062f \u062a\u0627\u0631\u06af\u062a/\u0641\u0627\u06cc\u0644/\u06a9\u0627\u0645\u0646\u062f):\n \u21b3 {tool_emoji} {target}\n```\n\n*(\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u0627\u06af\u0631 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u06cc\u062f \u0628\u062f\u0648\u0646 \u06a9\u0644\u0645\u0647 \u00ab\u0627\u0628\u0632\u0627\u0631:\u00bb \u0628\u0627\u0634\u062f\u060c \u06cc\u0627 \u062f\u0631 \u06cc\u06a9 \u062e\u0637 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f\u060c \u06cc\u0627 \u0634\u06a9\u0644 \u0641\u0644\u0634 \u21b3 \u0639\u0648\u0636 \u0634\u0648\u062f\u060c \u06a9\u0627\u0641\u06cc\u0633\u062a \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0644\u062e\u0648\u0627\u0647\u062a\u0627\u0646 \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f \u062a\u0627 \u062f\u0642\u06cc\u0642\u0627\u064b \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u0645).*\n\n---\n\u2022 \u0646\u0627\u0645 \u067e\u0631\u0648\u0698\u0647: default\n\u2022 \u0622\u062f\u0631\u0633 \u0645\u062e\u0632\u0646: https://git.msa.artacloud.ir/root/default\n",
+ "last_context_length": 16995,
+ "last_total_tokens": 229565,
+ "last_response": "\u0642\u0627\u0644\u0628 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0634\u0645\u0627 \u062f\u0642\u06cc\u0642\u0627\u064b \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0641\u0631\u0645\u062a\u200c\u062f\u0647\u06cc \u0632\u0646\u062f\u0647 \u0631\u0628\u0627\u062a \u062a\u0644\u06af\u0631\u0627\u0645 \u0627\u0639\u0645\u0627\u0644 \u0634\u062f:\n\n### \ud83d\udcd0 \u0633\u0627\u062e\u062a\u0627\u0631 \u062c\u062f\u06cc\u062f:\n> **\u0627\u0628\u0632\u0627\u0631:** `run_command \ud83d\udcbb` (\u062a\u0648\u0636\u06cc\u062d \u0639\u0645\u0644\u06a9\u0631\u062f) \n> \u21b3 `ls -la` \n> \n> **\u0627\u0628\u0632\u0627\u0631:** `view_file \ud83d\udc41\ufe0f` \n> \u21b3 `formatters.py` \n\n\u062a\u06af \u0631\u06cc\u200c\u0627\u0633\u062a\u0627\u0631\u062a \u0631\u0628\u0627\u062a \u0627\u0631\u0633\u0627\u0644 \u0634\u062f \u062a\u0627 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0641\u0639\u0627\u0644 \u0634\u0648\u0646\u062f.\n\n[[RESTART_BOT]]\n\n---\n\u2022 \u0646\u0627\u0645 \u067e\u0631\u0648\u0698\u0647: default\n\u2022 \u0622\u062f\u0631\u0633 \u0645\u062e\u0632\u0646: https://git.msa.artacloud.ir/root/default\n",
"created_at": 1787995349.975879,
"description": "",
"conversation_titles": {
@@ -87,19 +87,19 @@
}
},
"turn_in_progress": false,
- "last_prompt": "\u062d\u0627\u0644\u0627 \u06cc\u0647 \u0641\u0631\u0645\u062a \u0628\u0631\u0627\u0645 \u0628\u0641\u0631\u0633\u062a \u06a9\u0647 \u062c\u0627\u06cc \u0627\u06cc\u0645\u0648\u062c\u06cc \u0647\u0631 \u0627\u0628\u0632\u0627\u0631 \u06a9\u062c\u0627\u0633\u062a \u0627\u0633\u0645\u0634 \u06a9\u062c\u0627\u0633\u062a \u0648 \u063a\u06cc\u0631\u0647 \u062a\u0627 \u0645\u0646 \u0648\u06cc\u0631\u0627\u06cc\u0634\u0634 \u06a9\u0646\u0645 \u0648 \u062a\u0648 \u062f\u0642\u06cc\u0642\u0627 \u0647\u0645\u0648\u0646 \u0642\u0627\u0644\u0628 \u0631\u0648 \u067e\u06cc\u0627\u062f\u0647 \u06a9\u0646\u06cc",
- "last_response": "\u0642\u0627\u0644\u0628 \u0648 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0632\u0646\u062f\u0647 \u0627\u062c\u0631\u0627\u06cc \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u062f\u0631 \u0631\u0628\u0627\u062a \u062a\u0644\u06af\u0631\u0627\u0645 \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0627\u0633\u062a:\n\n---\n\n### \ud83e\udde9 \u0627\u062c\u0632\u0627 \u0648 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u0628\u0631\u0627\u06cc \u0647\u0631 \u0627\u0628\u0632\u0627\u0631:\n1. `{tool_emoji}` : \u0627\u06cc\u0645\u0648\u062c\u06cc \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0627\u0628\u0632\u0627\u0631 (\u0645\u062b\u0644\u0627\u064b \ud83d\udcbb \u06cc\u0627 \ud83d\udc41\ufe0f)\n2. `{label}` : \u0628\u0631\u0686\u0633\u0628 \u06a9\u0644\u0645\u0647 \u0627\u0628\u0632\u0627\u0631 (\u062f\u0631 \u0632\u0628\u0627\u0646 \u0641\u0627\u0631\u0633\u06cc: `\u0627\u0628\u0632\u0627\u0631` / \u062f\u0631 \u0632\u0628\u0627\u0646 \u0627\u0646\u06af\u0644\u06cc\u0633\u06cc: `Tool`)\n3. `{tool_name}` : \u0646\u0627\u0645 \u0633\u06cc\u0633\u062a\u0645\u06cc \u0627\u0628\u0632\u0627\u0631 (\u0645\u062b\u0644\u0627\u064b `run_command` \u06cc\u0627 `view_file`)\n4. `{action}` : \u062a\u0648\u0636\u06cc\u062d \u062e\u0644\u0627\u0635\u0647 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u0646\u062c\u0627\u0645 \u0627\u0633\u062a (\u0645\u062b\u0644\u0627\u064b: `\u0628\u0631\u0631\u0633\u06cc \u0641\u0627\u06cc\u0644 \u06a9\u0627\u0646\u0641\u06cc\u06af`)\n5. `{target}` : \u0645\u0642\u062f\u0627\u0631 \u0627\u0635\u0644\u06cc \u0648\u0631\u0648\u062f\u06cc \u0627\u0628\u0632\u0627\u0631 \u0645\u0627\u0646\u0646\u062f \u0646\u0627\u0645 \u0641\u0627\u06cc\u0644\u060c \u06a9\u0627\u0645\u0646\u062f \u06cc\u0627 \u06a9\u0648\u0626\u0631\u06cc (\u0645\u062b\u0644\u0627\u064b: `formatters.py`)\n\n---\n\n### \ud83d\udcd0 \u0633\u0627\u062e\u062a\u0627\u0631 \u0641\u0639\u0644\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0634\u062f\u0647 (\u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0645\u062b\u0627\u0644 \u062e\u0631\u0648\u062c\u06cc \u062a\u0644\u06af\u0631\u0627\u0645):\n\n**\u0642\u0627\u0644\u0628 \u0645\u062a\u0646\u06cc (Template):**\n```text\n{tool_emoji} {label}: {tool_name} ({action})\n \u21b3 {tool_emoji} {target}\n```\n\n**\u0646\u0645\u0648\u0646\u0647 \u062e\u0631\u0648\u062c\u06cc \u0648\u0627\u0642\u0639\u06cc \u062f\u0631 \u062a\u0644\u06af\u0631\u0627\u0645:**\n> \ud83d\udcbb **\u0627\u0628\u0632\u0627\u0631:** `run_command` (\u0628\u0631\u0631\u0633\u06cc \u067e\u0631\u062f\u0627\u0632\u0634\u200c\u0647\u0627\u06cc \u0633\u0631\u0648\u0631) \n> \u21b3 \ud83d\udcbb `ps aux | grep bot` \n> \n> \ud83d\udc41\ufe0f **\u0627\u0628\u0632\u0627\u0631:** `view_file` (\u0645\u0634\u0627\u0647\u062f\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0628\u0627\u062a) \n> \u21b3 \ud83d\udc41\ufe0f `formatters.py` \n> \n> \ud83d\udcdd **\u0627\u0628\u0632\u0627\u0631:** `write_to_file` (\u0633\u0627\u062e\u062a \u06a9\u0646\u062a\u0631\u0644\u0631 \u062c\u062f\u06cc\u062f) \n> \u21b3 \ud83d\udcdd `index.php` \n\n---\n\n### \u270d\ufe0f \u0642\u0627\u0644\u0628 \u062e\u0627\u0645 \u062c\u0647\u062a \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0648 \u0627\u0631\u0633\u0627\u0644 \u062a\u0648\u0633\u0637 \u0634\u0645\u0627:\n\n\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0627\u0632 \u062e\u0637\u200c\u0647\u0627\u060c \u0686\u06cc\u062f\u0645\u0627\u0646\u060c \u067e\u0631\u0627\u0646\u062a\u0632\u0647\u0627\u060c \u0627\u06cc\u0645\u0648\u062c\u06cc\u200c\u0647\u0627\u060c \u0628\u0648\u0644\u062f \u06cc\u0627 \u06a9\u062f \u0628\u0648\u062f\u0646\u060c \u06cc\u0627 \u062d\u062a\u06cc \u062a\u06a9\u200c\u062e\u0637\u06cc/\u062f\u0648\u062e\u0637\u06cc \u0628\u0648\u062f\u0646 \u0631\u0627 \u0637\u0628\u0642 \u0633\u0644\u06cc\u0642\u0647 \u062e\u0648\u062f \u062f\u0631 \u0628\u0627\u06a9\u0633 \u0632\u06cc\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0631\u062f\u0647 \u0648 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f:\n\n```text\n\u0642\u0627\u0644\u0628 \u062e\u0637 \u0627\u0648\u0644:\n{tool_emoji} {label}: {tool_name} ({action})\n\n\u0642\u0627\u0644\u0628 \u062e\u0637 \u062f\u0648\u0645 (\u062f\u0631 \u0635\u0648\u0631\u062a \u0648\u062c\u0648\u062f \u062a\u0627\u0631\u06af\u062a/\u0641\u0627\u06cc\u0644/\u06a9\u0627\u0645\u0646\u062f):\n \u21b3 {tool_emoji} {target}\n```\n\n*(\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u0627\u06af\u0631 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u06cc\u062f \u0628\u062f\u0648\u0646 \u06a9\u0644\u0645\u0647 \u00ab\u0627\u0628\u0632\u0627\u0631:\u00bb \u0628\u0627\u0634\u062f\u060c \u06cc\u0627 \u062f\u0631 \u06cc\u06a9 \u062e\u0637 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f\u060c \u06cc\u0627 \u0634\u06a9\u0644 \u0641\u0644\u0634 \u21b3 \u0639\u0648\u0636 \u0634\u0648\u062f\u060c \u06a9\u0627\u0641\u06cc\u0633\u062a \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0644\u062e\u0648\u0627\u0647\u062a\u0627\u0646 \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f \u062a\u0627 \u062f\u0642\u06cc\u0642\u0627\u064b \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u0645).*\n\n---\n\u2022 \u0646\u0627\u0645 \u067e\u0631\u0648\u0698\u0647: default\n\u2022 \u0622\u062f\u0631\u0633 \u0645\u062e\u0632\u0646: https://git.msa.artacloud.ir/root/default\n",
+ "last_prompt": "{label}: {tool_name} {tool_emoji} ({action})\n\u00a0 \u21b3 {target}",
+ "last_response": "\u0642\u0627\u0644\u0628 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0634\u0645\u0627 \u062f\u0642\u06cc\u0642\u0627\u064b \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0641\u0631\u0645\u062a\u200c\u062f\u0647\u06cc \u0632\u0646\u062f\u0647 \u0631\u0628\u0627\u062a \u062a\u0644\u06af\u0631\u0627\u0645 \u0627\u0639\u0645\u0627\u0644 \u0634\u062f:\n\n### \ud83d\udcd0 \u0633\u0627\u062e\u062a\u0627\u0631 \u062c\u062f\u06cc\u062f:\n> **\u0627\u0628\u0632\u0627\u0631:** `run_command \ud83d\udcbb` (\u062a\u0648\u0636\u06cc\u062d \u0639\u0645\u0644\u06a9\u0631\u062f) \n> \u21b3 `ls -la` \n> \n> **\u0627\u0628\u0632\u0627\u0631:** `view_file \ud83d\udc41\ufe0f` \n> \u21b3 `formatters.py` \n\n\u062a\u06af \u0631\u06cc\u200c\u0627\u0633\u062a\u0627\u0631\u062a \u0631\u0628\u0627\u062a \u0627\u0631\u0633\u0627\u0644 \u0634\u062f \u062a\u0627 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0641\u0639\u0627\u0644 \u0634\u0648\u0646\u062f.\n\n[[RESTART_BOT]]\n\n---\n\u2022 \u0646\u0627\u0645 \u067e\u0631\u0648\u0698\u0647: default\n\u2022 \u0622\u062f\u0631\u0633 \u0645\u062e\u0632\u0646: https://git.msa.artacloud.ir/root/default\n",
"last_status_msg_id": null,
"restart_pending": false,
"last_delivered": true,
- "last_update_time": 1788096166.3349664,
+ "last_update_time": 1788096268.3567042,
"workspace": "/root",
"conversation_id": "fe6e374f-2ba1-41ca-9176-60a724029cfe",
"model": "gemini-3.7-flash-auto",
"effort": "high",
"language": "fa",
- "last_context_length": 12547,
- "last_total_tokens": 138536
+ "last_context_length": 16995,
+ "last_total_tokens": 229565
},
"232801087": {
"chat_id": 232801087,