@evolvingmachines/evolve 0.0.67 → 0.0.69

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.
Files changed (64) hide show
  1. package/dist/chunk-FHL4GIAZ.js +1 -0
  2. package/dist/chunk-ORD7JDZB.js +1 -0
  3. package/dist/chunk-SQDR2TAW.js +427 -0
  4. package/dist/cli/index.cjs +38 -38
  5. package/dist/cli/index.d.cts +1 -1
  6. package/dist/cli/index.d.ts +1 -1
  7. package/dist/cli/index.js +30 -30
  8. package/dist/index.cjs +65 -60
  9. package/dist/index.d.cts +332 -29
  10. package/dist/index.d.ts +332 -29
  11. package/dist/index.js +48 -43
  12. package/dist/managed-modal-IXZBT4D5.js +4 -0
  13. package/dist/resumable-XNW5SKRW.js +1 -0
  14. package/dist/{types-84M4J_Vm.d.cts → types-DGx_qo9M.d.cts} +118 -77
  15. package/dist/{types-84M4J_Vm.d.ts → types-DGx_qo9M.d.ts} +118 -77
  16. package/harness-capabilities.json +325 -77
  17. package/hosted-error-codes.json +1 -0
  18. package/package.json +9 -7
  19. package/skills/create-adapter/SKILL.md +1 -1
  20. package/skills/create-task/SKILL.md +1 -1
  21. package/skills/evolve/SKILL.md +1 -1
  22. package/skills/evolve-evals/SKILL.md +1 -1
  23. package/skills/evolve-evals/references/cli-reference/agent.md +1 -1
  24. package/skills/evolve-evals/references/cli-reference/analyze.md +7 -4
  25. package/skills/evolve-evals/references/cli-reference/check.md +5 -4
  26. package/skills/evolve-evals/references/cli-reference/index.md +1 -1
  27. package/skills/evolve-evals/references/cli-reference/run.md +6 -5
  28. package/skills/evolve-evals/references/core-concepts/agents.md +19 -5
  29. package/skills/evolve-evals/references/core-concepts/analyze.md +39 -5
  30. package/skills/evolve-evals/references/core-concepts/check.md +62 -6
  31. package/skills/evolve-evals/references/core-concepts/datasets.md +1 -1
  32. package/skills/evolve-evals/references/core-concepts/index.md +1 -1
  33. package/skills/evolve-evals/references/core-concepts/jobs.md +3 -3
  34. package/skills/evolve-evals/references/core-concepts/models.md +393 -41
  35. package/skills/evolve-evals/references/core-concepts/sandboxes.md +1 -1
  36. package/skills/evolve-evals/references/core-concepts/secrets.md +1 -1
  37. package/skills/evolve-evals/references/core-concepts/skills.md +1 -1
  38. package/skills/evolve-evals/references/core-concepts/task-verifiers.md +1 -1
  39. package/skills/evolve-evals/references/core-concepts/teams.md +1 -1
  40. package/skills/evolve-evals/references/core-concepts/upload.md +1 -1
  41. package/skills/evolve-evals/references/dashboard/checks.md +5 -3
  42. package/skills/evolve-evals/references/dashboard/jobs.md +1 -1
  43. package/skills/evolve-evals/references/getting-started/first-task.md +1 -1
  44. package/skills/evolve-evals/references/getting-started/quick-start.md +1 -1
  45. package/skills/evolve-evals/references/index.md +1 -1
  46. package/skills/evolve-evals/references/sdk/http.md +1 -1
  47. package/skills/evolve-evals/references/sdk/python.md +1 -1
  48. package/skills/evolve-evals/references/sdk/typescript.md +1 -1
  49. package/skills/evolve-evals/references/sdk-reference/analyses.md +16 -5
  50. package/skills/evolve-evals/references/sdk-reference/checks.md +14 -5
  51. package/skills/evolve-evals/references/sdk-reference/error-codes.md +3 -2
  52. package/skills/evolve-evals/references/sdk-reference/jobs.md +3 -3
  53. package/skills/evolve-evals/references/sdk-reference/meta.md +4 -3
  54. package/skills/evolve-evals/references/sdk-reference/methods/analyses.md +6 -4
  55. package/skills/evolve-evals/references/sdk-reference/methods/checks.md +8 -4
  56. package/skills/evolve-evals/references/sdk-reference/methods/jobs.md +5 -3
  57. package/skills/evolve-evals/references/sdk-reference/methods/meta.md +15 -4
  58. package/skills/evolve-evals/references/sdk-reference/skills.md +2 -2
  59. package/skills/evolve-evals/references/sdk-reference/types.md +11 -5
  60. package/spec/openapi.yaml +290 -137
  61. package/dist/chunk-HQJI3HHU.js +0 -1
  62. package/dist/chunk-RFLMRPGK.js +0 -427
  63. package/dist/managed-modal-IJW62SSK.js +0 -4
  64. package/dist/resumable-HFSICSH3.js +0 -1
