@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
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "meta"
|
|
3
|
-
description: "The platform's capability document, no key needed."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
`meta()` fetches the capability document, `GET /api/meta`: everything a client would otherwise hardcode. It needs no API key.
|
|
7
|
-
|
|
8
|
-
- `agents`: every built-in, with `runnable` and `reason`, `default_model` and `models` (the picker's list; a job still requires an explicit model), `effort_support` (`level`, `binary` or `none`) and `default_effort`, `version_pinnable` and `latest_version` (null means not known right now), `supports_config` and `presets`.
|
|
9
|
-
- `agent_registration`: the rules a registration must satisfy: `name_pattern`, the length and size caps, `max_per_user`, `reserved_names`, `reserved_env_keys`.
|
|
10
|
-
- `sandbox_providers`: each provider's `sizing` ceilings, its `gpus` block, and its `refuses` list; `platform_constraints` beside it holds what no provider runs. `gpu_concurrency_cap` is the fleet's cap on GPU trials in flight.
|
|
11
|
-
- `managed_providers`: the managed sandbox doors this deployment serves, a managed-agents fact.
|
|
12
|
-
- `network_modes`: the three modes a task may declare.
|
|
13
|
-
- `statuses`: the `job`, `trial`, `import` and `dataset_version` vocabularies, each with its `terminal` members.
|
|
14
|
-
- `analyze`: the analyzer's `default_model`, its `reasoning_efforts`, and each roster model's `default_reasoning_effort`.
|
|
15
|
-
- `limits`: `job` (`n_concurrent_trials` default and max, `default_max_trial_spend_usd`, `default_max_retries`, `default_sandbox_provider`, `default_sizing`, `model_required`, `default_agent_timeout_sec`, `default_verifier_timeout_sec`, `default_timeout_multiplier`, the effort vocabulary), `compare` (`min_ids`, `max_ids`), `pagination` (a default and max per collection kind), `uploads` (the one physical ceiling per archive kind with `archive_bytes_source`, the agent tarball and skill caps), `dataset_names`, and `max_items_named_in_error_message`, which is why `details` exists.
|
|
16
|
-
- `error_codes` and `import_warning_codes`: the closed lists.
|
|
17
|
-
|
|
18
|
-
`schema_version` moves when a field changes meaning, never when a value changes. The response carries an `ETag` and `Cache-Control: public, max-age=300, stale-while-revalidate=300`; send the ETag back as `If-None-Match` and an unchanged document answers 304.
|
|
19
|
-
|
|
20
|
-
<Tabs>
|
|
21
|
-
<Tab title="TypeScript">
|
|
22
|
-
```ts
|
|
23
|
-
import { meta } from "@evolvingmachines/evolve";
|
|
24
|
-
|
|
25
|
-
function meta(config?: HostedClientConfig): Promise<CapabilityDocument>
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Also `hosted().meta()`.
|
|
29
|
-
|
|
30
|
-
```ts
|
|
31
|
-
const doc = await meta();
|
|
32
|
-
for (const agent of doc.agents) console.log(agent.name, agent.models.map((m) => m.alias));
|
|
33
|
-
```
|
|
34
|
-
</Tab>
|
|
35
|
-
<Tab title="Python">
|
|
36
|
-
```python
|
|
37
|
-
from evolve import meta
|
|
38
|
-
|
|
39
|
-
async def meta(config: Optional[HostedClientConfig] = None) -> CapabilityDocument
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
Also `await hosted().meta()`.
|
|
43
|
-
|
|
44
|
-
```python
|
|
45
|
-
doc = await meta()
|
|
46
|
-
for agent in doc.agents: print(
|
|
47
|
-
agent.name,
|
|
48
|
-
[m.alias for m in agent.models],
|
|
49
|
-
)
|
|
50
|
-
```
|
|
51
|
-
</Tab>
|
|
52
|
-
</Tabs>
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "skills"
|
|
3
|
-
description: "Upload and manage platform-stored skills."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
`skills()` returns the skills client. An uploaded skill is referenced from a job as `upload:<id>` or `name:<skill-name>`.
|
|
7
|
-
|
|
8
|
-
## upload
|
|
9
|
-
|
|
10
|
-
<Tabs>
|
|
11
|
-
<Tab title="TypeScript">
|
|
12
|
-
```ts
|
|
13
|
-
upload(directory: string, options?: { org?: string }): Promise<SkillUpload[]>
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
Upload a skill folder. Its name becomes your moving name pointer. The record belongs to you and to an organization (`org`, a slug or id; omitted, the client's `org` default, else your personal one): its members may reference it from their own jobs, and only you can delete it.
|
|
17
|
-
|
|
18
|
-
```ts
|
|
19
|
-
const [skill] = await skills().upload("./my-skill", { org: "acme" });
|
|
20
|
-
```
|
|
21
|
-
</Tab>
|
|
22
|
-
<Tab title="Python">
|
|
23
|
-
```python
|
|
24
|
-
async def upload(directory: str, *, org: Optional[str] = None) -> List[SkillUpload]
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Upload a skill folder. Its name becomes your moving name pointer. The record belongs to you and to an organization (`org`, a slug or id; omitted, the client's `org` default, else your personal one): its members may reference it from their own jobs, and only you can delete it.
|
|
28
|
-
|
|
29
|
-
```python
|
|
30
|
-
[skill] = await skills().upload("./my-skill", org="acme")
|
|
31
|
-
```
|
|
32
|
-
</Tab>
|
|
33
|
-
</Tabs>
|
|
34
|
-
|
|
35
|
-
## list, get, delete
|
|
36
|
-
|
|
37
|
-
<Tabs>
|
|
38
|
-
<Tab title="TypeScript">
|
|
39
|
-
```ts
|
|
40
|
-
list(options?: { scope?: "my" | "shared" | "org"; limit?: number; cursor?: string }): SkillUploadList
|
|
41
|
-
get(id: string): Promise<SkillUpload & { skill_md: string | null }>
|
|
42
|
-
delete(id: string): Promise<void>
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
Uploads, one upload with its `SKILL.md`, or delete one. `scope` is the lists' own vocabulary: `"my"` (yours, the default), `"shared"` (your organizations' other members') or `"org"` (everything in your organizations, yours included). A skill a running job references cannot be deleted, and deleting stays with the owner.
|
|
46
|
-
|
|
47
|
-
```ts
|
|
48
|
-
const one = await skills().get(skill.id);
|
|
49
|
-
```
|
|
50
|
-
</Tab>
|
|
51
|
-
<Tab title="Python">
|
|
52
|
-
```python
|
|
53
|
-
def list(
|
|
54
|
-
*,
|
|
55
|
-
scope: Optional[Literal['my', 'shared', 'org']] = None,
|
|
56
|
-
limit: Optional[int] = None,
|
|
57
|
-
cursor: Optional[str] = None,
|
|
58
|
-
)
|
|
59
|
-
async def get(skill_id: str) -> SkillUpload
|
|
60
|
-
async def delete(skill_id: str) -> None
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
Your uploads, one upload, or delete one. A skill a running job references cannot be deleted.
|
|
64
|
-
|
|
65
|
-
```python
|
|
66
|
-
one = await skills().get(skill.id)
|
|
67
|
-
```
|
|
68
|
-
</Tab>
|
|
69
|
-
</Tabs>
|
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "trials"
|
|
3
|
-
description: "Read, download, and act on single trials."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
`trials()` returns the trials client. A trial id is global: no method needs the job id.
|
|
7
|
-
|
|
8
|
-
## get
|
|
9
|
-
|
|
10
|
-
<Tabs>
|
|
11
|
-
<Tab title="TypeScript">
|
|
12
|
-
```ts
|
|
13
|
-
get(trialId: string): Promise<Trial>
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
One trial in full. Its `job_id` points back to the job.
|
|
17
|
-
|
|
18
|
-
```ts
|
|
19
|
-
const trial = await trials().get("d1a10c4e-…");
|
|
20
|
-
```
|
|
21
|
-
</Tab>
|
|
22
|
-
<Tab title="Python">
|
|
23
|
-
```python
|
|
24
|
-
async def get(trial_id: str) -> Trial
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
One trial in full. Its `job_id` points back to the job.
|
|
28
|
-
|
|
29
|
-
```python
|
|
30
|
-
trial = await trials().get("d1a10c4e-…")
|
|
31
|
-
```
|
|
32
|
-
</Tab>
|
|
33
|
-
</Tabs>
|
|
34
|
-
|
|
35
|
-
## trace, traceEvents
|
|
36
|
-
|
|
37
|
-
<Tabs>
|
|
38
|
-
<Tab title="TypeScript">
|
|
39
|
-
```ts
|
|
40
|
-
trace(
|
|
41
|
-
trialId: string,
|
|
42
|
-
options?: { cursor?: string; limit?: number; type?: string; grep?: string; tail?: number },
|
|
43
|
-
): Promise<TraceEventPage>
|
|
44
|
-
traceEvents(
|
|
45
|
-
trialId: string,
|
|
46
|
-
options?: TraceOptions,
|
|
47
|
-
): AsyncIterableIterator<TraceEvent>
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
One page of the parsed trace, or every available event; `traceEvents` drains what is stored and stops. `type` (an exact type), `grep` (a case-insensitive regex over type and content, a plain string being a substring) and `tail` (the last N matches, 1 to 10000) filter on the server and compose with the cursor.
|
|
51
|
-
|
|
52
|
-
A cursor is a `seq`: to resume later, pass the last event's `seq` as a string. `limit` defaults to 200, at most 1000, and event 0 is the instruction.
|
|
53
|
-
|
|
54
|
-
```ts
|
|
55
|
-
for await (const event of trials().traceEvents(
|
|
56
|
-
trial.id,
|
|
57
|
-
{ grep: "permission denied" },
|
|
58
|
-
)) {
|
|
59
|
-
console.log(event.seq, event.type);
|
|
60
|
-
}
|
|
61
|
-
```
|
|
62
|
-
</Tab>
|
|
63
|
-
<Tab title="Python">
|
|
64
|
-
```python
|
|
65
|
-
async def trace(
|
|
66
|
-
trial_id: str,
|
|
67
|
-
*,
|
|
68
|
-
cursor=None,
|
|
69
|
-
limit=None,
|
|
70
|
-
type=None,
|
|
71
|
-
grep=None,
|
|
72
|
-
tail=None,
|
|
73
|
-
) -> TraceEventPage
|
|
74
|
-
async def trace_events(
|
|
75
|
-
trial_id: str,
|
|
76
|
-
*,
|
|
77
|
-
cursor=None,
|
|
78
|
-
limit=None,
|
|
79
|
-
type=None,
|
|
80
|
-
grep=None,
|
|
81
|
-
tail=None,
|
|
82
|
-
)
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
One page of the parsed trace, or every available event; `trace_events` drains what is stored and stops. `type` (an exact type), `grep` (a case-insensitive regex over type and content, a plain string being a substring) and `tail` (the last N matches, 1 to 10000) filter on the server and compose with the cursor.
|
|
86
|
-
|
|
87
|
-
A cursor is a `seq`: to resume later, pass the last event's `seq` as a string. `limit` defaults to 200, at most 1000, and event 0 is the instruction.
|
|
88
|
-
|
|
89
|
-
```python
|
|
90
|
-
async for event in trials().trace_events(
|
|
91
|
-
trial.id,
|
|
92
|
-
grep="permission denied",
|
|
93
|
-
):
|
|
94
|
-
print(event.seq, event.type)
|
|
95
|
-
```
|
|
96
|
-
</Tab>
|
|
97
|
-
</Tabs>
|
|
98
|
-
|
|
99
|
-
## artifact
|
|
100
|
-
|
|
101
|
-
<Tabs>
|
|
102
|
-
<Tab title="TypeScript">
|
|
103
|
-
```ts
|
|
104
|
-
artifact(
|
|
105
|
-
trialId: string,
|
|
106
|
-
stream: "verifier" | "trace-stdout" | "trace-stderr" | "trace-atif" | "trajectory",
|
|
107
|
-
): Promise<string | null>
|
|
108
|
-
artifact(
|
|
109
|
-
trialId: string,
|
|
110
|
-
stream: "agent-home",
|
|
111
|
-
): Promise<Record<string, string> | null>
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
One raw artifact, the same names `evolve trial download --stream` takes. Null means the trial never stored it.
|
|
115
|
-
|
|
116
|
-
```ts
|
|
117
|
-
const log = await trials().artifact(trial.id, "verifier");
|
|
118
|
-
```
|
|
119
|
-
</Tab>
|
|
120
|
-
<Tab title="Python">
|
|
121
|
-
```python
|
|
122
|
-
async def artifact(
|
|
123
|
-
trial_id: str,
|
|
124
|
-
stream: Literal['trace-parsed', 'verifier', 'trace-stdout', 'trace-stderr', 'trace-atif', 'trajectory', 'agent-home'],
|
|
125
|
-
) -> Optional[Union[str, Dict[str, str]]]
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
One raw artifact, the same names `evolve trial download --stream` takes. None means the trial never stored it. `trace-parsed` is refused here; use `trace()`.
|
|
129
|
-
|
|
130
|
-
```python
|
|
131
|
-
log = await trials().artifact(trial.id, "verifier")
|
|
132
|
-
```
|
|
133
|
-
</Tab>
|
|
134
|
-
</Tabs>
|
|
135
|
-
|
|
136
|
-
## files, file
|
|
137
|
-
|
|
138
|
-
<Tabs>
|
|
139
|
-
<Tab title="TypeScript">
|
|
140
|
-
```ts
|
|
141
|
-
files(
|
|
142
|
-
trialId: string,
|
|
143
|
-
options?: { limit?: number; cursor?: string },
|
|
144
|
-
): Promise<TrialFilePage>
|
|
145
|
-
file(
|
|
146
|
-
trialId: string,
|
|
147
|
-
path: string,
|
|
148
|
-
range?: { start?: number; end?: number; suffix?: number },
|
|
149
|
-
): Promise<Buffer>
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
Every file the platform stored for the trial, as `{ path, size_bytes }` rows sorted by path (`limit` default 200, at most 1000), and the raw bytes of one of them. A range reads a slice; `suffix` reads the last N bytes. A very large file must be read by range. There is no CLI verb for either.
|
|
153
|
-
|
|
154
|
-
```ts
|
|
155
|
-
const tail = await trials().file(
|
|
156
|
-
trial.id,
|
|
157
|
-
"verifier/test-stdout.txt",
|
|
158
|
-
{ suffix: 4096 },
|
|
159
|
-
);
|
|
160
|
-
```
|
|
161
|
-
</Tab>
|
|
162
|
-
<Tab title="Python">
|
|
163
|
-
```python
|
|
164
|
-
async def files(
|
|
165
|
-
trial_id: str,
|
|
166
|
-
*,
|
|
167
|
-
cursor: Optional[str] = None,
|
|
168
|
-
limit: Optional[int] = None,
|
|
169
|
-
) -> TrialFilePage
|
|
170
|
-
async def file(
|
|
171
|
-
trial_id: str,
|
|
172
|
-
path: str,
|
|
173
|
-
*,
|
|
174
|
-
start: Optional[int] = None,
|
|
175
|
-
end: Optional[int] = None,
|
|
176
|
-
suffix: Optional[int] = None,
|
|
177
|
-
) -> bytes
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
Every file the platform stored for the trial, as `path` and `size_bytes` rows sorted by path (`limit` default 200, at most 1000), and the raw bytes of one of them. A range reads a slice; `suffix` reads the last N bytes. A very large file must be read by range. There is no CLI verb for either.
|
|
181
|
-
|
|
182
|
-
```python
|
|
183
|
-
tail = await trials().file(
|
|
184
|
-
trial.id,
|
|
185
|
-
"verifier/test-stdout.txt",
|
|
186
|
-
suffix=4096,
|
|
187
|
-
)
|
|
188
|
-
```
|
|
189
|
-
</Tab>
|
|
190
|
-
</Tabs>
|
|
191
|
-
|
|
192
|
-
## regrade, retry, stop
|
|
193
|
-
|
|
194
|
-
<Tabs>
|
|
195
|
-
<Tab title="TypeScript">
|
|
196
|
-
```ts
|
|
197
|
-
regrade(trialId: string): Promise<Job>
|
|
198
|
-
retry(
|
|
199
|
-
trialId: string,
|
|
200
|
-
options?: StartJobOptions,
|
|
201
|
-
): Promise<Job>
|
|
202
|
-
stop(trialIds: string[]): Promise<StopResponse>
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
Re-run only the verifier, run the trial again, or stop in-flight trials. A regrade and a retry each return a new one-trial job; `regrade` is refused with `regrade_source_ineligible` for a shared-mode trial, `retry` with `trial_not_settled` for a live one.
|
|
206
|
-
|
|
207
|
-
`stop` takes at most 100 ids, trials and analyses mixed, and reports each in exactly one of `stopped`, `stopped_analyses`, `already_terminal` or `not_found`. Stopped trials rejoin the run on a `resume` of their job.
|
|
208
|
-
|
|
209
|
-
```ts
|
|
210
|
-
const again = await trials().retry(trial.id);
|
|
211
|
-
```
|
|
212
|
-
</Tab>
|
|
213
|
-
<Tab title="Python">
|
|
214
|
-
```python
|
|
215
|
-
async def regrade(trial_id: str) -> Job
|
|
216
|
-
async def retry(
|
|
217
|
-
trial_id: str,
|
|
218
|
-
*,
|
|
219
|
-
idempotency_key: Optional[str] = None,
|
|
220
|
-
) -> Job
|
|
221
|
-
async def stop(trial_ids: List[str]) -> StopResponse
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
Re-run only the verifier, run the trial again, or stop in-flight trials. A regrade and a retry each return a new one-trial job; `regrade` is refused with `regrade_source_ineligible` for a shared-mode trial, `retry` with `trial_not_settled` for a live one.
|
|
225
|
-
|
|
226
|
-
`stop` takes at most 100 ids, trials and analyses mixed, and reports each in exactly one of `stopped`, `stopped_analyses`, `already_terminal` or `not_found`. Stopped trials rejoin the run on a `resume` of their job.
|
|
227
|
-
|
|
228
|
-
```python
|
|
229
|
-
again = await trials().retry(trial.id)
|
|
230
|
-
```
|
|
231
|
-
</Tab>
|
|
232
|
-
</Tabs>
|
|
233
|
-
|
|
234
|
-
## filesystem(trialId: string)
|
|
235
|
-
|
|
236
|
-
<Tabs>
|
|
237
|
-
<Tab title="TypeScript">
|
|
238
|
-
```ts
|
|
239
|
-
filesystem(trialId: string): RunFilesystem
|
|
240
|
-
|
|
241
|
-
interface RunFilesystem {
|
|
242
|
-
status(): Promise<FilesystemStatus>
|
|
243
|
-
list(options?: { path?: string; source?: "live" | "capture"; cursor?: string; limit?: number }): Promise<FilesystemListing>
|
|
244
|
-
read(path: string, options?: { source?: "live" | "capture"; range?: TrialFileRange }): Promise<Buffer>
|
|
245
|
-
search(options: { q: string; path?: string; regex?: boolean; limit?: number; source?: "live" | "capture" }): Promise<FilesystemSearchResult>
|
|
246
|
-
changes(options?: { source?: "live" | "capture"; phase?: "setup" | "agent" | "verifier" | "all"; cursor?: string; limit?: number }): Promise<FilesystemChanges>
|
|
247
|
-
archive(options?: { path?: string; source?: "live" | "capture" }): Promise<Buffer>
|
|
248
|
-
archive(options: { path?: string; source?: "live" | "capture"; to: string }): Promise<string>
|
|
249
|
-
watch(paths: string[]): Promise<FilesystemWatchResult>
|
|
250
|
-
events(options?: { lastEventId?: string; signal?: AbortSignal }): AsyncIterableIterator<FilesystemStreamEvent>
|
|
251
|
-
logs(options: { stream: SandboxLogStream; cursor?: string; limit?: number }): Promise<SandboxLogLines>
|
|
252
|
-
logEvents(options?: { lastEventId?: string; signal?: AbortSignal }): AsyncIterableIterator<SandboxLogEvent>
|
|
253
|
-
procs(): Promise<SandboxProcs>
|
|
254
|
-
}
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
The trial's file system, sandbox logs and process list. While the box runs, every read sees it as it changes; after the run, the same reads answer from the kept tree. `status()` says which (`state`: `live`, `captured`, `capturing`, `none`), and `source` on a read forces one — a source that is not there is refused with `filesystem_state`.
|
|
258
|
-
|
|
259
|
-
`list` pages one folder by name; each entry says whether the run created or modified it and in which phase, and on the kept tree `captured: false` marks a file the run never touched (it lists but does not open — `not_captured`). `read` answers raw bytes, a slice with `range`. `search` finds text under a folder, or over the whole box when `path` is `/` (seconds); `truncated` says there was more. `changes` is the flat list of what the run created, modified or removed. `archive` is a `.tar.gz` of one subtree, in memory or saved under `to`; while the box runs, a subtree too large to read out in time is refused (`feature_unsupported`).
|
|
260
|
-
|
|
261
|
-
`events` yields change frames while the box lives (`state`, then one `fs` per change with its `seq`, `path` and `type`); on a provider without a native watcher, `watch(paths)` declares the folders you have open so their changes are reported (at most 8). `logs` pages one stream — `agent`, `verifier`, or `system` when the job asked for it; `setup` and `metrics` are named but not recorded today, so their page is empty with a `reason` — and `logEvents` follows every stream while the box lives. `procs` is the live process list.
|
|
262
|
-
|
|
263
|
-
```ts
|
|
264
|
-
const fs = trials().filesystem(trial.id);
|
|
265
|
-
const { state } = await fs.status();
|
|
266
|
-
for (const entry of (await fs.list({ path: "/app/work" })).entries) console.log(entry.name, entry.changed);
|
|
267
|
-
const main = (await fs.read("/app/work/main.py")).toString("utf8");
|
|
268
|
-
for await (const frame of fs.events()) if (frame.event === "fs") console.log(frame.data.path, frame.data.type);
|
|
269
|
-
```
|
|
270
|
-
</Tab>
|
|
271
|
-
<Tab title="Python">
|
|
272
|
-
```python
|
|
273
|
-
def filesystem(self, trial_id: str) -> RunFilesystem
|
|
274
|
-
|
|
275
|
-
class RunFilesystem:
|
|
276
|
-
async def status(self) -> FilesystemStatus
|
|
277
|
-
async def list(self, *, path="/", source=None, cursor=None, limit=None) -> FilesystemListing
|
|
278
|
-
async def read(self, path, *, source=None, start=None, end=None, suffix=None) -> bytes
|
|
279
|
-
async def search(self, q, *, path="/", regex=False, limit=None, source=None) -> FilesystemSearchResult
|
|
280
|
-
async def changes(self, *, source=None, phase=None, cursor=None, limit=None) -> FilesystemChanges
|
|
281
|
-
async def archive(self, *, path="/", source=None, to=None) # bytes, or the saved path with to=
|
|
282
|
-
async def watch(self, paths) -> FilesystemWatchResult
|
|
283
|
-
def events(self, *, last_event_id=None) -> AsyncIterator[FilesystemStreamEvent]
|
|
284
|
-
async def logs(self, stream, *, cursor=None, limit=None) -> SandboxLogLines
|
|
285
|
-
def log_events(self, *, last_event_id=None) -> AsyncIterator[SandboxLogEvent]
|
|
286
|
-
async def procs(self) -> SandboxProcs
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
The same surface, the same words: `status().state` says whether the reads answer from the running box (`live`) or the kept tree (`captured`); `source=` forces one. `read` answers bytes, a slice with `start`/`end` or `suffix`. `events` and `log_events` are async iterators over the live streams.
|
|
290
|
-
|
|
291
|
-
```python
|
|
292
|
-
fs = trials().filesystem(trial.id)
|
|
293
|
-
print((await fs.status()).state)
|
|
294
|
-
for entry in (await fs.list(path="/app/work")).entries:
|
|
295
|
-
print(entry.name, entry.changed)
|
|
296
|
-
main = (await fs.read("/app/work/main.py")).decode()
|
|
297
|
-
async for frame in fs.events():
|
|
298
|
-
if frame.event == "fs":
|
|
299
|
-
print(frame.data["path"], frame.data["type"])
|
|
300
|
-
```
|
|
301
|
-
</Tab>
|
|
302
|
-
</Tabs>
|