From 0c20afa5ee1e24667ff79c2a149e4e7b3715318b Mon Sep 17 00:00:00 2001 From: Antigravity Bot Date: Mon, 31 Aug 2026 11:27:22 +0330 Subject: [PATCH] =?UTF-8?q?AI=20Update:=20=D8=A8=D8=A7=D8=B2=DB=8C=20?= =?UTF-8?q?=D9=BE=D8=B1=D9=86=D8=AF=D9=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- telegram-agy-bot/data/memory.db | Bin 69632 -> 77824 bytes telegram-agy-bot/sessions.json | 98 ++++++++++++++++++++++++++------ 2 files changed, 82 insertions(+), 16 deletions(-) diff --git a/telegram-agy-bot/data/memory.db b/telegram-agy-bot/data/memory.db index 3fe817382c23e170064271462a1162901168f8e0..7e9bd3afa4cb56e7a0c812001070d9dc9689ea46 100644 GIT binary patch delta 1644 zcma)7-*4Mg6iynqsneucSD_LWiCZSEt;o_MgcxFlrEMTX*;dvxD!h1}ecPHPcIF>l z%S)OnX(AM+Mt(t>kTx_(32a&BP8~1%7Z6Wew-N&0CLVa@k#n6C)`kZx+2{J+bH4MP z@7!x|++j9;WwwV0{4SSk5bnb(SPj4avfmZ?^hO|1b+ODnSKwXWWKiti>vyv?Hqy;8 z_nP_B%tHQbzjx^E3HRopB#U@W64y8tXA~WCydg?DmsXVPM)ug$vNkw#B^FJ_(1lC0 zu|;$|%KU>xxsI4IL&GX3iD8sgl~1ssb26X7VFa_Ql7KmVJqvHTl);+LXR>HEHa|07 zN(8(^6BF)R@9X@vH0}WHm^j&H7D`5^6EW1Wj>gQ9K*;>e_YV6{D%19lnLqmbm}G1* zY5w9rWuEH`IyTccK<%r~b41h&UAheSLLw1HXU?EeOu69pdPFv^BGwj*ddWM-U6C&bO z4rFYdl+;@^;-bl49JD^aaI?n~_mxfWT&Bxcw)DA^zR-)^u>K!_DeLaXLboUGubSSg zr7nNfx^>m<5B7UT+&UIkIM7nKp0e(wMbqc$-F5}?zGuDL&HQF>u8>LvT$JZXImj|z z@Be4}FS5N!YGlVQ98^dh&Ckct73cV)S-gtuGK$i#07@v!%g`D`8l;Krr=)3@_rI`n zB^X0ojWq1i?;90j!SK;R1(98FyiHBbF4_e|HG>TYolzs%bwqYZlhnY^erlJ=E=@y6 z;0W;#NS!~8@XM}%X^=08m2 zBpm}PtXiZFIh$w#>ULXY~Y delta 175 zcmZp8z|ydQWrDOIHvJC+szP4gi45$VdJMewTn79peB1dLIhS+l zZFUsc!m(M8^P(DK=q3Xe0cIu6lF952rkm{?SU4w6Fk!P~lV*|jot)?^yt&u2oQ>I? zYvE+}fZWYx0YY38CrD53h!UJ!AIrXZXOuT9vpdg%$?OU3n`:** \u062f\u0631 \u0645\u062a\u0646 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0641\u0627\u0644\u200c\u0628\u06a9\u060c \u062a\u06af\u200c\u0647\u0627\u06cc `` \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0627\u0645 \u062f\u0631\u062c \u0634\u062f\u0647 \u0628\u0648\u062f\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0641\u0631\u0622\u06cc\u0646\u062f \u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 HTML \u062a\u0644\u06af\u0631\u0627\u0645\u060c \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u0647\u0627\u06cc `<` \u0648 `>` \u0628\u0647 `<` \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u0647 \u0648 \u062f\u0631 \u067e\u06cc\u0627\u0645 \u062a\u0644\u06af\u0631\u0627\u0645 \u0628\u0647 \u062c\u0627\u06cc \u06a9\u062f\u060c \u0645\u062a\u0646 \u062e\u0627\u0645 `` \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u062f.\n\n---\n\n### \ud83d\udee0\ufe0f \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0627\u0646\u062c\u0627\u0645\u200c\u0634\u062f\u0647 \u0648 \u0627\u0635\u0644\u0627\u062d\u0627\u062a:\n\n1. **\u0627\u0635\u0644\u0627\u062d \u0633\u06cc\u0633\u062a\u0645 \u0641\u0631\u0645\u062a\u200c\u0628\u0646\u062f\u06cc \u0641\u0627\u0644\u200c\u0628\u06a9 (`agy_engine.py`):** \u0633\u0627\u062e\u062a\u0627\u0631 \u0641\u0627\u0644\u200c\u0628\u06a9 \u0627\u0635\u0644\u0627\u062d \u0634\u062f \u062a\u0627 \u0627\u0632 \u0645\u0627\u0631\u06a9\u200c\u062f\u0627\u0648\u0646 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u062f\u06cc\u06af\u0631 \u062a\u06af\u200c\u0647\u0627\u06cc \u062e\u0627\u0645 HTML \u062f\u0631 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627 \u0638\u0627\u0647\u0631 \u0646\u0634\u0648\u0646\u062f.\n2. **\u062a\u06a9\u0645\u06cc\u0644 \u0648 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06f1\u06f0\u06f0\u066a \u0642\u0627\u0628\u0644\u06cc\u062a SSH Remote Dev \u0648 \u062c\u062f\u0648\u0644 \u0644\u0627\u06af\u200c\u0647\u0627:**\n * **\u0645\u0627\u0698\u0648\u0644 `ssh_manager.py`:** \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0627\u0645\u0644 \u0627\u0645\u06a9\u0627\u0646 \u0627\u062a\u0635\u0627\u0644 \u0628\u0627 \u067e\u0633\u0648\u0631\u062f \u0648 \u06a9\u0644\u06cc\u062f \u062e\u0635\u0648\u0635\u06cc SSH\u060c \u062a\u0633\u062a \u0627\u062a\u0635\u0627\u0644\u060c \u067e\u0648\u0634 \u0628\u0647 \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646 (`Push`)\u060c \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u062f\u0647\u0627\u06cc \u0633\u0631\u0648\u0631 (`Pull`) \u0648 \u0627\u062c\u0631\u0627\u06cc \u0641\u0631\u0627\u0645\u06cc\u0646 \u0644\u06cc\u0646\u0648\u06a9\u0633\u06cc \u0627\u0632 \u0631\u0627\u0647 \u062f\u0648\u0631 (`Exec`).\n * **\u062d\u0641\u0627\u0638\u062a \u0627\u0632 \u062f\u06cc\u062a\u0627\u06cc \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646:** \u0642\u0641\u0644 \u0634\u062f\u0646 \u0627\u0631\u0633\u0627\u0644 \u06a9\u062f\u0647\u0627 \u0645\u0646\u062d\u0635\u0631\u0627\u064b \u0631\u0648\u06cc \u0634\u0627\u062e\u0647 `production` \u0648 \u0645\u062d\u0627\u0641\u0638\u062a \u06f1\u06f0\u06f0\u066a \u0627\u0632 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 (SQLite)\u060c \u067e\u0648\u0634\u0647\u200c\u0647\u0627\u06cc \u0622\u067e\u0644\u0648\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648 \u0633\u0634\u0646\u200c\u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u0631\u06cc\u0645\u0648\u062a \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u0631\u0633\u0627\u0644 \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a.\n * **\u062c\u062f\u0648\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0644\u0627\u06af\u200c\u0647\u0627 (`remote_audit.py`):** \u0627\u06cc\u062c\u0627\u062f \u062c\u062f\u0648\u0644 `remote_audit_logs` \u062f\u0631 SQLite \u062c\u0647\u062a \u062b\u0628\u062a \u062f\u0627\u0626\u0645\u06cc \u062a\u0645\u0627\u0645\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u060c \u0639\u0645\u0644\u06cc\u0627\u062a\u200c\u0647\u0627\u06cc \u067e\u0648\u0634/\u067e\u0648\u0644\u060c \u062a\u0633\u062a\u200c\u0647\u0627 \u0648 \u0641\u0631\u0627\u0645\u06cc\u0646 \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u0632\u0645\u0627\u0646\u060c \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0648\u0636\u0639\u06cc\u062a.\n * **\u0627\u0645\u0646\u06cc\u062a \u06a9\u0627\u0645\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a (Zero-Knowledge):** \u0639\u062f\u0645 \u0627\u0631\u0633\u0627\u0644 \u0631\u0645\u0632\u0647\u0627 \u0648 \u06a9\u0644\u06cc\u062f\u0647\u0627 \u0628\u0647 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0645\u0644 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0628\u06a9\u200c\u0627\u0646\u062f \u0631\u0628\u0627\u062a.\n * **\u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u062a\u0644\u06af\u0631\u0627\u0645 (`bot.py`):** \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0646 \u062f\u0633\u062a\u0648\u0631 `/ssh`\u060c \u0645\u0646\u0648\u06cc \u0634\u06cc\u0634\u0647\u200c\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0633\u0631\u0648\u0631 \u0648 \u0644\u0627\u06af\u200c\u0647\u0627\u060c \u0648 \u0627\u0641\u0632\u0648\u062f\u0646 \u062f\u06a9\u0645\u0647\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637\u0647 \u0628\u0647 \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u067e\u0631\u0648\u0698\u0647.\n3. **\u0628\u0631\u0631\u0633\u06cc \u0648 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc:** \u062a\u0645\u0627\u0645\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0628\u0627 `py_compile` \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0648 \u0628\u062f\u0648\u0646 \u0647\u06cc\u0686 \u062e\u0637\u0627\u06cc\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0648 \u062a\u0633\u062a \u0634\u062f\u0646\u062f.\n\n---\n\n[[SAVE_MEMORY: type=\"project\", key=\"ssh_remote_dev_and_audit\", category=\"tech_stack\", content=\"\u0642\u0627\u0628\u0644\u06cc\u062a SSH Remote Dev \u0648 Audit Logging \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0634\u062f\u061b \u0634\u0627\u0645\u0644 ssh_manager.py \u0628\u0631\u0627\u06cc \u067e\u0648\u0634 \u0648 \u067e\u0648\u0644 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0634\u0627\u062e\u0647 production \u0628\u0627 \u062d\u0641\u0638 \u06a9\u0627\u0645\u0644 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 \u0622\u067e\u0644\u0648\u062f \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646\u060c remote_audit.py \u062c\u0647\u062a \u062b\u0628\u062a \u062f\u0627\u0626\u0645\u06cc \u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 SQLite\u060c \u062f\u0633\u062a\u0648\u0631 /ssh \u0648 \u0627\u06a9\u0634\u0646\u200c\u062a\u06af\u200c\u0647\u0627\u06cc SSH_PUSH\u060c SSH_PULL \u0648 SSH_EXEC \u0628\u062f\u0648\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0628\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062d\u0631\u0645\u0627\u0646\u0647.\"]]\n\n[[RESTART_BOT]]\n\n[[BUTTON: text=\"\ud83d\udcbb \u0645\u0646\u0648\u06cc \u0631\u06cc\u0645\u0648\u062a SSH\", cmd=\"/ssh\", row=1]]\n[[BUTTON: text=\"\ud83d\udc19 \u0645\u0646\u0648\u06cc \u06af\u06cc\u062a \u0648 \u0628\u0631\u0646\u0686\u200c\u0647\u0627\", cmd=\"/git\", row=1]]\n[[BUTTON: text=\"\ud83d\udcca \u0633\u0647\u0645\u06cc\u0647 \u0645\u0635\u0631\u0641\", cmd=\"/usage\", row=2]]\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_response": "", "created_at": 1787995349.975879, "description": "", "conversation_titles": { @@ -35,7 +35,13 @@ "ftp_user": null, "ftp_password": null, "ftp_path": "/", - "ftp_tls": false + "ftp_tls": false, + "ssh_host": null, + "ssh_port": 22, + "ssh_user": null, + "ssh_password": null, + "ssh_key": null, + "ssh_path": "/" }, "copykar": { "name": "copykar", @@ -84,7 +90,13 @@ "ftp_user": null, "ftp_password": null, "ftp_path": "/", - "ftp_tls": false + "ftp_tls": false, + "ssh_host": null, + "ssh_port": 22, + "ssh_user": null, + "ssh_password": null, + "ssh_key": null, + "ssh_path": "/" }, "hamed-site": { "name": "hamed-site", @@ -110,7 +122,13 @@ "ftp_user": null, "ftp_password": null, "ftp_path": "/", - "ftp_tls": false + "ftp_tls": false, + "ssh_host": null, + "ssh_port": 22, + "ssh_user": null, + "ssh_password": null, + "ssh_key": null, + "ssh_path": "/" }, "gasemi_tier": { "name": "gasemi_tier", @@ -139,7 +157,13 @@ "ftp_user": "tier@tier.artacloud.ir", "ftp_password": "Mj1994Iranboy2", "ftp_path": "/", - "ftp_tls": false + "ftp_tls": false, + "ssh_host": null, + "ssh_port": 22, + "ssh_user": null, + "ssh_password": null, + "ssh_key": null, + "ssh_path": "/" }, "bildirchin": { "name": "bildirchin", @@ -167,16 +191,22 @@ "ftp_user": null, "ftp_password": null, "ftp_path": "/", - "ftp_tls": false + "ftp_tls": false, + "ssh_host": null, + "ssh_port": 22, + "ssh_user": null, + "ssh_password": null, + "ssh_key": null, + "ssh_path": "/" } }, "turn_in_progress": false, - "last_prompt": "[User uploaded file to `/root/uploads/photo_1788160782.jpg`]\nCaption: \u0686\u0631\u0627 \u0627\u06cc\u0646 \u067e\u0627\u0633\u062e \u0627\u06cc\u0646\u062c\u0648\u0631\u06cc \u0627\u0648\u062e\u062f\u061f\n\u0686\u0637\u0648\u0631\u06cc \u0627\u0635\u0644\u0627\u062d\u0634 \u06a9\u0646\u06cc\u0645\u061f", - "last_response": "\u0633\u0644\u0627\u0645 \u0648 \u0627\u062d\u062a\u0631\u0627\u0645\u061b\n\n### \ud83d\udd0d \u0628\u0631\u0631\u0633\u06cc \u0639\u0644\u062a \u0648 \u0646\u062d\u0648\u0647 \u0627\u0635\u0644\u0627\u062d \u0645\u0634\u06a9\u0644 \u062a\u0635\u0648\u06cc\u0631 \u0627\u0631\u0633\u0627\u0644\u06cc\n\n#### \u06f1. \u0639\u0644\u062a \u0648\u0642\u0648\u0639:\n1. **\u067e\u0627\u06cc\u0627\u0646 \u0646\u0648\u0628\u062a \u062f\u0631 \u0645\u06cc\u0627\u0646 \u0627\u062c\u0631\u0627\u06cc \u0627\u0628\u0632\u0627\u0631\u0647\u0627:** \u062f\u0631 \u067e\u0627\u0633\u062e \u0642\u0628\u0644\u06cc\u060c \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0648 \u0627\u0639\u0645\u0627\u0644 \u06a9\u062f\u0647\u0627\u06cc \u0628\u062e\u0634 SSH \u0631\u0648\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0627\u0646\u062c\u0627\u0645 \u0628\u0648\u062f \u0648 \u067e\u06cc\u0634 \u0627\u0632 \u0627\u0631\u0633\u0627\u0644 \u0645\u062a\u0646 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0646\u0647\u0627\u06cc\u06cc\u060c \u0627\u062c\u0631\u0627\u06cc \u0646\u0648\u0628\u062a \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0631\u0633\u06cc\u062f.\n2. **\u0641\u0639\u0627\u0644 \u0634\u062f\u0646 \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645 Fallback \u062f\u0631 \u0631\u0628\u0627\u062a:** \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u067e\u0627\u0633\u062e\u06cc \u0645\u062a\u0646\u06cc \u062a\u0648\u0644\u06cc\u062f \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u0631\u0628\u0627\u062a \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0644\u06cc\u0633\u062a \u0622\u062e\u0631\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06af\u0632\u0627\u0631\u0634 \u0648\u0636\u0639\u06cc\u062a \u0627\u0632 \u0644\u0627\u06af \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0645\u06cc\u200c\u06a9\u0646\u062f.\n3. **\u0646\u0645\u0627\u06cc\u0634 \u062e\u0627\u0645 \u062a\u06af\u200c\u0647\u0627\u06cc ``:** \u062f\u0631 \u0645\u062a\u0646 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0641\u0627\u0644\u200c\u0628\u06a9\u060c \u062a\u06af\u200c\u0647\u0627\u06cc `` \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0627\u0645 \u062f\u0631\u062c \u0634\u062f\u0647 \u0628\u0648\u062f\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0641\u0631\u0622\u06cc\u0646\u062f \u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 HTML \u062a\u0644\u06af\u0631\u0627\u0645\u060c \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u0647\u0627\u06cc `<` \u0648 `>` \u0628\u0647 `<` \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u0647 \u0648 \u062f\u0631 \u067e\u06cc\u0627\u0645 \u062a\u0644\u06af\u0631\u0627\u0645 \u0628\u0647 \u062c\u0627\u06cc \u06a9\u062f\u060c \u0645\u062a\u0646 \u062e\u0627\u0645 `` \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u062f.\n\n---\n\n### \ud83d\udee0\ufe0f \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0627\u0646\u062c\u0627\u0645\u200c\u0634\u062f\u0647 \u0648 \u0627\u0635\u0644\u0627\u062d\u0627\u062a:\n\n1. **\u0627\u0635\u0644\u0627\u062d \u0633\u06cc\u0633\u062a\u0645 \u0641\u0631\u0645\u062a\u200c\u0628\u0646\u062f\u06cc \u0641\u0627\u0644\u200c\u0628\u06a9 (`agy_engine.py`):** \u0633\u0627\u062e\u062a\u0627\u0631 \u0641\u0627\u0644\u200c\u0628\u06a9 \u0627\u0635\u0644\u0627\u062d \u0634\u062f \u062a\u0627 \u0627\u0632 \u0645\u0627\u0631\u06a9\u200c\u062f\u0627\u0648\u0646 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u062f\u06cc\u06af\u0631 \u062a\u06af\u200c\u0647\u0627\u06cc \u062e\u0627\u0645 HTML \u062f\u0631 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627 \u0638\u0627\u0647\u0631 \u0646\u0634\u0648\u0646\u062f.\n2. **\u062a\u06a9\u0645\u06cc\u0644 \u0648 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06f1\u06f0\u06f0\u066a \u0642\u0627\u0628\u0644\u06cc\u062a SSH Remote Dev \u0648 \u062c\u062f\u0648\u0644 \u0644\u0627\u06af\u200c\u0647\u0627:**\n * **\u0645\u0627\u0698\u0648\u0644 `ssh_manager.py`:** \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0627\u0645\u0644 \u0627\u0645\u06a9\u0627\u0646 \u0627\u062a\u0635\u0627\u0644 \u0628\u0627 \u067e\u0633\u0648\u0631\u062f \u0648 \u06a9\u0644\u06cc\u062f \u062e\u0635\u0648\u0635\u06cc SSH\u060c \u062a\u0633\u062a \u0627\u062a\u0635\u0627\u0644\u060c \u067e\u0648\u0634 \u0628\u0647 \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646 (`Push`)\u060c \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u062f\u0647\u0627\u06cc \u0633\u0631\u0648\u0631 (`Pull`) \u0648 \u0627\u062c\u0631\u0627\u06cc \u0641\u0631\u0627\u0645\u06cc\u0646 \u0644\u06cc\u0646\u0648\u06a9\u0633\u06cc \u0627\u0632 \u0631\u0627\u0647 \u062f\u0648\u0631 (`Exec`).\n * **\u062d\u0641\u0627\u0638\u062a \u0627\u0632 \u062f\u06cc\u062a\u0627\u06cc \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646:** \u0642\u0641\u0644 \u0634\u062f\u0646 \u0627\u0631\u0633\u0627\u0644 \u06a9\u062f\u0647\u0627 \u0645\u0646\u062d\u0635\u0631\u0627\u064b \u0631\u0648\u06cc \u0634\u0627\u062e\u0647 `production` \u0648 \u0645\u062d\u0627\u0641\u0638\u062a \u06f1\u06f0\u06f0\u066a \u0627\u0632 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 (SQLite)\u060c \u067e\u0648\u0634\u0647\u200c\u0647\u0627\u06cc \u0622\u067e\u0644\u0648\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648 \u0633\u0634\u0646\u200c\u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u0631\u06cc\u0645\u0648\u062a \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u0631\u0633\u0627\u0644 \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a.\n * **\u062c\u062f\u0648\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0644\u0627\u06af\u200c\u0647\u0627 (`remote_audit.py`):** \u0627\u06cc\u062c\u0627\u062f \u062c\u062f\u0648\u0644 `remote_audit_logs` \u062f\u0631 SQLite \u062c\u0647\u062a \u062b\u0628\u062a \u062f\u0627\u0626\u0645\u06cc \u062a\u0645\u0627\u0645\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u060c \u0639\u0645\u0644\u06cc\u0627\u062a\u200c\u0647\u0627\u06cc \u067e\u0648\u0634/\u067e\u0648\u0644\u060c \u062a\u0633\u062a\u200c\u0647\u0627 \u0648 \u0641\u0631\u0627\u0645\u06cc\u0646 \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u0632\u0645\u0627\u0646\u060c \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0648\u0636\u0639\u06cc\u062a.\n * **\u0627\u0645\u0646\u06cc\u062a \u06a9\u0627\u0645\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a (Zero-Knowledge):** \u0639\u062f\u0645 \u0627\u0631\u0633\u0627\u0644 \u0631\u0645\u0632\u0647\u0627 \u0648 \u06a9\u0644\u06cc\u062f\u0647\u0627 \u0628\u0647 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0645\u0644 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0628\u06a9\u200c\u0627\u0646\u062f \u0631\u0628\u0627\u062a.\n * **\u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u062a\u0644\u06af\u0631\u0627\u0645 (`bot.py`):** \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0646 \u062f\u0633\u062a\u0648\u0631 `/ssh`\u060c \u0645\u0646\u0648\u06cc \u0634\u06cc\u0634\u0647\u200c\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0633\u0631\u0648\u0631 \u0648 \u0644\u0627\u06af\u200c\u0647\u0627\u060c \u0648 \u0627\u0641\u0632\u0648\u062f\u0646 \u062f\u06a9\u0645\u0647\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637\u0647 \u0628\u0647 \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u067e\u0631\u0648\u0698\u0647.\n3. **\u0628\u0631\u0631\u0633\u06cc \u0648 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc:** \u062a\u0645\u0627\u0645\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0628\u0627 `py_compile` \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0648 \u0628\u062f\u0648\u0646 \u0647\u06cc\u0686 \u062e\u0637\u0627\u06cc\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0648 \u062a\u0633\u062a \u0634\u062f\u0646\u062f.\n\n---\n\n[[SAVE_MEMORY: type=\"project\", key=\"ssh_remote_dev_and_audit\", category=\"tech_stack\", content=\"\u0642\u0627\u0628\u0644\u06cc\u062a SSH Remote Dev \u0648 Audit Logging \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0634\u062f\u061b \u0634\u0627\u0645\u0644 ssh_manager.py \u0628\u0631\u0627\u06cc \u067e\u0648\u0634 \u0648 \u067e\u0648\u0644 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0634\u0627\u062e\u0647 production \u0628\u0627 \u062d\u0641\u0638 \u06a9\u0627\u0645\u0644 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 \u0622\u067e\u0644\u0648\u062f \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646\u060c remote_audit.py \u062c\u0647\u062a \u062b\u0628\u062a \u062f\u0627\u0626\u0645\u06cc \u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 SQLite\u060c \u062f\u0633\u062a\u0648\u0631 /ssh \u0648 \u0627\u06a9\u0634\u0646\u200c\u062a\u06af\u200c\u0647\u0627\u06cc SSH_PUSH\u060c SSH_PULL \u0648 SSH_EXEC \u0628\u062f\u0648\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0628\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062d\u0631\u0645\u0627\u0646\u0647.\"]]\n\n[[RESTART_BOT]]\n\n[[BUTTON: text=\"\ud83d\udcbb \u0645\u0646\u0648\u06cc \u0631\u06cc\u0645\u0648\u062a SSH\", cmd=\"/ssh\", row=1]]\n[[BUTTON: text=\"\ud83d\udc19 \u0645\u0646\u0648\u06cc \u06af\u06cc\u062a \u0648 \u0628\u0631\u0646\u0686\u200c\u0647\u0627\", cmd=\"/git\", row=1]]\n[[BUTTON: text=\"\ud83d\udcca \u0633\u0647\u0645\u06cc\u0647 \u0645\u0635\u0631\u0641\", cmd=\"/usage\", row=2]]\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, + "last_prompt": "\u0628\u0627\u0632\u06cc \u067e\u0631\u0646\u062f\u0647", + "last_response": "", + "last_status_msg_id": 2150, "restart_pending": false, "last_delivered": true, - "last_update_time": 1788160960.1128178, + "last_update_time": 1788163039.4468436, "workspace": "/root", "conversation_id": "2bfe938e-45d8-4238-a286-7be78e449a39", "model": "gemini-3.7-flash-auto", @@ -211,7 +241,13 @@ "ftp_user": null, "ftp_password": null, "ftp_path": "/", - "ftp_tls": false + "ftp_tls": false, + "ssh_host": null, + "ssh_port": 22, + "ssh_user": null, + "ssh_password": null, + "ssh_key": null, + "ssh_path": "/" }, "project1": { "name": "project1", @@ -235,7 +271,13 @@ "ftp_user": null, "ftp_password": null, "ftp_path": "/", - "ftp_tls": false + "ftp_tls": false, + "ssh_host": null, + "ssh_port": 22, + "ssh_user": null, + "ssh_password": null, + "ssh_key": null, + "ssh_path": "/" }, "myapp": { "name": "myapp", @@ -264,7 +306,13 @@ "ftp_user": null, "ftp_password": null, "ftp_path": "/", - "ftp_tls": false + "ftp_tls": false, + "ssh_host": null, + "ssh_port": 22, + "ssh_user": null, + "ssh_password": null, + "ssh_key": null, + "ssh_path": "/" } }, "turn_in_progress": false, @@ -311,7 +359,13 @@ "ftp_user": null, "ftp_password": null, "ftp_path": "/", - "ftp_tls": false + "ftp_tls": false, + "ssh_host": null, + "ssh_port": 22, + "ssh_user": null, + "ssh_password": null, + "ssh_key": null, + "ssh_path": "/" }, "lt-project_name-gt": { "name": "lt-project_name-gt", @@ -335,7 +389,13 @@ "ftp_user": null, "ftp_password": null, "ftp_path": "/", - "ftp_tls": false + "ftp_tls": false, + "ssh_host": null, + "ssh_port": 22, + "ssh_user": null, + "ssh_password": null, + "ssh_key": null, + "ssh_path": "/" }, "blog": { "name": "blog", @@ -359,7 +419,13 @@ "ftp_user": null, "ftp_password": null, "ftp_path": "/", - "ftp_tls": false + "ftp_tls": false, + "ssh_host": null, + "ssh_port": 22, + "ssh_user": null, + "ssh_password": null, + "ssh_key": null, + "ssh_path": "/" } }, "turn_in_progress": false,