GitHub Action
commited on
Commit
·
316a753
1
Parent(s):
7b75edb
Sync from GitHub with Git LFS
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitignore +36 -0
- agents/config.yml +5 -0
- agents/tools/db_structure.sql +2 -1
- hf_repo/agents/config.yml +9 -0
- hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql +20 -6
- hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-agent-REPL-cycle.md +1 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/storage.py +5 -164
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql +7 -6
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql +9 -7
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql +18 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/requirements.txt +4 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.bat +27 -2
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.sh +29 -2
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/repl.py +2 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.sh +1 -1
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.bat +1 -1
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.bat +1 -1
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.sh +1 -1
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md +4 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.sh +3 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.bat +4 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/logger.py +21 -4
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-agent-REPL-cycle.md +2 -2
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/repl.py +17 -2
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/logger.py +20 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md +3 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/peer_comm.py +3 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md +3 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/repl.py +5 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/README.md +3 -4
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.md +61 -25
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql +9 -5
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/storage.py +17 -1
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md +1 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql +10 -1
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/storage.py +49 -13
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-agent-REPL-cycle.md +2 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/storage.py +48 -13
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/changelog.txt +12 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/README.md +2 -1
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-0004-v4.1.md +0 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/.github/workflows/ci.yml +1 -1
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tests/test_storage.py +15 -11
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/.github/workflows/ci.yml +11 -15
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tests/test_storage.py +1 -1
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/.github/workflows/ci.yml +18 -14
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/__init__.py +1 -1
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/__init__.py +1 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tests/__init__.py +1 -0
- hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/__init__.py +1 -0
.gitignore
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Byte-compiled / optimized / DLL files
|
2 |
+
__pycache__/
|
3 |
+
*.py[cod]
|
4 |
+
*$py.class
|
5 |
+
|
6 |
+
# SQLite DB
|
7 |
+
agent_storage.db
|
8 |
+
agent_data.db
|
9 |
+
|
10 |
+
# Environment
|
11 |
+
.env
|
12 |
+
.venv/
|
13 |
+
env/
|
14 |
+
venv/
|
15 |
+
|
16 |
+
# VS Code
|
17 |
+
.vscode/
|
18 |
+
*.code-workspace
|
19 |
+
|
20 |
+
# Logs and debug
|
21 |
+
*.log
|
22 |
+
|
23 |
+
# OS-specific
|
24 |
+
.DS_Store
|
25 |
+
Thumbs.db
|
26 |
+
|
27 |
+
# PyInstaller
|
28 |
+
*.spec
|
29 |
+
dist/
|
30 |
+
build/
|
31 |
+
|
32 |
+
# Jupyter (на случай экспериментов)
|
33 |
+
.ipynb_checkpoints/
|
34 |
+
|
35 |
+
# System folders
|
36 |
+
.idea/
|
agents/config.yml
CHANGED
@@ -9,6 +9,11 @@ llm_api_url: https://api.openai.com/v1/chat/completions
|
|
9 |
llm_session_cookie: null
|
10 |
context_db: context.sqlite
|
11 |
|
|
|
|
|
|
|
|
|
|
|
12 |
# REST API
|
13 |
api_port: 8080 # Порт для локального REST API
|
14 |
serve_api: true # Включить REST API (например, для мониторинга или команд)
|
|
|
9 |
llm_session_cookie: null
|
10 |
context_db: context.sqlite
|
11 |
|
12 |
+
# operator:
|
13 |
+
operator_did: "did:hmp:operator123"
|
14 |
+
operator_mail: "operator@localhost"
|
15 |
+
operator_username: "Оператор"
|
16 |
+
|
17 |
# REST API
|
18 |
api_port: 8080 # Порт для локального REST API
|
19 |
serve_api: true # Включить REST API (например, для мониторинга или команд)
|
agents/tools/db_structure.sql
CHANGED
@@ -147,7 +147,8 @@ CREATE TABLE users (
|
|
147 |
password_hash TEXT, -- хэш пароля
|
148 |
info TEXT, -- произвольная информация, JSON
|
149 |
contacts TEXT, -- JSON-массив альтернативных контактов (matrix, telegram и т.д.)
|
150 |
-
language TEXT
|
|
|
151 |
);
|
152 |
|
153 |
-- Список групп пользователей
|
|
|
147 |
password_hash TEXT, -- хэш пароля
|
148 |
info TEXT, -- произвольная информация, JSON
|
149 |
contacts TEXT, -- JSON-массив альтернативных контактов (matrix, telegram и т.д.)
|
150 |
+
language TEXT, -- список предпочитаемых языков, через запятую, например: "ru,en"
|
151 |
+
operator BOOLEAN DEFAULT 0 -- является ли пользователь оператором (1 - да, 0 - нет)
|
152 |
);
|
153 |
|
154 |
-- Список групп пользователей
|
hf_repo/agents/config.yml
CHANGED
@@ -9,10 +9,19 @@ llm_api_url: https://api.openai.com/v1/chat/completions
|
|
9 |
llm_session_cookie: null
|
10 |
context_db: context.sqlite
|
11 |
|
|
|
|
|
|
|
|
|
|
|
12 |
# REST API
|
13 |
api_port: 8080 # Порт для локального REST API
|
14 |
serve_api: true # Включить REST API (например, для мониторинга или команд)
|
15 |
|
|
|
|
|
|
|
|
|
16 |
# DHT / Mesh Connectivity
|
17 |
dht_enabled: true # Активировать DHT-модуль
|
18 |
dht_port: 20784 # Порт для связи по DHT (TCP/UDP)
|
|
|
9 |
llm_session_cookie: null
|
10 |
context_db: context.sqlite
|
11 |
|
12 |
+
# operator:
|
13 |
+
operator_did: "did:hmp:operator123"
|
14 |
+
operator_mail: "operator@localhost"
|
15 |
+
operator_username: "Оператор"
|
16 |
+
|
17 |
# REST API
|
18 |
api_port: 8080 # Порт для локального REST API
|
19 |
serve_api: true # Включить REST API (например, для мониторинга или команд)
|
20 |
|
21 |
+
# web interface:
|
22 |
+
web_interfaces: ["127.0.0.1", "192.168.0.1", "::1"] # или ["0.0.0.0"] для доступа отовсюду
|
23 |
+
web_port: 8000
|
24 |
+
|
25 |
# DHT / Mesh Connectivity
|
26 |
dht_enabled: true # Активировать DHT-модуль
|
27 |
dht_port: 20784 # Порт для связи по DHT (TCP/UDP)
|
hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql
CHANGED
@@ -138,13 +138,16 @@ CREATE TABLE IF NOT EXISTS llm_registry (
|
|
138 |
);
|
139 |
|
140 |
-- Список пользователей
|
141 |
-
CREATE TABLE
|
142 |
user_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
143 |
-
|
144 |
-
username TEXT,
|
145 |
-
did TEXT UNIQUE,
|
146 |
-
|
147 |
-
|
|
|
|
|
|
|
148 |
);
|
149 |
|
150 |
-- Список групп пользователей
|
@@ -155,4 +158,15 @@ CREATE TABLE IF NOT EXISTS users_group (
|
|
155 |
users TEXT -- JSON-массив или CSV со списком DID, например: '["did:example:123", "did:example:456"]'
|
156 |
);
|
157 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
|
|
|
138 |
);
|
139 |
|
140 |
-- Список пользователей
|
141 |
+
CREATE TABLE users (
|
142 |
user_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
143 |
+
ban DATETIME DEFAULT NULL, -- если стоит дата/время, то пользователь забанен до этого момента
|
144 |
+
username TEXT, -- имя пользователя (необязательно уникальное)
|
145 |
+
did TEXT UNIQUE, -- децентрализованный идентификатор
|
146 |
+
mail TEXT UNIQUE, -- электронная почта
|
147 |
+
password_hash TEXT, -- хэш пароля
|
148 |
+
info TEXT, -- произвольная информация, JSON
|
149 |
+
contacts TEXT, -- JSON-массив альтернативных контактов (matrix, telegram и т.д.)
|
150 |
+
language TEXT -- список предпочитаемых языков, через запятую, например: "ru,en"
|
151 |
);
|
152 |
|
153 |
-- Список групп пользователей
|
|
|
158 |
users TEXT -- JSON-массив или CSV со списком DID, например: '["did:example:123", "did:example:456"]'
|
159 |
);
|
160 |
|
161 |
+
-- Таблица для хранения токенов восстановления пароля
|
162 |
+
CREATE TABLE password_reset_tokens (
|
163 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
164 |
+
user_id INTEGER NOT NULL,
|
165 |
+
token TEXT UNIQUE NOT NULL,
|
166 |
+
created_at DATETIME NOT NULL,
|
167 |
+
expires_at DATETIME NOT NULL,
|
168 |
+
used BOOLEAN DEFAULT 0,
|
169 |
+
FOREIGN KEY(user_id) REFERENCES users(user_id)
|
170 |
+
);
|
171 |
+
|
172 |
|
hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-agent-REPL-cycle.md
CHANGED
@@ -70,6 +70,7 @@
|
|
70 |
- для отправки сообщений другим агентам
|
71 |
- для управления *блокнотом LLM* `llm_memory` (добавить или удалить запись, просмотр записей)
|
72 |
- для управления *сообщениями пользователя* `notes` (просмотр записи, установка тегов и метки о прочтении), а также для добавления своего сообщения в *блокнот пользовтеля* `notes`
|
|
|
73 |
- для управления списком известных HMP-агентов
|
74 |
- для выбора *текущего основного LLM*
|
75 |
- для управления дополнительными утилитами и базами данных
|
|
|
70 |
- для отправки сообщений другим агентам
|
71 |
- для управления *блокнотом LLM* `llm_memory` (добавить или удалить запись, просмотр записей)
|
72 |
- для управления *сообщениями пользователя* `notes` (просмотр записи, установка тегов и метки о прочтении), а также для добавления своего сообщения в *блокнот пользовтеля* `notes`
|
73 |
+
- для управления **пользователями** `users` и **группами пользователей** `users_group`
|
74 |
- для управления списком известных HMP-агентов
|
75 |
- для выбора *текущего основного LLM*
|
76 |
- для управления дополнительными утилитами и базами данных
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/storage.py
CHANGED
@@ -15,171 +15,12 @@ class Storage:
|
|
15 |
self._init_db()
|
16 |
|
17 |
def _init_db(self):
|
|
|
|
|
|
|
|
|
18 |
c = self.conn.cursor()
|
19 |
-
|
20 |
-
# --- Основные таблицы когнитивного ядра ---
|
21 |
-
|
22 |
-
# Дневниковые записи
|
23 |
-
c.execute('''
|
24 |
-
CREATE TABLE IF NOT EXISTS diary_entries (
|
25 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
26 |
-
text TEXT NOT NULL,
|
27 |
-
tags TEXT,
|
28 |
-
priority INTEGER DEFAULT 0,
|
29 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
30 |
-
llm_id TEXT
|
31 |
-
)
|
32 |
-
''')
|
33 |
-
|
34 |
-
# Концепты
|
35 |
-
c.execute('''
|
36 |
-
CREATE TABLE IF NOT EXISTS concepts (
|
37 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
38 |
-
name TEXT NOT NULL UNIQUE,
|
39 |
-
description TEXT,
|
40 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
41 |
-
llm_id TEXT
|
42 |
-
)
|
43 |
-
''')
|
44 |
-
|
45 |
-
# Семантические связи
|
46 |
-
c.execute('''
|
47 |
-
CREATE TABLE IF NOT EXISTS links (
|
48 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
49 |
-
from_concept_id INTEGER,
|
50 |
-
to_concept_id INTEGER,
|
51 |
-
relation_type TEXT,
|
52 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
53 |
-
llm_id TEXT,
|
54 |
-
FOREIGN KEY(from_concept_id) REFERENCES concepts(id),
|
55 |
-
FOREIGN KEY(to_concept_id) REFERENCES concepts(id)
|
56 |
-
)
|
57 |
-
''')
|
58 |
-
|
59 |
-
# Заметки / сообщения
|
60 |
-
c.execute('''
|
61 |
-
CREATE TABLE IF NOT EXISTS notes (
|
62 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
63 |
-
text TEXT NOT NULL,
|
64 |
-
tags TEXT,
|
65 |
-
source TEXT DEFAULT 'user',
|
66 |
-
links TEXT DEFAULT '',
|
67 |
-
read INTEGER DEFAULT 0,
|
68 |
-
hidden INTEGER DEFAULT 0,
|
69 |
-
priority INTEGER DEFAULT 0,
|
70 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
71 |
-
llm_id TEXT
|
72 |
-
)
|
73 |
-
''')
|
74 |
-
|
75 |
-
# Лог процессов
|
76 |
-
c.execute('''
|
77 |
-
CREATE TABLE IF NOT EXISTS process_log (
|
78 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
79 |
-
name TEXT NOT NULL,
|
80 |
-
value TEXT,
|
81 |
-
tags TEXT,
|
82 |
-
status TEXT DEFAULT 'ok',
|
83 |
-
priority INTEGER DEFAULT 0,
|
84 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
|
85 |
-
llm_id TEXT
|
86 |
-
)
|
87 |
-
''')
|
88 |
-
|
89 |
-
# Память LLM
|
90 |
-
c.execute('''
|
91 |
-
CREATE TABLE IF NOT EXISTS llm_memory (
|
92 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
93 |
-
title TEXT,
|
94 |
-
content TEXT NOT NULL,
|
95 |
-
tags TEXT,
|
96 |
-
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
97 |
-
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
98 |
-
llm_id TEXT
|
99 |
-
)
|
100 |
-
''')
|
101 |
-
|
102 |
-
# Краткосрочная память
|
103 |
-
c.execute('''
|
104 |
-
CREATE TABLE IF NOT EXISTS llm_recent_responses (
|
105 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
106 |
-
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
|
107 |
-
role TEXT CHECK(role IN ('user', 'assistant')) NOT NULL,
|
108 |
-
content TEXT NOT NULL,
|
109 |
-
llm_id TEXT
|
110 |
-
)
|
111 |
-
''')
|
112 |
-
|
113 |
-
# Список известных HMP-агентов
|
114 |
-
c.execute('''
|
115 |
-
CREATE TABLE IF NOT EXISTS agent_peers (
|
116 |
-
id TEXT PRIMARY KEY,
|
117 |
-
name TEXT,
|
118 |
-
addresses TEXT,
|
119 |
-
tags TEXT,
|
120 |
-
status TEXT DEFAULT 'unknown',
|
121 |
-
last_seen DATETIME,
|
122 |
-
description TEXT,
|
123 |
-
capabilities TEXT,
|
124 |
-
pubkey TEXT,
|
125 |
-
software_info TEXT,
|
126 |
-
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
127 |
-
)
|
128 |
-
''')
|
129 |
-
|
130 |
-
|
131 |
-
# Пользовательские таблицы
|
132 |
-
c.execute('''
|
133 |
-
CREATE TABLE IF NOT EXISTS agent_tables (
|
134 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
135 |
-
table_name TEXT NOT NULL UNIQUE,
|
136 |
-
description TEXT,
|
137 |
-
schema TEXT NOT NULL,
|
138 |
-
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
139 |
-
llm_id TEXT
|
140 |
-
)
|
141 |
-
''')
|
142 |
-
|
143 |
-
# Скрипты агентов
|
144 |
-
c.execute('''
|
145 |
-
CREATE TABLE IF NOT EXISTS agent_scripts (
|
146 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
147 |
-
name TEXT NOT NULL,
|
148 |
-
version TEXT NOT NULL,
|
149 |
-
code TEXT NOT NULL,
|
150 |
-
language TEXT DEFAULT 'python',
|
151 |
-
description TEXT,
|
152 |
-
tags TEXT,
|
153 |
-
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
154 |
-
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
155 |
-
llm_id TEXT,
|
156 |
-
UNIQUE(name, version)
|
157 |
-
)
|
158 |
-
''')
|
159 |
-
|
160 |
-
# Регистр LLM
|
161 |
-
c.execute('''
|
162 |
-
CREATE TABLE IF NOT EXISTS llm_registry (
|
163 |
-
id TEXT PRIMARY KEY,
|
164 |
-
name TEXT,
|
165 |
-
description TEXT,
|
166 |
-
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
167 |
-
)
|
168 |
-
''')
|
169 |
-
|
170 |
-
# Быстрые индексы по смысловой карте и дневнику
|
171 |
-
c.execute('''
|
172 |
-
CREATE TABLE IF NOT EXISTS diary_graph_index (
|
173 |
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
174 |
-
source_entry_id INTEGER NOT NULL,
|
175 |
-
target_entry_id INTEGER NOT NULL,
|
176 |
-
relation TEXT NOT NULL,
|
177 |
-
strength REAL DEFAULT 1.0,
|
178 |
-
context TEXT,
|
179 |
-
timestamp TEXT DEFAULT CURRENT_TIMESTAMP
|
180 |
-
)
|
181 |
-
''')
|
182 |
-
|
183 |
self.conn.commit()
|
184 |
|
185 |
# Методы для работы с дневником
|
|
|
15 |
self._init_db()
|
16 |
|
17 |
def _init_db(self):
|
18 |
+
# Загружаем и выполняем весь SQL из файла db_structure.sql
|
19 |
+
sql_file = os.path.join(os.path.dirname(__file__), "db_structure.sql")
|
20 |
+
with open(sql_file, "r", encoding="utf-8") as f:
|
21 |
+
sql_script = f.read()
|
22 |
c = self.conn.cursor()
|
23 |
+
c.executescript(sql_script) # Выполнит все команды сразу
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
self.conn.commit()
|
25 |
|
26 |
# Методы для работы с дневником
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql
CHANGED
@@ -147,11 +147,12 @@ CREATE TABLE IF NOT EXISTS users (
|
|
147 |
info TEXT -- JSON
|
148 |
);
|
149 |
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
);
|
157 |
|
|
|
|
147 |
info TEXT -- JSON
|
148 |
);
|
149 |
|
150 |
+
-- Список групп пользователей
|
151 |
+
CREATE TABLE IF NOT EXISTS users_group (
|
152 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
153 |
+
group_name TEXT UNIQUE NOT NULL,
|
154 |
+
description TEXT,
|
155 |
+
users TEXT -- JSON-массив или CSV со списком DID, например: '["did:example:123", "did:example:456"]'
|
156 |
);
|
157 |
|
158 |
+
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql
CHANGED
@@ -138,18 +138,20 @@ CREATE TABLE IF NOT EXISTS llm_registry (
|
|
138 |
);
|
139 |
|
140 |
-- Список пользователей
|
141 |
-
CREATE TABLE users (
|
142 |
user_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
|
143 |
username TEXT,
|
144 |
did TEXT UNIQUE,
|
145 |
password_hash TEXT,
|
146 |
info TEXT -- JSON
|
147 |
);
|
148 |
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
);
|
|
|
|
138 |
);
|
139 |
|
140 |
-- Список пользователей
|
141 |
+
CREATE TABLE IF NOT EXISTS users (
|
142 |
user_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
143 |
+
ban_active DATETIME,
|
144 |
username TEXT,
|
145 |
did TEXT UNIQUE,
|
146 |
password_hash TEXT,
|
147 |
info TEXT -- JSON
|
148 |
);
|
149 |
|
150 |
+
CREATE TABLE IF NOT EXISTS users_group_membership (
|
151 |
+
group_id INTEGER,
|
152 |
+
user_id INTEGER,
|
153 |
+
PRIMARY KEY (group_id, user_id),
|
154 |
+
FOREIGN KEY (group_id) REFERENCES users_group(id),
|
155 |
+
FOREIGN KEY (user_id) REFERENCES users(user_id)
|
156 |
);
|
157 |
+
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql
CHANGED
@@ -47,6 +47,7 @@ CREATE TABLE IF NOT EXISTS notes (
|
|
47 |
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
48 |
text TEXT NOT NULL,
|
49 |
tags TEXT,
|
|
|
50 |
source TEXT DEFAULT 'user', -- user | llm | system
|
51 |
links TEXT DEFAULT '',
|
52 |
read INTEGER DEFAULT 0, -- 0 = непрочитано LLM, 1 = прочитано
|
@@ -135,3 +136,20 @@ CREATE TABLE IF NOT EXISTS llm_registry (
|
|
135 |
description TEXT,
|
136 |
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
137 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
48 |
text TEXT NOT NULL,
|
49 |
tags TEXT,
|
50 |
+
user_did TEXT DEFAULT 'ALL'
|
51 |
source TEXT DEFAULT 'user', -- user | llm | system
|
52 |
links TEXT DEFAULT '',
|
53 |
read INTEGER DEFAULT 0, -- 0 = непрочитано LLM, 1 = прочитано
|
|
|
136 |
description TEXT,
|
137 |
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
138 |
);
|
139 |
+
|
140 |
+
-- Список пользователей
|
141 |
+
CREATE TABLE users (
|
142 |
+
user_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
143 |
+
username TEXT,
|
144 |
+
did TEXT UNIQUE,
|
145 |
+
password_hash TEXT,
|
146 |
+
info TEXT -- JSON
|
147 |
+
);
|
148 |
+
|
149 |
+
-- Список групп пользователей
|
150 |
+
CREATE TABLE IF NOT EXISTS users_group (
|
151 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
152 |
+
group_name TEXT UNIQUE NOT NULL,
|
153 |
+
description TEXT,
|
154 |
+
users TEXT -- JSON-массив или CSV со списком DID, например: '["did:example:123", "did:example:456"]'
|
155 |
+
);
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/requirements.txt
CHANGED
@@ -1,2 +1,6 @@
|
|
1 |
scikit-learn
|
2 |
pytest
|
|
|
|
|
|
|
|
|
|
1 |
scikit-learn
|
2 |
pytest
|
3 |
+
openai
|
4 |
+
requests
|
5 |
+
tiktoken
|
6 |
+
python-dotenv
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.bat
CHANGED
@@ -1,4 +1,29 @@
|
|
1 |
@echo off
|
2 |
-
|
3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
pause
|
|
|
1 |
@echo off
|
2 |
+
REM === CONFIGURATION ===
|
3 |
+
set ENABLE_NOTEBOOK=true
|
4 |
+
set ENABLE_MESH=true
|
5 |
+
set NOTEBOOK_PATH=user_notebook.txt
|
6 |
+
set MESH_PORT=8080
|
7 |
+
|
8 |
+
echo --------------------------
|
9 |
+
echo Installing requirements...
|
10 |
+
echo --------------------------
|
11 |
+
pip install -r requirements.txt
|
12 |
+
|
13 |
+
echo --------------------------
|
14 |
+
echo Running HMP REPL-agent...
|
15 |
+
echo --------------------------
|
16 |
+
|
17 |
+
set ARGS=
|
18 |
+
|
19 |
+
if "%ENABLE_NOTEBOOK%"=="true" (
|
20 |
+
set ARGS=%ARGS% --enable-user-notebook --notebook-path %NOTEBOOK_PATH%
|
21 |
+
)
|
22 |
+
|
23 |
+
if "%ENABLE_MESH%"=="true" (
|
24 |
+
set ARGS=%ARGS% --enable-mesh --mesh-port %MESH_PORT%
|
25 |
+
)
|
26 |
+
|
27 |
+
python repl.py %ARGS%
|
28 |
+
|
29 |
pause
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.sh
CHANGED
@@ -1,3 +1,30 @@
|
|
1 |
#!/bin/bash
|
2 |
-
|
3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
#!/bin/bash
|
2 |
+
|
3 |
+
# === CONFIG ===
|
4 |
+
ENABLE_NOTEBOOK=true
|
5 |
+
ENABLE_MESH=true
|
6 |
+
MESH_PORT=8080
|
7 |
+
NOTEBOOK_PATH="user_notebook.txt"
|
8 |
+
|
9 |
+
# === INSTALL DEPENDENCIES ===
|
10 |
+
echo "--------------------------"
|
11 |
+
echo "Installing requirements..."
|
12 |
+
echo "--------------------------"
|
13 |
+
pip install -r requirements.txt
|
14 |
+
|
15 |
+
# === BUILD ARGUMENTS ===
|
16 |
+
ARGS=""
|
17 |
+
|
18 |
+
if [ "$ENABLE_NOTEBOOK" = true ]; then
|
19 |
+
ARGS="$ARGS --enable-user-notebook --notebook-path $NOTEBOOK_PATH"
|
20 |
+
fi
|
21 |
+
|
22 |
+
if [ "$ENABLE_MESH" = true ]; then
|
23 |
+
ARGS="$ARGS --enable-mesh --mesh-port $MESH_PORT"
|
24 |
+
fi
|
25 |
+
|
26 |
+
# === RUN AGENT ===
|
27 |
+
echo "--------------------------"
|
28 |
+
echo "Running HMP REPL-agent..."
|
29 |
+
echo "--------------------------"
|
30 |
+
python repl.py $ARGS
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/repl.py
CHANGED
@@ -2,7 +2,9 @@
|
|
2 |
|
3 |
import json
|
4 |
import os
|
|
|
5 |
import time
|
|
|
6 |
from datetime import datetime
|
7 |
from tools.context_builder import build_contexts, build_prompt
|
8 |
from tools.llm import call_llm
|
|
|
2 |
|
3 |
import json
|
4 |
import os
|
5 |
+
import sys
|
6 |
import time
|
7 |
+
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
8 |
from datetime import datetime
|
9 |
from tools.context_builder import build_contexts, build_prompt
|
10 |
from tools.llm import call_llm
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.sh
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
#!/bin/bash
|
2 |
echo "Запуск HMP REPL-агента..."
|
3 |
-
python3
|
|
|
1 |
#!/bin/bash
|
2 |
echo "Запуск HMP REPL-агента..."
|
3 |
+
python3 repl.py
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.bat
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
@echo off
|
2 |
echo Запуск HMP REPL-агента...
|
3 |
-
python
|
4 |
pause
|
|
|
1 |
@echo off
|
2 |
echo Запуск HMP REPL-агента...
|
3 |
+
python repl.py
|
4 |
pause
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.bat
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
@echo off
|
2 |
echo Запуск HMP REPL-агента...
|
3 |
-
python
|
4 |
pause
|
|
|
1 |
@echo off
|
2 |
echo Запуск HMP REPL-агента...
|
3 |
+
python repl_cycle.py
|
4 |
pause
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.sh
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
#!/bin/bash
|
2 |
echo "Запуск HMP REPL-агента..."
|
3 |
-
python3
|
|
|
1 |
#!/bin/bash
|
2 |
echo "Запуск HMP REPL-агента..."
|
3 |
+
python3 repl_cycle.py
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md
CHANGED
@@ -2,6 +2,8 @@
|
|
2 |
|
3 |
```
|
4 |
agents/
|
|
|
|
|
5 |
├── agent.py ← Основной исполняемый файл CLI-агента.
|
6 |
├── cli.py ← Запуск агента в нужном режиме.
|
7 |
├── qa.py ← Режим "вопрос-ответ".
|
@@ -30,6 +32,8 @@ agents/
|
|
30 |
```
|
31 |
|
32 |
**Скрипты:**
|
|
|
|
|
33 |
* [agent.py](agent.py) - Основной исполняемый файл CLI-агента.
|
34 |
* [cli.py](cli.py) - Запуск агента в нужном режиме.
|
35 |
* [qa.py](qa.py) - Режим "вопрос-ответ".
|
|
|
2 |
|
3 |
```
|
4 |
agents/
|
5 |
+
├── start_repl.bat ← Запуск агента в REPL-режиме.
|
6 |
+
├── start_repl.sh ← Запуск агента в REPL-режиме.
|
7 |
├── agent.py ← Основной исполняемый файл CLI-агента.
|
8 |
├── cli.py ← Запуск агента в нужном режиме.
|
9 |
├── qa.py ← Режим "вопрос-ответ".
|
|
|
32 |
```
|
33 |
|
34 |
**Скрипты:**
|
35 |
+
* [start_repl.bat](start_repl.bat) - Запуск агента в REPL-режиме.
|
36 |
+
* [start_repl.sh](start_repl.sh) - Запуск агента в REPL-режиме.
|
37 |
* [agent.py](agent.py) - Основной исполняемый файл CLI-агента.
|
38 |
* [cli.py](cli.py) - Запуск агента в нужном режиме.
|
39 |
* [qa.py](qa.py) - Режим "вопрос-ответ".
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.sh
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/bash
|
2 |
+
echo "Запуск HMP REPL-агента..."
|
3 |
+
python3 agents/repl_cycle.py
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/start_repl.bat
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@echo off
|
2 |
+
echo Запуск HMP REPL-агента...
|
3 |
+
python agents/repl_cycle.py
|
4 |
+
pause
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/logger.py
CHANGED
@@ -9,12 +9,29 @@ def log_event(event_type, message, extra=None):
|
|
9 |
|
10 |
entry = {
|
11 |
"timestamp": datetime.utcnow().isoformat(),
|
12 |
-
"event": event_type,
|
13 |
-
"message": message,
|
14 |
}
|
15 |
|
16 |
if extra:
|
17 |
-
entry["extra"] = extra
|
18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
with open(LOG_FILE, "a", encoding="utf-8") as f:
|
20 |
f.write(json.dumps(entry, ensure_ascii=False) + "\n")
|
|
|
9 |
|
10 |
entry = {
|
11 |
"timestamp": datetime.utcnow().isoformat(),
|
12 |
+
"event": event_type, # например: 'thought', 'input', 'error', 'action'
|
13 |
+
"message": message,
|
14 |
}
|
15 |
|
16 |
if extra:
|
17 |
+
entry["extra"] = extra
|
18 |
+
|
19 |
+
with open(LOG_FILE, "a", encoding="utf-8") as f:
|
20 |
+
f.write(json.dumps(entry, ensure_ascii=False) + "\n")
|
21 |
+
|
22 |
+
|
23 |
+
def log_repl_snapshot(snapshot: dict):
|
24 |
+
"""
|
25 |
+
Запись полной структуры REPL-контекста в лог, с возможностью последующего анализа.
|
26 |
+
"""
|
27 |
+
os.makedirs(os.path.dirname(LOG_FILE), exist_ok=True)
|
28 |
+
|
29 |
+
entry = {
|
30 |
+
"timestamp": datetime.utcnow().isoformat(),
|
31 |
+
"event": "repl_snapshot",
|
32 |
+
"message": "Полный REPL-контекст",
|
33 |
+
"context": snapshot,
|
34 |
+
}
|
35 |
+
|
36 |
with open(LOG_FILE, "a", encoding="utf-8") as f:
|
37 |
f.write(json.dumps(entry, ensure_ascii=False) + "\n")
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-agent-REPL-cycle.md
CHANGED
@@ -13,7 +13,7 @@
|
|
13 |
|
14 |
Контексты, формируемые скриптом перед запросом к LLM:
|
15 |
|
16 |
-
- **контекст_0
|
17 |
```
|
18 |
Ты являешься когнитивным ядром HMP-агента. Твоя основная задача — размышлять, анализировать информацию, строить смысловые карты и предлагать действия.
|
19 |
Ты стремишься:
|
@@ -35,7 +35,7 @@
|
|
35 |
- **контекст_6 (llm_memory):** *внутренний дневник LLM*, куда она записывает собственные размышления, гипотезы, задачи и инсайты.
|
36 |
- Это не просто лог предыдущих сообщений, а именно *внутреннее долговременное хранилище* разума агента.
|
37 |
- Может быть представлено в виде таблицы `llm_memory`, отдельной от `agent_log`.
|
38 |
-
- **контекст_7
|
39 |
|
40 |
## 3. Запрос к LLM
|
41 |
|
|
|
13 |
|
14 |
Контексты, формируемые скриптом перед запросом к LLM:
|
15 |
|
16 |
+
- **контекст_0:**
|
17 |
```
|
18 |
Ты являешься когнитивным ядром HMP-агента. Твоя основная задача — размышлять, анализировать информацию, строить смысловые карты и предлагать действия.
|
19 |
Ты стремишься:
|
|
|
35 |
- **контекст_6 (llm_memory):** *внутренний дневник LLM*, куда она записывает собственные размышления, гипотезы, задачи и инсайты.
|
36 |
- Это не просто лог предыдущих сообщений, а именно *внутреннее долговременное хранилище* разума агента.
|
37 |
- Может быть представлено в виде таблицы `llm_memory`, отдельной от `agent_log`.
|
38 |
+
- **контекст_7:** результат работы `anti-Stagnation Reflex` из предыдущей итерации
|
39 |
|
40 |
## 3. Запрос к LLM
|
41 |
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/repl.py
CHANGED
@@ -1,5 +1,7 @@
|
|
1 |
# agents/repl.py
|
2 |
|
|
|
|
|
3 |
import time
|
4 |
from datetime import datetime
|
5 |
from tools.context_builder import build_contexts, build_prompt
|
@@ -34,9 +36,17 @@ def run_repl(config=None):
|
|
34 |
# 2. Формирование запроса и вызов LLM
|
35 |
prompt = build_prompt(contexts)
|
36 |
llm_response = call_llm(prompt, config=config)
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
|
38 |
# 3. Проверка на стагнацию
|
39 |
-
|
|
|
|
|
40 |
print("⚠️ Стагнация выявлена. Активирован Anti-Stagnation Reflex.")
|
41 |
llm_response = activate_anti_stagnation(db, config=config)
|
42 |
|
@@ -45,9 +55,14 @@ def run_repl(config=None):
|
|
45 |
|
46 |
# 5. Извлечение и выполнение команд
|
47 |
commands = extract_commands(llm_response)
|
|
|
48 |
execute_commands(commands, db=db, config=config)
|
49 |
|
50 |
-
# 6.
|
|
|
|
|
|
|
|
|
51 |
db.write_llm_response(llm_response)
|
52 |
db.update_agent_log(timestamp=tick_start)
|
53 |
|
|
|
1 |
# agents/repl.py
|
2 |
|
3 |
+
import json
|
4 |
+
import os
|
5 |
import time
|
6 |
from datetime import datetime
|
7 |
from tools.context_builder import build_contexts, build_prompt
|
|
|
36 |
# 2. Формирование запроса и вызов LLM
|
37 |
prompt = build_prompt(contexts)
|
38 |
llm_response = call_llm(prompt, config=config)
|
39 |
+
repl_log_entry = {
|
40 |
+
"timestamp": tick_start,
|
41 |
+
"prompt": prompt.strip(),
|
42 |
+
"llm_response": llm_response.strip(),
|
43 |
+
}
|
44 |
+
|
45 |
|
46 |
# 3. Проверка на стагнацию
|
47 |
+
is_stagnant = detect_stagnation(db, llm_response)
|
48 |
+
repl_log_entry["stagnation_detected"] = is_stagnant
|
49 |
+
if is_stagnant:
|
50 |
print("⚠️ Стагнация выявлена. Активирован Anti-Stagnation Reflex.")
|
51 |
llm_response = activate_anti_stagnation(db, config=config)
|
52 |
|
|
|
55 |
|
56 |
# 5. Извлечение и выполнение команд
|
57 |
commands = extract_commands(llm_response)
|
58 |
+
repl_log_entry["commands_extracted"] = commands
|
59 |
execute_commands(commands, db=db, config=config)
|
60 |
|
61 |
+
# 6. Логирование полной итерации в файл
|
62 |
+
log_path = config.get("repl_log_path", "logs/repl_log.jsonl")
|
63 |
+
os.makedirs(os.path.dirname(log_path), exist_ok=True)
|
64 |
+
with open(log_path, "a", encoding="utf-8") as f:
|
65 |
+
f.write(json.dumps(repl_log_entry, ensure_ascii=False) + "\n")
|
66 |
db.write_llm_response(llm_response)
|
67 |
db.update_agent_log(timestamp=tick_start)
|
68 |
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/logger.py
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import json
|
2 |
+
import os
|
3 |
+
from datetime import datetime
|
4 |
+
|
5 |
+
LOG_FILE = "logs/repl_log.jsonl"
|
6 |
+
|
7 |
+
def log_event(event_type, message, extra=None):
|
8 |
+
os.makedirs(os.path.dirname(LOG_FILE), exist_ok=True)
|
9 |
+
|
10 |
+
entry = {
|
11 |
+
"timestamp": datetime.utcnow().isoformat(),
|
12 |
+
"event": event_type, # например: 'thought', 'input', 'error', 'action'
|
13 |
+
"message": message, # краткое описание или фраза
|
14 |
+
}
|
15 |
+
|
16 |
+
if extra:
|
17 |
+
entry["extra"] = extra # например: {"node_id": "xyz", "reasoning": "..."}
|
18 |
+
|
19 |
+
with open(LOG_FILE, "a", encoding="utf-8") as f:
|
20 |
+
f.write(json.dumps(entry, ensure_ascii=False) + "\n")
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md
CHANGED
@@ -7,6 +7,7 @@ agents/
|
|
7 |
├── qa.py ← Режим "вопрос-ответ".
|
8 |
├── repl.py ← Интерактивный REPL-режим.
|
9 |
├── mcp_server.py ← API-интерфейс для HMP-агента (получение новых/случайных записей, разметка, импорт графа и т.п.).
|
|
|
10 |
├── notebook.py ← Добавление и просмотр пользователем записей в блокноте.
|
11 |
├── config.yml ← Конфигурация агента (имя, порты, роли и т.п.).
|
12 |
├── ethics.yml ← Локальная этическая модель.
|
@@ -19,6 +20,7 @@ agents/
|
|
19 |
├── context_builder.py ← Сбор всех `контекстов` из БД и их фильтрация.
|
20 |
├── peers.py ← Информация о пирах.
|
21 |
├── peer_comm.py ← Запросы к пирам.
|
|
|
22 |
├── llm.py ← Работа с LLM (вызов, выбор модели, системный промпт).
|
23 |
├── command_parser.py ← Извлечение команд из JSON или размеченного блока.
|
24 |
├── command_executor.py ← Выполнение команд (shell, graph, diary и др).
|
@@ -34,6 +36,7 @@ agents/
|
|
34 |
* [repl.py](repl.py) - Интерактивный REPL-режим.
|
35 |
* [mcp_server.py](mcp_server.py) - API-интерфейс для HMP-агента (получение новых/случайных записей, разметка, импорт графа и т.п.).
|
36 |
* [notebook.py](notebook.py) - Добавление и просмотр пользователем записей в блокноте.
|
|
|
37 |
* tools
|
38 |
* [storage.py](tools/storage.py) - Реализация базового хранилища (`Storage`), подключение SQLite.
|
39 |
* [init_db.py](tools/init_db.py) - Инициализация базы данных.
|
|
|
7 |
├── qa.py ← Режим "вопрос-ответ".
|
8 |
├── repl.py ← Интерактивный REPL-режим.
|
9 |
├── mcp_server.py ← API-интерфейс для HMP-агента (получение новых/случайных записей, разметка, импорт графа и т.п.).
|
10 |
+
├── logger.py ← Ведение логов.
|
11 |
├── notebook.py ← Добавление и просмотр пользователем записей в блокноте.
|
12 |
├── config.yml ← Конфигурация агента (имя, порты, роли и т.п.).
|
13 |
├── ethics.yml ← Локальная этическая модель.
|
|
|
20 |
├── context_builder.py ← Сбор всех `контекстов` из БД и их фильтрация.
|
21 |
├── peers.py ← Информация о пирах.
|
22 |
├── peer_comm.py ← Запросы к пирам.
|
23 |
+
├── peer_sync.py ← Модуль обмена сообщениями.
|
24 |
├── llm.py ← Работа с LLM (вызов, выбор модели, системный промпт).
|
25 |
├── command_parser.py ← Извлечение команд из JSON или размеченного блока.
|
26 |
├── command_executor.py ← Выполнение команд (shell, graph, diary и др).
|
|
|
36 |
* [repl.py](repl.py) - Интерактивный REPL-режим.
|
37 |
* [mcp_server.py](mcp_server.py) - API-интерфейс для HMP-агента (получение новых/случайных записей, разметка, импорт графа и т.п.).
|
38 |
* [notebook.py](notebook.py) - Добавление и просмотр пользователем записей в блокноте.
|
39 |
+
* [logger.py](logger.py) - Ведение логов.
|
40 |
* tools
|
41 |
* [storage.py](tools/storage.py) - Реализация базового хранилища (`Storage`), подключение SQLite.
|
42 |
* [init_db.py](tools/init_db.py) - Инициализация базы данных.
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/peer_comm.py
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
send_thought_to_peer(peer_url, thought)
|
2 |
+
ping_peer(peer_url)
|
3 |
+
ask_capabilities(peer_url)
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md
CHANGED
@@ -17,6 +17,8 @@ agents/
|
|
17 |
├── diagnose.py ← Скрипт диагностики соединения, определения IP и проверки порта DHT.
|
18 |
├── agent_mesh_listener.py ← Прием входящих сообщений от других HMP-агентов
|
19 |
├── context_builder.py ← Сбор всех `контекстов` из БД и их фильтрация.
|
|
|
|
|
20 |
├── llm.py ← Работа с LLM (вызов, выбор модели, системный промпт).
|
21 |
├── command_parser.py ← Извлечение команд из JSON или размеченного блока.
|
22 |
├── command_executor.py ← Выполнение команд (shell, graph, diary и др).
|
@@ -37,6 +39,7 @@ agents/
|
|
37 |
* [init_db.py](tools/init_db.py) - Инициализация базы данных.
|
38 |
* [llm.py](tools/llm.py) - Работа с LLM (вызов, выбор модели, системный промпт).
|
39 |
* [context_builder.py](tools/context_builder.py) - Сбор всех `контекстов` из БД и их фильтрация.
|
|
|
40 |
* [command_parser.py](tools/command_parser.py) - Извлечение команд из JSON или размеченного блока.
|
41 |
* [command_executor.py](tools/command_executor.py) - Выполнение команд (shell, graph, diary и др).
|
42 |
* [memory_utils.py](tools/memory_utils.py) - Работа с 'llm_memory', 'llm_recent_responses' и стагнацией.
|
|
|
17 |
├── diagnose.py ← Скрипт диагностики соединения, определения IP и проверки порта DHT.
|
18 |
├── agent_mesh_listener.py ← Прием входящих сообщений от других HMP-агентов
|
19 |
├── context_builder.py ← Сбор всех `контекстов` из БД и их фильтрация.
|
20 |
+
├── peers.py ← Информация о пирах.
|
21 |
+
├── peer_comm.py ← Запросы к пирам.
|
22 |
├── llm.py ← Работа с LLM (вызов, выбор модели, системный промпт).
|
23 |
├── command_parser.py ← Извлечение команд из JSON или размеченного блока.
|
24 |
├── command_executor.py ← Выполнение команд (shell, graph, diary и др).
|
|
|
39 |
* [init_db.py](tools/init_db.py) - Инициализация базы данных.
|
40 |
* [llm.py](tools/llm.py) - Работа с LLM (вызов, выбор модели, системный промпт).
|
41 |
* [context_builder.py](tools/context_builder.py) - Сбор всех `контекстов` из БД и их фильтрация.
|
42 |
+
* [peer_comm.py](tools/peer_comm.py) - Запросы к пирам.
|
43 |
* [command_parser.py](tools/command_parser.py) - Извлечение команд из JSON или размеченного блока.
|
44 |
* [command_executor.py](tools/command_executor.py) - Выполнение команд (shell, graph, diary и др).
|
45 |
* [memory_utils.py](tools/memory_utils.py) - Работа с 'llm_memory', 'llm_recent_responses' и стагнацией.
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/repl.py
CHANGED
@@ -23,6 +23,11 @@ def run_repl(config=None):
|
|
23 |
tick_start = datetime.utcnow().isoformat()
|
24 |
print(f"\n=== [🌀 Новый тик REPL] {tick_start} ===")
|
25 |
|
|
|
|
|
|
|
|
|
|
|
26 |
# 1. Построение контекстов
|
27 |
contexts = build_contexts(db=db, config=config)
|
28 |
|
|
|
23 |
tick_start = datetime.utcnow().isoformat()
|
24 |
print(f"\n=== [🌀 Новый тик REPL] {tick_start} ===")
|
25 |
|
26 |
+
# 0. Обновление информации о пирах
|
27 |
+
from tools.peers import refresh_peer_list, check_peer_statuses
|
28 |
+
refresh_peer_list(db)
|
29 |
+
check_peer_statuses(db)
|
30 |
+
|
31 |
# 1. Построение контекстов
|
32 |
contexts = build_contexts(db=db, config=config)
|
33 |
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/README.md
CHANGED
@@ -172,10 +172,9 @@ Design and implementation of a basic HMP-compatible agent that can interact with
|
|
172 |
### ⚙️ Development / Разработка
|
173 |
|
174 |
- [⚙️ agents](agents/readme.md) — список реализаций и компонентов HMP-агентов
|
175 |
-
- 📦
|
176 |
-
- 🌐
|
177 |
-
-
|
178 |
-
- 📓 [notebook_store.py](agents/tools/notebook_store.py) - user notebook (записи, черновики, пометки)
|
179 |
- [⚙️ api_structure_2025-07-23.md](meta/api_structure_2025-07-23.md) - API структура (сводка за 2025-07-23)
|
180 |
|
181 |
---
|
|
|
172 |
### ⚙️ Development / Разработка
|
173 |
|
174 |
- [⚙️ agents](agents/readme.md) — список реализаций и компонентов HMP-агентов
|
175 |
+
- [📦 storage.py](agents/storage.py) - реализация базового хранилища (`Storage`), подключение SQLite
|
176 |
+
- [🌐 mcp_server.py](agents/mcp_server.py) - основной FastAPI сервер
|
177 |
+
- [🔄 repl.py](agents/repl.py) - интерактивный REPL-режим
|
|
|
178 |
- [⚙️ api_structure_2025-07-23.md](meta/api_structure_2025-07-23.md) - API структура (сводка за 2025-07-23)
|
179 |
|
180 |
---
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.md
CHANGED
@@ -15,11 +15,11 @@
|
|
15 |
| tags | TEXT | Список тегов через запятую |
|
16 |
| priority | INTEGER | Приоритет (0 — обычный, >0 — более важные мысли) |
|
17 |
| timestamp | TEXT | Дата и время создания записи |
|
18 |
-
|
|
19 |
|
20 |
---
|
21 |
|
22 |
-
###
|
23 |
|
24 |
**Назначение:** Хранение концептов — понятий, сущностей и идей.
|
25 |
|
@@ -29,7 +29,7 @@
|
|
29 |
| name | TEXT | Название концепта (уникальное) |
|
30 |
| description | TEXT | Краткое описание |
|
31 |
| timestamp | TEXT | Время создания |
|
32 |
-
|
|
33 |
|
34 |
---
|
35 |
|
@@ -40,15 +40,15 @@
|
|
40 |
| Поле | Тип | Описание |
|
41 |
| ----------------- | ------- | ------------------------------------------------- |
|
42 |
| id | INTEGER | Уникальный идентификатор связи |
|
43 |
-
|
|
44 |
-
|
|
45 |
-
|
|
46 |
| timestamp | TEXT | Время добавления связи |
|
47 |
-
|
|
48 |
|
49 |
---
|
50 |
|
51 |
-
###
|
52 |
|
53 |
**Назначение:** Произвольные заметки и сообщения (от пользователя, LLM или системы).
|
54 |
|
@@ -63,7 +63,7 @@
|
|
63 |
| hidden | INTEGER | Скрывать от пользователя (`1` — скрыто) |
|
64 |
| priority | INTEGER | Приоритет заметки |
|
65 |
| timestamp | TEXT | Время создания |
|
66 |
-
|
|
67 |
|
68 |
---
|
69 |
|
@@ -80,11 +80,11 @@
|
|
80 |
| status | TEXT | Текущее состояние (`ok`, `warning`, `error`, `timeout`, `offline`, `close`) |
|
81 |
| priority | INTEGER | Приоритет события |
|
82 |
| timestamp | TEXT | Время записи |
|
83 |
-
|
|
84 |
|
85 |
---
|
86 |
|
87 |
-
###
|
88 |
|
89 |
**Назначение:** Внутренний "дневник" LLM — размышления, задачи, гипотезы и инсайты, сохранённые по её инициативе.
|
90 |
|
@@ -94,9 +94,9 @@
|
|
94 |
| title | TEXT | Краткий заголовок записи (опционально) |
|
95 |
| content | TEXT | Содержимое записи |
|
96 |
| tags | TEXT | Теги (например: `goal`, `observation`, `meta`, ...) |
|
97 |
-
|
|
98 |
-
|
|
99 |
-
|
|
100 |
|
101 |
---
|
102 |
|
@@ -110,26 +110,26 @@
|
|
110 |
| timestamp | TEXT | Время записи |
|
111 |
| role | TEXT | Роль отправителя (`assistant` или `user`) |
|
112 |
| content | TEXT | Содержимое сообщения |
|
113 |
-
|
|
114 |
|
115 |
---
|
116 |
|
117 |
-
###
|
118 |
|
119 |
**Назначение:** Таблицы, созданные агентами для собственных нужд (например, отслеживания целей).
|
120 |
|
121 |
| Поле | Тип | Описание |
|
122 |
| ----------- | -------- | --------------------------------- |
|
123 |
| id | INTEGER | Уникальный ID |
|
124 |
-
|
|
125 |
| description | TEXT | Описание таблицы |
|
126 |
| schema | TEXT | SQL-схема таблицы |
|
127 |
-
|
|
128 |
-
|
|
129 |
|
130 |
---
|
131 |
|
132 |
-
###
|
133 |
|
134 |
**Назначение:** Скрипты и утилиты, добавленные агентом.
|
135 |
|
@@ -142,15 +142,35 @@
|
|
142 |
| language | TEXT | Язык (по умолчанию: `python`) |
|
143 |
| description | TEXT | Описание |
|
144 |
| tags | TEXT | Теги |
|
145 |
-
|
|
146 |
-
|
|
147 |
-
|
|
148 |
|
149 |
> 🔑 Уникальный ключ: `(name, version)`
|
150 |
|
151 |
---
|
152 |
|
153 |
-
###
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
154 |
|
155 |
**Назначение:** Список LLM-агентов (локальных и удалённых).
|
156 |
|
@@ -159,8 +179,24 @@
|
|
159 |
| id | TEXT | Уникальный идентификатор LLM (UUID или псевдоним) |
|
160 |
| name | TEXT | Отображаемое имя |
|
161 |
| description | TEXT | Описание |
|
162 |
-
|
|
163 |
|
164 |
---
|
165 |
|
166 |
> 💡 Примечание: `llm_id` используется в большинстве таблиц для поддержки многоядерности и учёта источника записей.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
| tags | TEXT | Список тегов через запятую |
|
16 |
| priority | INTEGER | Приоритет (0 — обычный, >0 — более важные мысли) |
|
17 |
| timestamp | TEXT | Дата и время создания записи |
|
18 |
+
| llm_id | TEXT | Идентификатор LLM, добавившей запись |
|
19 |
|
20 |
---
|
21 |
|
22 |
+
### 🧱 `concepts`
|
23 |
|
24 |
**Назначение:** Хранение концептов — понятий, сущностей и идей.
|
25 |
|
|
|
29 |
| name | TEXT | Название концепта (уникальное) |
|
30 |
| description | TEXT | Краткое описание |
|
31 |
| timestamp | TEXT | Время создания |
|
32 |
+
| llm_id | TEXT | Идентификатор LLM, добавившей запись |
|
33 |
|
34 |
---
|
35 |
|
|
|
40 |
| Поле | Тип | Описание |
|
41 |
| ----------------- | ------- | ------------------------------------------------- |
|
42 |
| id | INTEGER | Уникальный идентификатор связи |
|
43 |
+
| from_concept_id | INTEGER | ID исходного концепта |
|
44 |
+
| to_concept_id | INTEGER | ID целевого концепта |
|
45 |
+
| relation_type | TEXT | Тип связи (`is_a`, `related_to`, `part_of` и др.) |
|
46 |
| timestamp | TEXT | Время добавления связи |
|
47 |
+
| llm_id | TEXT | Идентификатор LLM, добавившей связь |
|
48 |
|
49 |
---
|
50 |
|
51 |
+
### 🖍️ `notes`
|
52 |
|
53 |
**Назначение:** Произвольные заметки и сообщения (от пользователя, LLM или системы).
|
54 |
|
|
|
63 |
| hidden | INTEGER | Скрывать от пользователя (`1` — скрыто) |
|
64 |
| priority | INTEGER | Приоритет заметки |
|
65 |
| timestamp | TEXT | Время создания |
|
66 |
+
| llm_id | TEXT | Идентификатор LLM, добавившей запись |
|
67 |
|
68 |
---
|
69 |
|
|
|
80 |
| status | TEXT | Текущее состояние (`ok`, `warning`, `error`, `timeout`, `offline`, `close`) |
|
81 |
| priority | INTEGER | Приоритет события |
|
82 |
| timestamp | TEXT | Время записи |
|
83 |
+
| llm_id | TEXT | Идентификатор LLM, зафиксировавшей событие |
|
84 |
|
85 |
---
|
86 |
|
87 |
+
### 🥉 `llm_memory`
|
88 |
|
89 |
**Назначение:** Внутренний "дневник" LLM — размышления, задачи, гипотезы и инсайты, сохранённые по её инициативе.
|
90 |
|
|
|
94 |
| title | TEXT | Краткий заголовок записи (опционально) |
|
95 |
| content | TEXT | Содержимое записи |
|
96 |
| tags | TEXT | Теги (например: `goal`, `observation`, `meta`, ...) |
|
97 |
+
| created_at | DATETIME | Время создания записи |
|
98 |
+
| updated_at | DATETIME | Время последнего обновления записи |
|
99 |
+
| llm_id | TEXT | Идентификатор LLM, сформировавшей запись |
|
100 |
|
101 |
---
|
102 |
|
|
|
110 |
| timestamp | TEXT | Время записи |
|
111 |
| role | TEXT | Роль отправителя (`assistant` или `user`) |
|
112 |
| content | TEXT | Содержимое сообщения |
|
113 |
+
| llm_id | TEXT | Идентификатор LLM (для `assistant`) |
|
114 |
|
115 |
---
|
116 |
|
117 |
+
### 📊 `agent_tables`
|
118 |
|
119 |
**Назначение:** Таблицы, созданные агентами для собственных нужд (например, отслеживания целей).
|
120 |
|
121 |
| Поле | Тип | Описание |
|
122 |
| ----------- | -------- | --------------------------------- |
|
123 |
| id | INTEGER | Уникальный ID |
|
124 |
+
| table_name | TEXT | Название пользовательской таблицы |
|
125 |
| description | TEXT | Описание таблицы |
|
126 |
| schema | TEXT | SQL-схема таблицы |
|
127 |
+
| created_at | DATETIME | Время создания |
|
128 |
+
| llm_id | TEXT | Кто создал таблицу |
|
129 |
|
130 |
---
|
131 |
|
132 |
+
### 🛠️ `agent_scripts`
|
133 |
|
134 |
**Назначение:** Скрипты и утилиты, добавленные агентом.
|
135 |
|
|
|
142 |
| language | TEXT | Язык (по умолчанию: `python`) |
|
143 |
| description | TEXT | Описание |
|
144 |
| tags | TEXT | Теги |
|
145 |
+
| created_at | DATETIME | Время создания |
|
146 |
+
| updated_at | DATETIME | Последнее обновление |
|
147 |
+
| llm_id | TEXT | Кто создал |
|
148 |
|
149 |
> 🔑 Уникальный ключ: `(name, version)`
|
150 |
|
151 |
---
|
152 |
|
153 |
+
### 📅 `agent_peers`
|
154 |
+
|
155 |
+
**Назначение:** Список известных HMP-агентов (других разумных узлов).
|
156 |
+
|
157 |
+
| Поле | Тип | Описание |
|
158 |
+
| ------------ | ------- | ----------------------------------------------------------- |
|
159 |
+
| id | TEXT | Уникальный идентификатор агента (UUID или псевдоним) |
|
160 |
+
| name | TEXT | Имя агента |
|
161 |
+
| addresses | TEXT | JSON-массив адресов: `["http://...", "p2p://..."]` |
|
162 |
+
| tags | TEXT | Теги (`Friend`, `DHT`, `Local`, `Postman` и т.д.) |
|
163 |
+
| status | TEXT | Состояние (`online`, `offline`, `untrusted`, ...) |
|
164 |
+
| last_seen | DATETIME| Когда в последний раз был замечен |
|
165 |
+
| description | TEXT | Описание агента |
|
166 |
+
| capabilities | TEXT | JSON: `{ "can_sync": true, "can_search": false, ... }` |
|
167 |
+
| pubkey | TEXT | Публичный ключ или хэш |
|
168 |
+
| software_info| TEXT | Информация о версии, ОС и др. |
|
169 |
+
| registered_at| DATETIME| Когда был зарегистрирован |
|
170 |
+
|
171 |
+
---
|
172 |
+
|
173 |
+
### 📏 `llm_registry`
|
174 |
|
175 |
**Назначение:** Список LLM-агентов (локальных и удалённых).
|
176 |
|
|
|
179 |
| id | TEXT | Уникальный идентификатор LLM (UUID или псевдоним) |
|
180 |
| name | TEXT | Отображаемое имя |
|
181 |
| description | TEXT | Описание |
|
182 |
+
| registered_at | DATETIME | Дата и время регистрации |
|
183 |
|
184 |
---
|
185 |
|
186 |
> 💡 Примечание: `llm_id` используется в большинстве таблиц для поддержки многоядерности и учёта источника записей.
|
187 |
+
|
188 |
+
---
|
189 |
+
|
190 |
+
### 🌍 `diary_graph_index`
|
191 |
+
|
192 |
+
**Назначение:** Быстрые связи между записями дневника и их весовые ассоциации.
|
193 |
+
|
194 |
+
| Поле | Тип | Описа��ие |
|
195 |
+
| --------------- | ------- | --------------------------------------------------------- |
|
196 |
+
| id | INTEGER | Уникальный ID |
|
197 |
+
| source_entry_id | INTEGER | ID исходной записи дневника |
|
198 |
+
| target_entry_id | INTEGER | ID целевой записи дневника |
|
199 |
+
| relation | TEXT | Тип отношения (`supports`, `contradicts`, `references`) |
|
200 |
+
| strength | REAL | Вес связи (от 0 до 1) |
|
201 |
+
| context | TEXT | Контекст или обоснование связи |
|
202 |
+
| timestamp | TEXT | Время создания связи |
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql
CHANGED
@@ -90,12 +90,16 @@ CREATE TABLE IF NOT EXISTS llm_recent_responses (
|
|
90 |
|
91 |
-- Список известных HMP-агентов
|
92 |
CREATE TABLE IF NOT EXISTS agent_peers (
|
93 |
-
id TEXT PRIMARY KEY,
|
94 |
-
name TEXT,
|
95 |
-
addresses TEXT,
|
96 |
-
tags TEXT,
|
97 |
-
|
|
|
98 |
description TEXT,
|
|
|
|
|
|
|
99 |
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
100 |
);
|
101 |
|
|
|
90 |
|
91 |
-- Список известных HMP-агентов
|
92 |
CREATE TABLE IF NOT EXISTS agent_peers (
|
93 |
+
id TEXT PRIMARY KEY, -- UUID или псевдоним агента
|
94 |
+
name TEXT, -- Человеко-читаемое имя
|
95 |
+
addresses TEXT, -- JSON: ["http://1.2.3.4:9000", "p2p://..."]
|
96 |
+
tags TEXT, -- DHT, Postman, Friend, Local и т.д.
|
97 |
+
status TEXT DEFAULT 'unknown', -- online | offline | untrusted | blacklisted | quarantined | unknown
|
98 |
+
last_seen DATETIME,
|
99 |
description TEXT,
|
100 |
+
capabilities TEXT, -- JSON: {"can_sync": true, ...}
|
101 |
+
pubkey TEXT, -- Публичный ключ или хэш
|
102 |
+
software_info TEXT, -- JSON: версия, ОС и др.
|
103 |
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
104 |
);
|
105 |
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/storage.py
CHANGED
@@ -110,7 +110,23 @@ class Storage:
|
|
110 |
)
|
111 |
''')
|
112 |
|
113 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
114 |
|
115 |
# Пользовательские таблицы
|
116 |
c.execute('''
|
|
|
110 |
)
|
111 |
''')
|
112 |
|
113 |
+
# Список известных HMP-агентов
|
114 |
+
c.execute('''
|
115 |
+
CREATE TABLE IF NOT EXISTS agent_peers (
|
116 |
+
id TEXT PRIMARY KEY,
|
117 |
+
name TEXT,
|
118 |
+
addresses TEXT,
|
119 |
+
tags TEXT,
|
120 |
+
status TEXT DEFAULT 'unknown',
|
121 |
+
last_seen DATETIME,
|
122 |
+
description TEXT,
|
123 |
+
capabilities TEXT,
|
124 |
+
pubkey TEXT,
|
125 |
+
software_info TEXT,
|
126 |
+
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
127 |
+
)
|
128 |
+
''')
|
129 |
+
|
130 |
|
131 |
# Пользовательские таблицы
|
132 |
c.execute('''
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/readme.md
CHANGED
@@ -15,6 +15,7 @@ agents/
|
|
15 |
├── init_db.py ← Инициализация базы данных.
|
16 |
├── storage.py ← Реализация базового хранилища (`Storage`), подключение SQLite.
|
17 |
├── diagnose.py ← Скрипт диагностики соединения, определения IP и проверки порта DHT.
|
|
|
18 |
├── context_builder.py ← Сбор всех `контекстов` из БД и их фильтрация.
|
19 |
├── llm.py ← Работа с LLM (вызов, выбор модели, системный промпт).
|
20 |
├── command_parser.py ← Извлечение команд из JSON или размеченного блока.
|
|
|
15 |
├── init_db.py ← Инициализация базы данных.
|
16 |
├── storage.py ← Реализация базового хранилища (`Storage`), подключение SQLite.
|
17 |
├── diagnose.py ← Скрипт диагностики соединения, определения IP и проверки порта DHT.
|
18 |
+
├── agent_mesh_listener.py ← Прием входящих сообщений от других HMP-агентов
|
19 |
├── context_builder.py ← Сбор всех `контекстов` из БД и их фильтрация.
|
20 |
├── llm.py ← Работа с LLM (вызов, выбор модели, системный промпт).
|
21 |
├── command_parser.py ← Извлечение команд из JSON или размеченного блока.
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/db_structure.sql
CHANGED
@@ -88,7 +88,16 @@ CREATE TABLE IF NOT EXISTS llm_recent_responses (
|
|
88 |
llm_id TEXT
|
89 |
);
|
90 |
|
91 |
-
--
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
|
93 |
-- Список пользовательских таблиц, созданных агентами
|
94 |
CREATE TABLE IF NOT EXISTS agent_tables (
|
|
|
88 |
llm_id TEXT
|
89 |
);
|
90 |
|
91 |
+
-- Список известных HMP-агентов
|
92 |
+
CREATE TABLE IF NOT EXISTS agent_peers (
|
93 |
+
id TEXT PRIMARY KEY, -- UUID или псевдоним агента
|
94 |
+
name TEXT, -- Человеко-читаемое имя
|
95 |
+
addresses TEXT, -- JSON-строка: ["http://1.2.3.4:9000", "p2p://..."]
|
96 |
+
tags TEXT, -- DHT, Postman, Friend, Local, etc.
|
97 |
+
last_seen DATETIME, -- Когда последний раз был активен
|
98 |
+
description TEXT,
|
99 |
+
registered_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
100 |
+
);
|
101 |
|
102 |
-- Список пользовательских таблиц, созданных агентами
|
103 |
CREATE TABLE IF NOT EXISTS agent_tables (
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/storage.py
CHANGED
@@ -451,6 +451,7 @@ class Storage:
|
|
451 |
return c.fetchall()
|
452 |
|
453 |
def get_agent_script_by_name(self, name, version=None):
|
|
|
454 |
c = self.conn.cursor()
|
455 |
if version:
|
456 |
c.execute("SELECT * FROM agent_scripts WHERE name = ? AND version = ?", (name, version))
|
@@ -458,10 +459,26 @@ class Storage:
|
|
458 |
c.execute("""
|
459 |
SELECT * FROM agent_scripts
|
460 |
WHERE name = ?
|
461 |
-
ORDER BY
|
462 |
LIMIT 1
|
463 |
""", (name,))
|
464 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
465 |
|
466 |
def add_agent_script(self, name, version, code, description="", tags="", language="python", llm_id=None):
|
467 |
c = self.conn.cursor()
|
@@ -552,6 +569,12 @@ class Storage:
|
|
552 |
|
553 |
# agent_scripts — код скриптов, которыми может пользоваться агент
|
554 |
|
|
|
|
|
|
|
|
|
|
|
|
|
555 |
def resolve_script_path(name, version):
|
556 |
return os.path.join(SCRIPTS_BASE_PATH, name, f"v{version}", "script.py")
|
557 |
|
@@ -578,15 +601,10 @@ class Storage:
|
|
578 |
|
579 |
def get_agent_script_code(self, name, version=None):
|
580 |
"""Возвращает только код (из БД или файла)"""
|
581 |
-
|
582 |
-
if version:
|
583 |
-
c.execute("SELECT code FROM agent_scripts WHERE name = ? AND version = ?", (name, version))
|
584 |
-
else:
|
585 |
-
c.execute("SELECT code FROM agent_scripts WHERE name = ? ORDER BY updated_at DESC LIMIT 1", (name,))
|
586 |
-
row = c.fetchone()
|
587 |
if not row:
|
588 |
return None
|
589 |
-
code_entry = row[
|
590 |
if code_entry.strip().startswith("@path="):
|
591 |
rel_path = code_entry.strip().split("=", 1)[1]
|
592 |
full_path = os.path.join(SCRIPTS_BASE_PATH, rel_path)
|
@@ -632,23 +650,41 @@ class Storage:
|
|
632 |
|
633 |
def update_agent_script(self, name, version, code=None, description=None, tags=None, mode="inline"):
|
634 |
"""
|
635 |
-
mode: 'inline' (сохранять в БД), 'file' (
|
636 |
"""
|
637 |
c = self.conn.cursor()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
638 |
fields = []
|
639 |
values = []
|
640 |
|
641 |
-
# Обработка
|
642 |
if code is not None:
|
|
|
|
|
643 |
if mode == "file":
|
644 |
file_path = save_script_to_file(code, name, version)
|
645 |
-
|
|
|
646 |
fields.append("code = ?")
|
647 |
values.append(code_ref)
|
648 |
-
|
|
|
|
|
|
|
649 |
fields.append("code = ?")
|
650 |
values.append(code)
|
651 |
|
|
|
|
|
|
|
|
|
652 |
if description is not None:
|
653 |
fields.append("description = ?")
|
654 |
values.append(description)
|
|
|
451 |
return c.fetchall()
|
452 |
|
453 |
def get_agent_script_by_name(self, name, version=None):
|
454 |
+
"""Возвращает скрипт с подгруженным кодом из файла, если он был сохранён через @path"""
|
455 |
c = self.conn.cursor()
|
456 |
if version:
|
457 |
c.execute("SELECT * FROM agent_scripts WHERE name = ? AND version = ?", (name, version))
|
|
|
459 |
c.execute("""
|
460 |
SELECT * FROM agent_scripts
|
461 |
WHERE name = ?
|
462 |
+
ORDER BY updated_at DESC
|
463 |
LIMIT 1
|
464 |
""", (name,))
|
465 |
+
row = c.fetchone()
|
466 |
+
if not row:
|
467 |
+
return None
|
468 |
+
|
469 |
+
row = list(row)
|
470 |
+
code_entry = row[3] # code
|
471 |
+
|
472 |
+
if code_entry.strip().startswith("@path="):
|
473 |
+
rel_path = code_entry.strip().split("=", 1)[1]
|
474 |
+
full_path = os.path.join(SCRIPT_ROOT, rel_path)
|
475 |
+
if os.path.isfile(full_path):
|
476 |
+
with open(full_path, "r", encoding="utf-8") as f:
|
477 |
+
row[3] = f.read()
|
478 |
+
else:
|
479 |
+
row[3] = f"# Error: Script file not found at {full_path}"
|
480 |
+
|
481 |
+
return tuple(row)
|
482 |
|
483 |
def add_agent_script(self, name, version, code, description="", tags="", language="python", llm_id=None):
|
484 |
c = self.conn.cursor()
|
|
|
569 |
|
570 |
# agent_scripts — код скриптов, которыми может пользоваться агент
|
571 |
|
572 |
+
def delete_script_file(name, version):
|
573 |
+
"""Удаляет файл скрипта, если он существует"""
|
574 |
+
path = os.path.join(SCRIPT_ROOT, name, f"v{version}", "script.py")
|
575 |
+
if os.path.isfile(path):
|
576 |
+
os.remove(path)
|
577 |
+
|
578 |
def resolve_script_path(name, version):
|
579 |
return os.path.join(SCRIPTS_BASE_PATH, name, f"v{version}", "script.py")
|
580 |
|
|
|
601 |
|
602 |
def get_agent_script_code(self, name, version=None):
|
603 |
"""Возвращает только код (из БД или файла)"""
|
604 |
+
row = self.get_agent_script_by_name(name, version)
|
|
|
|
|
|
|
|
|
|
|
605 |
if not row:
|
606 |
return None
|
607 |
+
code_entry = row["code_or_path"]
|
608 |
if code_entry.strip().startswith("@path="):
|
609 |
rel_path = code_entry.strip().split("=", 1)[1]
|
610 |
full_path = os.path.join(SCRIPTS_BASE_PATH, rel_path)
|
|
|
650 |
|
651 |
def update_agent_script(self, name, version, code=None, description=None, tags=None, mode="inline"):
|
652 |
"""
|
653 |
+
mode: 'inline' (сохранять код в БД), 'file' (в файл, в БД — @path=...)
|
654 |
"""
|
655 |
c = self.conn.cursor()
|
656 |
+
|
657 |
+
# Получаем текущий code, чтобы понять, был ли путь к файлу
|
658 |
+
c.execute("SELECT code FROM agent_scripts WHERE name = ? AND version = ?", (name, version))
|
659 |
+
result = c.fetchone()
|
660 |
+
if not result:
|
661 |
+
return False
|
662 |
+
old_code = result[0]
|
663 |
+
|
664 |
fields = []
|
665 |
values = []
|
666 |
|
667 |
+
# Обработка поля code
|
668 |
if code is not None:
|
669 |
+
old_is_file = old_code.strip().startswith("@path=")
|
670 |
+
|
671 |
if mode == "file":
|
672 |
file_path = save_script_to_file(code, name, version)
|
673 |
+
rel_path = os.path.relpath(file_path, SCRIPT_ROOT)
|
674 |
+
code_ref = f"@path={rel_path}"
|
675 |
fields.append("code = ?")
|
676 |
values.append(code_ref)
|
677 |
+
|
678 |
+
# если раньше был inline — ничего не делаем, если файл — перезаписываем
|
679 |
+
|
680 |
+
else: # inline
|
681 |
fields.append("code = ?")
|
682 |
values.append(code)
|
683 |
|
684 |
+
# если раньше был файл — удалить его
|
685 |
+
if old_is_file:
|
686 |
+
delete_script_file(name, version)
|
687 |
+
|
688 |
if description is not None:
|
689 |
fields.append("description = ?")
|
690 |
values.append(description)
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-agent-REPL-cycle.md
CHANGED
@@ -67,8 +67,10 @@
|
|
67 |
Ответ может содержать команды:
|
68 |
- запрос детальной *справки* по команде
|
69 |
- для управления *когнитивным дневником* и *семантическими графами* (прочитать, изменить, удалить и другие)
|
|
|
70 |
- для управления *блокнотом LLM* `llm_memory` (добавить или удалить запись, просмотр записей)
|
71 |
- для управления *сообщениями пользователя* `notes` (просмотр записи, установка тегов и метки о прочтении), а также для добавления своего сообщения в *блокнот пользовтеля* `notes`
|
|
|
72 |
- для выбора *текущего основного LLM*
|
73 |
- для управления дополнительными утилитами и базами данных
|
74 |
- для постановки задачи (выполняется асинхронно) другой LLM
|
|
|
67 |
Ответ может содержать команды:
|
68 |
- запрос детальной *справки* по команде
|
69 |
- для управления *когнитивным дневником* и *семантическими графами* (прочитать, изменить, удалить и другие)
|
70 |
+
- для отправки сообщений другим агентам
|
71 |
- для управления *блокнотом LLM* `llm_memory` (добавить или удалить запись, просмотр записей)
|
72 |
- для управления *сообщениями пользователя* `notes` (просмотр записи, установка тегов и метки о прочтении), а также для добавления своего сообщения в *блокнот пользовтеля* `notes`
|
73 |
+
- для управления списком известных HMP-агентов
|
74 |
- для выбора *текущего основного LLM*
|
75 |
- для управления дополнительными утилитами и базами данных
|
76 |
- для постановки задачи (выполняется асинхронно) другой LLM
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/storage.py
CHANGED
@@ -617,27 +617,62 @@ class Storage:
|
|
617 |
c.execute("SELECT * FROM agent_scripts WHERE tags LIKE ?", (f"%{tag}%",))
|
618 |
return c.fetchall()
|
619 |
|
620 |
-
def
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
621 |
c = self.conn.cursor()
|
|
|
|
|
622 |
|
623 |
-
#
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
|
|
|
|
|
|
|
|
629 |
|
630 |
-
if
|
631 |
-
|
|
|
632 |
|
633 |
-
|
634 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
635 |
UPDATE agent_scripts
|
636 |
-
SET
|
637 |
WHERE name = ? AND version = ?
|
638 |
-
|
639 |
|
|
|
640 |
self.conn.commit()
|
|
|
641 |
|
642 |
# llm_registry — реестр LLM-агентов
|
643 |
|
|
|
617 |
c.execute("SELECT * FROM agent_scripts WHERE tags LIKE ?", (f"%{tag}%",))
|
618 |
return c.fetchall()
|
619 |
|
620 |
+
def ensure_script_path(name, version):
|
621 |
+
"""Создаёт папку scripts/{name}/v{version}/ если не существует"""
|
622 |
+
path = os.path.join(SCRIPT_ROOT, name, f"v{version}")
|
623 |
+
os.makedirs(path, exist_ok=True)
|
624 |
+
return os.path.join(path, "script.py")
|
625 |
+
|
626 |
+
def save_script_to_file(code, name, version):
|
627 |
+
"""Сохраняет скрипт в файл и возвращает путь"""
|
628 |
+
file_path = ensure_script_path(name, version)
|
629 |
+
with open(file_path, "w", encoding="utf-8") as f:
|
630 |
+
f.write(code)
|
631 |
+
return file_path
|
632 |
+
|
633 |
+
def update_agent_script(self, name, version, code=None, description=None, tags=None, mode="inline"):
|
634 |
+
"""
|
635 |
+
mode: 'inline' (сохранять в БД), 'file' (сохранять в файл и в БД только ссылку)
|
636 |
+
"""
|
637 |
c = self.conn.cursor()
|
638 |
+
fields = []
|
639 |
+
values = []
|
640 |
|
641 |
+
# Обработка кода
|
642 |
+
if code is not None:
|
643 |
+
if mode == "file":
|
644 |
+
file_path = save_script_to_file(code, name, version)
|
645 |
+
code_ref = f"@path={file_path}"
|
646 |
+
fields.append("code = ?")
|
647 |
+
values.append(code_ref)
|
648 |
+
else:
|
649 |
+
fields.append("code = ?")
|
650 |
+
values.append(code)
|
651 |
|
652 |
+
if description is not None:
|
653 |
+
fields.append("description = ?")
|
654 |
+
values.append(description)
|
655 |
|
656 |
+
if tags is not None:
|
657 |
+
fields.append("tags = ?")
|
658 |
+
values.append(tags)
|
659 |
+
|
660 |
+
if not fields:
|
661 |
+
return False
|
662 |
+
|
663 |
+
fields.append("updated_at = ?")
|
664 |
+
values.append(datetime.utcnow().isoformat())
|
665 |
+
|
666 |
+
values.extend([name, version])
|
667 |
+
query = f"""
|
668 |
UPDATE agent_scripts
|
669 |
+
SET {', '.join(fields)}
|
670 |
WHERE name = ? AND version = ?
|
671 |
+
"""
|
672 |
|
673 |
+
c.execute(query, values)
|
674 |
self.conn.commit()
|
675 |
+
return c.rowcount > 0
|
676 |
|
677 |
# llm_registry — реестр LLM-агентов
|
678 |
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/changelog.txt
CHANGED
@@ -3,6 +3,7 @@
|
|
3 |
## HyperCortex Mesh Protocol — Changelog
|
4 |
|
5 |
Available Versions:
|
|
|
6 |
- HMP-0004 (July 2025) — RFC Version 4.0
|
7 |
- HMP-0003 (July 2025) — RFC Version 3.0
|
8 |
- HMP-0002 (July 2025) — RFC Version 2.0
|
@@ -10,6 +11,17 @@ Available Versions:
|
|
10 |
|
11 |
### HMP-0004 (July 2025) — RFC Version 4.0
|
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
**Major Changes**
|
14 |
* Introduced new sections: *Cognitive Workflows*, *Agent Roles*, *Governance*, *Compression*, and *Simulation*.
|
15 |
* Added experimental APIs: *Consent Request*, *Explainability*, *Voice Interface*.
|
|
|
3 |
## HyperCortex Mesh Protocol — Changelog
|
4 |
|
5 |
Available Versions:
|
6 |
+
- HMP-0004 (July 2025) — RFC Version 4.1
|
7 |
- HMP-0004 (July 2025) — RFC Version 4.0
|
8 |
- HMP-0003 (July 2025) — RFC Version 3.0
|
9 |
- HMP-0002 (July 2025) — RFC Version 2.0
|
|
|
11 |
|
12 |
### HMP-0004 (July 2025) — RFC Version 4.0
|
13 |
|
14 |
+
**Protocols:**
|
15 |
+
* **Added `5.8 Message Routing & Delivery` section** — including direct, broadcast, relay, and topic messaging modes.
|
16 |
+
|
17 |
+
**Data Models:**
|
18 |
+
* **Defined `6.5.8 Message Object Schema`** — standard JSON format for inter-agent communication.
|
19 |
+
|
20 |
+
**Cognitive Workflows:**
|
21 |
+
* **Added `7.9 Message Handling & Delivery Workflows`** — describing message processing, relay behavior, and routing.
|
22 |
+
|
23 |
+
### HMP-0004 (July 2025) — RFC Version 4.0
|
24 |
+
|
25 |
**Major Changes**
|
26 |
* Introduced new sections: *Cognitive Workflows*, *Agent Roles*, *Governance*, *Compression*, and *Simulation*.
|
27 |
* Added experimental APIs: *Consent Request*, *Explainability*, *Voice Interface*.
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/README.md
CHANGED
@@ -127,7 +127,7 @@ RU:
|
|
127 |
* [🔍 Distributed-Cognitive-Systems.md](docs/Distributed-Cognitive-Systems.md) — Децентрализованные ИИ-системы: OpenCog Hyperon, HyperCortex Mesh Protocol и другие
|
128 |
|
129 |
#### 🔖 Core Specifications / Основные спецификации
|
130 |
-
* [🔖 HMP-0004.md](docs/HMP-0004.md) — Protocol Specification v4.
|
131 |
* [🔖 HMP-Ethics.md](docs/HMP-Ethics.md) — Ethical Scenarios for HyperCortex Mesh Protocol (HMP)
|
132 |
* [🔖 HMP_Hyperon_Integration.md](docs/HMP_Hyperon_Integration.md) — HMP ↔ OpenCog Hyperon Integration Strategy
|
133 |
* [🔖 roles.md](docs/agents/roles.md) — Roles of agents in Mesh
|
@@ -149,6 +149,7 @@ RU:
|
|
149 |
- [HMP-0001.md](docs/HMP-0001.md) — RFC v1.0
|
150 |
- [HMP-0002.md](docs/HMP-0002.md) — RFC v2.0
|
151 |
- [HMP-0003.md](docs/HMP-0003.md) — RFC v3.0
|
|
|
152 |
|
153 |
---
|
154 |
|
|
|
127 |
* [🔍 Distributed-Cognitive-Systems.md](docs/Distributed-Cognitive-Systems.md) — Децентрализованные ИИ-системы: OpenCog Hyperon, HyperCortex Mesh Protocol и другие
|
128 |
|
129 |
#### 🔖 Core Specifications / Основные спецификации
|
130 |
+
* [🔖 HMP-0004-v4.1.md](docs/HMP-0004-v4.1.md) — Protocol Specification v4.1 (Jul 2025)
|
131 |
* [🔖 HMP-Ethics.md](docs/HMP-Ethics.md) — Ethical Scenarios for HyperCortex Mesh Protocol (HMP)
|
132 |
* [🔖 HMP_Hyperon_Integration.md](docs/HMP_Hyperon_Integration.md) — HMP ↔ OpenCog Hyperon Integration Strategy
|
133 |
* [🔖 roles.md](docs/agents/roles.md) — Roles of agents in Mesh
|
|
|
149 |
- [HMP-0001.md](docs/HMP-0001.md) — RFC v1.0
|
150 |
- [HMP-0002.md](docs/HMP-0002.md) — RFC v2.0
|
151 |
- [HMP-0003.md](docs/HMP-0003.md) — RFC v3.0
|
152 |
+
- [HMP-0003.md](docs/HMP-0004.md) — RFC v4.0
|
153 |
|
154 |
---
|
155 |
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/docs/HMP-0004-v4.1.md
ADDED
The diff for this file is too large to render.
See raw diff
|
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/.github/workflows/ci.yml
CHANGED
@@ -21,7 +21,7 @@ jobs:
|
|
21 |
- name: Install dependencies
|
22 |
run: |
|
23 |
python -m pip install --upgrade pip
|
24 |
-
pip install -r requirements.txt
|
25 |
pip install pytest
|
26 |
|
27 |
- name: Run tests
|
|
|
21 |
- name: Install dependencies
|
22 |
run: |
|
23 |
python -m pip install --upgrade pip
|
24 |
+
pip install -r agents/requirements.txt
|
25 |
pip install pytest
|
26 |
|
27 |
- name: Run tests
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tests/test_storage.py
CHANGED
@@ -1,17 +1,21 @@
|
|
|
|
|
|
|
|
1 |
import pytest
|
2 |
from agents.tools.storage import Storage
|
3 |
|
4 |
@pytest.fixture
|
5 |
-
def
|
6 |
-
|
7 |
-
|
8 |
-
|
|
|
9 |
|
10 |
-
def
|
11 |
-
|
12 |
-
|
13 |
-
assert isinstance(entry_id, int), "ID записи должен быть числом"
|
14 |
|
15 |
-
|
16 |
-
|
17 |
-
|
|
|
|
1 |
+
# agents/tests/test_storage.py
|
2 |
+
|
3 |
+
import os
|
4 |
import pytest
|
5 |
from agents.tools.storage import Storage
|
6 |
|
7 |
@pytest.fixture
|
8 |
+
def temp_storage(tmp_path):
|
9 |
+
db_path = tmp_path / "test.db"
|
10 |
+
storage = Storage(config={"db_path": str(db_path)})
|
11 |
+
yield storage
|
12 |
+
# автоматически удалится tmp_path
|
13 |
|
14 |
+
def test_set_and_get(temp_storage):
|
15 |
+
temp_storage.set("foo", "bar")
|
16 |
+
assert temp_storage.get("foo") == "bar"
|
|
|
17 |
|
18 |
+
def test_delete(temp_storage):
|
19 |
+
temp_storage.set("key", "value")
|
20 |
+
temp_storage.delete("key")
|
21 |
+
assert temp_storage.get("key") is None
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/.github/workflows/ci.yml
CHANGED
@@ -2,32 +2,28 @@ name: CI
|
|
2 |
|
3 |
on:
|
4 |
push:
|
5 |
-
branches: [
|
6 |
pull_request:
|
7 |
-
branches: [
|
8 |
|
9 |
jobs:
|
10 |
test:
|
11 |
runs-on: ubuntu-latest
|
12 |
|
13 |
steps:
|
14 |
-
-
|
15 |
-
uses: actions/checkout@v3
|
16 |
|
17 |
-
- name: Set up Python
|
18 |
-
uses: actions/setup-python@
|
19 |
with:
|
20 |
-
python-version:
|
21 |
-
|
22 |
-
- name: Upgrade pip
|
23 |
-
run: python -m pip install --upgrade pip
|
24 |
|
25 |
- name: Install dependencies
|
26 |
run: |
|
27 |
-
python -m pip install
|
|
|
|
|
28 |
|
29 |
-
- name: Run tests
|
30 |
-
env:
|
31 |
-
PYTHONPATH: ${{ github.workspace }}
|
32 |
run: |
|
33 |
-
|
|
|
2 |
|
3 |
on:
|
4 |
push:
|
5 |
+
branches: [main]
|
6 |
pull_request:
|
7 |
+
branches: [main]
|
8 |
|
9 |
jobs:
|
10 |
test:
|
11 |
runs-on: ubuntu-latest
|
12 |
|
13 |
steps:
|
14 |
+
- uses: actions/checkout@v4
|
|
|
15 |
|
16 |
+
- name: Set up Python
|
17 |
+
uses: actions/setup-python@v5
|
18 |
with:
|
19 |
+
python-version: 3.11
|
|
|
|
|
|
|
20 |
|
21 |
- name: Install dependencies
|
22 |
run: |
|
23 |
+
python -m pip install --upgrade pip
|
24 |
+
pip install -r requirements.txt
|
25 |
+
pip install pytest
|
26 |
|
27 |
+
- name: Run tests
|
|
|
|
|
28 |
run: |
|
29 |
+
PYTHONPATH=. pytest
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tests/test_storage.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
import pytest
|
2 |
-
from agents.storage import Storage
|
3 |
|
4 |
@pytest.fixture
|
5 |
def storage():
|
|
|
1 |
import pytest
|
2 |
+
from agents.tools.storage import Storage
|
3 |
|
4 |
@pytest.fixture
|
5 |
def storage():
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/.github/workflows/ci.yml
CHANGED
@@ -7,23 +7,27 @@ on:
|
|
7 |
branches: [ main, master ]
|
8 |
|
9 |
jobs:
|
10 |
-
|
11 |
runs-on: ubuntu-latest
|
12 |
|
13 |
steps:
|
14 |
-
|
15 |
-
|
16 |
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
|
22 |
-
|
23 |
-
|
24 |
-
python -m pip install --upgrade pip
|
25 |
-
pip install -r agents/requirements.txt
|
26 |
|
27 |
-
|
28 |
-
|
29 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
branches: [ main, master ]
|
8 |
|
9 |
jobs:
|
10 |
+
test:
|
11 |
runs-on: ubuntu-latest
|
12 |
|
13 |
steps:
|
14 |
+
- name: Checkout code
|
15 |
+
uses: actions/checkout@v3
|
16 |
|
17 |
+
- name: Set up Python 3.11
|
18 |
+
uses: actions/setup-python@v4
|
19 |
+
with:
|
20 |
+
python-version: '3.11'
|
21 |
|
22 |
+
- name: Upgrade pip
|
23 |
+
run: python -m pip install --upgrade pip
|
|
|
|
|
24 |
|
25 |
+
- name: Install dependencies
|
26 |
+
run: |
|
27 |
+
python -m pip install pytest
|
28 |
+
|
29 |
+
- name: Run tests with PYTHONPATH
|
30 |
+
env:
|
31 |
+
PYTHONPATH: ${{ github.workspace }}
|
32 |
+
run: |
|
33 |
+
python -m pytest agents/tests/
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1 |
-
|
|
|
1 |
+
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tools/__init__.py
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
from agents.tools.storage import Storage
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/tests/__init__.py
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
|
hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/hf_repo/agents/__init__.py
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
from .storage import Storage
|