agent-manager-cli 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agent_manager_cli-0.1.0/.gitignore +13 -0
- agent_manager_cli-0.1.0/PKG-INFO +183 -0
- agent_manager_cli-0.1.0/README.md +173 -0
- agent_manager_cli-0.1.0/am/__init__.py +3 -0
- agent_manager_cli-0.1.0/am/__main__.py +5 -0
- agent_manager_cli-0.1.0/am/cli.py +817 -0
- agent_manager_cli-0.1.0/am/scanners/__init__.py +21 -0
- agent_manager_cli-0.1.0/am/scanners/_util.py +17 -0
- agent_manager_cli-0.1.0/am/scanners/claude.py +105 -0
- agent_manager_cli-0.1.0/am/scanners/codex.py +88 -0
- agent_manager_cli-0.1.0/am/scanners/gemini.py +99 -0
- agent_manager_cli-0.1.0/am/schemas/__init__.py +0 -0
- agent_manager_cli-0.1.0/am/schemas/session.py +12 -0
- agent_manager_cli-0.1.0/pyproject.toml +43 -0
- agent_manager_cli-0.1.0/tests/__init__.py +0 -0
- agent_manager_cli-0.1.0/tests/test_cli.py +135 -0
- agent_manager_cli-0.1.0/tests/test_event_mapping.py +273 -0
- agent_manager_cli-0.1.0/tests/test_scanners.py +198 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agent-manager-cli
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: CLI для удалённого управления AI-агентами — Node Agent, daemon, сканер сессий
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Requires-Python: >=3.11
|
|
7
|
+
Requires-Dist: pydantic>=2.0
|
|
8
|
+
Requires-Dist: websockets>=13.0
|
|
9
|
+
Description-Content-Type: text/markdown
|
|
10
|
+
|
|
11
|
+
# Agent Manager CLI
|
|
12
|
+
|
|
13
|
+
CLI-клиент для удалённого управления AI-агентами. Работает в паре с сервером [Agent Control](https://agent-manager.space).
|
|
14
|
+
|
|
15
|
+
## Что это
|
|
16
|
+
|
|
17
|
+
**Node Agent** — процесс на вашем компьютере, который:
|
|
18
|
+
1. Сканирует локальные CLI-сессии (Claude Code, Codex, Gemini)
|
|
19
|
+
2. Отправляет список сессий на сервер
|
|
20
|
+
3. Получает команды от сервера («подключись к сессии X»)
|
|
21
|
+
4. Запускает daemon для стриминга событий в дашборд
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
Ваш компьютер Сервер
|
|
25
|
+
$ am login → авторизация
|
|
26
|
+
$ am connect → WS /ws/node (постоянное)
|
|
27
|
+
сканирует ~/.claude/ и т.д. → список сессий → Redis
|
|
28
|
+
|
|
29
|
+
Телефон: "+ Агент" → "Подключить"
|
|
30
|
+
Сервер → {"type":"attach",...}
|
|
31
|
+
Node запускает daemon → WS /ws/daemon (стрим)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Установка
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pip install agentmanager
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Или через uv:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
uv tool install agentmanager
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Быстрый старт
|
|
47
|
+
|
|
48
|
+
### 1. Авторизация
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
am login --host agent-manager.space --secure
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Запросит email и пароль. Сохраняет токены в `~/.agentmanager/config.json`.
|
|
55
|
+
|
|
56
|
+
Для локальной разработки (без HTTPS):
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
am login --host localhost:8000 --email user@test.com --password pass
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 2. Запуск Node Agent
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
am connect
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Node Agent:
|
|
69
|
+
- Подключается к серверу через WebSocket
|
|
70
|
+
- Сканирует сессии каждые 30 секунд
|
|
71
|
+
- Отправляет heartbeat каждые 25 секунд
|
|
72
|
+
- Слушает команды `attach` от сервера
|
|
73
|
+
|
|
74
|
+
После запуска в дашборде появится статус «Node Agent онлайн» и список ваших сессий.
|
|
75
|
+
|
|
76
|
+
### 3. Подключение сессии
|
|
77
|
+
|
|
78
|
+
В дашборде: **+ Агент** → **Подключить сессию** → выберите сессию → **Подключить**.
|
|
79
|
+
|
|
80
|
+
Node Agent автоматически запустит daemon, и стрим появится в дашборде.
|
|
81
|
+
|
|
82
|
+
## Ручной режим (daemon)
|
|
83
|
+
|
|
84
|
+
Можно запустить daemon напрямую, без Node Agent:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
am daemon --token <DAEMON_TOKEN> -- \
|
|
88
|
+
claude --continue --resume <SESSION_ID> \
|
|
89
|
+
--output-format stream-json \
|
|
90
|
+
--input-format stream-json
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Pipe-режим (только чтение, без двустороннего ввода):
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
claude -p "task" --output-format stream-json | am daemon --token <TOKEN>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Команды
|
|
100
|
+
|
|
101
|
+
| Команда | Описание |
|
|
102
|
+
|---------|----------|
|
|
103
|
+
| `am login` | Авторизация на сервере |
|
|
104
|
+
| `am connect` | Запуск Node Agent |
|
|
105
|
+
| `am daemon` | Запуск daemon для конкретной сессии |
|
|
106
|
+
|
|
107
|
+
### am login
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
am login --host <HOST> [--email <EMAIL>] [--password <PASS>] [--secure]
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
| Флаг | Описание |
|
|
114
|
+
|------|----------|
|
|
115
|
+
| `--host` | Адрес сервера (обязательно) |
|
|
116
|
+
| `--email` | Email (запросит, если не указан) |
|
|
117
|
+
| `--password` | Пароль (запросит, если не указан) |
|
|
118
|
+
| `--secure` | Использовать HTTPS/WSS |
|
|
119
|
+
|
|
120
|
+
### am connect
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
am connect [--host <HOST>] [--secure]
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
| Флаг | Описание |
|
|
127
|
+
|------|----------|
|
|
128
|
+
| `--host` | Переопределить сохранённый хост |
|
|
129
|
+
| `--secure` | Использовать WSS |
|
|
130
|
+
|
|
131
|
+
### am daemon
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
am daemon --token <TOKEN> [--host <HOST>] [--secure] [--no-followup] [-- <CLI_COMMAND>]
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
| Флаг | Описание |
|
|
138
|
+
|------|----------|
|
|
139
|
+
| `--token` | Daemon JWT токен (обязательно) |
|
|
140
|
+
| `--host` | Адрес сервера (по умолчанию `localhost:8000`) |
|
|
141
|
+
| `--secure` | Использовать WSS |
|
|
142
|
+
| `--no-followup` | Не ждать follow-up сообщений |
|
|
143
|
+
|
|
144
|
+
## Поддерживаемые CLI
|
|
145
|
+
|
|
146
|
+
| CLI | Директория сессий | Формат |
|
|
147
|
+
|-----|-------------------|--------|
|
|
148
|
+
| Claude Code | `~/.claude/projects/` | JSONL |
|
|
149
|
+
| Codex | `~/.codex/sessions/` | JSONL |
|
|
150
|
+
| Gemini | `~/.gemini/tmp/` | JSON |
|
|
151
|
+
|
|
152
|
+
## Конфигурация
|
|
153
|
+
|
|
154
|
+
Токены и настройки хранятся в `~/.agentmanager/config.json`:
|
|
155
|
+
|
|
156
|
+
```json
|
|
157
|
+
{
|
|
158
|
+
"host": "agent-manager.space",
|
|
159
|
+
"secure": true,
|
|
160
|
+
"access_token": "...",
|
|
161
|
+
"refresh_token": "..."
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Требования
|
|
166
|
+
|
|
167
|
+
- Python 3.11+
|
|
168
|
+
- Зависимости: `websockets`, `pydantic`
|
|
169
|
+
|
|
170
|
+
## Разработка
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
git clone <repo>
|
|
174
|
+
cd am-cli
|
|
175
|
+
uv sync
|
|
176
|
+
uv run am --help
|
|
177
|
+
uv run pytest
|
|
178
|
+
uv run ruff check .
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Лицензия
|
|
182
|
+
|
|
183
|
+
MIT
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# Agent Manager CLI
|
|
2
|
+
|
|
3
|
+
CLI-клиент для удалённого управления AI-агентами. Работает в паре с сервером [Agent Control](https://agent-manager.space).
|
|
4
|
+
|
|
5
|
+
## Что это
|
|
6
|
+
|
|
7
|
+
**Node Agent** — процесс на вашем компьютере, который:
|
|
8
|
+
1. Сканирует локальные CLI-сессии (Claude Code, Codex, Gemini)
|
|
9
|
+
2. Отправляет список сессий на сервер
|
|
10
|
+
3. Получает команды от сервера («подключись к сессии X»)
|
|
11
|
+
4. Запускает daemon для стриминга событий в дашборд
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
Ваш компьютер Сервер
|
|
15
|
+
$ am login → авторизация
|
|
16
|
+
$ am connect → WS /ws/node (постоянное)
|
|
17
|
+
сканирует ~/.claude/ и т.д. → список сессий → Redis
|
|
18
|
+
|
|
19
|
+
Телефон: "+ Агент" → "Подключить"
|
|
20
|
+
Сервер → {"type":"attach",...}
|
|
21
|
+
Node запускает daemon → WS /ws/daemon (стрим)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Установка
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
pip install agentmanager
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Или через uv:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
uv tool install agentmanager
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Быстрый старт
|
|
37
|
+
|
|
38
|
+
### 1. Авторизация
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
am login --host agent-manager.space --secure
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Запросит email и пароль. Сохраняет токены в `~/.agentmanager/config.json`.
|
|
45
|
+
|
|
46
|
+
Для локальной разработки (без HTTPS):
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
am login --host localhost:8000 --email user@test.com --password pass
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 2. Запуск Node Agent
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
am connect
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Node Agent:
|
|
59
|
+
- Подключается к серверу через WebSocket
|
|
60
|
+
- Сканирует сессии каждые 30 секунд
|
|
61
|
+
- Отправляет heartbeat каждые 25 секунд
|
|
62
|
+
- Слушает команды `attach` от сервера
|
|
63
|
+
|
|
64
|
+
После запуска в дашборде появится статус «Node Agent онлайн» и список ваших сессий.
|
|
65
|
+
|
|
66
|
+
### 3. Подключение сессии
|
|
67
|
+
|
|
68
|
+
В дашборде: **+ Агент** → **Подключить сессию** → выберите сессию → **Подключить**.
|
|
69
|
+
|
|
70
|
+
Node Agent автоматически запустит daemon, и стрим появится в дашборде.
|
|
71
|
+
|
|
72
|
+
## Ручной режим (daemon)
|
|
73
|
+
|
|
74
|
+
Можно запустить daemon напрямую, без Node Agent:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
am daemon --token <DAEMON_TOKEN> -- \
|
|
78
|
+
claude --continue --resume <SESSION_ID> \
|
|
79
|
+
--output-format stream-json \
|
|
80
|
+
--input-format stream-json
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Pipe-режим (только чтение, без двустороннего ввода):
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
claude -p "task" --output-format stream-json | am daemon --token <TOKEN>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Команды
|
|
90
|
+
|
|
91
|
+
| Команда | Описание |
|
|
92
|
+
|---------|----------|
|
|
93
|
+
| `am login` | Авторизация на сервере |
|
|
94
|
+
| `am connect` | Запуск Node Agent |
|
|
95
|
+
| `am daemon` | Запуск daemon для конкретной сессии |
|
|
96
|
+
|
|
97
|
+
### am login
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
am login --host <HOST> [--email <EMAIL>] [--password <PASS>] [--secure]
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
| Флаг | Описание |
|
|
104
|
+
|------|----------|
|
|
105
|
+
| `--host` | Адрес сервера (обязательно) |
|
|
106
|
+
| `--email` | Email (запросит, если не указан) |
|
|
107
|
+
| `--password` | Пароль (запросит, если не указан) |
|
|
108
|
+
| `--secure` | Использовать HTTPS/WSS |
|
|
109
|
+
|
|
110
|
+
### am connect
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
am connect [--host <HOST>] [--secure]
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
| Флаг | Описание |
|
|
117
|
+
|------|----------|
|
|
118
|
+
| `--host` | Переопределить сохранённый хост |
|
|
119
|
+
| `--secure` | Использовать WSS |
|
|
120
|
+
|
|
121
|
+
### am daemon
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
am daemon --token <TOKEN> [--host <HOST>] [--secure] [--no-followup] [-- <CLI_COMMAND>]
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
| Флаг | Описание |
|
|
128
|
+
|------|----------|
|
|
129
|
+
| `--token` | Daemon JWT токен (обязательно) |
|
|
130
|
+
| `--host` | Адрес сервера (по умолчанию `localhost:8000`) |
|
|
131
|
+
| `--secure` | Использовать WSS |
|
|
132
|
+
| `--no-followup` | Не ждать follow-up сообщений |
|
|
133
|
+
|
|
134
|
+
## Поддерживаемые CLI
|
|
135
|
+
|
|
136
|
+
| CLI | Директория сессий | Формат |
|
|
137
|
+
|-----|-------------------|--------|
|
|
138
|
+
| Claude Code | `~/.claude/projects/` | JSONL |
|
|
139
|
+
| Codex | `~/.codex/sessions/` | JSONL |
|
|
140
|
+
| Gemini | `~/.gemini/tmp/` | JSON |
|
|
141
|
+
|
|
142
|
+
## Конфигурация
|
|
143
|
+
|
|
144
|
+
Токены и настройки хранятся в `~/.agentmanager/config.json`:
|
|
145
|
+
|
|
146
|
+
```json
|
|
147
|
+
{
|
|
148
|
+
"host": "agent-manager.space",
|
|
149
|
+
"secure": true,
|
|
150
|
+
"access_token": "...",
|
|
151
|
+
"refresh_token": "..."
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Требования
|
|
156
|
+
|
|
157
|
+
- Python 3.11+
|
|
158
|
+
- Зависимости: `websockets`, `pydantic`
|
|
159
|
+
|
|
160
|
+
## Разработка
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
git clone <repo>
|
|
164
|
+
cd am-cli
|
|
165
|
+
uv sync
|
|
166
|
+
uv run am --help
|
|
167
|
+
uv run pytest
|
|
168
|
+
uv run ruff check .
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## Лицензия
|
|
172
|
+
|
|
173
|
+
MIT
|