@@ -49,8 +49,9 @@ The field names are the same in both languages. TypeScript passes an object; Pyt
49
49
 
50
50
  | Field | Purpose |
51
51
  | --- | --- |
52
- | `model_name` | Analyzer model |
53
- | `reasoning_effort` | Effort supported by the analyzer |
52
+ | `agent` | Agent the analyzer runs on; default `claude` |
53
+ | `model_name` | Analyzer model, one of that agent's models |
54
+ | `reasoning_effort` | Effort that agent accepts |
54
55
  | `sandbox_provider` | Analyzer's sandbox provider |
55
56
  | `rubric` | `{criteria: [{name, description, guidance}, ...]}` |
56
57
  | `prompt` | Replacement prompt template text |
@@ -77,14 +78,22 @@ Polling slows to at most 30 seconds while the tally stays unchanged. Call the wa
77
78
  ```ts TypeScript
78
79
  const defaults = await analyses().defaults();
79
80
  console.log(defaults.model_name, defaults.rubric, defaults.prompt);
81
+
82
+ const codex = await analyses().defaults({ agent: "codex" });
83
+ console.log(codex.model_name, codex.reasoning_effort);
80
84
  ```
81
85
 
82
86
  ```python Python
83
87
  defaults = await analyses().defaults()
84
88
  print(defaults["model_name"], defaults["rubric"], defaults["prompt"])
89
+
90
+ codex = await analyses().defaults(agent="codex")
91
+ print(codex["model_name"], codex["reasoning_effort"])
85
92
  ```
86
93
 
