@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
package/package.json
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@evolvingmachines/evolve",
|
|
3
|
+
"version": "0.0.55-project-sable.20260916.db0bc0bb",
|
|
4
|
+
"keywords": [
|
|
5
|
+
"ai",
|
|
6
|
+
"agents",
|
|
7
|
+
"orchestration",
|
|
8
|
+
"sandbox",
|
|
9
|
+
"e2b",
|
|
10
|
+
"daytona",
|
|
11
|
+
"modal",
|
|
12
|
+
"gpu",
|
|
13
|
+
"claude code",
|
|
14
|
+
"codex",
|
|
15
|
+
"gemini cli",
|
|
16
|
+
"qwen code",
|
|
17
|
+
"automation",
|
|
18
|
+
"evolve"
|
|
19
|
+
],
|
|
20
|
+
"homepage": "https://github.com/evolving-machines-lab/evolve",
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "git+https://github.com/evolving-machines-lab/evolve.git"
|
|
24
|
+
},
|
|
25
|
+
"type": "module",
|
|
26
|
+
"bin": {
|
|
27
|
+
"evolve": "dist/cli/index.js"
|
|
28
|
+
},
|
|
29
|
+
"main": "dist/index.cjs",
|
|
30
|
+
"types": "dist/index.d.ts",
|
|
31
|
+
"license": "Apache-2.0",
|
|
32
|
+
"files": [
|
|
33
|
+
"dist",
|
|
34
|
+
"LICENSE",
|
|
35
|
+
"spec",
|
|
36
|
+
"docs-evals",
|
|
37
|
+
"docs-agents",
|
|
38
|
+
"skills",
|
|
39
|
+
"hosted-error-codes.json",
|
|
40
|
+
"harness-capabilities.json"
|
|
41
|
+
],
|
|
42
|
+
"exports": {
|
|
43
|
+
".": {
|
|
44
|
+
"types": "./dist/index.d.ts",
|
|
45
|
+
"import": "./dist/index.js",
|
|
46
|
+
"require": "./dist/index.cjs"
|
|
47
|
+
},
|
|
48
|
+
"./harness-capabilities.json": "./harness-capabilities.json"
|
|
49
|
+
},
|
|
50
|
+
"scripts": {
|
|
51
|
+
"build": "tsx scripts/generate-harness-capabilities.ts --check && tsup --minify && node scripts/copy-spec.mjs && node scripts/copy-skills.mjs",
|
|
52
|
+
"generate:capabilities": "tsx scripts/generate-harness-capabilities.ts",
|
|
53
|
+
"dev": "tsup src/index.ts --watch",
|
|
54
|
+
"type-check": "tsc --noEmit && tsc -p tsconfig.types-test.json",
|
|
55
|
+
"test": "npm run test:unit && npm run test:integration",
|
|
56
|
+
"pretest:unit": "npm run build",
|
|
57
|
+
"test:unit": "tsx tests/unit/semaphore.test.ts && tsx tests/unit/swarm-concurrency.test.ts && tsx tests/unit/swarm-verify.test.ts && tsx tests/unit/swarm-retry-verify.test.ts && tsx tests/unit/prompt-construction.test.ts && tsx tests/unit/observability-metadata.test.ts && tsx tests/unit/observability-identity.test.ts && tsx tests/unit/skills-integration.test.ts && tsx tests/unit/skills-resolver.test.ts && tsx tests/unit/skills-tag-peel.test.ts && tsx tests/unit/auth-config.test.ts && tsx tests/unit/config-validation.test.ts && tsx tests/unit/agent-presets.test.ts && tsx tests/unit/run-resume-option.test.ts && tsx tests/unit/native-config-delivery.test.ts && tsx tests/unit/browser-config.test.ts && tsx tests/unit/integrations-config.test.ts && tsx tests/unit/managed-secrets.test.ts && tsx tests/unit/managed-modal.test.ts && tsx tests/unit/plugins-config.test.ts && tsx tests/unit/session-runtime.test.ts && tsx tests/unit/cost-api.test.ts && tsx tests/unit/storage-config.test.ts && tsx tests/unit/checkpoint-tar.test.ts && tsx tests/unit/checkpoint-tar-listing.test.ts && tsx tests/unit/checkpoint-errors.test.ts && tsx tests/unit/checkpoint-flows.test.ts && tsx tests/unit/checkpoint-dx.test.ts && tsx tests/unit/checkpoint-edge-cases.test.ts && tsx tests/unit/codex-parser-errors.test.ts && tsx tests/unit/parser-harness-errors.test.ts && tsx tests/unit/codex-toml.test.ts && tsx tests/unit/kimi-parser.test.ts && tsx tests/unit/kimi-mcp.test.ts && tsx tests/unit/opencode-parser.test.ts && tsx tests/unit/droid-parser.test.ts && tsx tests/unit/droid-mcp.test.ts && tsx tests/unit/parser-tool-name.test.ts && tsx tests/unit/parser-atif-fields.test.ts && tsx tests/unit/provider-parity.test.ts && tsx tests/unit/storage-client.test.ts && tsx tests/unit/sessions-client.test.ts && tsx tests/unit/hosted-client.test.ts && tsx tests/unit/hosted-trial-tree.test.ts && tsx tests/unit/hosted-ergonomics.test.ts && tsx tests/unit/cli.test.ts && tsx tests/unit/cli-bin.test.ts && tsx tests/unit/cli-skills.test.ts && tsx tests/unit/cli-help.test.ts && tsx tests/unit/hosted-types.test.ts && tsx tests/unit/hosted-error-codes.test.ts && tsx tests/unit/hosted-spec-gate.test.ts && tsx tests/unit/harness-capabilities.test.ts && tsx tests/unit/sandbox-artifacts.test.ts && tsx tests/unit/upload-file-from-path.test.ts && tsx tests/unit/file-utils.test.ts && tsx --expose-gc tests/unit/hosted-tar.test.ts && tsx tests/unit/hosted-upload-stream.test.ts && tsx tests/unit/hosted-upload-memory.test.ts && tsx tests/unit/hosted-resumable.test.ts && tsx tests/unit/cli-ndjson-pipe.test.ts",
|
|
58
|
+
"test:unit:upload-from-path": "tsx tests/unit/upload-file-from-path.test.ts",
|
|
59
|
+
"test:unit:upload-stream": "tsx tests/unit/hosted-upload-stream.test.ts",
|
|
60
|
+
"test:unit:upload-memory": "tsx tests/unit/hosted-upload-memory.test.ts",
|
|
61
|
+
"test:unit:parity": "tsx tests/unit/provider-parity.test.ts",
|
|
62
|
+
"test:unit:semaphore": "tsx tests/unit/semaphore.test.ts",
|
|
63
|
+
"test:unit:swarm": "tsx tests/unit/swarm-concurrency.test.ts",
|
|
64
|
+
"test:unit:verify": "tsx tests/unit/swarm-verify.test.ts",
|
|
65
|
+
"test:unit:retry": "tsx tests/unit/swarm-retry-verify.test.ts",
|
|
66
|
+
"test:unit:prompts": "tsx tests/unit/prompt-construction.test.ts",
|
|
67
|
+
"test:unit:observability": "tsx tests/unit/observability-metadata.test.ts",
|
|
68
|
+
"test:unit:observability-identity": "tsx tests/unit/observability-identity.test.ts",
|
|
69
|
+
"test:unit:skills": "tsx tests/unit/skills-integration.test.ts",
|
|
70
|
+
"test:unit:skills-resolver": "tsx tests/unit/skills-resolver.test.ts",
|
|
71
|
+
"test:unit:auth": "tsx tests/unit/auth-config.test.ts",
|
|
72
|
+
"test:unit:config-validation": "tsx tests/unit/config-validation.test.ts",
|
|
73
|
+
"test:unit:agent-presets": "tsx tests/unit/agent-presets.test.ts",
|
|
74
|
+
"test:unit:native-config-delivery": "tsx tests/unit/native-config-delivery.test.ts",
|
|
75
|
+
"test:unit:browser": "tsx tests/unit/browser-config.test.ts",
|
|
76
|
+
"test:unit:integrations": "tsx tests/unit/integrations-config.test.ts",
|
|
77
|
+
"test:unit:managed-secrets": "tsx tests/unit/managed-secrets.test.ts",
|
|
78
|
+
"test:unit:plugins": "tsx tests/unit/plugins-config.test.ts",
|
|
79
|
+
"test:unit:storage-config": "tsx tests/unit/storage-config.test.ts",
|
|
80
|
+
"test:unit:error-codes": "tsx tests/unit/hosted-error-codes.test.ts",
|
|
81
|
+
"test:unit:capabilities": "tsx tests/unit/harness-capabilities.test.ts",
|
|
82
|
+
"test:unit:checkpoint-tar": "tsx tests/unit/checkpoint-tar.test.ts",
|
|
83
|
+
"test:unit:checkpoint-tar-listing": "tsx tests/unit/checkpoint-tar-listing.test.ts",
|
|
84
|
+
"test:unit:checkpoint-errors": "tsx tests/unit/checkpoint-errors.test.ts",
|
|
85
|
+
"test:unit:checkpoint-flows": "tsx tests/unit/checkpoint-flows.test.ts",
|
|
86
|
+
"test:unit:checkpoint-dx": "tsx tests/unit/checkpoint-dx.test.ts",
|
|
87
|
+
"test:unit:checkpoint-edge-cases": "tsx tests/unit/checkpoint-edge-cases.test.ts",
|
|
88
|
+
"test:unit:storage-client": "tsx tests/unit/storage-client.test.ts",
|
|
89
|
+
"test:unit:sessions-client": "tsx tests/unit/sessions-client.test.ts",
|
|
90
|
+
"test:unit:hosted-client": "tsx tests/unit/hosted-client.test.ts",
|
|
91
|
+
"test:unit:tool-name": "tsx tests/unit/parser-tool-name.test.ts",
|
|
92
|
+
"test:unit:kimi-parser": "tsx tests/unit/kimi-parser.test.ts",
|
|
93
|
+
"test:unit:kimi-mcp": "tsx tests/unit/kimi-mcp.test.ts",
|
|
94
|
+
"test:unit:codex-toml": "tsx tests/unit/codex-toml.test.ts",
|
|
95
|
+
"pretest:integration": "npm run build",
|
|
96
|
+
"test:integration": "npm run test:01",
|
|
97
|
+
"test:integration:all": "npm run test:01 && npm run test:02 && npm run test:03 && npm run test:04 && npm run test:05 && npm run test:06 && npm run test:07 && npm run test:08 && npm run test:09 && npm run test:10 && npm run test:11 && npm run test:12 && npm run test:13 && npm run test:14 && npm run test:15 && npm run test:24",
|
|
98
|
+
"test:01": "tsx tests/integration/01-all-agents-parallel.ts",
|
|
99
|
+
"test:02": "tsx tests/integration/02-execute-command-streaming.ts",
|
|
100
|
+
"test:03": "tsx tests/integration/03-file-operations.ts",
|
|
101
|
+
"test:04": "tsx tests/integration/04-session-lifecycle.ts",
|
|
102
|
+
"test:05": "tsx tests/integration/05-workspace-config.ts",
|
|
103
|
+
"test:06": "tsx tests/integration/06-observability.ts",
|
|
104
|
+
"test:07": "tsx tests/integration/07-background-timeouts.ts",
|
|
105
|
+
"test:08": "tsx tests/integration/08-network.ts",
|
|
106
|
+
"test:09": "tsx tests/integration/09-advanced-features.ts",
|
|
107
|
+
"test:10": "tsx tests/integration/10-swarm-abstractions.ts",
|
|
108
|
+
"test:11": "tsx tests/integration/11-schema-validation.ts",
|
|
109
|
+
"test:12": "tsx tests/integration/12-swarm-verify.ts",
|
|
110
|
+
"test:13": "tsx tests/integration/13-pipeline-abstractions.ts",
|
|
111
|
+
"test:14": "tsx tests/integration/14-byok-direct-mode.ts",
|
|
112
|
+
"test:15": "tsx tests/integration/15-oauth-mode.ts",
|
|
113
|
+
"test:20": "tsx tests/integration/20-storage-checkpoints.ts",
|
|
114
|
+
"test:21": "tsx tests/integration/21-storage-restore-fidelity.ts",
|
|
115
|
+
"test:22": "tsx tests/integration/22-storage-dx.ts",
|
|
116
|
+
"test:23": "tsx tests/integration/23-storage-edge-cases.ts",
|
|
117
|
+
"test:24": "tsx tests/integration/24-kimi-gateway-hello.ts",
|
|
118
|
+
"test:26": "tsx tests/integration/26-storage-full-surface.ts",
|
|
119
|
+
"test:claude": "tsx tests/integration/01-all-agents-parallel.ts claude",
|
|
120
|
+
"test:codex": "tsx tests/integration/01-all-agents-parallel.ts codex",
|
|
121
|
+
"test:gemini": "tsx tests/integration/01-all-agents-parallel.ts gemini",
|
|
122
|
+
"test:qwen": "tsx tests/integration/01-all-agents-parallel.ts qwen",
|
|
123
|
+
"test:unit:cli": "tsx tests/unit/cli.test.ts",
|
|
124
|
+
"test:unit:cli-bin": "tsx tests/unit/cli-bin.test.ts",
|
|
125
|
+
"test:unit:cli-skills": "tsx tests/unit/cli-skills.test.ts",
|
|
126
|
+
"test:unit:cli-help": "tsx tests/unit/cli-help.test.ts",
|
|
127
|
+
"test:unit:cli-ndjson-pipe": "tsx tests/unit/cli-ndjson-pipe.test.ts",
|
|
128
|
+
"test:unit:sandbox-artifacts": "tsx tests/unit/sandbox-artifacts.test.ts",
|
|
129
|
+
"test:unit:hosted-tar": "tsx --expose-gc tests/unit/hosted-tar.test.ts",
|
|
130
|
+
"prepack": "node scripts/copy-spec.mjs && node scripts/copy-skills.mjs"
|
|
131
|
+
},
|
|
132
|
+
"dependencies": {
|
|
133
|
+
"@agentclientprotocol/sdk": "^0.5.1",
|
|
134
|
+
"@evolvingmachines/daytona": "0.0.55-project-sable.20260916.db0bc0bb",
|
|
135
|
+
"@evolvingmachines/e2b": "0.0.55-project-sable.20260916.db0bc0bb",
|
|
136
|
+
"@evolvingmachines/modal": "0.0.55-project-sable.20260916.db0bc0bb",
|
|
137
|
+
"ajv": "^8.17.1",
|
|
138
|
+
"p-map": "^7.0.2",
|
|
139
|
+
"smol-toml": "^1.7.0",
|
|
140
|
+
"tar-stream": "^3.1.7",
|
|
141
|
+
"yaml": "^2.9.0",
|
|
142
|
+
"zod": "^3.24.0",
|
|
143
|
+
"zod-to-json-schema": "^3.25.0"
|
|
144
|
+
},
|
|
145
|
+
"peerDependencies": {
|
|
146
|
+
"@aws-sdk/client-s3": "^3.0.0",
|
|
147
|
+
"@aws-sdk/s3-request-presigner": "^3.0.0"
|
|
148
|
+
},
|
|
149
|
+
"peerDependenciesMeta": {
|
|
150
|
+
"@aws-sdk/client-s3": {
|
|
151
|
+
"optional": true
|
|
152
|
+
},
|
|
153
|
+
"@aws-sdk/s3-request-presigner": {
|
|
154
|
+
"optional": true
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
"devDependencies": {
|
|
158
|
+
"@types/node": "^22.15.18",
|
|
159
|
+
"@types/tar-stream": "^3.1.4",
|
|
160
|
+
"tsup": "^8.4.0",
|
|
161
|
+
"typescript": "^5.8.3"
|
|
162
|
+
}
|
|
163
|
+
}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: create-adapter
|
|
3
|
+
description: Convert an existing benchmark into a folder of Harbor-format tasks ready for `evolve dataset publish`. Use when the user wants to port, adapt, or import a benchmark (a paper's task set, a repository of problems, a leaderboard's dataset) onto Evolve. Guides the conversion and its verification with evolve check.
|
|
4
|
+
metadata:
|
|
5
|
+
internal: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Create Adapter
|
|
9
|
+
|
|
10
|
+
An adapter is a small program that reads an existing benchmark and writes one task
|
|
11
|
+
directory per task, in the Harbor task format. Its output is a folder of tasks, ready for
|
|
12
|
+
`evolve dataset publish`. This skill guides the conversion; `evolve skills get create-task`
|
|
13
|
+
has the task format in full, and `evolve skills get publish` every publish option.
|
|
14
|
+
|
|
15
|
+
## Authoritative reference
|
|
16
|
+
|
|
17
|
+
The conversion rules below are Harbor's, from its adapter guide, and Evolve runs the
|
|
18
|
+
task format unchanged. For the full guide, read
|
|
19
|
+
https://github.com/laude-institute/harbor/blob/main/docs/content/docs/datasets/adapters.mdx
|
|
20
|
+
(its steps on parity experiments, the registry and pull requests are Harbor's own
|
|
21
|
+
process and do not apply here). The task format itself is at
|
|
22
|
+
https://docs.harborframework.com/core-concepts/tasks/overview.
|
|
23
|
+
|
|
24
|
+
Do not invent structure, field names, or workflow beyond what the guide specifies.
|
|
25
|
+
|
|
26
|
+
## Prerequisites
|
|
27
|
+
|
|
28
|
+
- The `evolve` CLI: `npm install -g @evolvingmachines/evolve` (`evolve --version` succeeds).
|
|
29
|
+
- `EVOLVE_API_KEY` exported, from the dashboard's API keys page
|
|
30
|
+
(https://dashboard.evolvingmachines.ai/api-keys); `evolve auth status` prints who you are.
|
|
31
|
+
- Docker, to build and enter a task's environment locally (optional).
|
|
32
|
+
- The upstream benchmark's repository, cloned.
|
|
33
|
+
|
|
34
|
+
## Workflow
|
|
35
|
+
|
|
36
|
+
### 1. Understand the original benchmark
|
|
37
|
+
|
|
38
|
+
Identify these four components for every task in the benchmark:
|
|
39
|
+
|
|
40
|
+
| Component | What to find |
|
|
41
|
+
|-----------|-------------|
|
|
42
|
+
| **Instructions** | How tasks are described; what information agents receive |
|
|
43
|
+
| **Environments** | Docker setup, system dependencies, file structures |
|
|
44
|
+
| **Tests** | Evaluation method: deterministic unit tests, LLM-as-a-Judge, etc. |
|
|
45
|
+
| **Solutions** | Oracle/reference solutions; if none exist, whether LLM generation is feasible |
|
|
46
|
+
|
|
47
|
+
Study the benchmark's repository, documentation, and code structure.
|
|
48
|
+
|
|
49
|
+
**Step complete when:** you can describe, for each task, the instruction text,
|
|
50
|
+
environment setup, test/verification method, and reference solution.
|
|
51
|
+
|
|
52
|
+
### 2. Gather benchmark context from the user
|
|
53
|
+
|
|
54
|
+
Collect the following before writing code. If the user has not provided an item, ask
|
|
55
|
+
before proceeding.
|
|
56
|
+
|
|
57
|
+
| Field | Why it matters |
|
|
58
|
+
|-------|---------------|
|
|
59
|
+
| Adapter name | Lowercase, hyphen-separated. Must match the benchmark's common identifier (e.g., `swe-bench`, `aider-polyglot`). Becomes the dataset name on Evolve and, with dashes turned to underscores, the Python package name. |
|
|
60
|
+
| Human-readable name | Appears in the README. |
|
|
61
|
+
| Upstream repo URL | Needed for step 1 (benchmark analysis) and for the README. |
|
|
62
|
+
| Reference solutions available? | If the benchmark ships reference solutions, use them. If not, they must be written, with LLM help, before the tasks can be checked. |
|
|
63
|
+
| Subset | Adapting a subset of tasks is acceptable (e.g., only a verified split). Document every exclusion in the README. |
|
|
64
|
+
|
|
65
|
+
### 3. Write the converter
|
|
66
|
+
|
|
67
|
+
The `evolve` CLI has no adapter scaffold; create this layout by hand:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
<adapter-name>/
|
|
71
|
+
├── README.md # final documentation (step 6)
|
|
72
|
+
├── pyproject.toml # Python package config
|
|
73
|
+
└── src/
|
|
74
|
+
└── <adapter_name>/ # adapter-name with dashes → underscores
|
|
75
|
+
├── __init__.py
|
|
76
|
+
├── adapter.py # main logic: parse benchmark, generate task dirs
|
|
77
|
+
├── main.py # CLI entry point
|
|
78
|
+
└── task-template/ # template files copied into each task
|
|
79
|
+
├── task.toml
|
|
80
|
+
├── instruction.md
|
|
81
|
+
├── environment/
|
|
82
|
+
│ └── Dockerfile
|
|
83
|
+
├── solution/
|
|
84
|
+
│ └── solve.sh
|
|
85
|
+
└── tests/
|
|
86
|
+
└── test.sh
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
`main.py` must support `--output-dir` (where generated tasks are written), `--limit`,
|
|
90
|
+
`--overwrite`, and `--task-ids`. Run it as
|
|
91
|
+
`uv run python -m <adapter_name>.main --output-dir <path>`.
|
|
92
|
+
|
|
93
|
+
Each generated task directory must contain at minimum `task.toml`, `instruction.md`,
|
|
94
|
+
`environment/Dockerfile`, `solution/solve.sh`, and `tests/test.sh`:
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
<output-dir>/
|
|
98
|
+
└── <task-id>/
|
|
99
|
+
├── task.toml # task configuration and metadata
|
|
100
|
+
├── instruction.md # task instructions for the agent
|
|
101
|
+
├── environment/
|
|
102
|
+
│ └── Dockerfile # container environment definition
|
|
103
|
+
├── solution/
|
|
104
|
+
│ └── solve.sh # reference solution script
|
|
105
|
+
└── tests/
|
|
106
|
+
├── test.sh # test execution script
|
|
107
|
+
└── test_*.py # (optional) pytest test files
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**`task.toml`:** every task must include it. Adjust timeouts to match your benchmark's
|
|
111
|
+
complexity.
|
|
112
|
+
|
|
113
|
+
```toml
|
|
114
|
+
schema_version = "1.4"
|
|
115
|
+
|
|
116
|
+
[task]
|
|
117
|
+
name = "<adapter-name>/<task-id>"
|
|
118
|
+
version = "1.0.0"
|
|
119
|
+
|
|
120
|
+
[metadata]
|
|
121
|
+
author_name = "Original benchmark authors' names"
|
|
122
|
+
author_email = "benchmark-authors@email.com"
|
|
123
|
+
difficulty = "medium"
|
|
124
|
+
category = "programming"
|
|
125
|
+
tags = ["debugging", "python"]
|
|
126
|
+
|
|
127
|
+
[agent]
|
|
128
|
+
timeout_sec = 1800.0
|
|
129
|
+
|
|
130
|
+
[verifier]
|
|
131
|
+
timeout_sec = 120.0
|
|
132
|
+
|
|
133
|
+
[environment]
|
|
134
|
+
build_timeout_sec = 600.0
|
|
135
|
+
cpus = 1
|
|
136
|
+
memory_mb = 2048
|
|
137
|
+
storage_mb = 10240
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
For LLM-as-a-Judge verifiers, request the judge credential in `[verifier.env]`; on Evolve
|
|
141
|
+
you never put a real key in the task, the credential is supplied at run time
|
|
142
|
+
(`evolve skills get rewardkit` has the details):
|
|
143
|
+
|
|
144
|
+
```toml
|
|
145
|
+
[verifier.env]
|
|
146
|
+
OPENAI_API_KEY = "${OPENAI_API_KEY}"
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**`tests/test.sh`:** must write a numeric reward (integer or float, 0 to 1) to
|
|
150
|
+
`/logs/verifier/reward.txt`, or named numbers to `/logs/verifier/reward.json`.
|
|
151
|
+
`/logs/verifier/` exists at run time. Use the same metrics as the original benchmark.
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
#!/bin/bash
|
|
155
|
+
pytest /tests/test_*.py
|
|
156
|
+
if [ $? -eq 0 ]; then
|
|
157
|
+
echo 1 > /logs/verifier/reward.txt
|
|
158
|
+
else
|
|
159
|
+
echo 0 > /logs/verifier/reward.txt
|
|
160
|
+
fi
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**`instruction.md`:** write agent-actionable instructions, not raw benchmark
|
|
164
|
+
descriptions. Include the goal, constraints, expected output location, and any files the
|
|
165
|
+
agent should modify. Do not include test answers or reference solutions. Prompt
|
|
166
|
+
modifications (e.g., "write files in place without asking") are acceptable if you apply
|
|
167
|
+
them to both the original benchmark and the adapter, and document them.
|
|
168
|
+
|
|
169
|
+
**`environment/Dockerfile`:** set up the container the agent will work in. Install system
|
|
170
|
+
and Python dependencies, copy any benchmark-specific data files, and set the working
|
|
171
|
+
directory. The agent and the verifier both run inside this container unless the task
|
|
172
|
+
declares a separate verifier environment.
|
|
173
|
+
|
|
174
|
+
```dockerfile
|
|
175
|
+
FROM python:3.13-slim
|
|
176
|
+
WORKDIR /workspace
|
|
177
|
+
|
|
178
|
+
RUN apt-get update && apt-get install -y \
|
|
179
|
+
git \
|
|
180
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
181
|
+
|
|
182
|
+
# Install benchmark-specific dependencies
|
|
183
|
+
# RUN pip install --no-cache-dir <packages>
|
|
184
|
+
|
|
185
|
+
# Copy task-specific files
|
|
186
|
+
# COPY . /workspace/
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**GPU tasks:** set `gpus` (and optionally `gpu_types`) under `[environment]` in
|
|
190
|
+
`task.toml`. After publishing, `evolve dataset show` prints which sandbox providers can
|
|
191
|
+
run each task.
|
|
192
|
+
|
|
193
|
+
**Step complete when:** `main.py` produces a valid task directory for each task.
|
|
194
|
+
|
|
195
|
+
### 4. Keep task names right
|
|
196
|
+
|
|
197
|
+
- **Every task directory name is the task's name on Evolve.** Letters, digits, `.`, `_`
|
|
198
|
+
and `-`, at most 128 characters, starting with a letter or digit; use lowercase (Harbor's
|
|
199
|
+
convention). Put the same identifier in `[task] name` as `<adapter-name>/<task-id>`. A
|
|
200
|
+
`[metadata] task_id`, when present, must equal the directory name.
|
|
201
|
+
- **Task names must be unique within the dataset and stable across adapter runs.** An
|
|
202
|
+
unstable name makes the same task look like a different one on republish. If upstream
|
|
203
|
+
lacks stable identifiers, mint a deterministic scheme in adapter code (e.g.,
|
|
204
|
+
`{dataset}-1`, `{dataset}-2`, ...) derived from a reproducible sort of upstream tasks.
|
|
205
|
+
- **Sanitize upstream identifiers** before using them as names: lowercase, replace
|
|
206
|
+
spaces/slashes/special characters with hyphens, avoid leading/trailing separators.
|
|
207
|
+
- **Treat `main.py` as the source of truth for task names.** Do not hand-edit generated
|
|
208
|
+
task directories; fix the converter and regenerate.
|
|
209
|
+
- Use `schema_version = "1.4"` at the top of `task.toml`; `[task].version` is the task's
|
|
210
|
+
own version and is distinct from it.
|
|
211
|
+
|
|
212
|
+
### 5. Verify the conversion
|
|
213
|
+
|
|
214
|
+
Check the generated tasks. The check reads each task and, when it can, runs its
|
|
215
|
+
environment, its `solution/solve.sh` and its verifier, then rules on every criterion of a
|
|
216
|
+
rubric; every task should come back `no_problem_found` with `executed` true.
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
evolve check "<output-dir>" --watch
|
|
220
|
+
evolve check show <check-id>
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
A failing check usually means one of three things, in this order:
|
|
224
|
+
|
|
225
|
+
1. **Adaptation error:** the instruction, environment or test does not match upstream.
|
|
226
|
+
2. **A broken reference solution:** run the solution on the original benchmark side too, to
|
|
227
|
+
tell a wrong solution from a wrong adaptation. If the fix is simple, propose it
|
|
228
|
+
upstream and document it in the README; exclude tasks that cannot be reliably fixed.
|
|
229
|
+
3. **Environment error:** a Dockerfile that does not build or a test that cannot run makes
|
|
230
|
+
the task impossible for every agent, so catch it here.
|
|
231
|
+
|
|
232
|
+
Where Harbor is installed, `harbor run -p "<output-dir>" -a oracle` runs every reference
|
|
233
|
+
solution locally (optional); the reward should be `1.0` on every task.
|
|
234
|
+
|
|
235
|
+
**Benchmarks without reference solutions:** write them, with LLM help, before publishing.
|
|
236
|
+
A cheap agent and model can take a first pass over all the tasks; complete the rest with
|
|
237
|
+
a stronger model plus human review.
|
|
238
|
+
|
|
239
|
+
**Step complete when:** every task passes `evolve check`.
|
|
240
|
+
|
|
241
|
+
### 6. Document and publish
|
|
242
|
+
|
|
243
|
+
Write the README with: what the benchmark measures and a link to it; the subset adapted
|
|
244
|
+
and every exclusion; benchmark bugs found and how they were handled; prompt
|
|
245
|
+
modifications, environment adjustments and other deviations from the original, with the
|
|
246
|
+
reason; known limitations; the exact commands to regenerate the tasks and to run them.
|
|
247
|
+
|
|
248
|
+
Then publish the output folder as a dataset (`evolve skills get publish` has every option):
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
evolve dataset check "<output-dir>"
|
|
252
|
+
evolve dataset publish --dir "<output-dir>" --name "<adapter-name>" --version 1.0 --watch
|
|
253
|
+
evolve run -d "<adapter-name>@1.0" -a codex -m gpt-5.5 --watch
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
To see how faithful the conversion is, run a job with the same agent and model the
|
|
257
|
+
benchmark's own leaderboard reports, and compare the scores.
|
|
258
|
+
|
|
259
|
+
## Reference adapters by shape
|
|
260
|
+
|
|
261
|
+
Harbor's repository holds one adapter per benchmark, public at
|
|
262
|
+
https://github.com/laude-institute/harbor/tree/main/adapters. When implementation
|
|
263
|
+
questions come up, read the one that matches the benchmark's shape:
|
|
264
|
+
|
|
265
|
+
| Shape | Example adapter |
|
|
266
|
+
|-------|----------------|
|
|
267
|
+
| Repository-level coding tasks with unit-test verifiers | `adapters/swebench/` |
|
|
268
|
+
| Many small tasks from one dataset file | `adapters/evoeval/` |
|
|
269
|
+
| Data-analysis tasks with a custom dataset | `adapters/bixbench/` |
|
|
270
|
+
| LLM-as-a-Judge verification | `adapters/financeagent/` |
|
|
271
|
+
| GPU tasks | `adapters/featurebench/` |
|
|
272
|
+
|
|
273
|
+
## What this skill does NOT do
|
|
274
|
+
|
|
275
|
+
- Implement `adapter.py`, `main.py`, or the task-template files. Those are the
|
|
276
|
+
contributor's work, guided by the rules above.
|
|
277
|
+
- Run `evolve check` or publish on its own. Both act on the user's account and need the
|
|
278
|
+
user's explicit intent; a check spends credits (it runs a checker model).
|
|
279
|
+
|
|
280
|
+
## Failure modes
|
|
281
|
+
|
|
282
|
+
| Symptom | Likely cause | Action |
|
|
283
|
+
|---------|--------------|--------|
|
|
284
|
+
| `evolve: command not found` | The CLI is not installed | `npm install -g @evolvingmachines/evolve`. |
|
|
285
|
+
| `evolve dataset check` refuses a task by name | Its `task.toml` breaks a rule (a field, a value, a name) | Fix the converter, regenerate, check again. The refusal names the field. |
|
|
286
|
+
| A task check comes back `has_a_problem` | One criterion failed | `evolve check show <check-id>` prints the criterion, its explanation and its evidence. |
|
|
287
|
+
| Every task fails the check the same way | An error in the task template | Fix `task-template/` in the converter, not the generated tasks. |
|