diff --git a/.cache/Microsoft/DeveloperTools/.onnxruntime/onnxruntime.db b/.cache/Microsoft/DeveloperTools/.onnxruntime/onnxruntime.db index e7755aa..f455280 100644 Binary files a/.cache/Microsoft/DeveloperTools/.onnxruntime/onnxruntime.db and b/.cache/Microsoft/DeveloperTools/.onnxruntime/onnxruntime.db differ diff --git a/telegram-agy-bot/data/memory.db b/telegram-agy-bot/data/memory.db index f258d84..3c4e78f 100644 Binary files a/telegram-agy-bot/data/memory.db and b/telegram-agy-bot/data/memory.db differ diff --git a/telegram-agy-bot/sessions.json b/telegram-agy-bot/sessions.json index 4588478..f6f1403 100644 --- a/telegram-agy-bot/sessions.json +++ b/telegram-agy-bot/sessions.json @@ -19,9 +19,9 @@ "model": "gemini-3.7-flash-auto", "effort": "high", "language": "fa", - "last_context_length": 44953, - "last_total_tokens": 488556, - "last_response": "[[SAVE_MEMORY: type=\"user\", key=\"git_dual_branching_strategy\", category=\"rule\", content=\"\u062a\u0645\u0627\u0645 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u0647\u0645\u06cc\u0634\u0647 \u062f\u0648 \u0634\u0627\u062e\u0647 \u0627\u0635\u0644\u06cc dev (\u062a\u0648\u0633\u0639\u0647 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636) \u0648 production (\u0639\u0645\u0644\u06cc\u0627\u062a\u06cc) \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f. \u06a9\u0627\u0631\u0647\u0627\u06cc \u0631\u0648\u0632\u0645\u0631\u0647 \u0631\u0648\u06cc dev \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647 \u0648 \u062a\u0646\u0647\u0627 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u067e\u0627\u0628\u0644\u06cc\u0634 \u0628\u0647 production \u0645\u0631\u062c \u0648 \u067e\u0648\u0634 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.\"]]\n[[SAVE_MEMORY: type=\"user\", key=\"smart_ftp_deployment_rule\", category=\"rule\", content=\"\u062f\u06cc\u067e\u0644\u0648\u06cc FTP \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u0647\u0648\u0634\u0645\u0646\u062f \u0648 \u062a\u0645\u06cc\u0632 (Clean Deployment) \u0628\u0627\u0634\u062f\u061b \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0632\u0627\u0626\u062f\u060c \u0644\u0627\u06af\u200c\u0647\u0627\u060c \u06a9\u0634\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc .git\u060c \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0645\u062d\u0644\u06cc \u0648 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0633\u0634\u0646 \u0646\u0628\u0627\u06cc\u062f \u0628\u0647 \u0633\u0631\u0648\u0631 FTP \u0627\u0631\u0633\u0627\u0644 \u0634\u0648\u0646\u062f.\"]]\n[[RESTART_BOT]]\n\n\u062a\u0645\u0627\u0645\u06cc \u062a\u0633\u06a9\u200c\u0647\u0627 \u0648 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0634\u0645\u0627 \u0628\u0627 \u0628\u0627\u0644\u0627\u062a\u0631\u06cc\u0646 \u06a9\u06cc\u0641\u06cc\u062a\u060c \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u0647\u0627\u06cc \u0645\u0647\u0646\u062f\u0633\u06cc \u0648 \u062f\u0642\u062a \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647\u200c\u0633\u0627\u0632\u06cc \u0634\u062f\u0646\u062f:\n\n---\n\n### \ud83d\udee0\ufe0f \u06af\u0632\u0627\u0631\u0634 \u062c\u0627\u0645\u0639 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0648 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0634\u062f\u0647\n\n#### \u06f1. \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u062f\u0648 \u0634\u0627\u062e\u0647\u200c\u0627\u06cc \u06af\u06cc\u062a (`dev` \u0648 `production`)\n* **\u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u062f\u0648 \u0634\u0627\u062e\u0647\u200c\u0627\u06cc:** \u062f\u0631 \u0645\u062a\u062f `init_project_repo`\u060c \u0647\u0631 \u067e\u0631\u0648\u0698\u0647 \u0628\u0627 \u062f\u0648 \u0634\u0627\u062e\u0647 `production` (\u0634\u0627\u062e\u0647 \u067e\u0627\u06cc\u0647 \u0648 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc) \u0648 `dev` (\u0634\u0627\u062e\u0647 \u0641\u0639\u0627\u0644 \u062a\u0648\u0633\u0639\u0647) \u0627\u06cc\u062c\u0627\u062f \u0648 \u0628\u0647 Gitea \u067e\u0648\u0634 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0634\u0627\u062e\u0647 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u06a9\u0627\u0631\u06cc \u0647\u0645\u0648\u0627\u0631\u0647 `dev` \u0627\u0633\u062a.\n* **\u062a\u0648\u0633\u0639\u0647 \u0648 \u06a9\u0627\u0645\u06cc\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0631\u0648\u06cc `dev`:** \u062a\u0645\u0627\u0645\u06cc \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a\u060c \u06a9\u0627\u0645\u06cc\u062a\u200c\u0647\u0627 \u0648 \u0647\u0645\u06af\u0627\u0645\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0631\u0648\u0632\u0645\u0631\u0647 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0648 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648\u06cc \u0634\u0627\u062e\u0647 `dev` \u062b\u0628\u062a \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.\n* **\u0633\u06cc\u0633\u062a\u0645 \u0627\u0646\u062a\u0634\u0627\u0631 \u0648 \u0627\u062f\u063a\u0627\u0645 (`git_publish`):**\n * \u0645\u062a\u062f \u0627\u062e\u062a\u0635\u0627\u0635\u06cc `git_publish` \u0637\u0631\u0627\u062d\u06cc \u0634\u062f \u06a9\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0645\u0639\u0644\u0642 `dev` \u0631\u0627 \u06a9\u0627\u0645\u06cc\u062a \u06a9\u0631\u062f\u0647\u060c \u0634\u0627\u062e\u0647 `production` \u0631\u0627 \u062a\u062d\u0648\u06cc\u0644 \u06af\u0631\u0641\u062a\u0647\u060c \u0622\u062e\u0631\u06cc\u0646 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a `dev` \u0631\u0627 \u0628\u0627 `production` \u0645\u0631\u062c \u0646\u0645\u0648\u062f\u0647\u060c \u062f\u0631 Gitea \u067e\u0648\u0634 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0645\u062c\u062f\u062f\u0627\u064b \u0628\u0647 \u0634\u0627\u062e\u0647 `dev` \u0628\u0627\u0632\u0645\u06cc\u200c\u06af\u0631\u062f\u062f.\n * \u062f\u0633\u062a\u0648\u0631 \u062a\u0644\u06af\u0631\u0627\u0645\u06cc \u062c\u062f\u06cc\u062f `/publish` \u0648 \u0627\u06a9\u0634\u0646\u200c\u062a\u06af `[[GIT_PUBLISH: project=\"...\"]]` \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0646\u062f.\n\n---\n\n#### \u06f2. \u0645\u0627\u0698\u0648\u0644 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0647\u0648\u0634\u0645\u0646\u062f \u0648 \u062a\u0645\u06cc\u0632 FTP (`ftp_manager.py`)\n* **\u0641\u06cc\u0644\u062a\u0631 \u0647\u0648\u0634\u0645\u0646\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc (Clean AI Deployment):**\n * \u0644\u06cc\u0633\u062a \u0641\u06cc\u0644\u062a\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u062c\u0627\u0645\u0639 \u0634\u0627\u0645\u0644:\n * \u0645\u062e\u0632\u0646 \u0648 \u0645\u062a\u0627\u062f\u06cc\u062a\u0627\u06cc \u06af\u06cc\u062a: `.git/`\u060c `.gitignore`\u060c `.gitattributes`\n * \u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u0648 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062d\u0644\u06cc: `.env*`\u060c `*.pem`\u060c `*.key`\n * \u062f\u06cc\u062a\u0627\u06cc \u0645\u0648\u0642\u062a \u0648 \u0633\u0634\u0646\u200c\u0647\u0627: `sessions_data/`\u060c `uploads_temp/`\u060c `.agents/`\u060c `.gemini/`\n * \u06a9\u0634 \u0648 \u0628\u06cc\u0644\u062f\u0647\u0627: `__pycache__/`\u060c `*.pyc`\u060c `.venv/`\u060c `node_modules/`\n * \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645\u06cc \u0648 \u0644\u0627\u06af: `*.log`\u060c `.DS_Store`\u060c `Thumbs.db`\u060c `.idea/`\u060c `.vscode/`\n* **\u0645\u062f\u06cc\u0631\u06cc\u062a \u0633\u0627\u062e\u062a\u0627\u0631 \u0631\u06cc\u0645\u0648\u062a \u0648 \u0622\u067e\u0644\u0648\u062f \u0647\u0648\u0634\u0645\u0646\u062f:**\n * \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc\u200c\u0647\u0627\u06cc \u062a\u0648 \u062f\u0631 \u062a\u0648 \u062f\u0631 \u0633\u0631\u0648\u0631 \u0645\u0642\u0635\u062f\n * \u0645\u062d\u0627\u0633\u0628\u0647 \u062d\u062c\u0645\u060c \u062a\u0639\u062f\u0627\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0648 \u0645\u062f\u062a \u0632\u0645\u0627\u0646 \u0627\u0646\u062a\u0642\u0627\u0644\n * \u0645\u062a\u062f `test_connection` \u0628\u0631\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0627\u062a\u0635\u0627\u0644 \u0642\u0628\u0644 \u0627\u0632 \u0627\u0642\u062f\u0627\u0645 \u0628\u0647 \u062f\u06cc\u067e\u0644\u0648\u06cc.\n\n---\n\n#### \u06f3. \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u062f\u0644 \u062f\u0627\u062f\u0647\u060c \u0627\u06a9\u0634\u0646\u200c\u062a\u06af\u200c\u0647\u0627 \u0648 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0628\u0627\u062a\n* **\u0627\u0631\u062a\u0642\u0627\u06cc \u0645\u062f\u0644 `Project` \u0648 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc:** \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc `ftp_host`\u060c `ftp_port`\u060c `ftp_user`\u060c `ftp_password`\u060c `ftp_path`\u060c `ftp_tls` \u0648 `active_branch` \u0628\u0647 \u06a9\u0644\u0627\u0633 \u067e\u0631\u0648\u0698\u0647 \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0646\u062f.\n* **\u0627\u06a9\u0634\u0646\u200c\u062a\u06af\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u062f\u0631 `bot_actions.py`:**\n * `[[GIT_PUBLISH: project=\"\", message=\"\"]]`\n * `[[FTP_CONFIG: host=\"...\", port=21, user=\"...\", password=\"...\", path=\"...\", tls=false]]`\n * `[[FTP_TEST: project=\"\"]]`\n * `[[FTP_DEPLOY: project=\"\", branch=\"production\"]]`\n* **\u0645\u0646\u0648 \u0648 \u062f\u06a9\u0645\u0647\u200c\u0647\u0627\u06cc \u062a\u0644\u06af\u0631\u0627\u0645 \u062f\u0631 `bot.py`:**\n * \u062f\u0633\u062a\u0648\u0631 \u062c\u062f\u06cc\u062f `/ftp` \u0648 \u0645\u0646\u0648\u06cc \u0634\u06cc\u0634\u0647\u200c\u0627\u06cc **\u00ab\ud83d\ude80 \u062f\u06cc\u067e\u0644\u0648\u06cc FTP\u00bb** \u0648 **\u00ab\ud83d\udd0d \u062a\u0633\u062a \u0627\u062a\u0635\u0627\u0644 FTP\u00bb**\n * \u062f\u06a9\u0645\u0647 \u062c\u062f\u06cc\u062f **\u00ab\ud83d\ude80 \u0627\u0646\u062a\u0634\u0627\u0631 \u0628\u0647 \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646 (Publish)\u00bb** \u062f\u0631 \u0645\u0646\u0648\u06cc \u06af\u06cc\u062a (`/git`)\n * \u062a\u0633\u062a \u0633\u06cc\u0646\u062a\u06a9\u0633 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u06a9\u0627\u0645\u0644 \u0627\u0646\u062c\u0627\u0645 \u0634\u062f \u0648 \u0631\u0628\u0627\u062a \u0628\u0627 \u062a\u06af `[[RESTART_BOT]]` \u0628\u0647 \u0635\u0648\u0631\u062a \u0631\u0648\u0627\u0646 \u0645\u062c\u062f\u062f\u0627\u064b \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0634\u062f.\n\n---\n\n[[BUTTONS: layout=[\n [{\"text\": \"\ud83d\udc19 \u0645\u0646\u0648\u06cc \u06af\u06cc\u062a \u0648 \u0628\u0631\u0646\u0686\u200c\u0647\u0627\", \"cmd\": \"/git\"}, {\"text\": \"\ud83d\ude80 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0648 \u062f\u06cc\u067e\u0644\u0648\u06cc FTP\", \"cmd\": \"/ftp\"}],\n [{\"text\": \"\ud83d\ude80 \u067e\u0627\u0628\u0644\u06cc\u0634 \u0628\u0647 \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646\", \"cmd\": \"/publish\"}, {\"text\": \"\ud83d\udcc1 \u0644\u06cc\u0633\u062a \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\", \"cmd\": \"/projects\"}]\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": 48294, + "last_total_tokens": 504720, + "last_response": "\ud83d\udc19 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u062e\u0632\u0646 \u06af\u06cc\u062a \u0648 \u0648\u0636\u0639\u06cc\u062a \u0634\u0627\u062e\u0647\u200c\u0647\u0627 (Git & Branches)\n\n\u2022 \ud83d\udcc1 \u067e\u0631\u0648\u0698\u0647 \u0641\u0639\u0627\u0644: default\n\u2022 \ud83c\udf10 \u0645\u062e\u0632\u0646 \u062a\u062d\u062a \u0648\u0628 (Gitea): https://git.msa.artacloud.ir/root/default\n\u2022 \ud83d\udce5 \u062f\u0633\u062a\u0648\u0631 \u06a9\u0644\u0648\u0646: git clone https://git.msa.artacloud.ir/root/default.git\n\n---\n\n### \ud83c\udf3f \u0648\u0636\u0639\u06cc\u062a \u0634\u0627\u062e\u0647\u200c\u0647\u0627 (Branches Status)\n* \ud83c\udf3f \u0634\u0627\u062e\u0647 \u062a\u0648\u0633\u0639\u0647 (Development): dev (\u0634\u0627\u062e\u0647 \u0641\u0639\u0627\u0644 \u0628\u0631\u0627\u06cc \u06a9\u062f\u0646\u0648\u06cc\u0633\u06cc \u0648 \u06a9\u0627\u0645\u06cc\u062a\u200c\u0647\u0627\u06cc \u062c\u0627\u0631\u06cc)\n* \ud83d\ude80 \u0634\u0627\u062e\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc (Production): production (\u0622\u0645\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0634\u0627\u0631 \u0648 \u062f\u06cc\u067e\u0644\u0648\u06cc)\n* \ud83d\udd16 \u0622\u062e\u0631\u06cc\u0646 \u06a9\u0627\u0645\u06cc\u062a \u062b\u0628\u062a\u200c\u0634\u062f\u0647 (HEAD): bf4df87 - \u062a\u0633\u06a9 \u0647\u0627 \u0631\u0627 \u0622\u0645\u0627\u062f\u0647 \u06a9\u0646 \u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0639\u0627\u0644\u06cc\u0647\n* \ud83d\udcca \u0648\u0636\u0639\u06cc\u062a \u062f\u0631\u062e\u062a \u06a9\u0627\u0631\u06cc: \u0622\u0645\u0627\u062f\u0647 \u0648 \u0645\u062a\u0635\u0644 \u0628\u0647 \u0631\u06cc\u0645\u0648\u062a\n\n---\n\n### \ud83d\ude80 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0633\u0631\u06cc\u0639 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06af\u06cc\u062a \u0648 \u0627\u0633\u062a\u0642\u0631\u0627\u0631:\n\u0628\u0627 \u062f\u06a9\u0645\u0647\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u062f\u0646\u0638\u0631 \u062e\u0648\u062f \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:\n\n[[BUTTONS: layout=[\n [{\"text\": \"\ud83d\udc19 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0645\u0646\u0648\u06cc \u06af\u06cc\u062a \u0631\u0628\u0627\u062a\", \"cmd\": \"/git\"}, {\"text\": \"\ud83d\ude80 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0648 \u062f\u06cc\u067e\u0644\u0648\u06cc FTP\", \"cmd\": \"/ftp\"}],\n [{\"text\": \"\ud83d\ude80 \u0627\u0646\u062a\u0634\u0627\u0631 \u0628\u0647 \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646 (Publish)\", \"cmd\": \"/publish\"}, {\"text\": \"\ud83d\udd04 \u0647\u0645\u06af\u0627\u0645\u200c\u0633\u0627\u0632\u06cc \u06af\u06cc\u062a (Sync)\", \"cmd\": \"/sync\"}],\n [{\"text\": \"\ud83d\udcdc \u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u06a9\u0627\u0645\u06cc\u062a\u200c\u0647\u0627\", \"cmd\": \"/commit\"}, {\"text\": \"\ud83d\udcc1 \u0644\u06cc\u0633\u062a \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\", \"cmd\": \"/projects\"}]\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": { @@ -96,19 +96,19 @@ } }, "turn_in_progress": false, - "last_prompt": "\u062a\u0633\u06a9 \u0647\u0627 \u0631\u0627 \u0622\u0645\u0627\u062f\u0647 \u06a9\u0646 \u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0639\u0627\u0644\u06cc\u0647", - "last_response": "[[SAVE_MEMORY: type=\"user\", key=\"git_dual_branching_strategy\", category=\"rule\", content=\"\u062a\u0645\u0627\u0645 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u0647\u0645\u06cc\u0634\u0647 \u062f\u0648 \u0634\u0627\u062e\u0647 \u0627\u0635\u0644\u06cc dev (\u062a\u0648\u0633\u0639\u0647 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636) \u0648 production (\u0639\u0645\u0644\u06cc\u0627\u062a\u06cc) \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f. \u06a9\u0627\u0631\u0647\u0627\u06cc \u0631\u0648\u0632\u0645\u0631\u0647 \u0631\u0648\u06cc dev \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647 \u0648 \u062a\u0646\u0647\u0627 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u067e\u0627\u0628\u0644\u06cc\u0634 \u0628\u0647 production \u0645\u0631\u062c \u0648 \u067e\u0648\u0634 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.\"]]\n[[SAVE_MEMORY: type=\"user\", key=\"smart_ftp_deployment_rule\", category=\"rule\", content=\"\u062f\u06cc\u067e\u0644\u0648\u06cc FTP \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u0647\u0648\u0634\u0645\u0646\u062f \u0648 \u062a\u0645\u06cc\u0632 (Clean Deployment) \u0628\u0627\u0634\u062f\u061b \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0632\u0627\u0626\u062f\u060c \u0644\u0627\u06af\u200c\u0647\u0627\u060c \u06a9\u0634\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc .git\u060c \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0645\u062d\u0644\u06cc \u0648 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0633\u0634\u0646 \u0646\u0628\u0627\u06cc\u062f \u0628\u0647 \u0633\u0631\u0648\u0631 FTP \u0627\u0631\u0633\u0627\u0644 \u0634\u0648\u0646\u062f.\"]]\n[[RESTART_BOT]]\n\n\u062a\u0645\u0627\u0645\u06cc \u062a\u0633\u06a9\u200c\u0647\u0627 \u0648 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0634\u0645\u0627 \u0628\u0627 \u0628\u0627\u0644\u0627\u062a\u0631\u06cc\u0646 \u06a9\u06cc\u0641\u06cc\u062a\u060c \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u0647\u0627\u06cc \u0645\u0647\u0646\u062f\u0633\u06cc \u0648 \u062f\u0642\u062a \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647\u200c\u0633\u0627\u0632\u06cc \u0634\u062f\u0646\u062f:\n\n---\n\n### \ud83d\udee0\ufe0f \u06af\u0632\u0627\u0631\u0634 \u062c\u0627\u0645\u0639 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0648 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0634\u062f\u0647\n\n#### \u06f1. \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u062f\u0648 \u0634\u0627\u062e\u0647\u200c\u0627\u06cc \u06af\u06cc\u062a (`dev` \u0648 `production`)\n* **\u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u062f\u0648 \u0634\u0627\u062e\u0647\u200c\u0627\u06cc:** \u062f\u0631 \u0645\u062a\u062f `init_project_repo`\u060c \u0647\u0631 \u067e\u0631\u0648\u0698\u0647 \u0628\u0627 \u062f\u0648 \u0634\u0627\u062e\u0647 `production` (\u0634\u0627\u062e\u0647 \u067e\u0627\u06cc\u0647 \u0648 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc) \u0648 `dev` (\u0634\u0627\u062e\u0647 \u0641\u0639\u0627\u0644 \u062a\u0648\u0633\u0639\u0647) \u0627\u06cc\u062c\u0627\u062f \u0648 \u0628\u0647 Gitea \u067e\u0648\u0634 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0634\u0627\u062e\u0647 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u06a9\u0627\u0631\u06cc \u0647\u0645\u0648\u0627\u0631\u0647 `dev` \u0627\u0633\u062a.\n* **\u062a\u0648\u0633\u0639\u0647 \u0648 \u06a9\u0627\u0645\u06cc\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0631\u0648\u06cc `dev`:** \u062a\u0645\u0627\u0645\u06cc \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a\u060c \u06a9\u0627\u0645\u06cc\u062a\u200c\u0647\u0627 \u0648 \u0647\u0645\u06af\u0627\u0645\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0631\u0648\u0632\u0645\u0631\u0647 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0648 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648\u06cc \u0634\u0627\u062e\u0647 `dev` \u062b\u0628\u062a \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.\n* **\u0633\u06cc\u0633\u062a\u0645 \u0627\u0646\u062a\u0634\u0627\u0631 \u0648 \u0627\u062f\u063a\u0627\u0645 (`git_publish`):**\n * \u0645\u062a\u062f \u0627\u062e\u062a\u0635\u0627\u0635\u06cc `git_publish` \u0637\u0631\u0627\u062d\u06cc \u0634\u062f \u06a9\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0645\u0639\u0644\u0642 `dev` \u0631\u0627 \u06a9\u0627\u0645\u06cc\u062a \u06a9\u0631\u062f\u0647\u060c \u0634\u0627\u062e\u0647 `production` \u0631\u0627 \u062a\u062d\u0648\u06cc\u0644 \u06af\u0631\u0641\u062a\u0647\u060c \u0622\u062e\u0631\u06cc\u0646 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a `dev` \u0631\u0627 \u0628\u0627 `production` \u0645\u0631\u062c \u0646\u0645\u0648\u062f\u0647\u060c \u062f\u0631 Gitea \u067e\u0648\u0634 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0645\u062c\u062f\u062f\u0627\u064b \u0628\u0647 \u0634\u0627\u062e\u0647 `dev` \u0628\u0627\u0632\u0645\u06cc\u200c\u06af\u0631\u062f\u062f.\n * \u062f\u0633\u062a\u0648\u0631 \u062a\u0644\u06af\u0631\u0627\u0645\u06cc \u062c\u062f\u06cc\u062f `/publish` \u0648 \u0627\u06a9\u0634\u0646\u200c\u062a\u06af `[[GIT_PUBLISH: project=\"...\"]]` \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0646\u062f.\n\n---\n\n#### \u06f2. \u0645\u0627\u0698\u0648\u0644 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0647\u0648\u0634\u0645\u0646\u062f \u0648 \u062a\u0645\u06cc\u0632 FTP (`ftp_manager.py`)\n* **\u0641\u06cc\u0644\u062a\u0631 \u0647\u0648\u0634\u0645\u0646\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc (Clean AI Deployment):**\n * \u0644\u06cc\u0633\u062a \u0641\u06cc\u0644\u062a\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u062c\u0627\u0645\u0639 \u0634\u0627\u0645\u0644:\n * \u0645\u062e\u0632\u0646 \u0648 \u0645\u062a\u0627\u062f\u06cc\u062a\u0627\u06cc \u06af\u06cc\u062a: `.git/`\u060c `.gitignore`\u060c `.gitattributes`\n * \u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u0648 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062d\u0644\u06cc: `.env*`\u060c `*.pem`\u060c `*.key`\n * \u062f\u06cc\u062a\u0627\u06cc \u0645\u0648\u0642\u062a \u0648 \u0633\u0634\u0646\u200c\u0647\u0627: `sessions_data/`\u060c `uploads_temp/`\u060c `.agents/`\u060c `.gemini/`\n * \u06a9\u0634 \u0648 \u0628\u06cc\u0644\u062f\u0647\u0627: `__pycache__/`\u060c `*.pyc`\u060c `.venv/`\u060c `node_modules/`\n * \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645\u06cc \u0648 \u0644\u0627\u06af: `*.log`\u060c `.DS_Store`\u060c `Thumbs.db`\u060c `.idea/`\u060c `.vscode/`\n* **\u0645\u062f\u06cc\u0631\u06cc\u062a \u0633\u0627\u062e\u062a\u0627\u0631 \u0631\u06cc\u0645\u0648\u062a \u0648 \u0622\u067e\u0644\u0648\u062f \u0647\u0648\u0634\u0645\u0646\u062f:**\n * \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc\u200c\u0647\u0627\u06cc \u062a\u0648 \u062f\u0631 \u062a\u0648 \u062f\u0631 \u0633\u0631\u0648\u0631 \u0645\u0642\u0635\u062f\n * \u0645\u062d\u0627\u0633\u0628\u0647 \u062d\u062c\u0645\u060c \u062a\u0639\u062f\u0627\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0648 \u0645\u062f\u062a \u0632\u0645\u0627\u0646 \u0627\u0646\u062a\u0642\u0627\u0644\n * \u0645\u062a\u062f `test_connection` \u0628\u0631\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0627\u062a\u0635\u0627\u0644 \u0642\u0628\u0644 \u0627\u0632 \u0627\u0642\u062f\u0627\u0645 \u0628\u0647 \u062f\u06cc\u067e\u0644\u0648\u06cc.\n\n---\n\n#### \u06f3. \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u062f\u0644 \u062f\u0627\u062f\u0647\u060c \u0627\u06a9\u0634\u0646\u200c\u062a\u06af\u200c\u0647\u0627 \u0648 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0628\u0627\u062a\n* **\u0627\u0631\u062a\u0642\u0627\u06cc \u0645\u062f\u0644 `Project` \u0648 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc:** \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc `ftp_host`\u060c `ftp_port`\u060c `ftp_user`\u060c `ftp_password`\u060c `ftp_path`\u060c `ftp_tls` \u0648 `active_branch` \u0628\u0647 \u06a9\u0644\u0627\u0633 \u067e\u0631\u0648\u0698\u0647 \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0646\u062f.\n* **\u0627\u06a9\u0634\u0646\u200c\u062a\u06af\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u062f\u0631 `bot_actions.py`:**\n * `[[GIT_PUBLISH: project=\"\", message=\"\"]]`\n * `[[FTP_CONFIG: host=\"...\", port=21, user=\"...\", password=\"...\", path=\"...\", tls=false]]`\n * `[[FTP_TEST: project=\"\"]]`\n * `[[FTP_DEPLOY: project=\"\", branch=\"production\"]]`\n* **\u0645\u0646\u0648 \u0648 \u062f\u06a9\u0645\u0647\u200c\u0647\u0627\u06cc \u062a\u0644\u06af\u0631\u0627\u0645 \u062f\u0631 `bot.py`:**\n * \u062f\u0633\u062a\u0648\u0631 \u062c\u062f\u06cc\u062f `/ftp` \u0648 \u0645\u0646\u0648\u06cc \u0634\u06cc\u0634\u0647\u200c\u0627\u06cc **\u00ab\ud83d\ude80 \u062f\u06cc\u067e\u0644\u0648\u06cc FTP\u00bb** \u0648 **\u00ab\ud83d\udd0d \u062a\u0633\u062a \u0627\u062a\u0635\u0627\u0644 FTP\u00bb**\n * \u062f\u06a9\u0645\u0647 \u062c\u062f\u06cc\u062f **\u00ab\ud83d\ude80 \u0627\u0646\u062a\u0634\u0627\u0631 \u0628\u0647 \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646 (Publish)\u00bb** \u062f\u0631 \u0645\u0646\u0648\u06cc \u06af\u06cc\u062a (`/git`)\n * \u062a\u0633\u062a \u0633\u06cc\u0646\u062a\u06a9\u0633 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u06a9\u0627\u0645\u0644 \u0627\u0646\u062c\u0627\u0645 \u0634\u062f \u0648 \u0631\u0628\u0627\u062a \u0628\u0627 \u062a\u06af `[[RESTART_BOT]]` \u0628\u0647 \u0635\u0648\u0631\u062a \u0631\u0648\u0627\u0646 \u0645\u062c\u062f\u062f\u0627\u064b \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0634\u062f.\n\n---\n\n[[BUTTONS: layout=[\n [{\"text\": \"\ud83d\udc19 \u0645\u0646\u0648\u06cc \u06af\u06cc\u062a \u0648 \u0628\u0631\u0646\u0686\u200c\u0647\u0627\", \"cmd\": \"/git\"}, {\"text\": \"\ud83d\ude80 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0648 \u062f\u06cc\u067e\u0644\u0648\u06cc FTP\", \"cmd\": \"/ftp\"}],\n [{\"text\": \"\ud83d\ude80 \u067e\u0627\u0628\u0644\u06cc\u0634 \u0628\u0647 \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646\", \"cmd\": \"/publish\"}, {\"text\": \"\ud83d\udcc1 \u0644\u06cc\u0633\u062a \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\", \"cmd\": \"/projects\"}]\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": "\u0645\u0646\u0648 \u06af\u06cc\u062a \u0648 \u0628\u0631\u0646\u0686 \u0647\u0627\u0631\u0648 \u0628\u0632\u0646", + "last_response": "\ud83d\udc19 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u062e\u0632\u0646 \u06af\u06cc\u062a \u0648 \u0648\u0636\u0639\u06cc\u062a \u0634\u0627\u062e\u0647\u200c\u0647\u0627 (Git & Branches)\n\n\u2022 \ud83d\udcc1 \u067e\u0631\u0648\u0698\u0647 \u0641\u0639\u0627\u0644: default\n\u2022 \ud83c\udf10 \u0645\u062e\u0632\u0646 \u062a\u062d\u062a \u0648\u0628 (Gitea): https://git.msa.artacloud.ir/root/default\n\u2022 \ud83d\udce5 \u062f\u0633\u062a\u0648\u0631 \u06a9\u0644\u0648\u0646: git clone https://git.msa.artacloud.ir/root/default.git\n\n---\n\n### \ud83c\udf3f \u0648\u0636\u0639\u06cc\u062a \u0634\u0627\u062e\u0647\u200c\u0647\u0627 (Branches Status)\n* \ud83c\udf3f \u0634\u0627\u062e\u0647 \u062a\u0648\u0633\u0639\u0647 (Development): dev (\u0634\u0627\u062e\u0647 \u0641\u0639\u0627\u0644 \u0628\u0631\u0627\u06cc \u06a9\u062f\u0646\u0648\u06cc\u0633\u06cc \u0648 \u06a9\u0627\u0645\u06cc\u062a\u200c\u0647\u0627\u06cc \u062c\u0627\u0631\u06cc)\n* \ud83d\ude80 \u0634\u0627\u062e\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc (Production): production (\u0622\u0645\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0634\u0627\u0631 \u0648 \u062f\u06cc\u067e\u0644\u0648\u06cc)\n* \ud83d\udd16 \u0622\u062e\u0631\u06cc\u0646 \u06a9\u0627\u0645\u06cc\u062a \u062b\u0628\u062a\u200c\u0634\u062f\u0647 (HEAD): bf4df87 - \u062a\u0633\u06a9 \u0647\u0627 \u0631\u0627 \u0622\u0645\u0627\u062f\u0647 \u06a9\u0646 \u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0639\u0627\u0644\u06cc\u0647\n* \ud83d\udcca \u0648\u0636\u0639\u06cc\u062a \u062f\u0631\u062e\u062a \u06a9\u0627\u0631\u06cc: \u0622\u0645\u0627\u062f\u0647 \u0648 \u0645\u062a\u0635\u0644 \u0628\u0647 \u0631\u06cc\u0645\u0648\u062a\n\n---\n\n### \ud83d\ude80 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0633\u0631\u06cc\u0639 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06af\u06cc\u062a \u0648 \u0627\u0633\u062a\u0642\u0631\u0627\u0631:\n\u0628\u0627 \u062f\u06a9\u0645\u0647\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u062f\u0646\u0638\u0631 \u062e\u0648\u062f \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:\n\n[[BUTTONS: layout=[\n [{\"text\": \"\ud83d\udc19 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0645\u0646\u0648\u06cc \u06af\u06cc\u062a \u0631\u0628\u0627\u062a\", \"cmd\": \"/git\"}, {\"text\": \"\ud83d\ude80 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0648 \u062f\u06cc\u067e\u0644\u0648\u06cc FTP\", \"cmd\": \"/ftp\"}],\n [{\"text\": \"\ud83d\ude80 \u0627\u0646\u062a\u0634\u0627\u0631 \u0628\u0647 \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646 (Publish)\", \"cmd\": \"/publish\"}, {\"text\": \"\ud83d\udd04 \u0647\u0645\u06af\u0627\u0645\u200c\u0633\u0627\u0632\u06cc \u06af\u06cc\u062a (Sync)\", \"cmd\": \"/sync\"}],\n [{\"text\": \"\ud83d\udcdc \u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u06a9\u0627\u0645\u06cc\u062a\u200c\u0647\u0627\", \"cmd\": \"/commit\"}, {\"text\": \"\ud83d\udcc1 \u0644\u06cc\u0633\u062a \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\", \"cmd\": \"/projects\"}]\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": 1788102417.7547705, + "last_update_time": 1788102526.701083, "workspace": "/root", "conversation_id": "e58b6c34-0e86-4237-aef5-14699b99f75c", "model": "gemini-3.7-flash-auto", "effort": "high", "language": "fa", - "last_context_length": 44953, - "last_total_tokens": 488556 + "last_context_length": 48294, + "last_total_tokens": 504720 }, "232801087": { "chat_id": 232801087,