87
- The response includes `model_name`, `rubric`, `prompt`, `reasoning_effort`, and `sandbox_provider`. The prompt is the editable template text.
94
+ The response includes `agent`, `model_name`, `rubric`, `prompt`, `reasoning_effort`, and `sandbox_provider`. The prompt is the editable template text.
95
+
96
+ Omit `agent` for `claude` defaults. Pass it to read another harness's analysis model default and that model's default effort. See [supported models and efforts](/core-concepts/models#analysis-and-check-models).
88
97
 
89
98
  A custom analyze prompt may use `{trial_path}`, `{task_section}`, and `{criteria_guidance}`. The required result schema is appended by the platform. See [analysis concepts](/core-concepts/analyze) for rubric design.
90
99
 
@@ -103,14 +112,16 @@ async for result in analyses().list(job=job_id):
103
112
 
104
113
  List options: `scope`, `job`, `status` list, `limit`, `cursor`. Status values are `queued`, `running`, `completed`, `failed`.
105
114
 
106
- The latest analysis also appears on `trial.analysis`. Each criterion reports `pass`, `fail`, `not_applicable`, or `unknown`, with an explanation and evidence. Evolve derives no verdict from them; compute what you need from the criteria.
115
+ The latest analysis also appears on `trial.analysis`. Each criterion reports `pass`, `fail`, `not_applicable`, or `unknown`, with an explanation and evidence.
116
+
117
+ The API returns no overall verdict. Use `checks` for your own result handling; the dashboard's [summary label](/core-concepts/analyze#the-result) is computed from those outcomes.
107
118
 
108
119
  ## Inspect the analyzer run
109
120
 
110
121
  | Method | TypeScript | Python |
111
122
  | --- | --- | --- |
112
123
  | List runs | `list(options)` | `list(...)` |
113
- | Read defaults | `defaults()` | `defaults()` |
124
+ | Read defaults | `defaults({ agent })` | `defaults(agent=...)` |
114
125
  | Download run | `download(analysisId, { to })` | `download(analysis_id, to=...)` |
115
126
  | Browse sandbox files | `filesystem(analysisId)` | `filesystem(analysis_id)` |
116
127
  | Read one analysis directly | `get(analysisId)` | Use list results or `trial.analysis` |
@@ -55,8 +55,9 @@ Choose one source. A local check does not first publish a dataset.
55
55
  | Option | Purpose |
56
56
  | --- | --- |
57
57
  | `name` | Check label; defaults to an acceptance timestamp |
58
- | `model_name` | Checker model |
59
- | `reasoning_effort` | Supported reasoning effort |
58
+ | `agent` | Agent the checker runs on; default `claude` |
59
+ | `model_name` | Checker model, one of that agent's models |
60
+ | `reasoning_effort` | Effort that agent accepts |
60
61
  | `sandbox_provider` | Checker sandbox provider |
61
62
  | `rubric` | `{criteria: [{name, description, guidance}, ...]}` |
62
63
  | `prompt` | Replacement prompt template |
@@ -73,14 +74,22 @@ TypeScript places these alongside `source` in the input object. Python takes key
73
74
  ```ts TypeScript
74
75
  const defaults = await client.defaults();
75
76
  console.log(defaults.rubric, defaults.prompt);
77
+
78
+ const codex = await client.defaults({ agent: "codex" });
79
+ console.log(codex.model_name, codex.reasoning_effort);
76
80
  ```
77
81
 
78
82
  ```python Python
79
83
  defaults = await client.defaults()
80
84
  print(defaults["rubric"], defaults["prompt"])
85
+
86
+ codex = await client.defaults(agent="codex")
87
+ print(codex["model_name"], codex["reasoning_effort"])
81
88
  ```
82
89
 
83
- Defaults include model, rubric, prompt, effort, and provider. Check prompt tokens are `{task_path}`, `{file_tree}`, and `{criteria_guidance}`. They differ from analysis prompt tokens.
90
+ Defaults include agent, model, rubric, prompt, effort, and provider. Omit `agent` for `claude` defaults. Pass it to read another harness's check model default and that model's default effort. See [supported models and efforts](/core-concepts/models#analysis-and-check-models).
91
+
92
+ Check prompt tokens are `{task_path}`, `{file_tree}`, and `{criteria_guidance}`. They differ from analysis prompt tokens.
84
93
 
85
94
  ## Understand the result
86
95
 
@@ -107,7 +116,7 @@ Each task can be `queued`, `running`, `completed`, or `failed`. The check become
107
116
 
108
117
  **Note:**
109
118
 
110
- Evolve derives no verdict from a result. Read the criterion outcomes and evidence; the default rubric's execution criteria say whether the checker ran the task.
119
+ The API returns no overall verdict or separate execution flag. Read `checks` for outcomes and evidence. An unknown execution criterion leaves that part of the task's runtime behavior unresolved; see [how to read a check result](/core-concepts/check#the-result).
111
120
 
112
121
  ## Read and follow checks
113
122
 
@@ -116,7 +125,7 @@ Evolve derives no verdict from a result. Read the criterion outcomes and evidenc
116
125
  | `get(id)` | Full check and its task results |
117
126
  | `list(...)` | `scope`, `status` list, `dataset`, `limit`, `cursor`; paginated handle |
118
127
  | `watch(id, ...)` | Wait until completed; callback on changes |
119
- | `defaults()` | Current policy and editable prompt |
128
+ | `defaults({ agent })` | Rubric, editable prompt, and settings for the selected harness |
120
129
 
121
130
  Watch options are `onProgress`, `pollIntervalMs`, `signal` in TypeScript; `on_progress`, `poll_interval_s`, `timeout_s` in Python. Polling starts at 2 seconds and slows to 30 seconds while unchanged.
122
131
 
@@ -5,7 +5,7 @@ description: "Every known code, what it means, and what to do next."
5
5
 
6
6
  Use `code` to identify a failure. Read `param` for the input to fix and `details` for the full context. See [Errors](/sdk-reference/errors) for TypeScript and Python handlers.
7
7
 
8
- This catalog covers all 122 codes known to the SDK. A newer server can add codes; [Meta](/sdk-reference/meta) lists the deployment's vocabulary.
8
+ This catalog covers the SDK's known error codes. A newer server can add codes; [Meta](/sdk-reference/meta) lists the deployment's vocabulary.
9
9
 
10
10
  **Info:**
11
11
 
@@ -95,6 +95,7 @@ These codes apply to chunked dataset and job uploads. They describe the transfer
95
95
  | `agent_config_unsupported` | This harness does not support a native config. Omit it or choose a harness listed in `details.config_supporting_agents`. |
96
96
  | `agent_config_key_refused` | Native config contains settings that Evolve controls, such as routing or credentials. Remove the keys named in `details.refused_keys`. |
97
97
  | `agent_preset_unsupported` | This harness cannot apply the requested preset. Choose a supported harness or remove the preset. |
98
+ | `agent_retired` | A new job, resume, retry, analysis or check named a retired harness. Use the harness in `details.retired_agents[].replaced_by`; its past runs stay readable. |
98
99
 
99
100
  ## Registered agents
100
101
 
@@ -228,4 +229,4 @@ These are capacity limits, separate from request rate limits. Each response prov
228
229
  | --- | --- |
229
230
  | `internal_error` | The server encountered an unexpected failure. Keep the request ID when reporting it. |
230
231
 
231
- `unknown_error` is an SDK fallback when a response provides no usable code. It is not one of the 122 codes above. Preserve the status, message, and request ID rather than guessing a cause.
232
+ `unknown_error` is an SDK fallback when a response provides no usable code. It is not a server error code. Preserve the status, message, and request ID rather than guessing a cause.
@@ -28,7 +28,7 @@ const job = await client.start({
28
28
  version: "1.0",
29
29
  task_names: ["hello-world"],
30
30
  }],
31
- agents: [{ name: "codex", model_name: "gpt-5.6-luna" }],
31
+ agents: [{ name: "codex", model_name: "gpt-6-luna" }],
32
32
  max_trial_spend_usd: 0.50,
33
33
  retry: { max_retries: 0 },
34
34
  });
