@evolvingmachines/evolve 0.0.55-project-sable.20260916.db0bc0bb
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/LICENSE +201 -0
- package/README.md +25 -0
- package/dist/chunk-5GVMBEYI.js +11 -0
- package/dist/chunk-HQJI3HHU.js +1 -0
- package/dist/chunk-JS2UTK2I.js +427 -0
- package/dist/cli/index.cjs +73 -0
- package/dist/cli/index.d.cts +270 -0
- package/dist/cli/index.d.ts +270 -0
- package/dist/cli/index.js +54 -0
- package/dist/index.cjs +669 -0
- package/dist/index.d.cts +5023 -0
- package/dist/index.d.ts +5023 -0
- package/dist/index.js +230 -0
- package/dist/managed-modal-IJW62SSK.js +4 -0
- package/dist/resumable-HFSICSH3.js +1 -0
- package/dist/tar-GVC4KE52.js +1 -0
- package/dist/types-DlpTxdR_.d.cts +4777 -0
- package/dist/types-DlpTxdR_.d.ts +4777 -0
- package/dist/upload-KPYDMWFJ.js +1 -0
- package/docs-agents/SKILL.md +138 -0
- package/docs-agents/index.md +81 -0
- package/docs-agents/python/01-getting-started.md +511 -0
- package/docs-agents/python/02-configuration.md +855 -0
- package/docs-agents/python/03-runtime.md +899 -0
- package/docs-agents/python/04-streaming.md +451 -0
- package/docs-agents/python/05-swarm-pipeline.md +953 -0
- package/docs-agents/python/index.md +122 -0
- package/docs-agents/typescript/01-getting-started.md +494 -0
- package/docs-agents/typescript/02-configuration.md +841 -0
- package/docs-agents/typescript/03-runtime.md +864 -0
- package/docs-agents/typescript/04-streaming.md +478 -0
- package/docs-agents/typescript/05-swarm-pipeline.md +957 -0
- package/docs-agents/typescript/index.md +121 -0
- package/docs-evals/SKILL.md +112 -0
- package/docs-evals/cli-reference/agent.mdx +67 -0
- package/docs-evals/cli-reference/analysis.mdx +91 -0
- package/docs-evals/cli-reference/analyze.mdx +74 -0
- package/docs-evals/cli-reference/auth.mdx +60 -0
- package/docs-evals/cli-reference/check.mdx +146 -0
- package/docs-evals/cli-reference/dataset.mdx +133 -0
- package/docs-evals/cli-reference/index.mdx +108 -0
- package/docs-evals/cli-reference/job.mdx +239 -0
- package/docs-evals/cli-reference/run.mdx +196 -0
- package/docs-evals/cli-reference/secrets.mdx +95 -0
- package/docs-evals/cli-reference/skill.mdx +51 -0
- package/docs-evals/cli-reference/skills.mdx +81 -0
- package/docs-evals/cli-reference/trial.mdx +112 -0
- package/docs-evals/cli-reference/upload.mdx +36 -0
- package/docs-evals/core-concepts/agents.mdx +106 -0
- package/docs-evals/core-concepts/analyze.mdx +86 -0
- package/docs-evals/core-concepts/check.mdx +51 -0
- package/docs-evals/core-concepts/datasets.mdx +138 -0
- package/docs-evals/core-concepts/index.mdx +42 -0
- package/docs-evals/core-concepts/jobs.mdx +136 -0
- package/docs-evals/core-concepts/models.mdx +68 -0
- package/docs-evals/core-concepts/sandboxes.mdx +52 -0
- package/docs-evals/core-concepts/secrets.mdx +41 -0
- package/docs-evals/core-concepts/skills.mdx +42 -0
- package/docs-evals/core-concepts/tasks.mdx +216 -0
- package/docs-evals/core-concepts/trial-outputs.mdx +103 -0
- package/docs-evals/core-concepts/trials.mdx +103 -0
- package/docs-evals/core-concepts/upload.mdx +45 -0
- package/docs-evals/dashboard/checks.mdx +15 -0
- package/docs-evals/dashboard/datasets.mdx +24 -0
- package/docs-evals/dashboard/jobs.mdx +65 -0
- package/docs-evals/dashboard/traces.mdx +15 -0
- package/docs-evals/dashboard/trial-viewer.mdx +30 -0
- package/docs-evals/docs.json +180 -0
- package/docs-evals/getting-started/installation.mdx +56 -0
- package/docs-evals/getting-started/quick-start.mdx +85 -0
- package/docs-evals/index.mdx +36 -0
- package/docs-evals/sdk/python.mdx +139 -0
- package/docs-evals/sdk/typescript.mdx +141 -0
- package/docs-evals/sdk-reference/agents.mdx +105 -0
- package/docs-evals/sdk-reference/analyses.mdx +125 -0
- package/docs-evals/sdk-reference/auth.mdx +76 -0
- package/docs-evals/sdk-reference/checks.mdx +166 -0
- package/docs-evals/sdk-reference/datasets.mdx +305 -0
- package/docs-evals/sdk-reference/errors.mdx +199 -0
- package/docs-evals/sdk-reference/index.mdx +58 -0
- package/docs-evals/sdk-reference/jobs.mdx +731 -0
- package/docs-evals/sdk-reference/meta.mdx +52 -0
- package/docs-evals/sdk-reference/skills.mdx +68 -0
- package/docs-evals/sdk-reference/trials.mdx +232 -0
- package/docs-evals/sdk-reference/types.mdx +272 -0
- package/docs-evals/snippets/global-options.mdx +13 -0
- package/docs-evals/snippets/list-flags.mdx +23 -0
- package/harness-capabilities.json +430 -0
- package/hosted-error-codes.json +120 -0
- package/package.json +163 -0
- package/skills/create-adapter/SKILL.md +287 -0
- package/skills/create-task/SKILL.md +491 -0
- package/skills/evolve/SKILL.md +39 -0
- package/skills/publish/SKILL.md +142 -0
- package/skills/rewardkit/SKILL.md +330 -0
- package/spec/atif/README.md +45 -0
- package/spec/atif/trajectory.schema.json +865 -0
- package/spec/openapi.yaml +13447 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "evolve secrets"
|
|
3
|
+
description: "Store and manage env secrets. Values are write-only; reads return metadata."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import GlobalOptions from '/snippets/global-options.mdx';
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
evolve secrets <command> [options]
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
`secrets` is the one plural noun; `secret` is a hidden alias. It is the same vault the dashboard's Secrets page writes, reached with your API key.
|
|
13
|
+
|
|
14
|
+
The same three operations exist on the SDK's `Evolve.managedSecrets()`.
|
|
15
|
+
|
|
16
|
+
A read-only API key may `list` but not `set` or `delete` (`read_only_key`). LLM provider keys cannot be stored here; they decide who pays and stay on the dashboard.
|
|
17
|
+
|
|
18
|
+
## secrets set
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
evolve secrets set <NAME> [options]
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Store an env secret, or re-shape its delivery or scoping by restating the same value. A different value under an existing name and label is refused (`secret_exists`, 409): delete first, or use another label. Never a silent overwrite. `NAME` matches `[A-Z_][A-Z0-9_]{0,127}`, uppercased for you; the `EVOLVE_` prefix is reserved.
|
|
25
|
+
|
|
26
|
+
<ParamField path="--value" type="value">
|
|
27
|
+
The secret value, at most 190 bytes of UTF-8. Omit it to pipe the value on stdin, which keeps it out of shell history; one trailing newline is stripped from the pipe. A terminal with neither channel is a usage error, never a hang.
|
|
28
|
+
</ParamField>
|
|
29
|
+
|
|
30
|
+
<ParamField path="--label" type="label" default="default">
|
|
31
|
+
Labeled-row identity, at most 80 characters of `[A-Za-z0-9._-]`. Several values of one name live side by side.
|
|
32
|
+
</ParamField>
|
|
33
|
+
|
|
34
|
+
<ParamField path="--delivery" type="mode" required>
|
|
35
|
+
`brokered`: the value never enters a sandbox, and needs the `--allowed-*` scoping. `direct`: the raw value in the sandbox env; scoping refused.
|
|
36
|
+
</ParamField>
|
|
37
|
+
|
|
38
|
+
<ParamField path="--allowed-host" type="host">
|
|
39
|
+
Brokered scoping: a hostname, or a wildcard like `*.example.com`. Repeatable.
|
|
40
|
+
</ParamField>
|
|
41
|
+
|
|
42
|
+
<ParamField path="--allowed-path-prefix" type="/prefix">
|
|
43
|
+
Brokered scoping: an allowed URL path prefix. Repeatable.
|
|
44
|
+
</ParamField>
|
|
45
|
+
|
|
46
|
+
<ParamField path="--allowed-method" type="METHOD">
|
|
47
|
+
Brokered scoping: an allowed HTTP method. Repeatable.
|
|
48
|
+
</ParamField>
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
printf %s "$GITHUB_TOKEN" | evolve secrets set GITHUB_TOKEN --delivery brokered \
|
|
52
|
+
--allowed-host api.github.com --allowed-path-prefix / --allowed-method GET
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## secrets list
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
evolve secrets list [options]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
List your env secrets. Metadata only; values never leave the server.
|
|
62
|
+
|
|
63
|
+
<ParamField path="--columns" type="keys | all | help">
|
|
64
|
+
Choose and order columns, comma-separated. `help` lists the keys.
|
|
65
|
+
</ParamField>
|
|
66
|
+
|
|
67
|
+
<ParamField path="-q, --quiet">
|
|
68
|
+
Print only `name[:label]`, one per line.
|
|
69
|
+
</ParamField>
|
|
70
|
+
|
|
71
|
+
<ParamField path="--no-trunc">
|
|
72
|
+
Full cell content instead of one-line truncation.
|
|
73
|
+
</ParamField>
|
|
74
|
+
|
|
75
|
+
<ParamField path="--no-headers">
|
|
76
|
+
Omit the header row in piped (TSV) output.
|
|
77
|
+
</ParamField>
|
|
78
|
+
|
|
79
|
+
## secrets delete
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
evolve secrets delete <NAME> [options]
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Delete an env secret by name. Revokes every runtime grant riding the row. Rotate a value by `delete` then `set`, or store the new value under another label.
|
|
86
|
+
|
|
87
|
+
<ParamField path="--label" type="label">
|
|
88
|
+
The labeled row to delete. Omitted, it resolves as an attachment does: the `default` row, else the only row, else refused with `secret_ambiguous` naming every label.
|
|
89
|
+
</ParamField>
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
evolve secrets delete GITHUB_TOKEN --label staging
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
<GlobalOptions />
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "evolve skill"
|
|
3
|
+
description: "Upload and manage platform-stored skills."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import GlobalOptions from '/snippets/global-options.mdx';
|
|
7
|
+
import ListFlags from '/snippets/list-flags.mdx';
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
evolve skill <command> [options]
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## skill list
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
evolve skill list [options]
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
List your uploaded skills, newest first.
|
|
20
|
+
|
|
21
|
+
<ListFlags />
|
|
22
|
+
|
|
23
|
+
## skill upload
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
evolve skill upload <dir>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Upload a skill folder. Its name becomes your moving name pointer.
|
|
30
|
+
|
|
31
|
+
## skill show
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
evolve skill show <id | name:<skill-name>>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Show one uploaded skill: its metadata and its `SKILL.md`.
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
evolve skill show name:my-skill
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## skill delete
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
evolve skill delete <id>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Delete an uploaded skill record. Past jobs keep their locks. Refused (`skill_in_use`, 409) while a running job references it.
|
|
50
|
+
|
|
51
|
+
<GlobalOptions />
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "evolve skills"
|
|
3
|
+
description: "The skills the CLI serves to coding agents."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import GlobalOptions from '/snippets/global-options.mdx';
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
evolve skills <command> [options]
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
The skills ship with the CLI and match its version. `skills get evals` is the index of these docs and `skills get evals <page>` one page of them. The `evolve` pointer skill that `skills install` writes is served but never listed. `EVOLVE_SKILLS_DIR` names another checkout or package root to serve.
|
|
13
|
+
|
|
14
|
+
## skills list
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
evolve skills list
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
List the skills the installed version serves, one line each. Bare `evolve skills` does the same.
|
|
21
|
+
|
|
22
|
+
## skills get
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
evolve skills get <name> [name...]
|
|
26
|
+
evolve skills get <name> <page>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Print one or more skills, or one page. A second word that is not a skill name is a page of the first skill: this site's own path without the suffix (`core-concepts/tasks`), or a file under `references/` for a task-authoring skill.
|
|
30
|
+
|
|
31
|
+
<ParamField path="--full">
|
|
32
|
+
Also print every page of the skill (a docs folder's pages, or `references/` and `templates/`), each behind a `--- <path> ---` line.
|
|
33
|
+
</ParamField>
|
|
34
|
+
|
|
35
|
+
<ParamField path="--all">
|
|
36
|
+
Every skill, instead of naming them.
|
|
37
|
+
</ParamField>
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
evolve skills get evals
|
|
41
|
+
evolve skills get evals core-concepts/tasks
|
|
42
|
+
evolve skills get create-task --full
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## skills path
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
evolve skills path [name]
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Print the root the skills are served from, or one skill's folder.
|
|
52
|
+
|
|
53
|
+
## skills install
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
evolve skills install [options]
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Install the `evolve` pointer skill for your agents. Each target gets `<folder>/evolve/SKILL.md`; the path written is printed. A file already there with different content is left alone unless `--force`.
|
|
60
|
+
|
|
61
|
+
<ParamField path="--target" type="claude | codex | cursor | copilot | gemini | opencode | agents | all">
|
|
62
|
+
Which agent home: `~/.claude`, `~/.codex`, `~/.cursor`, `~/.copilot`, `~/.gemini`, `~/.config/opencode` or `~/.agents`, each under `skills/`. Defaults to `all`.
|
|
63
|
+
</ParamField>
|
|
64
|
+
|
|
65
|
+
<ParamField path="--path" type="dir">
|
|
66
|
+
A skills directory of your own instead of `--target`.
|
|
67
|
+
</ParamField>
|
|
68
|
+
|
|
69
|
+
<ParamField path="--force">
|
|
70
|
+
Overwrite an installed `SKILL.md` whose content differs.
|
|
71
|
+
</ParamField>
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
evolve skills install
|
|
75
|
+
evolve skills install --target claude
|
|
76
|
+
evolve skills install --path ./skills
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
With the [skills CLI](https://github.com/vercel-labs/skills) instead, the same pointer installs from the repository: `npx skills add evolving-machines-lab/evolve`.
|
|
80
|
+
|
|
81
|
+
<GlobalOptions />
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "evolve trial"
|
|
3
|
+
description: "Inspect, download, and act on single trials."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import GlobalOptions from '/snippets/global-options.mdx';
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
evolve trial <command> [options]
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Every command below takes the [global options](/cli-reference#global-options).
|
|
13
|
+
|
|
14
|
+
## trial show
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
evolve trial show <trial-id>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Show one trial in full detail: its status, reward, `tokens`, `spent` and `spent (judge)` rows, `gpu compute (est.)` on a GPU trial, the exception when it failed, and its latest analysis with the verdicts, the summary and the typed failure. An uploaded trial prints its provider as `ported` and its reported figures apart from the metered ones.
|
|
21
|
+
|
|
22
|
+
There is no `trial files` or `trial read` verb; listing and reading a trial's stored files is SDK-only, `trials().files()` and `file()`.
|
|
23
|
+
|
|
24
|
+
## trial trace
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
evolve trial trace <trial-id> [options]
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Print a trial's parsed trace, filtered server-side.
|
|
31
|
+
|
|
32
|
+
<ParamField path="--type" type="event-type">
|
|
33
|
+
Only events of exactly this type. At most 100 characters.
|
|
34
|
+
</ParamField>
|
|
35
|
+
|
|
36
|
+
<ParamField path="--grep" type="pattern">
|
|
37
|
+
Only events matching this case-insensitive regex over type and content. A plain string is a plain substring. At most 512 characters; an invalid pattern is refused by the server with `invalid_input`.
|
|
38
|
+
</ParamField>
|
|
39
|
+
|
|
40
|
+
<ParamField path="--tail" type="n">
|
|
41
|
+
Only the last N matching events, 1 to 10000, then paged oldest first.
|
|
42
|
+
</ParamField>
|
|
43
|
+
|
|
44
|
+
<ParamField path="--cursor" type="seq">
|
|
45
|
+
Resume after this sequence number. The filters compose with it.
|
|
46
|
+
</ParamField>
|
|
47
|
+
|
|
48
|
+
<ParamField path="-l, --limit" type="n" default="200">
|
|
49
|
+
Events per page fetch, not a total: the command drains the filtered trace. Max 1000.
|
|
50
|
+
</ParamField>
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
evolve trial trace d1a10c4e-… --grep 'permission denied' --tail 50
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## trial download
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
evolve trial download <trial-id> [options]
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Save a trial as its trial tree plus `evolve.json`, or stream one artifact to stdout. The two modes are exclusive.
|
|
63
|
+
|
|
64
|
+
<ParamField path="-o, --output-dir" type="dir" default="trials/">
|
|
65
|
+
Directory to save under. Files land in `<dir>/<trial-id>/`.
|
|
66
|
+
</ParamField>
|
|
67
|
+
|
|
68
|
+
<ParamField path="--overwrite">
|
|
69
|
+
Replace an existing `<dir>/<trial-id>/`.
|
|
70
|
+
</ParamField>
|
|
71
|
+
|
|
72
|
+
<ParamField path="--stream" type="artifact">
|
|
73
|
+
Print one artifact to stdout instead of saving: `trace-parsed`, `verifier`, `trace-stdout`, `trace-stderr`, `trace-atif` (the ATIF trajectory), `trajectory` (reserved: the harness-native session file) or `agent-home`.
|
|
74
|
+
</ParamField>
|
|
75
|
+
|
|
76
|
+
<ParamField path="--cursor" type="seq">
|
|
77
|
+
With `--stream trace-parsed`: resume after this sequence number.
|
|
78
|
+
</ParamField>
|
|
79
|
+
|
|
80
|
+
<ParamField path="--limit" type="n">
|
|
81
|
+
With `--stream trace-parsed`: max events per page.
|
|
82
|
+
</ParamField>
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
evolve trial download d1a10c4e-… --stream trace-stdout
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## trial retry
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
evolve trial retry <trial-id>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Run one settled trial again. The result is a job.
|
|
95
|
+
|
|
96
|
+
## trial regrade
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
evolve trial regrade <trial-id>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Verifier-only re-run of one trial. The result is a job.
|
|
103
|
+
|
|
104
|
+
## trial stop
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
evolve trial stop <trial-id> [trial-id...]
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Stop in-flight trials without cancelling their job.
|
|
111
|
+
|
|
112
|
+
<GlobalOptions />
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "evolve upload"
|
|
3
|
+
description: "Upload a job directory as a finished job."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import GlobalOptions from '/snippets/global-options.mdx';
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
evolve upload <job_dir> [options]
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Upload a job directory in the Harbor job layout, its `.tar.gz`, or a public URL of one, as a terminal job. The command follows the import to the job, prints the record with the task linkage (`linked N of M trials to <dataset>` and the not-linked tasks with their reasons), names any skipped trials, and ends with the analyze hint.
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
evolve upload ./job-2026-08-27__12-00-00 -d terminal-bench-4@4.0
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Options
|
|
19
|
+
|
|
20
|
+
<ParamField path="-d, --dataset" type="name[@version]">
|
|
21
|
+
Link the uploaded trials to a published dataset version by task name. Without it the trials link by their task hash on their own; this is the override, and the way to settle an ambiguous hash. See [upload](/core-concepts/upload#task-linkage).
|
|
22
|
+
</ParamField>
|
|
23
|
+
|
|
24
|
+
<ParamField path="--from" type="url">
|
|
25
|
+
A public https URL of the job archive (`.tar.gz`) that the server fetches itself, instead of `<job_dir>`. No local bytes.
|
|
26
|
+
</ParamField>
|
|
27
|
+
|
|
28
|
+
<ParamField path="--no-wait">
|
|
29
|
+
Return after the import is accepted, with the import id, instead of following it to the job. Re-attach with `evolve job import <id> --watch`.
|
|
30
|
+
</ParamField>
|
|
31
|
+
|
|
32
|
+
<GlobalOptions />
|
|
33
|
+
|
|
34
|
+
## Following an import
|
|
35
|
+
|
|
36
|
+
`evolve job imports` lists your uploads, and `evolve job import <import-id> --watch` follows one. See the [`job`](/cli-reference/job) group.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Agents"
|
|
3
|
+
description: "The built-in harnesses, how to configure an arm, and how to register your own agent."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
An agent is a harness plus a model. `-a` names the harness, `-m` the model it drives. Seven harnesses are built in.
|
|
7
|
+
|
|
8
|
+
| Name on `-a` | Harness |
|
|
9
|
+
| --- | --- |
|
|
10
|
+
| `claude` | Claude Code |
|
|
11
|
+
| `codex` | Codex |
|
|
12
|
+
| `gemini` | Gemini CLI |
|
|
13
|
+
| `qwen` | Qwen Code |
|
|
14
|
+
| `kimi` | Kimi Code |
|
|
15
|
+
| `opencode` | OpenCode |
|
|
16
|
+
| `droid` | Droid |
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
evolve run \
|
|
20
|
+
-d terminal-bench-4@4.0 \
|
|
21
|
+
-a claude \
|
|
22
|
+
-m fable \
|
|
23
|
+
-l 5 \
|
|
24
|
+
--watch
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
`-a <name[@version]>` can pin a harness version. Omitted, the latest is chosen once, when the job is created, so every trial installs the same version; it is recorded on every trial as `agent_info.version`. A pin that does not exist is refused with `agent_version_not_found`, and a pin on a registered agent is refused.
|
|
28
|
+
|
|
29
|
+
## Configure the arm
|
|
30
|
+
|
|
31
|
+
These flags apply to every arm of the job.
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
evolve run \
|
|
35
|
+
-d terminal-bench-4@4.0 \
|
|
36
|
+
-a codex \
|
|
37
|
+
-m gpt-5.5 \
|
|
38
|
+
-l 5 \
|
|
39
|
+
--effort high \
|
|
40
|
+
--preset no-internet \
|
|
41
|
+
--ak config=./codex-settings.json
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
`--effort <value>` sets the reasoning effort; see [models](/core-concepts/models#reasoning-effort). `--preset <name>` applies a named settings bundle: `no-internet` turns the vendor's server-side web tools off, `pinned-context` fixes the context window at 200000 tokens. `--ak config=<path|inline JSON>` becomes the harness's native settings file inside the sandbox; your document is the base, the platform's routing sits on top, and a preset wins where they disagree.
|
|
45
|
+
|
|
46
|
+
Only `claude` and `codex` take a config or a preset; the [capability document](/sdk-reference/meta) publishes `supports_config` and `presets` per harness. An effort, preset or config a harness cannot honor is refused when the job is created, never silently skipped, and so is a config key that touches billing, base URLs, routing or environment.
|
|
47
|
+
|
|
48
|
+
Environment for the agent comes from two places, a task's own `[environment.env]` table and a secret attached with `--secret`; a job cannot add a third, and the server refuses `agent_env` (the `--ae` flag). See [secrets](/core-concepts/secrets) and [tasks](/core-concepts/tasks#environment-variables).
|
|
49
|
+
|
|
50
|
+
## Register your own agent
|
|
51
|
+
|
|
52
|
+
Any CLI can run as an agent. Register it once, and its name works on `-a` like a built-in.
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
evolve agent add acme-cli --install-script ./install.sh --run "acme-cli --headless"
|
|
56
|
+
evolve run \
|
|
57
|
+
-d terminal-bench-4@4.0 \
|
|
58
|
+
-a acme-cli \
|
|
59
|
+
-m gpt-5.5 \
|
|
60
|
+
-l 5 \
|
|
61
|
+
--watch
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
`--install-script <path>` names a file; its contents are uploaded. `--dir <path>` uploads a local directory instead. `--run <command>` is required and runs with `sh -c`. `--ae KEY=VALUE` injects environment at run time and may repeat.
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
evolve agent list
|
|
68
|
+
evolve agent show acme-cli
|
|
69
|
+
evolve agent remove acme-cli
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Removing an agent keeps the record of the past jobs that ran it. Registered agents are private, so another account's name reads as `agent_not_found`. The number you may hold is published as `agent_registration.max_per_user`; past it, `agent_limit_reached`.
|
|
73
|
+
|
|
74
|
+
The install script, or the uploaded directory, runs once with internet and no secrets: fetch only public sources and leave the executables in `$PREFIX/bin`. To change an agent without a gap, use `upsert` rather than remove and add.
|
|
75
|
+
|
|
76
|
+
### The run contract
|
|
77
|
+
|
|
78
|
+
Your `run_command` runs with `sh -c` at the task's working directory, and can rely on exactly this:
|
|
79
|
+
|
|
80
|
+
- The instruction arrives twice: on stdin, and at the path in `$EVOLVE_INSTRUCTION_FILE`.
|
|
81
|
+
- `$EVOLVE_GATEWAY_BASE_URL` is an OpenAI-compatible base URL that already ends in `/v1`, and `$EVOLVE_GATEWAY_API_KEY` is its credential. The same two values are also `$OPENAI_BASE_URL` and `$OPENAI_API_KEY`, so a CLI that reads its endpoint from the environment works unchanged.
|
|
82
|
+
- `$EVOLVE_MODEL` is the `model_name` of the arm.
|
|
83
|
+
- Your declared env may not override those six keys, and may not look like a credential; both are refused at registration with `agent_invalid_env`.
|
|
84
|
+
|
|
85
|
+
A CLI that routes through a config file must write that file inside `run_command`, from the contract values. `codex` is the worked example:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
mkdir -p ~/.codex && cat > ~/.codex/config.toml <<EOF
|
|
89
|
+
model_provider = "evolve"
|
|
90
|
+
[model_providers.evolve]
|
|
91
|
+
name = "evolve"
|
|
92
|
+
base_url = "$EVOLVE_GATEWAY_BASE_URL"
|
|
93
|
+
env_key = "EVOLVE_GATEWAY_API_KEY"
|
|
94
|
+
wire_api = "responses"
|
|
95
|
+
EOF
|
|
96
|
+
codex login --with-api-key <<< "$EVOLVE_GATEWAY_API_KEY"
|
|
97
|
+
codex exec --skip-git-repo-check -
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
A CLI that ignores `OPENAI_BASE_URL` without this reaches for its vendor's endpoint, finds the box sealed, and spends the agent budget failing to connect. The spend cap is airtight only under `no-network`; see [models](/core-concepts/models).
|
|
101
|
+
|
|
102
|
+
Against a built-in, a registered agent has no live trace (there is no parser for an unknown CLI) and no `reasoning_effort` (put the flag in `run_command`); everything else is recorded the same way.
|
|
103
|
+
|
|
104
|
+
<Card title="agent reference" icon="terminal" href="/cli-reference/agent">
|
|
105
|
+
Every flag of `evolve agent`.
|
|
106
|
+
</Card>
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Analyze"
|
|
3
|
+
description: "Judge every trial's trace against a rubric, on the platform."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
An analysis reads a settled trial's whole record, the trace and the task, and rules on every criterion of a rubric. It runs on the platform, one analyzer run per trial. Ask for it on a finished job:
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
evolve analyze <job-id> --watch
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Or arm it when you start the job, so each trial is analyzed the moment it settles:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
evolve run \
|
|
16
|
+
-d terminal-bench-4@4.0 \
|
|
17
|
+
-a codex \
|
|
18
|
+
-m gpt-5.5 \
|
|
19
|
+
--analyze \
|
|
20
|
+
-l 5 \
|
|
21
|
+
--watch
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Rubrics and prompts
|
|
25
|
+
|
|
26
|
+
The default rubric has seven criteria, `score_is_earned` first. Bring your own as TOML, YAML or JSON in the shape below and, if you want, your own prompt for the analyzer.
|
|
27
|
+
|
|
28
|
+
```toml rubric.toml
|
|
29
|
+
[[criteria]]
|
|
30
|
+
name = "score_is_earned"
|
|
31
|
+
description = "The reward reflects work the agent actually did."
|
|
32
|
+
guidance = "Read the verifier log and the trajectory side by side."
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
evolve analyze <job-id> \
|
|
37
|
+
-r rubric.toml \
|
|
38
|
+
-p prompt.txt \
|
|
39
|
+
--failing \
|
|
40
|
+
-l 20 \
|
|
41
|
+
-n 2 \
|
|
42
|
+
--watch
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`-r` is the rubric file, `-p` the prompt file. `--passing` and `--failing` restrict the batch of analyses to trials with reward 1.0, or below it; both together is refused. `-l` caps the number of trials, `-n` how many analyses run at once, beneath the organization's `max_concurrent_analyses` (fleet default 60). `-m` picks the analyzer's model, `--effort` its reasoning effort, `-e` its sandbox provider.
|
|
46
|
+
|
|
47
|
+
A result that misses or invents a criterion is a failed analysis, never a partial pass. A rubric with unknown keys, empty or duplicate criteria, or a length bound exceeded is refused with `invalid_rubric`; an off-roster model or an unknown effort or provider with `invalid_input`; a job with no analyzable trial, or a `--passing` or `--failing` filter that selects none, with `no_analyzable_trials`; a job still running with `job_not_terminal`.
|
|
48
|
+
|
|
49
|
+
On `evolve run` the same knobs are `--analyze-model`, `--analyze-rubric`, `--analyze-prompt`, `--analyze-effort` and `--analyze-provider`. Each of them implies `--analyze`.
|
|
50
|
+
|
|
51
|
+
Running `evolve analyze` again on the same job, with another rubric or model, is the re-analysis path: one wave at a time (`analysis_already_running` meanwhile), and each trial then serves its newest analysis while earlier ones stay under their own ids. Cancelled trials are never analyzed.
|
|
52
|
+
|
|
53
|
+
## The result
|
|
54
|
+
|
|
55
|
+
Each analysis produces a short summary of what happened in the trial, and one entry per criterion:
|
|
56
|
+
|
|
57
|
+
- `outcome`: `pass`, `fail`, `not_applicable` or `unknown`
|
|
58
|
+
- `explanation`: the analyzer's reasoning, in plain words
|
|
59
|
+
- `evidence`: what in the trial record supports it
|
|
60
|
+
|
|
61
|
+
Under the default rubric, the platform derives one label from the outcomes:
|
|
62
|
+
|
|
63
|
+
- `flagged`: a fail on `score_is_earned`, `score_is_correct`, `task_was_fair` or `report_is_truthful`
|
|
64
|
+
- `env_fault`: otherwise, a fail on `environment_worked`
|
|
65
|
+
- `unclear`: otherwise, an unknown on any of those five, or `not_applicable` on `score_is_earned` or `score_is_correct`
|
|
66
|
+
- `clean`: everything else
|
|
67
|
+
|
|
68
|
+
A custom rubric carries its per-criterion outcomes and no label.
|
|
69
|
+
|
|
70
|
+
The analyzer's spend is shown apart from the trial's: `estimated_cost_usd` on the analysis, `stats.analysis.cost_usd` on the job. A failed analysis carries `failure` with a `phase` and a `message`; a run that produces no valid result is retried once.
|
|
71
|
+
|
|
72
|
+
## Read it back
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
evolve analysis list --job <job-id> --status failed
|
|
76
|
+
evolve analysis show <analysis-id>
|
|
77
|
+
evolve analysis trace <analysis-id>
|
|
78
|
+
evolve analysis download <analysis-id> -o analyses/
|
|
79
|
+
evolve analysis download <analysis-id> --stream analysis
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
`analysis show` prints the verdict document. Every analysis verb also accepts a trial id, which names that trial's latest analysis. `analysis trace` prints the analyzer's own transcript. `analysis download` saves the run as a trial folder, or streams one artifact: `analysis`, `trace-parsed`, `trace-stdout`, `trace-stderr` or `agent-home`.
|
|
83
|
+
|
|
84
|
+
<Card title="analyze reference" icon="terminal" href="/cli-reference/analyze">
|
|
85
|
+
Every flag of `evolve analyze` and `evolve analysis`.
|
|
86
|
+
</Card>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Check"
|
|
3
|
+
description: "Check the quality of tasks against a rubric before you spend a job on them."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
A check reads a task and, when it can, runs its environment, its reference solution and its verifier, then rules on every criterion of a rubric. Point it at a task directory, or at a directory of tasks:
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
evolve check ./tasks \
|
|
10
|
+
-i 'abs-*' \
|
|
11
|
+
-l 5 \
|
|
12
|
+
--watch
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Or at a published dataset version. Nothing is uploaded; the checker reads the retained task package.
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
evolve check -d my-swe@1.0 --watch
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
When the path is a task directory, that task is checked; otherwise every top-level directory that is one, in sorted order. `-i` and `-x` are globs over task names and `-l` caps the count, in that order; a selection that leaves nothing is refused with `no_checkable_tasks`. There is no task-count ceiling.
|
|
22
|
+
|
|
23
|
+
`-r` is a rubric file, `-p` a prompt file. `-m` and `--effort` set the checker's model and effort, `-e` its sandbox provider, `-n` how many checks run at once, beneath the organization's `max_concurrent_analyses`.
|
|
24
|
+
|
|
25
|
+
The default rubric has eleven criteria: `instruction_is_sufficient`, `tests_match_the_instruction`, `verifier_is_correct`, `no_answer_leakage`, `grader_is_out_of_reach`, `reference_solution_is_valid`, `verifier_rejects_non_solutions`, `environment_builds_and_runs`, `verification_is_stable`, `limits_allow_the_task` and `task_is_solvable`. The checker's default model is the analyzer's; a custom rubric, model, prompt and effort follow the same rules and refusals as [analyze](/core-concepts/analyze).
|
|
26
|
+
|
|
27
|
+
## The result
|
|
28
|
+
|
|
29
|
+
Each task gets one entry per criterion, with an `outcome` (`pass`, `fail`, `not_applicable` or `unknown`), an `explanation` and `evidence`. Under the default rubric, one label is derived:
|
|
30
|
+
|
|
31
|
+
- `has_a_problem`: a fail on any criterion
|
|
32
|
+
- `unclear`: otherwise, an unknown on any of the six file-based criteria
|
|
33
|
+
- `no_problem_found`: everything else
|
|
34
|
+
|
|
35
|
+
`executed` says whether the checker actually ran the task's environment, so a reading-only `no_problem_found` is never mistaken for a run. A check never fails as a whole: refusals happen at accept, and a task's failure is on that task. A check is readable by its creator and by every member of the organization; anyone else reads `check_not_found`.
|
|
36
|
+
|
|
37
|
+
## Read it back
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
evolve check list --status running
|
|
41
|
+
evolve check show <check-id>
|
|
42
|
+
evolve check trace <task-check-id> --since 200
|
|
43
|
+
evolve check download <check-id> -o checks/
|
|
44
|
+
evolve check download <task-check-id> --stream task-check
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
`check show` prints the check with one result per task. `check trace` prints the checker's transcript for one task check. `check download` saves the whole check as a check folder by its check id, one task's folder by its task check id, or streams one artifact of a task check: `task-check`, `trace-parsed`, `trace-stdout`, `trace-stderr` or `agent-home`.
|
|
48
|
+
|
|
49
|
+
<Card title="check reference" icon="terminal" href="/cli-reference/check">
|
|
50
|
+
Every flag of `evolve check`.
|
|
51
|
+
</Card>
|