agentsystems-sdk 0.2.32__tar.gz → 0.3.1__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.
- {agentsystems_sdk-0.2.32/agentsystems_sdk.egg-info → agentsystems_sdk-0.3.1}/PKG-INFO +31 -18
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/README.md +30 -17
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/commands/init.py +3 -35
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/commands/up.py +1 -1
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/compose/local/docker-compose.yml +1 -1
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/utils.py +1 -1
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1/agentsystems_sdk.egg-info}/PKG-INFO +31 -18
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/pyproject.toml +1 -1
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/tests/test_cli_init.py +35 -117
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/tests/test_utils.py +1 -1
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/LICENSE +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/MANIFEST.in +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/NOTICE +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/__init__.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/cli.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/commands/__init__.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/commands/artifacts.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/commands/clean.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/commands/down.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/commands/logs.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/commands/restart.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/commands/run.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/commands/status.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/config.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/.env.example +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/CONTRIBUTING.md +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/LICENSE +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/Makefile +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/NOTICE +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/README.md +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/agentsystems-config.yml +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/compose/langfuse/docker-compose.yml +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/compose/local/db-backup/Dockerfile +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/compose/local/db-backup/entrypoint.sh +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/compose/local/init-artifacts-volume.sh +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/compose/local/postgres-init/audit.sql +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/requirements-dev.txt +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/schema/agentsystems-config.schema.json +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/progress_tracker.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk.egg-info/SOURCES.txt +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk.egg-info/dependency_links.txt +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk.egg-info/entry_points.txt +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk.egg-info/requires.txt +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk.egg-info/top_level.txt +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/setup.cfg +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/tests/test_cli.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/tests/test_cli_artifacts.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/tests/test_cli_clean.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/tests/test_cli_down.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/tests/test_cli_logs.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/tests/test_cli_main.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/tests/test_cli_restart.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/tests/test_cli_run.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/tests/test_cli_status.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/tests/test_cli_up.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/tests/test_config.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/tests/test_config_errors.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/tests/test_init.py +0 -0
- {agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/tests/test_progress.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: agentsystems-sdk
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.3.1
|
4
4
|
Summary: AgentSystems Python SDK and CLI
|
5
5
|
Author-email: AgentSystems <support@agentsystems.ai>
|
6
6
|
License-Expression: Apache-2.0
|
@@ -28,13 +28,26 @@ The AgentSystems **SDK** is a single-install Python package that provides severa
|
|
28
28
|
The CLI is designed to work **both interactively** (laptops) and **non-interactively** (CI, cloud VMs).
|
29
29
|
|
30
30
|
|
31
|
-
## Quick install
|
31
|
+
## Quick install
|
32
|
+
|
33
|
+
### Automatic installation (Recommended)
|
34
|
+
|
35
|
+
```bash
|
36
|
+
# Linux & macOS - installs Docker, pipx, and the SDK
|
37
|
+
curl -fsSL https://raw.githubusercontent.com/agentsystems/agentsystems/main/install.sh | sh
|
38
|
+
```
|
39
|
+
|
40
|
+
### Manual installation
|
32
41
|
|
33
42
|
```bash
|
34
|
-
|
35
|
-
|
43
|
+
# Install pipx if you don't have it
|
44
|
+
python3 -m pip install --upgrade pipx
|
45
|
+
pipx ensurepath
|
36
46
|
|
37
|
-
#
|
47
|
+
# Install the SDK
|
48
|
+
pipx install agentsystems-sdk
|
49
|
+
|
50
|
+
# Verify installation
|
38
51
|
agentsystems --version
|
39
52
|
```
|
40
53
|
|
@@ -68,7 +81,7 @@ All commands are available through `agentsystems` (or the shorter alias `agntsys
|
|
68
81
|
|
69
82
|
| Command | Description |
|
70
83
|
|---------|-------------|
|
71
|
-
| `agentsystems init [TARGET_DIR]` | Interactive bootstrap: prompts for Langfuse organization & admin details, generates secure keys, creates `.env` automatically, then copies the built-in deployment template and pulls the required Docker images into `TARGET_DIR`. |
|
84
|
+
| `agentsystems init [TARGET_DIR]` | Interactive bootstrap: prompts for Langfuse organization & admin details, generates secure keys, creates `.env` automatically, then copies the built-in deployment template and pulls the required Docker images into `TARGET_DIR`. No Docker authentication required - uses public images. |
|
72
85
|
| `agentsystems up [PROJECT_DIR]` | Start the platform **plus Langfuse tracing stack** (`docker compose up`). **Waits for the gateway _and all agent containers_ to become _healthy_ by default (spinner)**. Pass `--no-wait` to skip readiness wait or `--no-langfuse` to disable tracing. Uses the `.env` generated by `init` (or pass `--env-file PATH`). |
|
73
86
|
| `agentsystems down [PROJECT_DIR]` | Stop containers. Volumes are preserved by default; add `--delete-volumes` (or `--delete-all`) to wipe data. |
|
74
87
|
| `agentsystems logs [PROJECT_DIR]` | Stream or view recent logs (`docker compose logs`). |
|
@@ -86,9 +99,8 @@ All commands are available through `agentsystems` (or the shorter alias `agntsys
|
|
86
99
|
--fresh docker compose down -v before starting
|
87
100
|
--env-file PATH Pass a custom .env file to Compose
|
88
101
|
--wait / --no-wait Wait for gateway readiness (default: --wait)
|
89
|
-
--docker-token TEXT Docker Hub Org Access Token (env `DOCKER_OAT`)
|
90
|
-
--no-login Skip Docker login even if token env is set
|
91
102
|
--no-langfuse Skip the Langfuse tracing stack (core services only)
|
103
|
+
--agents MODE Agent startup mode: none, create, or all (default: create)
|
92
104
|
```
|
93
105
|
|
94
106
|
Run `agentsystems up --help` for the authoritative list.
|
@@ -217,28 +229,29 @@ See the [agent-template](https://github.com/agentsystems/agent-template) for a c
|
|
217
229
|
|
218
230
|
---
|
219
231
|
|
220
|
-
### `init`
|
232
|
+
### `init` details
|
221
233
|
|
222
|
-
|
223
|
-
|
224
|
-
|
234
|
+
The init command:
|
235
|
+
1. Prompts for Langfuse organization and admin credentials (interactive mode)
|
236
|
+
2. Generates secure keys automatically
|
237
|
+
3. Creates `.env` file with all configuration
|
238
|
+
4. Pulls required Docker images from public registries (no authentication needed)
|
225
239
|
|
226
|
-
|
240
|
+
The core platform images are publicly available on GitHub Container Registry:
|
241
|
+
- `ghcr.io/agentsystems/agent-control-plane:latest`
|
227
242
|
|
228
243
|
### Example: interactive laptop
|
229
244
|
|
230
245
|
```bash
|
231
246
|
agentsystems init
|
232
|
-
# prompts for directory and
|
247
|
+
# prompts for directory and Langfuse setup
|
233
248
|
```
|
234
249
|
|
235
250
|
### Example: scripted cloud VM / CI
|
236
251
|
|
237
252
|
```bash
|
238
|
-
|
239
|
-
|
240
|
-
agentsystems init /opt/agentsystems/engine \
|
241
|
-
--docker-token "$DOCKER_OAT"
|
253
|
+
agentsystems init /opt/agentsystems/engine
|
254
|
+
# Non-interactive mode - uses defaults for Langfuse
|
242
255
|
```
|
243
256
|
|
244
257
|
---
|
@@ -10,13 +10,26 @@ The AgentSystems **SDK** is a single-install Python package that provides severa
|
|
10
10
|
The CLI is designed to work **both interactively** (laptops) and **non-interactively** (CI, cloud VMs).
|
11
11
|
|
12
12
|
|
13
|
-
## Quick install
|
13
|
+
## Quick install
|
14
|
+
|
15
|
+
### Automatic installation (Recommended)
|
16
|
+
|
17
|
+
```bash
|
18
|
+
# Linux & macOS - installs Docker, pipx, and the SDK
|
19
|
+
curl -fsSL https://raw.githubusercontent.com/agentsystems/agentsystems/main/install.sh | sh
|
20
|
+
```
|
21
|
+
|
22
|
+
### Manual installation
|
14
23
|
|
15
24
|
```bash
|
16
|
-
|
17
|
-
|
25
|
+
# Install pipx if you don't have it
|
26
|
+
python3 -m pip install --upgrade pipx
|
27
|
+
pipx ensurepath
|
18
28
|
|
19
|
-
#
|
29
|
+
# Install the SDK
|
30
|
+
pipx install agentsystems-sdk
|
31
|
+
|
32
|
+
# Verify installation
|
20
33
|
agentsystems --version
|
21
34
|
```
|
22
35
|
|
@@ -50,7 +63,7 @@ All commands are available through `agentsystems` (or the shorter alias `agntsys
|
|
50
63
|
|
51
64
|
| Command | Description |
|
52
65
|
|---------|-------------|
|
53
|
-
| `agentsystems init [TARGET_DIR]` | Interactive bootstrap: prompts for Langfuse organization & admin details, generates secure keys, creates `.env` automatically, then copies the built-in deployment template and pulls the required Docker images into `TARGET_DIR`. |
|
66
|
+
| `agentsystems init [TARGET_DIR]` | Interactive bootstrap: prompts for Langfuse organization & admin details, generates secure keys, creates `.env` automatically, then copies the built-in deployment template and pulls the required Docker images into `TARGET_DIR`. No Docker authentication required - uses public images. |
|
54
67
|
| `agentsystems up [PROJECT_DIR]` | Start the platform **plus Langfuse tracing stack** (`docker compose up`). **Waits for the gateway _and all agent containers_ to become _healthy_ by default (spinner)**. Pass `--no-wait` to skip readiness wait or `--no-langfuse` to disable tracing. Uses the `.env` generated by `init` (or pass `--env-file PATH`). |
|
55
68
|
| `agentsystems down [PROJECT_DIR]` | Stop containers. Volumes are preserved by default; add `--delete-volumes` (or `--delete-all`) to wipe data. |
|
56
69
|
| `agentsystems logs [PROJECT_DIR]` | Stream or view recent logs (`docker compose logs`). |
|
@@ -68,9 +81,8 @@ All commands are available through `agentsystems` (or the shorter alias `agntsys
|
|
68
81
|
--fresh docker compose down -v before starting
|
69
82
|
--env-file PATH Pass a custom .env file to Compose
|
70
83
|
--wait / --no-wait Wait for gateway readiness (default: --wait)
|
71
|
-
--docker-token TEXT Docker Hub Org Access Token (env `DOCKER_OAT`)
|
72
|
-
--no-login Skip Docker login even if token env is set
|
73
84
|
--no-langfuse Skip the Langfuse tracing stack (core services only)
|
85
|
+
--agents MODE Agent startup mode: none, create, or all (default: create)
|
74
86
|
```
|
75
87
|
|
76
88
|
Run `agentsystems up --help` for the authoritative list.
|
@@ -199,28 +211,29 @@ See the [agent-template](https://github.com/agentsystems/agent-template) for a c
|
|
199
211
|
|
200
212
|
---
|
201
213
|
|
202
|
-
### `init`
|
214
|
+
### `init` details
|
203
215
|
|
204
|
-
|
205
|
-
|
206
|
-
|
216
|
+
The init command:
|
217
|
+
1. Prompts for Langfuse organization and admin credentials (interactive mode)
|
218
|
+
2. Generates secure keys automatically
|
219
|
+
3. Creates `.env` file with all configuration
|
220
|
+
4. Pulls required Docker images from public registries (no authentication needed)
|
207
221
|
|
208
|
-
|
222
|
+
The core platform images are publicly available on GitHub Container Registry:
|
223
|
+
- `ghcr.io/agentsystems/agent-control-plane:latest`
|
209
224
|
|
210
225
|
### Example: interactive laptop
|
211
226
|
|
212
227
|
```bash
|
213
228
|
agentsystems init
|
214
|
-
# prompts for directory and
|
229
|
+
# prompts for directory and Langfuse setup
|
215
230
|
```
|
216
231
|
|
217
232
|
### Example: scripted cloud VM / CI
|
218
233
|
|
219
234
|
```bash
|
220
|
-
|
221
|
-
|
222
|
-
agentsystems init /opt/agentsystems/engine \
|
223
|
-
--docker-token "$DOCKER_OAT"
|
235
|
+
agentsystems init /opt/agentsystems/engine
|
236
|
+
# Non-interactive mode - uses defaults for Langfuse
|
224
237
|
```
|
225
238
|
|
226
239
|
---
|
@@ -23,7 +23,6 @@ from dotenv import set_key
|
|
23
23
|
|
24
24
|
from ..utils import (
|
25
25
|
ensure_docker_installed,
|
26
|
-
docker_login_if_needed,
|
27
26
|
run_command,
|
28
27
|
get_required_images,
|
29
28
|
)
|
@@ -40,12 +39,6 @@ def init_command(
|
|
40
39
|
writable=True,
|
41
40
|
resolve_path=True,
|
42
41
|
),
|
43
|
-
docker_token: Optional[str] = typer.Option(
|
44
|
-
None,
|
45
|
-
"--docker-token",
|
46
|
-
envvar="DOCKER_OAT",
|
47
|
-
help="Docker Hub Org Access Token for private images",
|
48
|
-
),
|
49
42
|
) -> None:
|
50
43
|
"""Initialize a new AgentSystems deployment from the built-in template.
|
51
44
|
|
@@ -111,16 +104,6 @@ def init_command(
|
|
111
104
|
pub_key = f"pk-lf-{uuid.uuid4()}"
|
112
105
|
secret_key = f"sk-lf-{uuid.uuid4()}"
|
113
106
|
|
114
|
-
if docker_token is None and sys.stdin.isatty():
|
115
|
-
docker_token = (
|
116
|
-
typer.prompt(
|
117
|
-
"Docker org access token (leave blank if images are public)",
|
118
|
-
default="",
|
119
|
-
hide_input=True,
|
120
|
-
)
|
121
|
-
or None
|
122
|
-
)
|
123
|
-
|
124
107
|
# Get the path to the scaffold directory
|
125
108
|
import os
|
126
109
|
|
@@ -199,16 +182,6 @@ def init_command(
|
|
199
182
|
ensure_docker_installed()
|
200
183
|
progress.update(docker_task, completed=1)
|
201
184
|
|
202
|
-
# Docker login if token provided
|
203
|
-
if docker_token:
|
204
|
-
login_task = progress.add_task("Logging into Docker Hub", total=1)
|
205
|
-
progress.stop() # Stop progress display temporarily
|
206
|
-
try:
|
207
|
-
docker_login_if_needed(docker_token)
|
208
|
-
finally:
|
209
|
-
progress.start() # Always restart progress
|
210
|
-
progress.update(login_task, completed=1)
|
211
|
-
|
212
185
|
# Pull required images
|
213
186
|
required_images = get_required_images()
|
214
187
|
|
@@ -225,14 +198,9 @@ def init_command(
|
|
225
198
|
try:
|
226
199
|
run_command(["docker", "pull", img])
|
227
200
|
except typer.Exit:
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
)
|
232
|
-
docker_login_if_needed(docker_token)
|
233
|
-
run_command(["docker", "pull", img])
|
234
|
-
else:
|
235
|
-
raise
|
201
|
+
# Image pull failed - control-plane is public on ghcr.io
|
202
|
+
# This shouldn't happen unless there's a network issue
|
203
|
+
raise
|
236
204
|
finally:
|
237
205
|
progress.start() # Always restart progress
|
238
206
|
progress.advance(pull_task)
|
@@ -275,7 +275,7 @@ def setup_agents_from_config(
|
|
275
275
|
# ----- Artifact volume mounts & env vars --------------------------
|
276
276
|
# Mount full artifacts volume – agent manages its own subdirectories
|
277
277
|
# Artifact permissions are enforced at the application level via agentsystems-config.yml
|
278
|
-
cmd.extend(["--volume", "
|
278
|
+
cmd.extend(["--volume", "agentsystems_agentsystems-artifacts:/artifacts"])
|
279
279
|
|
280
280
|
# gateway proxy env
|
281
281
|
cmd.extend(
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: agentsystems-sdk
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.3.1
|
4
4
|
Summary: AgentSystems Python SDK and CLI
|
5
5
|
Author-email: AgentSystems <support@agentsystems.ai>
|
6
6
|
License-Expression: Apache-2.0
|
@@ -28,13 +28,26 @@ The AgentSystems **SDK** is a single-install Python package that provides severa
|
|
28
28
|
The CLI is designed to work **both interactively** (laptops) and **non-interactively** (CI, cloud VMs).
|
29
29
|
|
30
30
|
|
31
|
-
## Quick install
|
31
|
+
## Quick install
|
32
|
+
|
33
|
+
### Automatic installation (Recommended)
|
34
|
+
|
35
|
+
```bash
|
36
|
+
# Linux & macOS - installs Docker, pipx, and the SDK
|
37
|
+
curl -fsSL https://raw.githubusercontent.com/agentsystems/agentsystems/main/install.sh | sh
|
38
|
+
```
|
39
|
+
|
40
|
+
### Manual installation
|
32
41
|
|
33
42
|
```bash
|
34
|
-
|
35
|
-
|
43
|
+
# Install pipx if you don't have it
|
44
|
+
python3 -m pip install --upgrade pipx
|
45
|
+
pipx ensurepath
|
36
46
|
|
37
|
-
#
|
47
|
+
# Install the SDK
|
48
|
+
pipx install agentsystems-sdk
|
49
|
+
|
50
|
+
# Verify installation
|
38
51
|
agentsystems --version
|
39
52
|
```
|
40
53
|
|
@@ -68,7 +81,7 @@ All commands are available through `agentsystems` (or the shorter alias `agntsys
|
|
68
81
|
|
69
82
|
| Command | Description |
|
70
83
|
|---------|-------------|
|
71
|
-
| `agentsystems init [TARGET_DIR]` | Interactive bootstrap: prompts for Langfuse organization & admin details, generates secure keys, creates `.env` automatically, then copies the built-in deployment template and pulls the required Docker images into `TARGET_DIR`. |
|
84
|
+
| `agentsystems init [TARGET_DIR]` | Interactive bootstrap: prompts for Langfuse organization & admin details, generates secure keys, creates `.env` automatically, then copies the built-in deployment template and pulls the required Docker images into `TARGET_DIR`. No Docker authentication required - uses public images. |
|
72
85
|
| `agentsystems up [PROJECT_DIR]` | Start the platform **plus Langfuse tracing stack** (`docker compose up`). **Waits for the gateway _and all agent containers_ to become _healthy_ by default (spinner)**. Pass `--no-wait` to skip readiness wait or `--no-langfuse` to disable tracing. Uses the `.env` generated by `init` (or pass `--env-file PATH`). |
|
73
86
|
| `agentsystems down [PROJECT_DIR]` | Stop containers. Volumes are preserved by default; add `--delete-volumes` (or `--delete-all`) to wipe data. |
|
74
87
|
| `agentsystems logs [PROJECT_DIR]` | Stream or view recent logs (`docker compose logs`). |
|
@@ -86,9 +99,8 @@ All commands are available through `agentsystems` (or the shorter alias `agntsys
|
|
86
99
|
--fresh docker compose down -v before starting
|
87
100
|
--env-file PATH Pass a custom .env file to Compose
|
88
101
|
--wait / --no-wait Wait for gateway readiness (default: --wait)
|
89
|
-
--docker-token TEXT Docker Hub Org Access Token (env `DOCKER_OAT`)
|
90
|
-
--no-login Skip Docker login even if token env is set
|
91
102
|
--no-langfuse Skip the Langfuse tracing stack (core services only)
|
103
|
+
--agents MODE Agent startup mode: none, create, or all (default: create)
|
92
104
|
```
|
93
105
|
|
94
106
|
Run `agentsystems up --help` for the authoritative list.
|
@@ -217,28 +229,29 @@ See the [agent-template](https://github.com/agentsystems/agent-template) for a c
|
|
217
229
|
|
218
230
|
---
|
219
231
|
|
220
|
-
### `init`
|
232
|
+
### `init` details
|
221
233
|
|
222
|
-
|
223
|
-
|
224
|
-
|
234
|
+
The init command:
|
235
|
+
1. Prompts for Langfuse organization and admin credentials (interactive mode)
|
236
|
+
2. Generates secure keys automatically
|
237
|
+
3. Creates `.env` file with all configuration
|
238
|
+
4. Pulls required Docker images from public registries (no authentication needed)
|
225
239
|
|
226
|
-
|
240
|
+
The core platform images are publicly available on GitHub Container Registry:
|
241
|
+
- `ghcr.io/agentsystems/agent-control-plane:latest`
|
227
242
|
|
228
243
|
### Example: interactive laptop
|
229
244
|
|
230
245
|
```bash
|
231
246
|
agentsystems init
|
232
|
-
# prompts for directory and
|
247
|
+
# prompts for directory and Langfuse setup
|
233
248
|
```
|
234
249
|
|
235
250
|
### Example: scripted cloud VM / CI
|
236
251
|
|
237
252
|
```bash
|
238
|
-
|
239
|
-
|
240
|
-
agentsystems init /opt/agentsystems/engine \
|
241
|
-
--docker-token "$DOCKER_OAT"
|
253
|
+
agentsystems init /opt/agentsystems/engine
|
254
|
+
# Non-interactive mode - uses defaults for Langfuse
|
242
255
|
```
|
243
256
|
|
244
257
|
---
|
@@ -12,7 +12,6 @@ class TestInitCommand:
|
|
12
12
|
"""Tests for the init command with local scaffold."""
|
13
13
|
|
14
14
|
@patch("agentsystems_sdk.commands.init.get_required_images")
|
15
|
-
@patch("agentsystems_sdk.commands.init.docker_login_if_needed")
|
16
15
|
@patch("agentsystems_sdk.commands.init.ensure_docker_installed")
|
17
16
|
@patch("agentsystems_sdk.commands.init.set_key")
|
18
17
|
@patch("agentsystems_sdk.commands.init.shutil.copy")
|
@@ -29,7 +28,6 @@ class TestInitCommand:
|
|
29
28
|
mock_shutil_copy,
|
30
29
|
mock_set_key,
|
31
30
|
mock_ensure_docker,
|
32
|
-
mock_docker_login,
|
33
31
|
mock_get_images,
|
34
32
|
tmp_path,
|
35
33
|
):
|
@@ -43,19 +41,17 @@ class TestInitCommand:
|
|
43
41
|
"TestOrg", # Organization name
|
44
42
|
"admin@test.com", # Email
|
45
43
|
"password123", # Password
|
46
|
-
"docker-token-123", # Docker token
|
47
44
|
]
|
48
45
|
|
49
46
|
# Mock required images
|
50
47
|
mock_get_images.return_value = [
|
51
|
-
"agentsystems/agent-control-plane:latest",
|
48
|
+
"ghcr.io/agentsystems/agent-control-plane:latest",
|
52
49
|
"langfuse/langfuse:latest",
|
53
50
|
]
|
54
51
|
|
55
52
|
# Execute
|
56
53
|
init_command(
|
57
54
|
project_dir=None, # Will prompt for directory
|
58
|
-
docker_token=None,
|
59
55
|
)
|
60
56
|
|
61
57
|
# Verify scaffold was copied
|
@@ -65,17 +61,13 @@ class TestInitCommand:
|
|
65
61
|
# Verify Docker was checked
|
66
62
|
mock_ensure_docker.assert_called_once()
|
67
63
|
|
68
|
-
# Verify Docker login
|
69
|
-
mock_docker_login.assert_called_once_with("docker-token-123")
|
70
|
-
|
71
|
-
# Verify images were pulled
|
64
|
+
# Verify images were pulled (no Docker login needed for public images)
|
72
65
|
assert any(
|
73
66
|
"docker" in str(call) and "pull" in str(call)
|
74
67
|
for call in mock_run_command.call_args_list
|
75
68
|
)
|
76
69
|
|
77
70
|
@patch("agentsystems_sdk.commands.init.get_required_images")
|
78
|
-
@patch("agentsystems_sdk.commands.init.docker_login_if_needed")
|
79
71
|
@patch("agentsystems_sdk.commands.init.ensure_docker_installed")
|
80
72
|
@patch("agentsystems_sdk.commands.init.set_key")
|
81
73
|
@patch("agentsystems_sdk.commands.init.shutil.copy")
|
@@ -90,7 +82,6 @@ class TestInitCommand:
|
|
90
82
|
mock_shutil_copy,
|
91
83
|
mock_set_key,
|
92
84
|
mock_ensure_docker,
|
93
|
-
mock_docker_login,
|
94
85
|
mock_get_images,
|
95
86
|
tmp_path,
|
96
87
|
):
|
@@ -100,12 +91,13 @@ class TestInitCommand:
|
|
100
91
|
project_dir = tmp_path / "test-project"
|
101
92
|
|
102
93
|
# Mock required images
|
103
|
-
mock_get_images.return_value = [
|
94
|
+
mock_get_images.return_value = [
|
95
|
+
"ghcr.io/agentsystems/agent-control-plane:latest"
|
96
|
+
]
|
104
97
|
|
105
98
|
# Execute
|
106
99
|
init_command(
|
107
100
|
project_dir=project_dir,
|
108
|
-
docker_token="docker-token-123",
|
109
101
|
)
|
110
102
|
|
111
103
|
# Verify scaffold was copied
|
@@ -185,7 +177,6 @@ class TestInitCommand:
|
|
185
177
|
# Execute
|
186
178
|
init_command(
|
187
179
|
project_dir=project_dir,
|
188
|
-
docker_token=None,
|
189
180
|
)
|
190
181
|
|
191
182
|
# Verify set_key was called to populate the .env file
|
@@ -211,76 +202,6 @@ class TestInitCommand:
|
|
211
202
|
for var in langfuse_vars:
|
212
203
|
assert var in set_keys
|
213
204
|
|
214
|
-
@patch("agentsystems_sdk.commands.init.get_required_images")
|
215
|
-
@patch("agentsystems_sdk.commands.init.docker_login_if_needed")
|
216
|
-
@patch("agentsystems_sdk.commands.init.ensure_docker_installed")
|
217
|
-
@patch("agentsystems_sdk.commands.init.set_key")
|
218
|
-
@patch("agentsystems_sdk.commands.init.shutil.copytree")
|
219
|
-
@patch("agentsystems_sdk.commands.init.run_command")
|
220
|
-
@patch("agentsystems_sdk.commands.init.typer.prompt")
|
221
|
-
@patch("agentsystems_sdk.commands.init.sys.stdin")
|
222
|
-
def test_init_command_docker_pull_failure_retry(
|
223
|
-
self,
|
224
|
-
mock_stdin,
|
225
|
-
mock_prompt,
|
226
|
-
mock_run_command,
|
227
|
-
mock_copytree,
|
228
|
-
mock_set_key,
|
229
|
-
mock_ensure_docker,
|
230
|
-
mock_docker_login,
|
231
|
-
mock_get_images,
|
232
|
-
tmp_path,
|
233
|
-
):
|
234
|
-
"""Test init command retries docker pull with token on failure."""
|
235
|
-
# Setup
|
236
|
-
mock_stdin.isatty.return_value = True
|
237
|
-
project_dir = tmp_path / "test-project"
|
238
|
-
|
239
|
-
# Mock user inputs
|
240
|
-
mock_prompt.side_effect = [
|
241
|
-
str(project_dir), # Directory prompt
|
242
|
-
"TestOrg", # Organization name
|
243
|
-
"admin@test.com", # Email
|
244
|
-
"password123", # Password
|
245
|
-
"", # No initial docker token
|
246
|
-
"docker-token-retry", # Docker token prompt after pull failure
|
247
|
-
]
|
248
|
-
|
249
|
-
# Mock required images
|
250
|
-
mock_get_images.return_value = ["private/image:latest"]
|
251
|
-
|
252
|
-
# Mock copytree to create directory
|
253
|
-
def create_project_structure(src, dst):
|
254
|
-
dst.mkdir(parents=True)
|
255
|
-
(dst / ".env.example").write_text("")
|
256
|
-
|
257
|
-
mock_copytree.side_effect = create_project_structure
|
258
|
-
|
259
|
-
# Mock run_command to fail on first docker pull, succeed on retry
|
260
|
-
pull_attempts = 0
|
261
|
-
|
262
|
-
def mock_run_side_effect(cmd):
|
263
|
-
nonlocal pull_attempts
|
264
|
-
if "docker" in cmd and "pull" in cmd:
|
265
|
-
pull_attempts += 1
|
266
|
-
if pull_attempts == 1:
|
267
|
-
raise typer.Exit(code=1)
|
268
|
-
# Success on second attempt
|
269
|
-
|
270
|
-
mock_run_command.side_effect = mock_run_side_effect
|
271
|
-
|
272
|
-
# Execute
|
273
|
-
init_command(
|
274
|
-
project_dir=None,
|
275
|
-
docker_token=None, # No initial docker token
|
276
|
-
)
|
277
|
-
|
278
|
-
# Verify docker login was called after failure
|
279
|
-
mock_docker_login.assert_called_with("docker-token-retry")
|
280
|
-
|
281
|
-
# Verify pull was attempted twice
|
282
|
-
assert pull_attempts == 2
|
283
|
-
|
284
205
|
@patch("agentsystems_sdk.commands.init.get_required_images")
|
285
206
|
@patch("agentsystems_sdk.commands.init.ensure_docker_installed")
|
286
207
|
@patch("agentsystems_sdk.commands.init.set_key")
|
@@ -312,7 +233,6 @@ class TestInitCommand:
|
|
312
233
|
# Execute
|
313
234
|
init_command(
|
314
235
|
project_dir=project_dir,
|
315
|
-
docker_token=None,
|
316
236
|
)
|
317
237
|
|
318
238
|
# Verify no docker pull commands were executed
|
@@ -346,22 +266,21 @@ class TestInitCommand:
|
|
346
266
|
# Mock other dependencies to avoid actual execution
|
347
267
|
with patch("agentsystems_sdk.commands.init.shutil.copytree"):
|
348
268
|
with patch("agentsystems_sdk.commands.init.ensure_docker_installed"):
|
349
|
-
with patch(
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
):
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
assert len(email_calls) >= 2
|
269
|
+
with patch(
|
270
|
+
"agentsystems_sdk.commands.init.get_required_images",
|
271
|
+
return_value=[],
|
272
|
+
):
|
273
|
+
with patch("agentsystems_sdk.commands.init.set_key"):
|
274
|
+
# Execute
|
275
|
+
init_command(project_dir=None)
|
276
|
+
|
277
|
+
# Verify email prompt was called twice (invalid, then valid)
|
278
|
+
email_calls = [
|
279
|
+
call
|
280
|
+
for call in mock_prompt.call_args_list
|
281
|
+
if "email" in str(call).lower()
|
282
|
+
]
|
283
|
+
assert len(email_calls) >= 2
|
365
284
|
|
366
285
|
@patch("agentsystems_sdk.commands.init.typer.prompt")
|
367
286
|
@patch("agentsystems_sdk.commands.init.sys.stdin")
|
@@ -388,19 +307,18 @@ class TestInitCommand:
|
|
388
307
|
# Mock other dependencies to avoid actual execution
|
389
308
|
with patch("agentsystems_sdk.commands.init.shutil.copytree"):
|
390
309
|
with patch("agentsystems_sdk.commands.init.ensure_docker_installed"):
|
391
|
-
with patch(
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
):
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
assert len(password_calls) >= 2
|
310
|
+
with patch(
|
311
|
+
"agentsystems_sdk.commands.init.get_required_images",
|
312
|
+
return_value=[],
|
313
|
+
):
|
314
|
+
with patch("agentsystems_sdk.commands.init.set_key"):
|
315
|
+
# Execute
|
316
|
+
init_command(project_dir=None)
|
317
|
+
|
318
|
+
# Verify password prompt was called twice (short, then valid)
|
319
|
+
password_calls = [
|
320
|
+
call
|
321
|
+
for call in mock_prompt.call_args_list
|
322
|
+
if "password" in str(call).lower()
|
323
|
+
]
|
324
|
+
assert len(password_calls) >= 2
|
@@ -320,7 +320,7 @@ EQUALS_IN_VALUE=key=value
|
|
320
320
|
images = get_required_images()
|
321
321
|
|
322
322
|
assert isinstance(images, list)
|
323
|
-
assert "agentsystems/agent-control-plane:latest" in images
|
323
|
+
assert "ghcr.io/agentsystems/agent-control-plane:latest" in images
|
324
324
|
|
325
325
|
def test_cleanup_langfuse_init_vars_first_time(self, tmp_path):
|
326
326
|
"""Test cleanup_langfuse_init_vars on first cleanup."""
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/LICENSE
RENAMED
File without changes
|
{agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/Makefile
RENAMED
File without changes
|
{agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/NOTICE
RENAMED
File without changes
|
{agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk/deployments_scaffold/README.md
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk.egg-info/dependency_links.txt
RENAMED
File without changes
|
{agentsystems_sdk-0.2.32 → agentsystems_sdk-0.3.1}/agentsystems_sdk.egg-info/entry_points.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|