@evolvingmachines/evolve 0.0.65 → 0.0.67
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.
- package/dist/{chunk-DK2MGUPB.js → chunk-RFLMRPGK.js} +5 -5
- package/dist/cli/index.cjs +39 -39
- package/dist/cli/index.d.cts +3 -3
- package/dist/cli/index.d.ts +3 -3
- package/dist/cli/index.js +30 -30
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/{types-B_qmzlMk.d.cts → types-84M4J_Vm.d.cts} +11 -44
- package/dist/{types-B_qmzlMk.d.ts → types-84M4J_Vm.d.ts} +11 -44
- package/package.json +4 -4
- package/skills/create-adapter/SKILL.md +71 -26
- package/skills/create-task/SKILL.md +124 -66
- package/skills/evolve/SKILL.md +37 -20
- package/skills/evolve-evals/SKILL.md +142 -69
- package/skills/evolve-evals/references/cli-reference/agent.md +76 -0
- package/skills/evolve-evals/references/cli-reference/analysis.md +78 -0
- package/skills/evolve-evals/references/cli-reference/analyze.md +95 -0
- package/skills/evolve-evals/references/cli-reference/auth.md +96 -0
- package/skills/evolve-evals/references/cli-reference/check.md +156 -0
- package/skills/evolve-evals/references/cli-reference/dataset.md +154 -0
- package/skills/evolve-evals/references/cli-reference/filesystem.md +168 -0
- package/skills/evolve-evals/references/cli-reference/index.md +149 -0
- package/skills/evolve-evals/references/cli-reference/job.md +198 -0
- package/skills/evolve-evals/references/cli-reference/run.md +187 -0
- package/skills/evolve-evals/references/cli-reference/secrets.md +77 -0
- package/skills/evolve-evals/references/cli-reference/session.md +56 -0
- package/skills/evolve-evals/references/cli-reference/skill.md +52 -0
- package/skills/evolve-evals/references/cli-reference/skills.md +85 -0
- package/skills/evolve-evals/references/cli-reference/trial.md +115 -0
- package/skills/evolve-evals/references/cli-reference/upload.md +72 -0
- package/skills/evolve-evals/references/core-concepts/agents.md +96 -0
- package/skills/evolve-evals/references/core-concepts/analyze.md +143 -0
- package/skills/evolve-evals/references/core-concepts/check.md +116 -0
- package/skills/evolve-evals/references/core-concepts/compatibility.md +39 -0
- package/skills/evolve-evals/references/core-concepts/compose.md +103 -0
- package/skills/evolve-evals/references/core-concepts/datasets.md +234 -0
- package/skills/evolve-evals/references/core-concepts/index.md +52 -0
- package/skills/evolve-evals/references/core-concepts/jobs.md +223 -0
- package/skills/evolve-evals/references/core-concepts/models.md +73 -0
- package/skills/evolve-evals/references/core-concepts/multi-step.md +93 -0
- package/skills/evolve-evals/references/core-concepts/rewardkit.md +341 -0
- package/skills/evolve-evals/references/core-concepts/sandboxes.md +73 -0
- package/skills/evolve-evals/references/core-concepts/secrets.md +86 -0
- package/skills/evolve-evals/references/core-concepts/sharing.md +81 -0
- package/skills/evolve-evals/references/core-concepts/skills.md +100 -0
- package/skills/evolve-evals/references/core-concepts/task-config.md +169 -0
- package/skills/evolve-evals/references/core-concepts/task-environment.md +127 -0
- package/skills/evolve-evals/references/core-concepts/task-reference.md +191 -0
- package/skills/evolve-evals/references/core-concepts/task-verifiers.md +209 -0
- package/skills/evolve-evals/references/core-concepts/tasks.md +90 -0
- package/skills/evolve-evals/references/core-concepts/teams.md +128 -0
- package/skills/evolve-evals/references/core-concepts/trial-outputs.md +225 -0
- package/skills/evolve-evals/references/core-concepts/trials.md +129 -0
- package/skills/evolve-evals/references/core-concepts/upload-sdk-session.md +240 -0
- package/skills/evolve-evals/references/core-concepts/upload.md +166 -0
- package/skills/evolve-evals/references/dashboard/checks.md +54 -0
- package/skills/evolve-evals/references/dashboard/datasets.md +65 -0
- package/skills/evolve-evals/references/dashboard/jobs.md +106 -0
- package/skills/evolve-evals/references/dashboard/traces.md +54 -0
- package/skills/evolve-evals/references/dashboard/trial-viewer.md +77 -0
- package/skills/evolve-evals/references/getting-started/first-task.md +228 -0
- package/skills/evolve-evals/references/getting-started/installation.md +79 -0
- package/skills/evolve-evals/references/getting-started/quick-start.md +100 -0
- package/skills/evolve-evals/references/index.md +58 -0
- package/skills/evolve-evals/references/sdk/http.md +110 -0
- package/skills/evolve-evals/references/sdk/python.md +108 -0
- package/skills/evolve-evals/references/sdk/typescript.md +104 -0
- package/skills/evolve-evals/references/sdk-reference/agents.md +75 -0
- package/skills/evolve-evals/references/sdk-reference/analyses.md +124 -0
- package/skills/evolve-evals/references/sdk-reference/auth.md +171 -0
- package/skills/evolve-evals/references/sdk-reference/checks.md +145 -0
- package/skills/evolve-evals/references/sdk-reference/datasets.md +170 -0
- package/skills/evolve-evals/references/sdk-reference/error-codes.md +231 -0
- package/skills/evolve-evals/references/sdk-reference/errors.md +98 -0
- package/skills/evolve-evals/references/sdk-reference/filesystem.md +166 -0
- package/skills/evolve-evals/references/sdk-reference/index.md +161 -0
- package/skills/evolve-evals/references/sdk-reference/jobs.md +250 -0
- package/skills/evolve-evals/references/sdk-reference/meta.md +54 -0
- package/skills/evolve-evals/references/sdk-reference/methods/agents.md +154 -0
- package/skills/evolve-evals/references/sdk-reference/methods/analyses.md +211 -0
- package/skills/evolve-evals/references/sdk-reference/methods/auth.md +257 -0
- package/skills/evolve-evals/references/sdk-reference/methods/checks.md +460 -0
- package/skills/evolve-evals/references/sdk-reference/methods/datasets.md +687 -0
- package/skills/evolve-evals/references/sdk-reference/methods/filesystem.md +527 -0
- package/skills/evolve-evals/references/sdk-reference/methods/jobs.md +1021 -0
- package/skills/evolve-evals/references/sdk-reference/methods/meta.md +209 -0
- package/skills/evolve-evals/references/sdk-reference/methods/secrets.md +157 -0
- package/skills/evolve-evals/references/sdk-reference/methods/skills.md +125 -0
- package/skills/evolve-evals/references/sdk-reference/methods/trials.md +371 -0
- package/skills/evolve-evals/references/sdk-reference/secrets.md +104 -0
- package/skills/evolve-evals/references/sdk-reference/skills.md +66 -0
- package/skills/evolve-evals/references/sdk-reference/trials.md +164 -0
- package/skills/evolve-evals/references/sdk-reference/types.md +1249 -0
- package/skills/publish/SKILL.md +103 -79
- package/skills/rewardkit/SKILL.md +78 -23
- package/spec/openapi.yaml +19 -74
- package/skills/evolve-evals/references/cli-reference/agent.mdx +0 -79
- package/skills/evolve-evals/references/cli-reference/analysis.mdx +0 -160
- package/skills/evolve-evals/references/cli-reference/analyze.mdx +0 -84
- package/skills/evolve-evals/references/cli-reference/auth.mdx +0 -133
- package/skills/evolve-evals/references/cli-reference/check.mdx +0 -263
- package/skills/evolve-evals/references/cli-reference/dataset.mdx +0 -151
- package/skills/evolve-evals/references/cli-reference/index.mdx +0 -108
- package/skills/evolve-evals/references/cli-reference/job.mdx +0 -278
- package/skills/evolve-evals/references/cli-reference/run.mdx +0 -204
- package/skills/evolve-evals/references/cli-reference/secrets.mdx +0 -95
- package/skills/evolve-evals/references/cli-reference/skill.mdx +0 -61
- package/skills/evolve-evals/references/cli-reference/skills.mdx +0 -81
- package/skills/evolve-evals/references/cli-reference/trial.mdx +0 -181
- package/skills/evolve-evals/references/cli-reference/upload.mdx +0 -36
- package/skills/evolve-evals/references/core-concepts/agents.mdx +0 -106
- package/skills/evolve-evals/references/core-concepts/analyze.mdx +0 -86
- package/skills/evolve-evals/references/core-concepts/check.mdx +0 -64
- package/skills/evolve-evals/references/core-concepts/datasets.mdx +0 -138
- package/skills/evolve-evals/references/core-concepts/index.mdx +0 -42
- package/skills/evolve-evals/references/core-concepts/jobs.mdx +0 -151
- package/skills/evolve-evals/references/core-concepts/models.mdx +0 -68
- package/skills/evolve-evals/references/core-concepts/sandboxes.mdx +0 -52
- package/skills/evolve-evals/references/core-concepts/secrets.mdx +0 -41
- package/skills/evolve-evals/references/core-concepts/sharing.mdx +0 -35
- package/skills/evolve-evals/references/core-concepts/skills.mdx +0 -42
- package/skills/evolve-evals/references/core-concepts/tasks.mdx +0 -216
- package/skills/evolve-evals/references/core-concepts/teams.mdx +0 -36
- package/skills/evolve-evals/references/core-concepts/trial-outputs.mdx +0 -117
- package/skills/evolve-evals/references/core-concepts/trials.mdx +0 -103
- package/skills/evolve-evals/references/core-concepts/upload.mdx +0 -93
- package/skills/evolve-evals/references/dashboard/checks.mdx +0 -21
- package/skills/evolve-evals/references/dashboard/datasets.mdx +0 -24
- package/skills/evolve-evals/references/dashboard/jobs.mdx +0 -65
- package/skills/evolve-evals/references/dashboard/traces.mdx +0 -17
- package/skills/evolve-evals/references/dashboard/trial-viewer.mdx +0 -30
- package/skills/evolve-evals/references/getting-started/installation.mdx +0 -56
- package/skills/evolve-evals/references/getting-started/quick-start.mdx +0 -94
- package/skills/evolve-evals/references/index.mdx +0 -48
- package/skills/evolve-evals/references/sdk/python.mdx +0 -161
- package/skills/evolve-evals/references/sdk/typescript.mdx +0 -163
- package/skills/evolve-evals/references/sdk-reference/agents.mdx +0 -108
- package/skills/evolve-evals/references/sdk-reference/analyses.mdx +0 -222
- package/skills/evolve-evals/references/sdk-reference/auth.mdx +0 -116
- package/skills/evolve-evals/references/sdk-reference/checks.mdx +0 -300
- package/skills/evolve-evals/references/sdk-reference/datasets.mdx +0 -346
- package/skills/evolve-evals/references/sdk-reference/errors.mdx +0 -210
- package/skills/evolve-evals/references/sdk-reference/index.mdx +0 -60
- package/skills/evolve-evals/references/sdk-reference/jobs.mdx +0 -822
- package/skills/evolve-evals/references/sdk-reference/meta.mdx +0 -52
- package/skills/evolve-evals/references/sdk-reference/skills.mdx +0 -69
- package/skills/evolve-evals/references/sdk-reference/trials.mdx +0 -302
- package/skills/evolve-evals/references/sdk-reference/types.mdx +0 -274
- package/skills/evolve-evals/references/snippets/global-options.mdx +0 -13
- package/skills/evolve-evals/references/snippets/list-flags.mdx +0 -23
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Task configuration"
|
|
3
|
+
description: "Set resources, timeouts, network access, and environment variables in task.toml."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
`task.toml` describes what the task needs. Start with a small configuration and add settings when the task depends on them.
|
|
7
|
+
|
|
8
|
+
```toml task.toml
|
|
9
|
+
schema_version = "1.4"
|
|
10
|
+
artifacts = ["/app/answer.txt"]
|
|
11
|
+
|
|
12
|
+
[agent]
|
|
13
|
+
timeout_sec = 120
|
|
14
|
+
|
|
15
|
+
[verifier]
|
|
16
|
+
timeout_sec = 60
|
|
17
|
+
environment_mode = "shared"
|
|
18
|
+
|
|
19
|
+
[environment]
|
|
20
|
+
cpus = 2
|
|
21
|
+
memory_mb = 2048
|
|
22
|
+
storage_mb = 10240
|
|
23
|
+
workdir = "/app"
|
|
24
|
+
network_mode = "no-network"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Note:**
|
|
28
|
+
|
|
29
|
+
`artifacts` is a top-level key. Place it before any `[table]` header, as above.
|
|
30
|
+
|
|
31
|
+
For every accepted field and default, use the [task.toml reference](/core-concepts/task-reference).
|
|
32
|
+
|
|
33
|
+
## Time and resources
|
|
34
|
+
|
|
35
|
+
| Setting | Meaning | Default when omitted |
|
|
36
|
+
| --- | --- | --- |
|
|
37
|
+
| `agent.timeout_sec` | Maximum agent run time | 3,600 seconds |
|
|
38
|
+
| `verifier.timeout_sec` | Maximum verifier run time | 600 seconds |
|
|
39
|
+
| `environment.cpus` | Requested CPUs | 2 |
|
|
40
|
+
| `environment.memory_mb` | Requested memory | 8,192 MB |
|
|
41
|
+
| `environment.storage_mb` | Requested disk | 10,240 MB |
|
|
42
|
+
| `environment.gpus` | Requested GPUs | 0 |
|
|
43
|
+
| `environment.gpu_types` | Acceptable GPU types | Any type, when GPUs are requested |
|
|
44
|
+
|
|
45
|
+
A job's `--timeout-multiplier` scales the task timeouts. Provider limits still apply. Use [sandbox capabilities](/core-concepts/sandboxes) to check whether a provider can satisfy the task.
|
|
46
|
+
|
|
47
|
+
## Network access
|
|
48
|
+
|
|
49
|
+
| Mode | Agent access |
|
|
50
|
+
| --- | --- |
|
|
51
|
+
| `public` | Public internet; the default |
|
|
52
|
+
| `allowlist` | Declared hosts and the Evolve model gateway |
|
|
53
|
+
| `no-network` | Evolve model gateway only |
|
|
54
|
+
|
|
55
|
+
`allowed_hosts` is valid only alongside `network_mode = "allowlist"`.
|
|
56
|
+
|
|
57
|
+
```toml task.toml
|
|
58
|
+
[environment]
|
|
59
|
+
network_mode = "allowlist"
|
|
60
|
+
allowed_hosts = ["pypi.org", "files.pythonhosted.org"]
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Change access for the agent phase
|
|
64
|
+
|
|
65
|
+
The environment policy applies during setup and after the agent finishes. An `[agent]` policy can override it while the agent runs.
|
|
66
|
+
|
|
67
|
+
```toml task.toml
|
|
68
|
+
[environment]
|
|
69
|
+
network_mode = "public"
|
|
70
|
+
|
|
71
|
+
[agent]
|
|
72
|
+
network_mode = "no-network"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
```mermaid
|
|
76
|
+
%%{init: {"flowchart": {"nodeSpacing": 16, "rankSpacing": 20, "padding": 10}, "themeVariables": {"fontSize": "14px", "fontFamily": "Google Sans Flex, sans-serif"}}}%%
|
|
77
|
+
flowchart TB
|
|
78
|
+
A["1. Setup: public internet"] --> B["2. Agent: model gateway only"]
|
|
79
|
+
B --> C["3. Restore environment policy"]
|
|
80
|
+
C --> D["4. Shared verifier: public internet"]
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
A shared verifier uses the restored environment policy. A different `[verifier].network_mode` requires a separate verifier. Its policy resolves from `[verifier.environment]`, or a copy of `[environment]` when that table is absent, then applies any `[verifier]` override.
|
|
84
|
+
|
|
85
|
+
The legacy `allow_internet = false` means `no-network`; `true` means `public`. An explicit `network_mode` takes precedence.
|
|
86
|
+
|
|
87
|
+
## Environment variables
|
|
88
|
+
|
|
89
|
+
```toml task.toml
|
|
90
|
+
[environment.env]
|
|
91
|
+
APP_MODE = "test"
|
|
92
|
+
GITHUB_TOKEN = "${GITHUB_TOKEN}"
|
|
93
|
+
LOG_LEVEL = "${LOG_LEVEL:-info}"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
| Value | How it resolves |
|
|
97
|
+
| --- | --- |
|
|
98
|
+
| `"test"` | Literal value stored with the dataset |
|
|
99
|
+
| `"${GITHUB_TOKEN}"` | A [secret attached to the job](/core-concepts/secrets) under that environment name |
|
|
100
|
+
| `"${LOG_LEVEL:-info}"` | An attached secret, or the fallback `info` |
|
|
101
|
+
|
|
102
|
+
Templates must occupy the whole value. A missing required secret rejects job creation. Keep credentials out of literal values: dataset contents are not a secret store.
|
|
103
|
+
|
|
104
|
+
The image's startup process receives literals only. Secret templates are resolved for the agent and processes it launches. Healthchecks never receive secret templates; a single-container healthcheck also does not receive the task's literal table.
|
|
105
|
+
|
|
106
|
+
## Save outputs
|
|
107
|
+
|
|
108
|
+
For separate verification, `artifacts` names the files or directories to copy into the verifier sandbox. Retained files also appear in the job archive. A shared verifier reads the agent's existing filesystem directly and does not export this artifact list; use the [filesystem commands](/core-concepts/trial-outputs#sandbox-files) to inspect live or captured files.
|
|
109
|
+
|
|
110
|
+
```toml task.toml
|
|
111
|
+
artifacts = [
|
|
112
|
+
"/app/answer.txt",
|
|
113
|
+
{ source = "/app/reports", destination = "reports", exclude = ["*.tmp"] }
|
|
114
|
+
]
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Sources are absolute paths. `destination` is relative to the stored `artifacts/` directory. It does not change the source path used to restore a file in a separate verifier.
|
|
118
|
+
|
|
119
|
+
See [verification and artifacts](/core-concepts/task-verifiers#separate-verification) for a complete example.
|
|
120
|
+
|
|
121
|
+
## Start from a saved conversation
|
|
122
|
+
|
|
123
|
+
Put a valid ATIF `trajectory.json` beside the instruction. Evolve loads it as the agent's conversation history before giving it the new instruction. This works with **Claude Code and Codex**.
|
|
124
|
+
|
|
125
|
+
```text
|
|
126
|
+
my-task/
|
|
127
|
+
├── instruction.md What to do next
|
|
128
|
+
├── trajectory.json Earlier conversation
|
|
129
|
+
├── task.toml
|
|
130
|
+
├── environment/
|
|
131
|
+
└── tests/
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Only the conversation is restored. Put any files it depends on in the task environment. An invalid trajectory is rejected during import; a harness that cannot load it is rejected before the agent runs.
|
|
135
|
+
|
|
136
|
+
### Minimal text-only ATIF seed
|
|
137
|
+
|
|
138
|
+
```json trajectory.json
|
|
139
|
+
{
|
|
140
|
+
"schema_version": "ATIF-v1.7",
|
|
141
|
+
"agent": {"name": "example", "version": "1.0"},
|
|
142
|
+
"steps": [
|
|
143
|
+
{"step_id": 1, "source": "user", "message": "Use Quarterly review as the report title."},
|
|
144
|
+
{"step_id": 2, "source": "agent", "message": "I will use that title."}
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
This authored example supplies conversation context; it does not create a report file. The next instruction can ask the agent to use the earlier title.
|
|
150
|
+
|
|
151
|
+
Imports accept `ATIF-v1.0` through `ATIF-v1.7`. Steps are numbered from 1 in order. Evolve converts the document into the selected harness's session format. Multimodal content is reduced to text; image parts become placeholders.
|
|
152
|
+
|
|
153
|
+
There is no trajectory setting in `task.toml` or run-level load flag in Evolve. For [multi-step tasks](/core-concepts/multi-step), place the trajectory beside the first step's instruction; later steps start fresh.
|
|
154
|
+
|
|
155
|
+
## Other task inputs
|
|
156
|
+
|
|
157
|
+
| Input | Purpose |
|
|
158
|
+
| --- | --- |
|
|
159
|
+
| `environment.skills_dir` | [Package skills with the task](/core-concepts/skills#package-skills-with-a-task) |
|
|
160
|
+
| `pre_artifacts.sh` | [Prepare collected outputs](/core-concepts/task-verifiers#prepare-outputs-for-collection) after the agent finishes |
|
|
161
|
+
| `[metadata]` | Store descriptive fields; `metadata.task_id`, when set, must match the task directory name |
|
|
162
|
+
|
|
163
|
+
## Validate before publishing
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
evolve dataset check ./my-dataset
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
This checks task configuration without uploading the corpus or building images. A successful check does not prove that an image builds or that the verifier is correct. Use [task checks](/core-concepts/check) for the latter.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Task environment"
|
|
3
|
+
description: "Give the agent the tools, files, and services the task needs."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
The environment is the Linux system where the agent works. Install dependencies and seed files here; keep hidden tests in `tests/`.
|
|
7
|
+
|
|
8
|
+
## Choose an image source
|
|
9
|
+
|
|
10
|
+
### Dockerfile
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
my-task/
|
|
14
|
+
└── environment/
|
|
15
|
+
├── Dockerfile
|
|
16
|
+
└── input.csv
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
```dockerfile environment/Dockerfile
|
|
20
|
+
FROM python:3.12-slim
|
|
21
|
+
WORKDIR /app
|
|
22
|
+
COPY input.csv /app/input.csv
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Evolve builds the image when you publish the dataset. The build context is `environment/`, so `COPY` paths are relative to that directory.
|
|
26
|
+
|
|
27
|
+
### Prebuilt image
|
|
28
|
+
|
|
29
|
+
```toml task.toml
|
|
30
|
+
[environment]
|
|
31
|
+
docker_image = "python:3.12-slim"
|
|
32
|
+
workdir = "/app"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Use a public image with an explicit tag or digest. Untagged images and `:latest` are rejected. A prebuilt image takes precedence over `environment/Dockerfile`.
|
|
36
|
+
|
|
37
|
+
If neither a Dockerfile nor Compose file is present, files under `environment/` are uploaded to the working directory. These files must be UTF-8 text; put binary data inside the image.
|
|
38
|
+
|
|
39
|
+
### Multiple containers
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
my-task/
|
|
43
|
+
└── environment/
|
|
44
|
+
├── Dockerfile
|
|
45
|
+
└── docker-compose.yaml
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
The file must be named `environment/docker-compose.yaml`. The agent runs in `main`; Evolve supplies that service from the task's image or Dockerfile when you do not define it. Other services provide databases or other task dependencies.
|
|
49
|
+
|
|
50
|
+
Compose runs on E2B or Daytona. Compose with `no-network`, GPUs, or multi-step tasks is not supported. Follow the [multi-container guide](/core-concepts/compose) for a complete environment example.
|
|
51
|
+
|
|
52
|
+
## Working directory and user
|
|
53
|
+
|
|
54
|
+
The working directory resolves in this order:
|
|
55
|
+
|
|
56
|
+
```text
|
|
57
|
+
1. [environment].workdir
|
|
58
|
+
If set
|
|
59
|
+
↓ otherwise
|
|
60
|
+
2. WORKDIR in the agent's Dockerfile
|
|
61
|
+
If available
|
|
62
|
+
↓ otherwise
|
|
63
|
+
3. /app
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
For a prebuilt image, set `workdir` explicitly when it needs a path other than `/app`.
|
|
67
|
+
|
|
68
|
+
Use `[agent].user` to select an existing username. Otherwise, the parsed Dockerfile’s `USER` applies, with root as the fallback. Use `root` or `0` for root; other numeric UIDs and `user:group` declarations are rejected. The named user must already exist in the image, and the image must include `su`. Evolve prepares the user’s home before running the agent.
|
|
69
|
+
|
|
70
|
+
```toml task.toml
|
|
71
|
+
[agent]
|
|
72
|
+
user = "dev"
|
|
73
|
+
|
|
74
|
+
[environment]
|
|
75
|
+
workdir = "/workspace"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Start a service
|
|
79
|
+
|
|
80
|
+
An image's `ENTRYPOINT` runs before the agent starts. `CMD` is not used as the task command; keep-alive entrypoints such as `sleep infinity` do not start a service.
|
|
81
|
+
|
|
82
|
+
Add a healthcheck when the agent must wait for a service:
|
|
83
|
+
|
|
84
|
+
```toml task.toml
|
|
85
|
+
[environment.healthcheck]
|
|
86
|
+
command = "curl -fsS http://localhost:8000/health"
|
|
87
|
+
interval_sec = 5
|
|
88
|
+
timeout_sec = 30
|
|
89
|
+
start_period_sec = 0
|
|
90
|
+
start_interval_sec = 5
|
|
91
|
+
retries = 3
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
The agent starts after the check exits `0`. Exhausted retries fail the trial before the agent runs. The values above are the defaults; only `command` is required.
|
|
95
|
+
|
|
96
|
+
**Note:**
|
|
97
|
+
|
|
98
|
+
A separate verifier cannot reuse an agent image that starts a service. Give it its own verifier image, or use shared verification.
|
|
99
|
+
|
|
100
|
+
## Add MCP tools
|
|
101
|
+
|
|
102
|
+
Declare servers in `task.toml`. Evolve adds them to the harness's MCP configuration.
|
|
103
|
+
|
|
104
|
+
```toml Remote server
|
|
105
|
+
[[environment.mcp_servers]]
|
|
106
|
+
name = "docs-search"
|
|
107
|
+
transport = "streamable-http"
|
|
108
|
+
url = "https://tools.example.com/mcp"
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
```toml Local process
|
|
112
|
+
[[environment.mcp_servers]]
|
|
113
|
+
name = "sqlite"
|
|
114
|
+
transport = "stdio"
|
|
115
|
+
command = "mcp-server-sqlite"
|
|
116
|
+
args = ["--db-path", "/app/data.db"]
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
A remote URL must be reachable under the task's network policy. A local process must be installed in the image; downloading it with `npx` or `uvx` needs network access. `stdio` processes inherit the task environment variables and do not accept a separate `env` field.
|
|
120
|
+
|
|
121
|
+
## Supported scope
|
|
122
|
+
|
|
123
|
+
Evolve runs headless Linux tasks. It does not provide a desktop, display server, Windows environment, or Apptainer runtime.
|
|
124
|
+
|
|
125
|
+
**[Configure the task](/core-concepts/task-config)**
|
|
126
|
+
|
|
127
|
+
Set resources, timeouts, and network access.
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Task field reference"
|
|
3
|
+
description: "Accepted task.toml fields, defaults, and the restrictions Evolve enforces."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use [Task configuration](/core-concepts/task-config) for examples. This page lists the `task.toml` fields accepted by Evolve. Fields are optional unless marked **required**; unknown fields are rejected, except for custom `[metadata]` keys and the untyped descriptive values identified below.
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
evolve dataset check ./my-dataset
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
This validates configuration without building images. File layout, image contents, provider compatibility, and runtime checks also apply.
|
|
13
|
+
|
|
14
|
+
## Document fields
|
|
15
|
+
|
|
16
|
+
| Field | Accepted value and behavior |
|
|
17
|
+
| --- | --- |
|
|
18
|
+
| `schema_version` | String: `"1"`, `"1.0"`, `"1.1"`, `"1.2"`, `"1.3"`, `"1.4"`, or `"2.0"`. Omission is recorded as `"unspecified"`; that legacy value is also accepted. |
|
|
19
|
+
| `version` | Legacy spelling of `schema_version`. Do not declare both. This is not a dataset version. |
|
|
20
|
+
| `metadata`, `task` | Descriptive tables; see below. |
|
|
21
|
+
| `agent`, `environment`, `verifier` | Execution tables described below. |
|
|
22
|
+
| `solution` | Only `env` is accepted, and it must be an empty table. Solution environment variables are not supported. |
|
|
23
|
+
| `source` | Any TOML value. Accepted as provenance information; does not configure execution. |
|
|
24
|
+
| `artifacts` | Array of absolute paths or artifact tables; see **Artifacts and collection**. |
|
|
25
|
+
| `steps` | Nonempty array of step tables for [multi-step tasks](/core-concepts/multi-step). |
|
|
26
|
+
| `multi_step_reward_strategy` | `"mean"` (default) or `"final"`. Requires `steps`; rejected on single-step tasks. |
|
|
27
|
+
|
|
28
|
+
### Metadata and descriptive task fields
|
|
29
|
+
|
|
30
|
+
| Field | Accepted value and behavior |
|
|
31
|
+
| --- | --- |
|
|
32
|
+
| `metadata.task_id` | String matching the task directory name and the task-key grammar. Omit to use the directory name. |
|
|
33
|
+
| `metadata.base_commit_hash` | String recorded as the task's base commit; omitted means no recorded base commit. |
|
|
34
|
+
| `metadata.category` | String. `"computer-use"` is rejected. `"desktop"` without a Docker image, Dockerfile, or Compose environment is also rejected. |
|
|
35
|
+
| `metadata.tags` | Any TOML value; an array containing `"allow-agent-host"` is rejected. |
|
|
36
|
+
| Other `metadata.*` | Custom descriptive metadata is accepted. |
|
|
37
|
+
| `task.name` | Any TOML value. A nonempty string also identifies the task when matching a [dataset manifest](/core-concepts/datasets#dataset-toml-manifest). It does not replace the task directory key. |
|
|
38
|
+
| `task.version`, `task.description`, `task.authors` | Any TOML value; descriptive fields with no execution effect. |
|
|
39
|
+
| `task.keywords` | Any TOML value; an array containing `"allow-agent-host"` is rejected. |
|
|
40
|
+
|
|
41
|
+
The host-agent dependency implied by `allow-agent-host` is unsupported. Task keys are 1–128 characters, contain only letters, digits, `.`, `_`, and `-`, and must begin with a letter or digit.
|
|
42
|
+
|
|
43
|
+
## Agent
|
|
44
|
+
|
|
45
|
+
| Field | Accepted value and behavior |
|
|
46
|
+
| --- | --- |
|
|
47
|
+
| `agent.timeout_sec` | Number of seconds, rounded to the nearest integer; the result must be positive. Default: `3600`. Job timeout multipliers apply separately. |
|
|
48
|
+
| `agent.user` | Named POSIX account, or `"root"`, `"0"`, `0`, or an empty string for root. Omission uses the final Dockerfile `USER` when available; otherwise root. Non-root numeric UIDs and `user:group` forms are rejected. |
|
|
49
|
+
| `agent.network_mode` | `"public"`, `"allowlist"`, or `"no-network"`; overrides the environment baseline during the agent phase. |
|
|
50
|
+
| `agent.allowed_hosts` | Array of nonempty host strings, only with `agent.network_mode = "allowlist"`. An omitted list is empty. |
|
|
51
|
+
|
|
52
|
+
A named account must already exist, with a usable home directory and `su`. Only the agent runs as this user; the verifier runs as root. `agent.load_trajectory` and `agent.resume_trajectory` are rejected: use the supported task-level `trajectory.json` file described in [Task configuration](/core-concepts/task-config#start-from-a-saved-conversation).
|
|
53
|
+
|
|
54
|
+
## Environment
|
|
55
|
+
|
|
56
|
+
These fields belong under `[environment]`. They are also accepted under `[verifier.environment]`, with the different inheritance rules described in **Verifier**.
|
|
57
|
+
|
|
58
|
+
| Field | Accepted value and behavior |
|
|
59
|
+
| --- | --- |
|
|
60
|
+
| `docker_image` | Public image reference with an explicit non-`latest` tag or a digest. An untagged image is rejected. Omit to build the task's Dockerfile. |
|
|
61
|
+
| `cpus` | Number; default `2`. Import ceiling: `16`. |
|
|
62
|
+
| `memory_mb` | Number of MiB; default `8192`. Import ceiling: `32768`. |
|
|
63
|
+
| `storage_mb` | Number of MiB; default `10240`. Import ceiling: `524288`. |
|
|
64
|
+
| `memory`, `storage` | Legacy size strings such as `"8G"`, `"1024M"`, or `"1048576K"`. Converted to whole MiB; if the corresponding `_mb` field is also set, the values must agree. |
|
|
65
|
+
| `gpus` | Integer from `0` to `8`; default `0`. |
|
|
66
|
+
| `gpu_types` | Array of nonempty strings. Omitted or empty means any available type; has no effect when `gpus` is `0`. |
|
|
67
|
+
| `network_mode` | `"public"`, `"allowlist"`, or `"no-network"`. Default: `"public"`. |
|
|
68
|
+
| `allowed_hosts` | Array of nonempty host strings, only with `network_mode = "allowlist"` in the same table. Omitted means an empty list. |
|
|
69
|
+
| `allow_internet` | Legacy boolean: `true` means public, `false` means no network. An explicit `network_mode` takes precedence. |
|
|
70
|
+
| `workdir` | Absolute path. Resolution: declared path, then Dockerfile `WORKDIR`, then `/app`. A prebuilt image without a declared path uses `/app`. |
|
|
71
|
+
| `build_timeout_sec` | Any TOML value is accepted for compatibility, but **does not configure the build timeout**. |
|
|
72
|
+
|
|
73
|
+
Resource ceilings describe import validation, not availability on every provider. Use [Sandboxes](/core-concepts/sandboxes) and the provider catalog to choose supported CPU, memory, storage, GPU, and network settings.
|
|
74
|
+
|
|
75
|
+
### Fields specific to the agent environment
|
|
76
|
+
|
|
77
|
+
| Field | Accepted value and behavior |
|
|
78
|
+
| --- | --- |
|
|
79
|
+
| `environment.os` | Only `"linux"`. |
|
|
80
|
+
| `environment.env` | Table of environment variable names to strings. Names use letters, digits, and `_`, cannot start with a digit, and are at most 128 characters. |
|
|
81
|
+
| `environment.skills_dir` | Absolute path other than `/`, captured from the task's source files during import. See [Skills](/core-concepts/skills). |
|
|
82
|
+
| `environment.mcp_servers` | Array of MCP server tables below. Default: none. |
|
|
83
|
+
| `environment.healthcheck` | Healthcheck table below. Default: none. |
|
|
84
|
+
|
|
85
|
+
`environment.env` values are literals or whole-value references such as `"${TOKEN}"` and `"${TOKEN:-fallback}"`. References resolve against the secrets explicitly attached to the job under that environment name. They do not read the publisher's shell or unrequested vault secrets. Missing required attachments reject job creation; a declared fallback supplies the literal default.
|
|
86
|
+
|
|
87
|
+
Embedded references such as `"Bearer ${TOKEN}"` and reserved credential/routing variable names are rejected. The image's startup command receives literals; secret references are delivered to the agent and its child processes. Healthchecks do not receive secret references, and single-container healthchecks do not receive the literal table either. See [Secrets](/core-concepts/secrets).
|
|
88
|
+
|
|
89
|
+
A `skills_dir` that exists only inside an opaque prebuilt image cannot be captured. TPU fields (`tpu`, `tpu_type`, `tpu_topology`) and non-Linux operating systems are rejected.
|
|
90
|
+
|
|
91
|
+
### MCP server fields
|
|
92
|
+
|
|
93
|
+
Each `[[environment.mcp_servers]]` entry accepts:
|
|
94
|
+
|
|
95
|
+
| Field | Accepted value and behavior |
|
|
96
|
+
| --- | --- |
|
|
97
|
+
| `name` | **Required.** Unique name, 1–64 letters, digits, `.`, `_`, or `-`; first character must be a letter or digit. |
|
|
98
|
+
| `transport` | `"stdio"`, `"sse"` (default), or `"streamable-http"`. `"http"` is an alias for `"streamable-http"`. |
|
|
99
|
+
| `url` | Required for remote transports: nonempty HTTP(S) URL without username/password credentials in its authority. Forbidden for `stdio`. |
|
|
100
|
+
| `command` | Required nonempty command for `stdio`; forbidden for remote transports. |
|
|
101
|
+
| `args` | Array of strings; default `[]`. Used for `stdio` commands; accepted but unused for remote transports. |
|
|
102
|
+
|
|
103
|
+
Remote servers must be reachable under the task's agent network policy and service topology. Per-server `env` and `headers` fields are not accepted. See [Task environment](/core-concepts/task-environment) for setup examples.
|
|
104
|
+
|
|
105
|
+
### Healthcheck fields
|
|
106
|
+
|
|
107
|
+
Both `[environment.healthcheck]` and `[steps.healthcheck]` accept:
|
|
108
|
+
|
|
109
|
+
| Field | Accepted value and default |
|
|
110
|
+
| --- | --- |
|
|
111
|
+
| `command` | **Required.** Nonempty command string. |
|
|
112
|
+
| `interval_sec` | Positive finite number; default `5`. |
|
|
113
|
+
| `timeout_sec` | Positive finite number; default `30`. |
|
|
114
|
+
| `start_period_sec` | Nonnegative finite number; default `0`. |
|
|
115
|
+
| `start_interval_sec` | Positive finite number; default `5`. |
|
|
116
|
+
| `retries` | Integer of at least `1`; default `3`. |
|
|
117
|
+
|
|
118
|
+
The environment check runs before the agent. A step check runs after that step's workdir files and `setup.sh` are applied, before its agent call. These fields use seconds.
|
|
119
|
+
|
|
120
|
+
## Verifier
|
|
121
|
+
|
|
122
|
+
| Field | Accepted value and behavior |
|
|
123
|
+
| --- | --- |
|
|
124
|
+
| `verifier.timeout_sec` | Number of seconds, rounded to the nearest integer; the result must be positive. Default: `600`. |
|
|
125
|
+
| `verifier.environment_mode` | `"shared"` or `"separate"`. Omission selects separate when `verifier.environment` is declared, otherwise shared. |
|
|
126
|
+
| `verifier.env` | Table of environment variable names to strings. See template rules below. |
|
|
127
|
+
| `verifier.user` | Only `"root"` or numeric `0`; verifier commands always run as root. |
|
|
128
|
+
| `verifier.network_mode` | `"public"`, `"allowlist"`, or `"no-network"`. Shared mode must match the restored task environment baseline. |
|
|
129
|
+
| `verifier.allowed_hosts` | Array of nonempty host strings, only with `verifier.network_mode = "allowlist"`. |
|
|
130
|
+
| `verifier.collect` | Array of collection hook tables; see **Artifacts and collection**. |
|
|
131
|
+
| `verifier.environment` | Environment table used for a separate verifier; see below. |
|
|
132
|
+
|
|
133
|
+
### Verifier environment and variable rules
|
|
134
|
+
|
|
135
|
+
`[verifier.environment]` accepts the shared **Environment** fields above, plus `os = "linux"`, an empty `env` table, and an empty `mcp_servers` array. Nonempty environment variables or MCP servers are rejected here; put verifier variables under `[verifier.env]`. `skills_dir` and `healthcheck` are not accepted in the verifier environment.
|
|
136
|
+
|
|
137
|
+
With no verifier environment table, separate mode inherits the task environment configuration. With a declared table, omitted CPU, memory, and storage values inherit task sizing, but omitted GPUs mean `0`, the network baseline defaults to public, and workdir resolves from the verifier's own Dockerfile or `/app`. An explicit shared mode uses the existing agent box; it does not create or resize a verifier box.
|
|
138
|
+
|
|
139
|
+
Image selection and test delivery depend on the presence of `tests/Dockerfile` and whether the verifier uses its own image. Follow the [verifier environment rules](/core-concepts/task-verifiers); a dedicated prebuilt verifier image must already contain `/tests/test.sh`.
|
|
140
|
+
|
|
141
|
+
`verifier.env` accepts literals and whole-value judge credential references. A judge reference such as `"${ANTHROPIC_API_KEY}"` requests the managed judge credential; its fallback, if supplied, is ignored. Other references require a fallback, such as `"${JUDGE_MODEL:-my-model}"`, and resolve to that literal fallback. Embedded references and non-judge references without a fallback are rejected. Job-attached agent secrets do not satisfy verifier references. The same rules apply to `steps.verifier.env`.
|
|
142
|
+
|
|
143
|
+
Supported judge reference names are `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `ANTHROPIC_API_BASE`, `ANTHROPIC_BASE_URL`, `OPENAI_API_BASE`, and `OPENAI_BASE_URL`.
|
|
144
|
+
|
|
145
|
+
`verifier.allow_internet` is rejected; use `network_mode` or the legacy field inside an environment table.
|
|
146
|
+
|
|
147
|
+
## Artifacts and collection
|
|
148
|
+
|
|
149
|
+
`artifacts` and `steps.artifacts` accept absolute POSIX path strings or tables with the following fields. See [saving outputs](/core-concepts/task-config#save-outputs) and [Compose](/core-concepts/compose) for complete recipes.
|
|
150
|
+
|
|
151
|
+
Root artifact declarations transfer files to a separate verifier and export retained files in the job archive. Shared verification reads the existing sandbox and does not export this artifact list; use the [sandbox files](/core-concepts/trial-outputs#sandbox-files) to inspect live or captured files. Step artifact declarations do not create per-step snapshots.
|
|
152
|
+
|
|
153
|
+
| Field | Accepted value and behavior |
|
|
154
|
+
| --- | --- |
|
|
155
|
+
| `source` | **Required**, unless `path` is supplied. Nonempty absolute POSIX path without NUL bytes. |
|
|
156
|
+
| `path` | Alias for `source`; if both are declared, they must agree. |
|
|
157
|
+
| `destination` | Optional path relative to the downloaded trial's `artifacts/` directory. No absolute paths, backslashes, NUL bytes, `..` components, bare `.`, or reserved `manifest.json`. Empty means unspecified. |
|
|
158
|
+
| `exclude` | Array of nonempty glob strings, applied relative to the source. |
|
|
159
|
+
| `service` | Compose service name; defaults to `"main"`. Another service must exist in the task's Compose file. |
|
|
160
|
+
|
|
161
|
+
Without `destination`, downloaded paths mirror the source path with its leading `/` removed. Excludes match at any path-component boundary; `*` and `?` stay within a component, while `**` crosses `/`. Matching a directory excludes its descendants. Separate verification restores transferred files to their original absolute paths, independent of download destinations.
|
|
162
|
+
|
|
163
|
+
### Collection hook fields
|
|
164
|
+
|
|
165
|
+
Each `[[verifier.collect]]` entry accepts:
|
|
166
|
+
|
|
167
|
+
| Field | Accepted value and behavior |
|
|
168
|
+
| --- | --- |
|
|
169
|
+
| `command` | **Required.** Nonempty command string. |
|
|
170
|
+
| `service` | Declared Compose service name; default `"main"`. Single-container tasks support only `"main"`. |
|
|
171
|
+
| `timeout_sec` | Positive finite number of seconds; default `60`. |
|
|
172
|
+
| `user` | Nonempty string or nonnegative integer. Compose only; omitted uses the container's user. Any declared value is rejected on single-container tasks, whose hooks run as root. |
|
|
173
|
+
|
|
174
|
+
Main-service hooks run before main artifacts are downloaded. Sidecar hooks then run before sidecar artifacts are downloaded. Separate verification stops the main service before sidecar hooks; shared verification keeps it running. Per-step collection hooks are not supported.
|
|
175
|
+
|
|
176
|
+
## Multi-step fields
|
|
177
|
+
|
|
178
|
+
Every `[[steps]]` entry uses the same shared environment. See [Multi-step tasks](/core-concepts/multi-step) for the directory layout, setup order, and reward calculation.
|
|
179
|
+
|
|
180
|
+
| Field | Accepted value and behavior |
|
|
181
|
+
| --- | --- |
|
|
182
|
+
| `name` | **Required.** Unique step directory name, 1–128 letters, digits, `.`, `_`, or `-`; first character must be a letter or digit. |
|
|
183
|
+
| `agent.timeout_sec` | Positive finite seconds for this step; otherwise inherits the task agent timeout. |
|
|
184
|
+
| `verifier.timeout_sec` | Positive finite seconds for this step; otherwise inherits the task verifier timeout. |
|
|
185
|
+
| `verifier.env` | Environment variable table with the same template rules as the task verifier. Nonempty step literals replace task literals; otherwise task literals are inherited. Judge requests inherit separately. |
|
|
186
|
+
| `verifier.user` | Only `"root"` or numeric `0`. |
|
|
187
|
+
| `min_reward` | Number that gates the `reward` metric, or a nonempty table of metric names to numeric thresholds. Every declared threshold must pass to continue. Omission adds no threshold. |
|
|
188
|
+
| `artifacts` | Same grammar as root artifacts. Accepted and stored, but the runner does not take per-step artifact snapshots. Declare final outputs at the task root. |
|
|
189
|
+
| `healthcheck` | Same healthcheck table as above, run before this step's agent call. |
|
|
190
|
+
|
|
191
|
+
Steps cannot override the agent user or either phase's network policy. Per-step verifier `environment`, `environment_mode`, and `collect` are rejected. Multi-step tasks cannot use Compose or separate verification. Every declared step needs a matching `steps/<name>/instruction.md` and an effective `tests/test.sh` from the root/step test files; undeclared step directories are rejected.
|