veris-cli 2.22.2__tar.gz → 2.24.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.
- {veris_cli-2.22.2 → veris_cli-2.24.0}/PKG-INFO +143 -7
- {veris_cli-2.22.2 → veris_cli-2.24.0}/README.md +141 -6
- {veris_cli-2.22.2 → veris_cli-2.24.0}/pyproject.toml +2 -1
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/api.py +2 -1
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/build_context.py +18 -9
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/commands/_helpers.py +119 -14
- veris_cli-2.24.0/src/veris_cli/commands/env.py +972 -0
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/commands/run.py +6 -3
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/commands/simulations.py +7 -1
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/config.py +115 -10
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/output.py +8 -8
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/prompts.py +3 -2
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/searchable_checkbox.py +0 -8
- veris_cli-2.24.0/src/veris_cli/templates.py +227 -0
- veris_cli-2.24.0/src/veris_cli/veris_yaml.py +325 -0
- veris_cli-2.22.2/src/veris_cli/commands/env.py +0 -558
- veris_cli-2.22.2/src/veris_cli/templates.py +0 -230
- {veris_cli-2.22.2 → veris_cli-2.24.0}/.gitignore +0 -0
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/__init__.py +0 -0
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/cli.py +0 -0
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/commands/__init__.py +0 -0
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/commands/auth.py +0 -0
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/commands/evaluations.py +0 -0
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/commands/profile.py +0 -0
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/commands/reports.py +0 -0
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/commands/scenarios.py +0 -0
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/run_output.py +0 -0
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/scripts/__init__.py +0 -0
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/scripts/docker_build.sh +0 -0
- {veris_cli-2.22.2 → veris_cli-2.24.0}/src/veris_cli/scripts/docker_push.sh +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: veris-cli
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.24.0
|
|
4
4
|
Summary: CLI to connect local agents to the Veris backend
|
|
5
5
|
Project-URL: Homepage, https://github.com/veris-ai/veris-cli
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/veris-ai/veris-cli/issues
|
|
@@ -9,6 +9,7 @@ Requires-Python: >=3.11
|
|
|
9
9
|
Requires-Dist: click>=8.1.7
|
|
10
10
|
Requires-Dist: httpx>=0.27.0
|
|
11
11
|
Requires-Dist: pathspec>=0.12.0
|
|
12
|
+
Requires-Dist: pydantic>=2.6
|
|
12
13
|
Requires-Dist: pyyaml>=6.0.1
|
|
13
14
|
Requires-Dist: questionary>=2.0.0
|
|
14
15
|
Requires-Dist: rich>=13.7.0
|
|
@@ -58,7 +59,7 @@ This saves your credentials to `~/.veris/config.yaml`.
|
|
|
58
59
|
### 2. Create an Environment
|
|
59
60
|
|
|
60
61
|
```bash
|
|
61
|
-
veris env create --name
|
|
62
|
+
veris env create --name my-agent-env --agent-name "My Agent"
|
|
62
63
|
```
|
|
63
64
|
|
|
64
65
|
This scaffolds a `.veris/` directory and registers your environment on Veris:
|
|
@@ -66,6 +67,8 @@ This scaffolds a `.veris/` directory and registers your environment on Veris:
|
|
|
66
67
|
- **`veris.yaml`** — Simulation configuration (services, persona, agent settings)
|
|
67
68
|
- **`.dockerignore`** — Files excluded from image build
|
|
68
69
|
|
|
70
|
+
The `--name` you pass is the agent's display name. The CLI slugifies it to create a target/env name: `"My Agent"` becomes `my-agent-env`. This name is used as the top-level key in `veris.yaml` and as the backend environment name.
|
|
71
|
+
|
|
69
72
|
### 3. Configure Your Agent
|
|
70
73
|
|
|
71
74
|
Edit `.veris/Dockerfile.sandbox` and `.veris/veris.yaml` to match your agent. Set secrets:
|
|
@@ -80,6 +83,8 @@ veris env vars set OPENAI_API_KEY=sk-your-key --secret
|
|
|
80
83
|
veris env push
|
|
81
84
|
```
|
|
82
85
|
|
|
86
|
+
When only one target is defined, the CLI uses it automatically — no flags needed.
|
|
87
|
+
|
|
83
88
|
### 5. Generate Scenarios
|
|
84
89
|
|
|
85
90
|
```bash
|
|
@@ -134,6 +139,7 @@ veris run # Full pipeline: simulations → evaluations
|
|
|
134
139
|
--scenario-set-id ID # Scenario set (prompts if omitted)
|
|
135
140
|
--grader-id ID # Grader (prompts if omitted)
|
|
136
141
|
--env-id ID # Environment (uses config if omitted)
|
|
142
|
+
--target NAME # Target (auto-detected if only one)
|
|
137
143
|
--image-tag TAG # Image tag (default: latest)
|
|
138
144
|
--simulation-timeout N # Timeout per sim in seconds
|
|
139
145
|
--report # Generate HTML report after evaluation
|
|
@@ -142,18 +148,30 @@ veris run # Full pipeline: simulations → evaluations
|
|
|
142
148
|
### Environment (`veris env`)
|
|
143
149
|
|
|
144
150
|
```bash
|
|
145
|
-
veris env create --name NAME # Scaffold .veris/ + register environment
|
|
151
|
+
veris env create --name NAME # Scaffold .veris/ + register environment (NAME = env/target name)
|
|
152
|
+
--agent-name NAME # Agent display name (stored in veris.yaml agent.name)
|
|
146
153
|
veris env push [--tag TAG] # Build and push image to Veris
|
|
154
|
+
--target NAME # Target to push (auto-detected if only one)
|
|
147
155
|
veris env list # List environments
|
|
148
156
|
veris env delete ENV_ID # Delete environment
|
|
149
157
|
```
|
|
150
158
|
|
|
159
|
+
### Active Target (`veris env targets`)
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
veris env targets get # Show the active target
|
|
163
|
+
veris env targets set NAME # Set the active target for this project
|
|
164
|
+
veris env targets list # List configured targets (from veris.yaml)
|
|
165
|
+
veris env targets clear # Clear the active target
|
|
166
|
+
```
|
|
167
|
+
|
|
151
168
|
### Environment Config (`veris env config`)
|
|
152
169
|
|
|
153
170
|
```bash
|
|
154
171
|
veris env config push # Upload veris.yaml to backend (no image build)
|
|
155
172
|
--file PATH # Custom veris.yaml path (default: .veris/veris.yaml)
|
|
156
173
|
--env-id ID # Override environment
|
|
174
|
+
--target NAME # Target to upload
|
|
157
175
|
```
|
|
158
176
|
|
|
159
177
|
### Environment Variables (`veris env vars`)
|
|
@@ -162,8 +180,11 @@ veris env config push # Upload veris.yaml to backend (no image buil
|
|
|
162
180
|
veris env vars set K=V [K=V ...] # Set variables
|
|
163
181
|
--secret # Mark as secret
|
|
164
182
|
--env-id ID # Override environment
|
|
183
|
+
--target NAME # Target to set variables for
|
|
165
184
|
veris env vars list # List variables
|
|
185
|
+
--target NAME
|
|
166
186
|
veris env vars rm KEY # Remove a variable
|
|
187
|
+
--target NAME
|
|
167
188
|
```
|
|
168
189
|
|
|
169
190
|
### Scenarios (`veris scenarios`)
|
|
@@ -299,17 +320,132 @@ profiles:
|
|
|
299
320
|
|
|
300
321
|
### `.veris/config.yaml`
|
|
301
322
|
|
|
302
|
-
Project config (created by `veris env create`):
|
|
323
|
+
Project config (created by `veris env create`). Each target's `environment_id` is stored under the profile:
|
|
303
324
|
```yaml
|
|
325
|
+
active_target: my-cool-agent-env
|
|
304
326
|
profiles:
|
|
305
327
|
default:
|
|
306
|
-
|
|
307
|
-
|
|
328
|
+
targets:
|
|
329
|
+
my-cool-agent-env:
|
|
330
|
+
environment_id: env_abc123
|
|
331
|
+
environment_name: my-cool-agent-env
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### `.veris/veris.yaml`
|
|
335
|
+
|
|
336
|
+
Simulation configuration. Every target is a top-level key — the target name is the backend environment name:
|
|
337
|
+
```yaml
|
|
338
|
+
version: "1.0"
|
|
339
|
+
|
|
340
|
+
my-cool-agent-env:
|
|
341
|
+
services:
|
|
342
|
+
- name: postgres
|
|
343
|
+
config:
|
|
344
|
+
SCHEMA_PATH: /agent/schemas/schema.sql
|
|
345
|
+
- name: slack
|
|
346
|
+
dns_aliases:
|
|
347
|
+
- slack.com
|
|
348
|
+
persona:
|
|
349
|
+
modality:
|
|
350
|
+
type: http
|
|
351
|
+
url: http://localhost:8008/chat
|
|
352
|
+
agent:
|
|
353
|
+
name: My Cool Agent
|
|
354
|
+
code_path: /agent
|
|
355
|
+
entry_point: uv run app
|
|
356
|
+
port: 8008
|
|
357
|
+
environment:
|
|
358
|
+
DATABASE_URL: postgresql://postgres:postgres@localhost:5432/SIMULATION_ID
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
When only one target is defined, all commands auto-select it.
|
|
362
|
+
|
|
363
|
+
## Multiple Targets (Monorepo)
|
|
364
|
+
|
|
365
|
+
A single repo can manage multiple agents/environments. Each `veris env create` adds a target whose name **is** the backend environment name.
|
|
366
|
+
|
|
367
|
+
### Creating targets
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
# First agent
|
|
371
|
+
veris env create --name my-cool-agent-env --agent-name "My Cool Agent"
|
|
372
|
+
|
|
373
|
+
# Second agent — appended to the same veris.yaml
|
|
374
|
+
veris env create --name customer-support-env --agent-name "Customer Support"
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
After two creates, `.veris/veris.yaml` looks like:
|
|
378
|
+
```yaml
|
|
379
|
+
version: "1.0"
|
|
380
|
+
|
|
381
|
+
my-cool-agent-env:
|
|
382
|
+
services: [...]
|
|
383
|
+
persona: ...
|
|
384
|
+
agent:
|
|
385
|
+
name: My Cool Agent
|
|
386
|
+
...
|
|
387
|
+
|
|
388
|
+
customer-support-env:
|
|
389
|
+
services: [...]
|
|
390
|
+
persona: ...
|
|
391
|
+
agent:
|
|
392
|
+
name: Customer Support
|
|
393
|
+
...
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
### Pushing and running
|
|
397
|
+
|
|
398
|
+
```bash
|
|
399
|
+
# With one target — auto-detected, no flag needed
|
|
400
|
+
veris env push
|
|
401
|
+
|
|
402
|
+
# With multiple targets — specify which one
|
|
403
|
+
veris env push --target customer-support-env
|
|
404
|
+
veris run --target customer-support-env
|
|
405
|
+
veris env vars set API_KEY=sk-... --target customer-support-env --secret
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
### Setting an active target
|
|
409
|
+
|
|
410
|
+
Avoid typing `--target` on every command:
|
|
411
|
+
```bash
|
|
412
|
+
veris env targets set customer-support-env
|
|
413
|
+
veris env push # pushes customer-support-env
|
|
414
|
+
veris run # runs customer-support-env
|
|
415
|
+
veris env targets get # shows: customer-support-env
|
|
416
|
+
veris env targets list # lists all targets from veris.yaml
|
|
417
|
+
veris env targets clear # clears the active target
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
### Target resolution
|
|
421
|
+
|
|
422
|
+
| Priority | Source |
|
|
423
|
+
|----------|--------|
|
|
424
|
+
| 1 | `--target` flag |
|
|
425
|
+
| 2 | `active_target` in `.veris/config.yaml` |
|
|
426
|
+
| 3 | Auto-detect: sole target in `veris.yaml` |
|
|
427
|
+
| 4 | Error if ambiguous |
|
|
428
|
+
|
|
429
|
+
### Per-target Dockerfile
|
|
430
|
+
|
|
431
|
+
Targets can override the default Dockerfile:
|
|
432
|
+
```yaml
|
|
433
|
+
customer-support-env:
|
|
434
|
+
dockerfile: .veris/Dockerfile.support
|
|
435
|
+
agent:
|
|
436
|
+
name: Customer Support
|
|
437
|
+
...
|
|
308
438
|
```
|
|
309
439
|
|
|
440
|
+
Falls back to `.veris/Dockerfile.sandbox` when not specified.
|
|
441
|
+
|
|
442
|
+
### Cross-profile behavior
|
|
443
|
+
|
|
444
|
+
When you switch profiles (e.g. from `dev` to `staging`) and push, the CLI detects that the target exists on another profile and offers to create it on the current one.
|
|
445
|
+
|
|
310
446
|
## Profiles
|
|
311
447
|
|
|
312
|
-
The CLI supports named profiles for managing multiple
|
|
448
|
+
The CLI supports named profiles for managing multiple backend accounts. Each profile stores its own API key, backend URL, console URL, organization, and environment IDs.
|
|
313
449
|
|
|
314
450
|
```bash
|
|
315
451
|
# Login to a named profile (creates it if new, sets it active)
|
|
@@ -36,7 +36,7 @@ This saves your credentials to `~/.veris/config.yaml`.
|
|
|
36
36
|
### 2. Create an Environment
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
|
-
veris env create --name
|
|
39
|
+
veris env create --name my-agent-env --agent-name "My Agent"
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
This scaffolds a `.veris/` directory and registers your environment on Veris:
|
|
@@ -44,6 +44,8 @@ This scaffolds a `.veris/` directory and registers your environment on Veris:
|
|
|
44
44
|
- **`veris.yaml`** — Simulation configuration (services, persona, agent settings)
|
|
45
45
|
- **`.dockerignore`** — Files excluded from image build
|
|
46
46
|
|
|
47
|
+
The `--name` you pass is the agent's display name. The CLI slugifies it to create a target/env name: `"My Agent"` becomes `my-agent-env`. This name is used as the top-level key in `veris.yaml` and as the backend environment name.
|
|
48
|
+
|
|
47
49
|
### 3. Configure Your Agent
|
|
48
50
|
|
|
49
51
|
Edit `.veris/Dockerfile.sandbox` and `.veris/veris.yaml` to match your agent. Set secrets:
|
|
@@ -58,6 +60,8 @@ veris env vars set OPENAI_API_KEY=sk-your-key --secret
|
|
|
58
60
|
veris env push
|
|
59
61
|
```
|
|
60
62
|
|
|
63
|
+
When only one target is defined, the CLI uses it automatically — no flags needed.
|
|
64
|
+
|
|
61
65
|
### 5. Generate Scenarios
|
|
62
66
|
|
|
63
67
|
```bash
|
|
@@ -112,6 +116,7 @@ veris run # Full pipeline: simulations → evaluations
|
|
|
112
116
|
--scenario-set-id ID # Scenario set (prompts if omitted)
|
|
113
117
|
--grader-id ID # Grader (prompts if omitted)
|
|
114
118
|
--env-id ID # Environment (uses config if omitted)
|
|
119
|
+
--target NAME # Target (auto-detected if only one)
|
|
115
120
|
--image-tag TAG # Image tag (default: latest)
|
|
116
121
|
--simulation-timeout N # Timeout per sim in seconds
|
|
117
122
|
--report # Generate HTML report after evaluation
|
|
@@ -120,18 +125,30 @@ veris run # Full pipeline: simulations → evaluations
|
|
|
120
125
|
### Environment (`veris env`)
|
|
121
126
|
|
|
122
127
|
```bash
|
|
123
|
-
veris env create --name NAME # Scaffold .veris/ + register environment
|
|
128
|
+
veris env create --name NAME # Scaffold .veris/ + register environment (NAME = env/target name)
|
|
129
|
+
--agent-name NAME # Agent display name (stored in veris.yaml agent.name)
|
|
124
130
|
veris env push [--tag TAG] # Build and push image to Veris
|
|
131
|
+
--target NAME # Target to push (auto-detected if only one)
|
|
125
132
|
veris env list # List environments
|
|
126
133
|
veris env delete ENV_ID # Delete environment
|
|
127
134
|
```
|
|
128
135
|
|
|
136
|
+
### Active Target (`veris env targets`)
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
veris env targets get # Show the active target
|
|
140
|
+
veris env targets set NAME # Set the active target for this project
|
|
141
|
+
veris env targets list # List configured targets (from veris.yaml)
|
|
142
|
+
veris env targets clear # Clear the active target
|
|
143
|
+
```
|
|
144
|
+
|
|
129
145
|
### Environment Config (`veris env config`)
|
|
130
146
|
|
|
131
147
|
```bash
|
|
132
148
|
veris env config push # Upload veris.yaml to backend (no image build)
|
|
133
149
|
--file PATH # Custom veris.yaml path (default: .veris/veris.yaml)
|
|
134
150
|
--env-id ID # Override environment
|
|
151
|
+
--target NAME # Target to upload
|
|
135
152
|
```
|
|
136
153
|
|
|
137
154
|
### Environment Variables (`veris env vars`)
|
|
@@ -140,8 +157,11 @@ veris env config push # Upload veris.yaml to backend (no image buil
|
|
|
140
157
|
veris env vars set K=V [K=V ...] # Set variables
|
|
141
158
|
--secret # Mark as secret
|
|
142
159
|
--env-id ID # Override environment
|
|
160
|
+
--target NAME # Target to set variables for
|
|
143
161
|
veris env vars list # List variables
|
|
162
|
+
--target NAME
|
|
144
163
|
veris env vars rm KEY # Remove a variable
|
|
164
|
+
--target NAME
|
|
145
165
|
```
|
|
146
166
|
|
|
147
167
|
### Scenarios (`veris scenarios`)
|
|
@@ -277,17 +297,132 @@ profiles:
|
|
|
277
297
|
|
|
278
298
|
### `.veris/config.yaml`
|
|
279
299
|
|
|
280
|
-
Project config (created by `veris env create`):
|
|
300
|
+
Project config (created by `veris env create`). Each target's `environment_id` is stored under the profile:
|
|
281
301
|
```yaml
|
|
302
|
+
active_target: my-cool-agent-env
|
|
282
303
|
profiles:
|
|
283
304
|
default:
|
|
284
|
-
|
|
285
|
-
|
|
305
|
+
targets:
|
|
306
|
+
my-cool-agent-env:
|
|
307
|
+
environment_id: env_abc123
|
|
308
|
+
environment_name: my-cool-agent-env
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### `.veris/veris.yaml`
|
|
312
|
+
|
|
313
|
+
Simulation configuration. Every target is a top-level key — the target name is the backend environment name:
|
|
314
|
+
```yaml
|
|
315
|
+
version: "1.0"
|
|
316
|
+
|
|
317
|
+
my-cool-agent-env:
|
|
318
|
+
services:
|
|
319
|
+
- name: postgres
|
|
320
|
+
config:
|
|
321
|
+
SCHEMA_PATH: /agent/schemas/schema.sql
|
|
322
|
+
- name: slack
|
|
323
|
+
dns_aliases:
|
|
324
|
+
- slack.com
|
|
325
|
+
persona:
|
|
326
|
+
modality:
|
|
327
|
+
type: http
|
|
328
|
+
url: http://localhost:8008/chat
|
|
329
|
+
agent:
|
|
330
|
+
name: My Cool Agent
|
|
331
|
+
code_path: /agent
|
|
332
|
+
entry_point: uv run app
|
|
333
|
+
port: 8008
|
|
334
|
+
environment:
|
|
335
|
+
DATABASE_URL: postgresql://postgres:postgres@localhost:5432/SIMULATION_ID
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
When only one target is defined, all commands auto-select it.
|
|
339
|
+
|
|
340
|
+
## Multiple Targets (Monorepo)
|
|
341
|
+
|
|
342
|
+
A single repo can manage multiple agents/environments. Each `veris env create` adds a target whose name **is** the backend environment name.
|
|
343
|
+
|
|
344
|
+
### Creating targets
|
|
345
|
+
|
|
346
|
+
```bash
|
|
347
|
+
# First agent
|
|
348
|
+
veris env create --name my-cool-agent-env --agent-name "My Cool Agent"
|
|
349
|
+
|
|
350
|
+
# Second agent — appended to the same veris.yaml
|
|
351
|
+
veris env create --name customer-support-env --agent-name "Customer Support"
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
After two creates, `.veris/veris.yaml` looks like:
|
|
355
|
+
```yaml
|
|
356
|
+
version: "1.0"
|
|
357
|
+
|
|
358
|
+
my-cool-agent-env:
|
|
359
|
+
services: [...]
|
|
360
|
+
persona: ...
|
|
361
|
+
agent:
|
|
362
|
+
name: My Cool Agent
|
|
363
|
+
...
|
|
364
|
+
|
|
365
|
+
customer-support-env:
|
|
366
|
+
services: [...]
|
|
367
|
+
persona: ...
|
|
368
|
+
agent:
|
|
369
|
+
name: Customer Support
|
|
370
|
+
...
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### Pushing and running
|
|
374
|
+
|
|
375
|
+
```bash
|
|
376
|
+
# With one target — auto-detected, no flag needed
|
|
377
|
+
veris env push
|
|
378
|
+
|
|
379
|
+
# With multiple targets — specify which one
|
|
380
|
+
veris env push --target customer-support-env
|
|
381
|
+
veris run --target customer-support-env
|
|
382
|
+
veris env vars set API_KEY=sk-... --target customer-support-env --secret
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### Setting an active target
|
|
386
|
+
|
|
387
|
+
Avoid typing `--target` on every command:
|
|
388
|
+
```bash
|
|
389
|
+
veris env targets set customer-support-env
|
|
390
|
+
veris env push # pushes customer-support-env
|
|
391
|
+
veris run # runs customer-support-env
|
|
392
|
+
veris env targets get # shows: customer-support-env
|
|
393
|
+
veris env targets list # lists all targets from veris.yaml
|
|
394
|
+
veris env targets clear # clears the active target
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
### Target resolution
|
|
398
|
+
|
|
399
|
+
| Priority | Source |
|
|
400
|
+
|----------|--------|
|
|
401
|
+
| 1 | `--target` flag |
|
|
402
|
+
| 2 | `active_target` in `.veris/config.yaml` |
|
|
403
|
+
| 3 | Auto-detect: sole target in `veris.yaml` |
|
|
404
|
+
| 4 | Error if ambiguous |
|
|
405
|
+
|
|
406
|
+
### Per-target Dockerfile
|
|
407
|
+
|
|
408
|
+
Targets can override the default Dockerfile:
|
|
409
|
+
```yaml
|
|
410
|
+
customer-support-env:
|
|
411
|
+
dockerfile: .veris/Dockerfile.support
|
|
412
|
+
agent:
|
|
413
|
+
name: Customer Support
|
|
414
|
+
...
|
|
286
415
|
```
|
|
287
416
|
|
|
417
|
+
Falls back to `.veris/Dockerfile.sandbox` when not specified.
|
|
418
|
+
|
|
419
|
+
### Cross-profile behavior
|
|
420
|
+
|
|
421
|
+
When you switch profiles (e.g. from `dev` to `staging`) and push, the CLI detects that the target exists on another profile and offers to create it on the current one.
|
|
422
|
+
|
|
288
423
|
## Profiles
|
|
289
424
|
|
|
290
|
-
The CLI supports named profiles for managing multiple
|
|
425
|
+
The CLI supports named profiles for managing multiple backend accounts. Each profile stores its own API key, backend URL, console URL, organization, and environment IDs.
|
|
291
426
|
|
|
292
427
|
```bash
|
|
293
428
|
# Login to a named profile (creates it if new, sets it active)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "veris-cli"
|
|
3
|
-
version = "2.
|
|
3
|
+
version = "2.24.0"
|
|
4
4
|
description = "CLI to connect local agents to the Veris backend"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.11"
|
|
@@ -14,6 +14,7 @@ dependencies = [
|
|
|
14
14
|
"rich>=13.7.0",
|
|
15
15
|
"questionary>=2.0.0",
|
|
16
16
|
"pyyaml>=6.0.1",
|
|
17
|
+
"pydantic>=2.6",
|
|
17
18
|
]
|
|
18
19
|
|
|
19
20
|
[project.scripts]
|
|
@@ -212,12 +212,13 @@ class VerisAPI:
|
|
|
212
212
|
scenario_set_id: str,
|
|
213
213
|
environment_id: str,
|
|
214
214
|
config: Optional[dict] = None,
|
|
215
|
+
auto_evaluate: bool = False,
|
|
215
216
|
) -> dict[str, Any]:
|
|
216
217
|
"""Create a new run."""
|
|
217
218
|
payload: dict[str, Any] = {
|
|
218
219
|
"scenario_set_id": scenario_set_id,
|
|
219
220
|
"environment_id": environment_id,
|
|
220
|
-
"auto_evaluate":
|
|
221
|
+
"auto_evaluate": auto_evaluate,
|
|
221
222
|
}
|
|
222
223
|
if config:
|
|
223
224
|
payload["config"] = config
|
|
@@ -30,22 +30,25 @@ def _load_dockerignore(project_root: Path) -> pathspec.PathSpec:
|
|
|
30
30
|
def create_build_context(
|
|
31
31
|
project_root: Path,
|
|
32
32
|
output_path: Path | None = None,
|
|
33
|
+
dockerfile: Path | str | None = None,
|
|
33
34
|
) -> tuple[Path, int]:
|
|
34
35
|
"""Create a tar.gz build context from the project root.
|
|
35
36
|
|
|
36
37
|
Respects .veris/.dockerignore (preferred) or .dockerignore at the project root.
|
|
37
|
-
Always includes
|
|
38
|
+
Always includes the selected Dockerfile even if matched by ignore.
|
|
38
39
|
Always excludes .git/ regardless of .dockerignore.
|
|
39
40
|
|
|
40
41
|
Args:
|
|
41
42
|
project_root: Root directory to package.
|
|
42
43
|
output_path: Where to write the tarball. If None, uses a tempfile.
|
|
44
|
+
dockerfile: Dockerfile path (absolute or relative to project_root). Defaults
|
|
45
|
+
to `.veris/Dockerfile.sandbox` when None.
|
|
43
46
|
|
|
44
47
|
Returns:
|
|
45
48
|
Tuple of (tarball_path, size_bytes).
|
|
46
49
|
|
|
47
50
|
Raises:
|
|
48
|
-
ValueError: If tarball exceeds the size cap or Dockerfile
|
|
51
|
+
ValueError: If tarball exceeds the size cap or the Dockerfile is missing.
|
|
49
52
|
"""
|
|
50
53
|
spec = _load_dockerignore(project_root)
|
|
51
54
|
|
|
@@ -54,12 +57,18 @@ def create_build_context(
|
|
|
54
57
|
os.close(fd)
|
|
55
58
|
output_path = Path(tmp)
|
|
56
59
|
|
|
57
|
-
dockerfile
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
if dockerfile is None:
|
|
61
|
+
dockerfile_path = project_root / ".veris" / "Dockerfile.sandbox"
|
|
62
|
+
dockerfile_label = ".veris/Dockerfile.sandbox"
|
|
63
|
+
else:
|
|
64
|
+
df = Path(dockerfile)
|
|
65
|
+
dockerfile_path = df if df.is_absolute() else project_root / df
|
|
66
|
+
dockerfile_label = str(dockerfile)
|
|
67
|
+
if not dockerfile_path.exists():
|
|
68
|
+
raise ValueError(f"{dockerfile_label} not found")
|
|
60
69
|
|
|
61
70
|
file_count = 0
|
|
62
|
-
dockerfile_rel =
|
|
71
|
+
dockerfile_rel = str(dockerfile_path.relative_to(project_root))
|
|
63
72
|
dockerfile_added = False
|
|
64
73
|
|
|
65
74
|
with tarfile.open(output_path, "w:gz") as tar:
|
|
@@ -83,7 +92,7 @@ def create_build_context(
|
|
|
83
92
|
if rel_path == ".":
|
|
84
93
|
rel_path = f
|
|
85
94
|
|
|
86
|
-
# Skip ignored files (but always include
|
|
95
|
+
# Skip ignored files (but always include the selected Dockerfile)
|
|
87
96
|
if spec.match_file(rel_path) and rel_path != dockerfile_rel:
|
|
88
97
|
continue
|
|
89
98
|
|
|
@@ -93,9 +102,9 @@ def create_build_context(
|
|
|
93
102
|
if rel_path == dockerfile_rel:
|
|
94
103
|
dockerfile_added = True
|
|
95
104
|
|
|
96
|
-
# If the Dockerfile wasn't added (e.g.
|
|
105
|
+
# If the Dockerfile wasn't added (e.g. its dir was ignored), add it explicitly
|
|
97
106
|
if not dockerfile_added:
|
|
98
|
-
tar.add(str(
|
|
107
|
+
tar.add(str(dockerfile_path), arcname=dockerfile_rel)
|
|
99
108
|
file_count += 1
|
|
100
109
|
|
|
101
110
|
size = output_path.stat().st_size
|