@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,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "agents"
|
|
3
|
+
description: "Register and manage your own agents."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
`agents()` returns the registered-agents client. A registered agent's name works in a job's `agents[].name` like a built-in.
|
|
7
|
+
|
|
8
|
+
## create
|
|
9
|
+
|
|
10
|
+
<Tabs>
|
|
11
|
+
<Tab title="TypeScript">
|
|
12
|
+
```ts
|
|
13
|
+
create(input: { name: string; run_command: string; env?: Record<string, string> } & ({ install_script: string } | { directory: string })): Promise<Agent>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Register an agent from an install script's text, or from a local directory. `run_command` runs with `sh -c` at the task's working directory; what it can rely on, and the registration limit, are on [agents](/core-concepts/agents#register-your-own-agent).
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
const agent = await agents().create({
|
|
20
|
+
name: "acme-cli",
|
|
21
|
+
install_script: "curl -fsSL https://acme.dev/install.sh | sh",
|
|
22
|
+
run_command: "acme-cli --headless",
|
|
23
|
+
});
|
|
24
|
+
```
|
|
25
|
+
</Tab>
|
|
26
|
+
<Tab title="Python">
|
|
27
|
+
```python
|
|
28
|
+
async def create(
|
|
29
|
+
*,
|
|
30
|
+
name: str,
|
|
31
|
+
install_script: Optional[str] = None,
|
|
32
|
+
directory: Optional[str] = None,
|
|
33
|
+
run_command: str,
|
|
34
|
+
env: Optional[Dict[str, str]] = None,
|
|
35
|
+
) -> Agent
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Register an agent from an install script's text, or from a local directory. `run_command` runs with `sh -c` at the task's working directory; what it can rely on, and the registration limit, are on [agents](/core-concepts/agents#register-your-own-agent).
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
agent = await agents().create(
|
|
42
|
+
name="acme-cli",
|
|
43
|
+
install_script="curl -fsSL https://acme.dev/install.sh | sh",
|
|
44
|
+
run_command="acme-cli --headless",
|
|
45
|
+
)
|
|
46
|
+
```
|
|
47
|
+
</Tab>
|
|
48
|
+
</Tabs>
|
|
49
|
+
|
|
50
|
+
## list, get, upsert, delete
|
|
51
|
+
|
|
52
|
+
<Tabs>
|
|
53
|
+
<Tab title="TypeScript">
|
|
54
|
+
```ts
|
|
55
|
+
list(options?: { limit?: number; cursor?: string }): AgentList
|
|
56
|
+
get(name: string): Promise<Agent>
|
|
57
|
+
upsert(
|
|
58
|
+
name: string,
|
|
59
|
+
input: { run_command: string; env?: Record<string, string> } & ({ install_script: string } | { directory: string }),
|
|
60
|
+
): Promise<Agent>
|
|
61
|
+
delete(name: string): Promise<void>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Your agents, one agent, replace one without a gap, or delete one. Past jobs keep the agent they recorded. `upsert` creates when the name is free and replaces when it is not, consuming no new slot; it is a full replacement, so an omitted `env` becomes empty.
|
|
65
|
+
|
|
66
|
+
```ts
|
|
67
|
+
await agents().upsert(
|
|
68
|
+
"acme-cli",
|
|
69
|
+
{
|
|
70
|
+
install_script: "curl -fsSL https://acme.dev/install.sh | sh",
|
|
71
|
+
run_command: "acme-cli --headless --v2",
|
|
72
|
+
},
|
|
73
|
+
);
|
|
74
|
+
```
|
|
75
|
+
</Tab>
|
|
76
|
+
<Tab title="Python">
|
|
77
|
+
```python
|
|
78
|
+
def list(
|
|
79
|
+
*,
|
|
80
|
+
limit: Optional[int] = None,
|
|
81
|
+
cursor: Optional[str] = None,
|
|
82
|
+
)
|
|
83
|
+
async def get(name: str) -> Agent
|
|
84
|
+
async def upsert(
|
|
85
|
+
name: str,
|
|
86
|
+
*,
|
|
87
|
+
run_command: str,
|
|
88
|
+
install_script: Optional[str] = None,
|
|
89
|
+
directory: Optional[str] = None,
|
|
90
|
+
env: Optional[Dict[str, str]] = None,
|
|
91
|
+
) -> Agent
|
|
92
|
+
async def delete(name: str) -> None
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Your agents, one agent, replace one without a gap, or delete one. Past jobs keep the agent they recorded. `upsert` creates when the name is free and replaces when it is not, consuming no new slot; it is a full replacement, so an omitted `env` becomes empty.
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
await agents().upsert(
|
|
99
|
+
"acme-cli",
|
|
100
|
+
install_script="curl -fsSL https://acme.dev/install.sh | sh",
|
|
101
|
+
run_command="acme-cli --headless --v2",
|
|
102
|
+
)
|
|
103
|
+
```
|
|
104
|
+
</Tab>
|
|
105
|
+
</Tabs>
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "analyses"
|
|
3
|
+
description: "Read trace-analysis runs."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
`analyses()` returns the analyses client. Analyses are started from a job, with `jobs().analyze()`; this client reads them back.
|
|
7
|
+
|
|
8
|
+
## list
|
|
9
|
+
|
|
10
|
+
<Tabs>
|
|
11
|
+
<Tab title="TypeScript">
|
|
12
|
+
```ts
|
|
13
|
+
list(options?: { scope?: "my" | "shared"; job?: string; status?: AnalysisStatus[]; limit?: number; cursor?: string }): AnalysisList
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Analysis runs, newest first, each naming the trial, job and task it judged.
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
for await (const a of analyses().list({
|
|
20
|
+
job: job.id,
|
|
21
|
+
status: ["failed"],
|
|
22
|
+
})) {
|
|
23
|
+
console.log(a.id, a.label);
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
</Tab>
|
|
27
|
+
<Tab title="Python">
|
|
28
|
+
```python
|
|
29
|
+
def list(
|
|
30
|
+
*,
|
|
31
|
+
scope: Optional[JobListScope] = None,
|
|
32
|
+
job: Optional[str] = None,
|
|
33
|
+
status: Optional[List[AnalysisStatus]] = None,
|
|
34
|
+
limit: Optional[int] = None,
|
|
35
|
+
cursor: Optional[str] = None,
|
|
36
|
+
)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Analysis runs, newest first, each naming the trial, job and task it judged.
|
|
40
|
+
|
|
41
|
+
```python
|
|
42
|
+
async for a in analyses().list(
|
|
43
|
+
job=job.id,
|
|
44
|
+
status=["failed"],
|
|
45
|
+
):
|
|
46
|
+
print(a["id"], a["label"])
|
|
47
|
+
```
|
|
48
|
+
</Tab>
|
|
49
|
+
</Tabs>
|
|
50
|
+
|
|
51
|
+
## get, transcript, artifact
|
|
52
|
+
|
|
53
|
+
<Tabs>
|
|
54
|
+
<Tab title="TypeScript">
|
|
55
|
+
```ts
|
|
56
|
+
get(analysisId: string): Promise<TrialAnalysis>
|
|
57
|
+
transcript(
|
|
58
|
+
analysisId: string,
|
|
59
|
+
options?: { since?: number },
|
|
60
|
+
): Promise<AnalysisTranscript>
|
|
61
|
+
artifact(
|
|
62
|
+
analysisId: string,
|
|
63
|
+
stream: "trace-stdout" | "trace-stderr",
|
|
64
|
+
): Promise<string | null>
|
|
65
|
+
artifact(
|
|
66
|
+
analysisId: string,
|
|
67
|
+
stream: "agent-home",
|
|
68
|
+
): Promise<Record<string, string> | null>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The verdict document for every analysis, failed ones included, the analyzer's own transcript (everything after `since` in one read), or one stored artifact; an analysis has no verifier log and no trajectory. A run opens to its job's creator and every member of the organization; any other id answers `analysis_not_found` (`trial_not_found` from `transcript`).
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
const verdict = await analyses().get("a0a1b2c3-…");
|
|
75
|
+
```
|
|
76
|
+
</Tab>
|
|
77
|
+
<Tab title="Python">
|
|
78
|
+
The Python client has `list` and `download` only. Read a verdict from the analyzed trial: `(await trials().get(trial_id)).analysis`.
|
|
79
|
+
</Tab>
|
|
80
|
+
</Tabs>
|
|
81
|
+
|
|
82
|
+
## download
|
|
83
|
+
|
|
84
|
+
<Tabs>
|
|
85
|
+
<Tab title="TypeScript">
|
|
86
|
+
```ts
|
|
87
|
+
download(analysisId: string): Promise<Buffer>
|
|
88
|
+
download(
|
|
89
|
+
analysisId: string,
|
|
90
|
+
options: { to: string },
|
|
91
|
+
): Promise<string>
|
|
92
|
+
download(
|
|
93
|
+
analysisId: string,
|
|
94
|
+
options: { stream: true },
|
|
95
|
+
): Promise<ReadableStream<Uint8Array>>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
The run as one `.tar.gz`, `analyze-<analyzed trial>__<7 chars>/`: a trial tree of the analyzer's own run, with `artifacts/analysis.json` on a completed run. The bytes, the saved file's path, or a stream. `analysis_not_terminal` while the run is queued or running.
|
|
99
|
+
|
|
100
|
+
```ts
|
|
101
|
+
const path = await analyses().download(
|
|
102
|
+
"a0a1b2c3-…",
|
|
103
|
+
{ to: "./analyses" },
|
|
104
|
+
);
|
|
105
|
+
```
|
|
106
|
+
</Tab>
|
|
107
|
+
<Tab title="Python">
|
|
108
|
+
```python
|
|
109
|
+
async def download(
|
|
110
|
+
analysis_id: str,
|
|
111
|
+
*,
|
|
112
|
+
to: Optional[str] = None,
|
|
113
|
+
)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
The run as one `.tar.gz`, `analyze-<analyzed trial>__<7 chars>/`: the bytes, or with `to` the saved file's path. `analysis_not_found` for an id you cannot read, `analysis_not_terminal` while the run is queued or running.
|
|
117
|
+
|
|
118
|
+
```python
|
|
119
|
+
path = await analyses().download(
|
|
120
|
+
"a0a1b2c3-…",
|
|
121
|
+
to="./analyses",
|
|
122
|
+
)
|
|
123
|
+
```
|
|
124
|
+
</Tab>
|
|
125
|
+
</Tabs>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "auth and orgs"
|
|
3
|
+
description: "Who you are, and your organizations."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
`auth()` returns the identity client, `orgs()` the organizations client. Every job, dataset and analysis belongs to an organization, today your personal one; the API accepts an `org` on a job or a publish, but the SDK and CLI do not name one yet.
|
|
7
|
+
|
|
8
|
+
## auth.status
|
|
9
|
+
|
|
10
|
+
<Tabs>
|
|
11
|
+
<Tab title="TypeScript">
|
|
12
|
+
```ts
|
|
13
|
+
status(): Promise<AuthStatus>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The caller and the API key in use: `user_id`, `email`, and `key` with `id`, `label`, `created_at` and `last_used_at`. The key's secret is never returned, and `last_used_at` is always null today.
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
const me = await auth().status();
|
|
20
|
+
```
|
|
21
|
+
</Tab>
|
|
22
|
+
<Tab title="Python">
|
|
23
|
+
```python
|
|
24
|
+
async def status() -> AuthStatus
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The caller and the API key in use. The key's secret is never returned.
|
|
28
|
+
|
|
29
|
+
```python
|
|
30
|
+
me = await auth().status()
|
|
31
|
+
```
|
|
32
|
+
</Tab>
|
|
33
|
+
</Tabs>
|
|
34
|
+
|
|
35
|
+
## orgs.list, orgs.get
|
|
36
|
+
|
|
37
|
+
<Tabs>
|
|
38
|
+
<Tab title="TypeScript">
|
|
39
|
+
```ts
|
|
40
|
+
list(): Promise<Organization[]>
|
|
41
|
+
get(org: string): Promise<OrganizationDetail>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The organizations you belong to, or one organization with your role, its members, its quota and live usage.
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
const org = await orgs().get("acme");
|
|
48
|
+
```
|
|
49
|
+
</Tab>
|
|
50
|
+
<Tab title="Python">
|
|
51
|
+
```python
|
|
52
|
+
async def list() -> List[Organization]
|
|
53
|
+
async def get(org: str) -> OrganizationDetail
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
The organizations you belong to, or one organization with your role, its members, its quota and live usage.
|
|
57
|
+
|
|
58
|
+
```python
|
|
59
|
+
org = await orgs().get("acme")
|
|
60
|
+
```
|
|
61
|
+
</Tab>
|
|
62
|
+
</Tabs>
|
|
63
|
+
|
|
64
|
+
## Quota and usage
|
|
65
|
+
|
|
66
|
+
`quota` is nine ceilings, each the value the platform administrator set or the fleet default; only the administrator's dashboard sets them, never a key or the SDK.
|
|
67
|
+
|
|
68
|
+
- `max_queued_trials`: the one that refuses. A job whose trials would not fit is refused with `quota_exceeded`.
|
|
69
|
+
- `max_concurrent_trials`, `max_concurrent_imports`, `max_concurrent_analyses` (trace analyses and task checks under one count): work beyond them waits.
|
|
70
|
+
- `monthly_budget_usd`: model spend allowed per UTC calendar month; a trial it refuses settles `BUDGET` with `team:` in its message. Null means no monthly budget.
|
|
71
|
+
- `max_concurrent_sandboxes_e2b`, `_daytona`, `_modal`: the organization's sandboxes in flight per provider, trials, analyses, regrade verifiers and managed sessions together; work beyond one waits, and an organization with no value of its own reads the platform's fleet ceiling.
|
|
72
|
+
- `max_concurrent_sessions`: managed-agent sessions open at once; recorded, not yet enforced.
|
|
73
|
+
|
|
74
|
+
A `0` pauses that kind of work: creates are refused at `max_queued_trials` 0, work waits at 0 on the concurrency ceilings, and `monthly_budget_usd` 0 pauses all model spend for the month.
|
|
75
|
+
|
|
76
|
+
`usage` is the live load: `in_flight_trials`, `queued_trials`, `in_flight_imports`, `in_flight_analyses`, `active_sessions` (always 0 on a shared organization), and `month_spend_usd` with `month_spend_as_of`, the month-to-date model spend as of that time (UTC calendar month, reset on the 1st); it may lag by a few minutes. It is null, never 0, when no reading is held; `evolve auth org show` prints `unavailable` then.
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "checks"
|
|
3
|
+
description: "Start and read task quality checks."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
`checks()` returns the checks client.
|
|
7
|
+
|
|
8
|
+
## create
|
|
9
|
+
|
|
10
|
+
<Tabs>
|
|
11
|
+
<Tab title="TypeScript">
|
|
12
|
+
```ts
|
|
13
|
+
create(input: { source: { directory: string } | { dataset: string }; model_name?: string; rubric?: Rubric; prompt?: string; reasoning_effort?: string; sandbox_provider?: EvalSandboxProvider; n_concurrent?: number; include_task_names?: string[]; exclude_task_names?: string[]; n_tasks?: number; onUploadProgress?: (sentBytes: number, totalBytes: number) => void }): Promise<Check>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Check a local task directory or a directory of them, uploaded as one archive (`upload_too_large` past the published ceiling), or a published dataset, nothing uploaded. Returns the accepted check with one `queued` result per task; an empty selection is refused with `no_checkable_tasks`, and a dataset version resolves as for a job (`dataset_not_found`, `no_active_version`, `version_not_ready`). A check on a dataset version also appears on every job spanning it, as `check` on `jobs().tasks()` rows.
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
const check = await checks().create({ source: { dataset: "my-swe@1.0" } });
|
|
20
|
+
```
|
|
21
|
+
</Tab>
|
|
22
|
+
<Tab title="Python">
|
|
23
|
+
```python
|
|
24
|
+
async def create(
|
|
25
|
+
directory: Optional[str] = None,
|
|
26
|
+
*,
|
|
27
|
+
dataset: Optional[str] = None,
|
|
28
|
+
model_name=None,
|
|
29
|
+
rubric: Optional[Rubric] = None,
|
|
30
|
+
prompt=None,
|
|
31
|
+
reasoning_effort=None,
|
|
32
|
+
sandbox_provider=None,
|
|
33
|
+
n_concurrent=None,
|
|
34
|
+
include_task_names=None,
|
|
35
|
+
exclude_task_names=None,
|
|
36
|
+
n_tasks=None,
|
|
37
|
+
on_upload_progress=None,
|
|
38
|
+
) -> Check
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Check a local task directory or a directory of them, uploaded as one archive (`upload_too_large` past the published ceiling), or a published dataset, nothing uploaded; one source, not both. Returns the accepted check with one `queued` result per task; an empty selection is refused with `no_checkable_tasks`, and a dataset version resolves as for a job. A check on a dataset version also appears on every job spanning it, as `check` on `jobs().tasks()` rows.
|
|
42
|
+
|
|
43
|
+
```python
|
|
44
|
+
check = await checks().create(dataset="my-swe@1.0")
|
|
45
|
+
```
|
|
46
|
+
</Tab>
|
|
47
|
+
</Tabs>
|
|
48
|
+
|
|
49
|
+
## get, list, watch
|
|
50
|
+
|
|
51
|
+
<Tabs>
|
|
52
|
+
<Tab title="TypeScript">
|
|
53
|
+
```ts
|
|
54
|
+
get(checkId: string): Promise<Check>
|
|
55
|
+
list(options?: { scope?: "my" | "shared"; status?: CheckStatus[]; limit?: number; cursor?: string }): CheckList
|
|
56
|
+
watch(checkId: string, options?: { onProgress?: (check: Check) => void; signal?: AbortSignal; pollIntervalMs?: number }): Promise<Check>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
One check with its per-task results, your checks, or a poll until every task settled.
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
const done = await checks().watch(check.id);
|
|
63
|
+
```
|
|
64
|
+
</Tab>
|
|
65
|
+
<Tab title="Python">
|
|
66
|
+
```python
|
|
67
|
+
async def get(check_id: str) -> Check
|
|
68
|
+
def list(
|
|
69
|
+
*,
|
|
70
|
+
scope: Optional[JobListScope] = None,
|
|
71
|
+
status: Optional[List[CheckStatus]] = None,
|
|
72
|
+
limit: Optional[int] = None,
|
|
73
|
+
cursor: Optional[str] = None,
|
|
74
|
+
)
|
|
75
|
+
async def watch(
|
|
76
|
+
check_id: str,
|
|
77
|
+
*,
|
|
78
|
+
on_progress: Optional[Callable[[Check], None]] = None,
|
|
79
|
+
poll_interval_s: float = 2.0,
|
|
80
|
+
timeout_s: Optional[float] = None,
|
|
81
|
+
) -> Check
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
One check with its per-task results, your checks, or a poll until every task settled.
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
done = await checks().watch(check.id)
|
|
88
|
+
```
|
|
89
|
+
</Tab>
|
|
90
|
+
</Tabs>
|
|
91
|
+
|
|
92
|
+
## task, transcript, artifact
|
|
93
|
+
|
|
94
|
+
<Tabs>
|
|
95
|
+
<Tab title="TypeScript">
|
|
96
|
+
```ts
|
|
97
|
+
task(taskCheckId: string): Promise<TaskCheck>
|
|
98
|
+
transcript(
|
|
99
|
+
taskCheckId: string,
|
|
100
|
+
options?: { since?: number },
|
|
101
|
+
): Promise<TaskCheckTranscript>
|
|
102
|
+
artifact(
|
|
103
|
+
taskCheckId: string,
|
|
104
|
+
stream: "trace-stdout" | "trace-stderr",
|
|
105
|
+
): Promise<string | null>
|
|
106
|
+
artifact(
|
|
107
|
+
taskCheckId: string,
|
|
108
|
+
stream: "agent-home",
|
|
109
|
+
): Promise<Record<string, string> | null>
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
One task's result by its task check id, the checker's own transcript (everything after `since` in one read), or one stored artifact; a task check has no verifier log and no trajectory. An id you may not read answers `trial_not_found`.
|
|
113
|
+
|
|
114
|
+
```ts
|
|
115
|
+
const result = await checks().task(done.results[0].id);
|
|
116
|
+
```
|
|
117
|
+
</Tab>
|
|
118
|
+
<Tab title="Python">
|
|
119
|
+
The Python client has no per-task reads. A task's result is in `Check.results`, returned by `get` and `watch`.
|
|
120
|
+
</Tab>
|
|
121
|
+
</Tabs>
|
|
122
|
+
|
|
123
|
+
## download
|
|
124
|
+
|
|
125
|
+
<Tabs>
|
|
126
|
+
<Tab title="TypeScript">
|
|
127
|
+
```ts
|
|
128
|
+
download(id: string): Promise<Buffer>
|
|
129
|
+
download(
|
|
130
|
+
id: string,
|
|
131
|
+
options: { to: string },
|
|
132
|
+
): Promise<string>
|
|
133
|
+
download(
|
|
134
|
+
id: string,
|
|
135
|
+
options: { stream: true },
|
|
136
|
+
): Promise<ReadableStream<Uint8Array>>
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
The whole check by its check id (`check-<id>/` with `check_report.json` and one folder per task), or one task's folder by its task check id (`check-<task>__<7 chars>/`), as one `.tar.gz`. Each task folder is a trial tree of the checker's own run, with `artifacts/check-result.json` on a completed run. An id that is neither answers `check_not_found`; an unsettled check or task check answers `check_not_terminal`.
|
|
140
|
+
|
|
141
|
+
```ts
|
|
142
|
+
const path = await checks().download(
|
|
143
|
+
check.id,
|
|
144
|
+
{ to: "./checks" },
|
|
145
|
+
);
|
|
146
|
+
```
|
|
147
|
+
</Tab>
|
|
148
|
+
<Tab title="Python">
|
|
149
|
+
```python
|
|
150
|
+
async def download(
|
|
151
|
+
id: str,
|
|
152
|
+
*,
|
|
153
|
+
to: Optional[str] = None,
|
|
154
|
+
)
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
The whole check by its check id (`check-<id>/` with `check_report.json` and one folder per task), or one task's folder by its task check id (`check-<task>__<7 chars>/`), as one `.tar.gz`. An id that is neither answers `check_not_found`; an unsettled check or task check answers `check_not_terminal`.
|
|
158
|
+
|
|
159
|
+
```python
|
|
160
|
+
path = await checks().download(
|
|
161
|
+
check.id,
|
|
162
|
+
to="./checks",
|
|
163
|
+
)
|
|
164
|
+
```
|
|
165
|
+
</Tab>
|
|
166
|
+
</Tabs>
|