@@ -44,7 +44,7 @@ job = await client.start(
44
44
  "version": "1.0",
45
45
  "task_names": ["hello-world"],
46
46
  }],
47
- agents=[{"name": "codex", "model_name": "gpt-5.6-luna"}],
47
+ agents=[{"name": "codex", "model_name": "gpt-6-luna"}],
48
48
  max_trial_spend_usd=0.50,
49
49
  retry={"max_retries": 0},
50
50
  )
@@ -57,7 +57,7 @@ job = await client.start(
57
57
  | Input | Fields |
58
58
  | --- | --- |
59
59
  | `datasets` | One or more selectors. Required: `name`. Optional: `version`, `task_names`, `exclude_task_names`, `n_tasks`. Omitted version selects the active version. Filters accept glob patterns; the cap applies after filters. |
60
- | `agents` | One or more arms. Required: `name`, `model_name`. Optional: `version`, `reasoning_effort`, `kwargs`, `preset`, `skills`. Use [capabilities](/sdk-reference/meta) for supported values. |
60
+ | `agents` | One or more arms. Required: `name`, `model_name`. Optional: `version`, `reasoning_effort`, `kwargs`, `preset`, `skills`. Use [capabilities](/sdk-reference/meta) for accepted inputs. |
61
61
 
62
62
  Python also accepts `DatasetSelector` and `AgentArm` dataclass instances in these lists.
63
63
 
@@ -30,11 +30,12 @@ Also available as `hosted().meta()` in both languages.
30
30
 
31
31
  | Field | Use it to answer |
32
32
  | --- | --- |
33
- | `agents` | Which harnesses run? Which models, efforts, versions, kwargs, and presets do they support? |
33
+ | `agents` | Which harnesses run? Which model names, effort inputs, versions, and presets does the API accept? |
34
+ | `retired_agents` | Which harnesses are retired, and which harness replaces each? |
34
35
  | `sandbox_providers` | Which providers support the task's resources and features? |
35
36
  | `platform_constraints` | Which requirements cannot run on this deployment? |
36
37
  | `network_modes` | Which network modes can a task declare? |
37
- | `analyze` | Which analyzer models and reasoning efforts are available? |
38
+ | `analyze` | Which agents, models, effort inputs, and configured defaults do analyses and checks accept? |
38
39
  | `limits` | What are the current defaults and bounds for jobs, pages, uploads, and comparisons? |
39
40
  | `statuses` | Which states exist, and which are terminal? |
40
41
  | `agent_registration` | Which names, environment keys, and upload sizes can a custom agent use? |
@@ -43,7 +44,7 @@ Also available as `hosted().meta()` in both languages.
43
44
 
44
45
  **Tip:**
45
46
 
46
- Read capabilities when building a picker or validating a saved configuration. A documented example is useful; a fixed copy of the platform's model catalog becomes stale.
47
+ Read capabilities when building a picker or validating a saved configuration. For reasoning options by model, see the [model reference](/core-concepts/models#model-and-effort-reference).
47
48
 
48
49
  ## Configuration
49
50
 
@@ -54,27 +54,29 @@ Python analysis rows are dictionaries: `row["id"]`, `row["checks"]`. [Analysis r
54
54
 
55
55
  ## defaults
56
56
 
57
- Read the current analysis defaults. Returns `AnalyzeDefaults`: model, effort, sandbox provider, rubric, and unrendered prompt template.
57
+ Read the current analysis defaults. Returns `AnalyzeDefaults`: agent, model, effort, sandbox provider, rubric, and unrendered prompt template. Pass an agent to read what that agent runs under when you name no model.
58
58
 
59
59
  ### Signature
60
60
 
61
61
  ```ts TypeScript signature
62
- defaults(): Promise<AnalyzeDefaults>;
62
+ defaults(options?: { agent?: string }): Promise<AnalyzeDefaults>;
63
63
  ```
64
64
 
65
65
  ```python Python signature
66
- async def defaults() -> AnalyzeDefaults: ...
66
+ async def defaults(*, agent: Optional[str] = None) -> AnalyzeDefaults: ...
67
67
  ```
68
68
 
69
69
  ```ts TypeScript
70
70
  const defaults = await client.defaults();
71
+ const codex = await client.defaults({ agent: "codex" });
71
72
  ```
72
73
 
73
74
  ```python Python
74
75
  defaults = await client.defaults()
76
+ codex = await client.defaults(agent="codex")
75
77
  ```
76
78
 
77
- Python returns a dictionary. These are current defaults; an existing analysis records the policy it actually ran under.
79
+ Python returns a dictionary. These are current defaults; an existing analysis records the policy it actually ran under. An agent the platform does not offer is refused with `invalid_input`.
78
80
 
79
81
  ## get
80
82
 
@@ -37,6 +37,7 @@ async def create(
37
37
  *,
38
38
  dataset: Optional[str] = None,
39
39
  name: Optional[str] = None,
40
+ agent: Optional[str] = None,
40
41
  model_name: Optional[str] = None,
41
42
  rubric: Optional[Rubric] = None,
42
43
  prompt: Optional[str] = None,
@@ -80,6 +81,7 @@ Optional `onUploadProgress(sent, total)` / `on_upload_progress(sent, total)` rep
80
81
  ```ts
81
82
  interface CheckConfigInput {
82
83
  name?: string;
84
+ agent?: string;
83
85
  model_name?: string;
84
86
  rubric?: Rubric;
85
87
  prompt?: string;
@@ -160,27 +162,29 @@ Optional `scope`: `my` (default), `shared`, or `org`; `status`: a list of `queue
160
162
 
161
163
  ## defaults
162
164
 
163
- Read `CheckDefaults`: current model, reasoning effort, sandbox provider, rubric, and unrendered prompt template.
165
+ Read `CheckDefaults`: current agent, model, reasoning effort, sandbox provider, rubric, and unrendered prompt template. Pass an agent to read what that agent runs under when you name no model.
164
166
 
165
167
  ### Signature
166
168
 
167
169
  ```ts TypeScript signature
168
- defaults(): Promise<CheckDefaults>;
170
+ defaults(options?: { agent?: string }): Promise<CheckDefaults>;
169
171
  ```
170
172
 
171
173
  ```python Python signature
172
- async def defaults() -> CheckDefaults: ...
174
+ async def defaults(*, agent: Optional[str] = None) -> CheckDefaults: ...
173
175
  ```
174
176
 
175
177
  ```ts TypeScript
176
178
  const defaults = await client.defaults();
179
+ const codex = await client.defaults({ agent: "codex" });
177
180
  ```
178
181
 
179
182
  ```python Python
180
183
  defaults = await client.defaults()
184
+ codex = await client.defaults(agent="codex")
181
185
  ```
182
186
 
183
- Python returns a dictionary. The check’s prompt uses `{task_path}`, `{file_tree}`, and `{criteria_guidance}`; the output contract is appended after your template.
187
+ Python returns a dictionary. The check’s prompt uses `{task_path}`, `{file_tree}`, and `{criteria_guidance}`; the output contract is appended after your template. An agent the platform does not offer is refused with `invalid_input`.
184
188
 
185
189
  ## watch
186
190
 
@@ -67,7 +67,7 @@ const job = await client.start({
67
67
  agents: [
68
68
  {
69
69
  name: "codex",
70
- model_name: "gpt-5.6-luna"
70
+ model_name: "gpt-6-luna"
71
71
  }
72
72
  ],
73
73
  max_trial_spend_usd: 1,
@@ -89,7 +89,7 @@ job = await client.start(
89
89
  agents=[
90
90
  {
91
91
  'name': 'codex',
92
- 'model_name': 'gpt-5.6-luna',
92
+ 'model_name': 'gpt-6-luna',
93
93
  },
94
94
  ],
95
95
  max_trial_spend_usd=1,
@@ -528,6 +528,7 @@ analyze(
528
528
  async def analyze(
529
529
  id: str,
530
530
  *,
531
+ agent: Optional[str] = None,
531
532
  model_name: Optional[str] = None,
532
533
  rubric: Optional[Rubric] = None,
533
534
  prompt: Optional[str] = None,
@@ -556,7 +557,7 @@ job = await client.analyze(
556
557
  )
557
558
  ```
558
559
 
559
- All options are optional. `analyses().defaults()` reads the current model, effort, provider, rubric, and prompt defaults.
560
+ All options are optional. `analyses().defaults()` reads the current agent, model, effort, provider, rubric, and prompt defaults.
560
561
 
561
562
  | Selection | Meaning |
562
563
  | --- | --- |
@@ -572,6 +573,7 @@ Cancelled trials are excluded. `trial_ids` is accepted here, but refused inside
572
573
 
573
574
  ```ts
574
575
  interface AnalyzeConfigInput {
576
+ agent?: string;
575
577
  model_name?: string;
576
578
  rubric?: Rubric;
577
579
  prompt?: string;
@@ -48,12 +48,13 @@ TypeScript returns the typed object below. Python uses dataclasses for the docum
48
48
 
49
49
  ### CapabilityDocument: SDK field definitions
50
50
 
51
- `limits` reports current values for this deployment. `default_model` is a picker suggestion; managed evaluation jobs still require a model. Optional fields may be absent on older servers; Python maps missing `analyze` and `gpu_concurrency_cap` to `None`.
51
+ `limits` reports current values for this deployment. `default_model` is a picker suggestion; managed evaluation jobs still require a model. Optional fields may be absent on older servers; Python maps missing `analyze` and `gpu_concurrency_cap` to `None`, and missing `retired_agents` to an empty list.
52
52
 
53
53
  ```ts Fields
54
54
  interface CapabilityDocument {
55
55
  schema_version: number;
56
56
  agents: AgentCapability[];
57
+ retired_agents?: RetiredAgent[];
57
58
  agent_registration: {
58
59
  name_pattern: string;
59
60
  max_name_length: number;
@@ -77,9 +78,14 @@ interface CapabilityDocument {
77
78
  dataset_version: StatusVocabulary;
78
79
  };
79
80
  analyze?: {
81
+ default_agent: string;
80
82
  default_model: string;
81
- reasoning_efforts: string[];
82
- models: { alias: string; model_id: string; default_reasoning_effort: string }[];
83
+ agents: {
84
+ name: string;
85
+ default_model: string;
86
+ reasoning_efforts: string[];
87
+ models: { alias: string; model_id: string; default_reasoning_effort: string | null }[];
88
+ }[];
83
89
  };
84
90
  limits: {
85
91
  job: {
@@ -139,7 +145,7 @@ The API also returns the fields below. TypeScript keeps them in the response, al
139
145
 
140
146
  ### Harnesses and models
141
147
 
142
- `effort_support` is `level`, `binary`, or `none`. `runnable: false` includes a reason. `supports_config` controls native settings support; `presets` lists accepted named presets. Python defaults missing `supports_config` to `False` and `presets` to an empty list. `latest_version: null` means unknown, not current.
148
+ `agents` lists the harnesses a new job may name; a retired harness appears only in `retired_agents`, with the harness that replaces it. `effort_support` is `level`, `binary`, or `none`. `runnable: false` includes a reason. `supports_config` controls native settings support; `presets` lists accepted named presets. Python defaults missing `supports_config` to `False` and `presets` to an empty list. `latest_version: null` means unknown, not current.
143
149
 
144
150
  ```ts Fields
145
151
  interface AgentModelOption {
@@ -148,6 +154,11 @@ interface AgentModelOption {
148
154
  description: string | null;
149
155
  }
150
156
 
157
+ interface RetiredAgent {
158
+ agent: string;
159
+ replaced_by: string;
160
+ }
161
+
151
162
  interface AgentCapability {
152
163
  name: string;
153
164
  runnable: boolean;
@@ -22,7 +22,7 @@ import { skills, jobs } from "@evolvingmachines/evolve";
22
22
  const [skill] = await skills().upload("./my-skill");
23
23
  const job = await jobs().start({
24
24
  datasets: [{ name: "harbor-examples", version: "1.0", task_names: ["hello-world"] }],
25
- agents: [{ name: "codex", model_name: "gpt-5.6-luna", skills: [skill.ref] }],
25
+ agents: [{ name: "codex", model_name: "gpt-6-luna", skills: [skill.ref] }],
26
26
  max_trial_spend_usd: 0.50,
27
27
  retry: { max_retries: 0 },
28
28
  });
@@ -35,7 +35,7 @@ uploaded = await skills().upload("./my-skill")
35
35
  skill = uploaded[0]
36
36
  job = await jobs().start(
37
37
  datasets=[{"name": "harbor-examples", "version": "1.0", "task_names": ["hello-world"]}],
38
- agents=[{"name": "codex", "model_name": "gpt-5.6-luna", "skills": [skill.ref]}],
38
+ agents=[{"name": "codex", "model_name": "gpt-6-luna", "skills": [skill.ref]}],
39
39
  max_trial_spend_usd=0.50,
40
40
  retry={"max_retries": 0},
41
41
  )
@@ -208,10 +208,11 @@ interface RetryConfig {
208
208
  }
209
209
 
210
210
  interface AnalyzeConfig {
211
+ agent: string;
211
212
  model_name: string;
212
213
  rubric: Rubric;
213
214
  prompt: string | null;
214
- reasoning_effort: string;
215
+ reasoning_effort: string | null;
215
216
  sandbox_provider: EvalSandboxProvider;
216
217
  n_concurrent: number | null;
217
218
  passing: boolean;
@@ -316,8 +317,9 @@ interface CheckRow {
316
317
  name: string;
317
318
  status: CheckStatus;
318
319
  source: CheckSource;
320
+ agent: string;
319
321
  model_name: string;
320
- reasoning_effort: string;
322
+ reasoning_effort: string | null;
321
323
  sandbox_provider: EvalSandboxProvider;
322
324
  org: string;
323
325
  visibility: JobVisibility;
@@ -757,6 +759,7 @@ interface TrialAnalysis {
757
759
  job_id: string;
758
760
  task_name: string;
759
761
  status: AnalysisStatus;
762
+ agent: string;
760
763
  model_name: string;
761
764
  reasoning_effort: string | null;
762
765
  rubric: Rubric;
@@ -788,10 +791,11 @@ interface AnalysisFailure {
788
791
  }
789
792
 
790
793
  interface AnalyzeDefaults {
794
+ agent: string;
791
795
  model_name: string;
792
796
  rubric: Rubric;
793
797
  prompt: string;
794
- reasoning_effort: string;
798
+ reasoning_effort: string | null;
795
799
  sandbox_provider: EvalSandboxProvider;
796
800
  }
797
801
  ```
@@ -806,8 +810,9 @@ interface Check {
806
810
  name: string;
807
811
  status: CheckStatus;
808
812
  source: CheckSource;
813
+ agent: string;
809
814
  model_name: string;
810
- reasoning_effort: string;
815
+ reasoning_effort: string | null;
811
816
  rubric: Rubric;
812
817
  prompt: string | null;
813
818
  sandbox_provider: EvalSandboxProvider;
@@ -843,10 +848,11 @@ interface TaskCheck {
843
848
  }
844
849
 
845
850
  interface CheckDefaults {
851
+ agent: string;
846
852
  model_name: string;
847
853
  rubric: Rubric;
848
854
  prompt: string;
849
- reasoning_effort: string;
855
+ reasoning_effort: string | null;
850
856
  sandbox_provider: EvalSandboxProvider;
851
857
  }
852
858
  ```