@evolvingmachines/evolve 0.0.66 → 0.0.67-train-harness-wave-2026-09-25.20260926.e00a8a6d

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 (28) hide show
  1. package/dist/{chunk-RFLMRPGK.js → chunk-DI6LPW2B.js} +5 -5
  2. package/dist/cli/index.cjs +38 -38
  3. package/dist/cli/index.d.cts +1 -1
  4. package/dist/cli/index.d.ts +1 -1
  5. package/dist/cli/index.js +30 -30
  6. package/dist/index.cjs +64 -60
  7. package/dist/index.d.cts +295 -16
  8. package/dist/index.d.ts +295 -16
  9. package/dist/index.js +48 -44
  10. package/dist/{types-84M4J_Vm.d.cts → types-Dj0iMl5V.d.cts} +59 -46
  11. package/dist/{types-84M4J_Vm.d.ts → types-Dj0iMl5V.d.ts} +59 -46
  12. package/harness-capabilities.json +285 -0
  13. package/package.json +9 -6
  14. package/skills/evolve-evals/references/cli-reference/analyze.md +4 -2
  15. package/skills/evolve-evals/references/cli-reference/check.md +3 -2
  16. package/skills/evolve-evals/references/cli-reference/run.md +2 -1
  17. package/skills/evolve-evals/references/core-concepts/agents.md +5 -0
  18. package/skills/evolve-evals/references/core-concepts/analyze.md +1 -1
  19. package/skills/evolve-evals/references/core-concepts/check.md +2 -2
  20. package/skills/evolve-evals/references/core-concepts/models.md +7 -7
  21. package/skills/evolve-evals/references/sdk-reference/analyses.md +4 -3
  22. package/skills/evolve-evals/references/sdk-reference/checks.md +3 -2
  23. package/skills/evolve-evals/references/sdk-reference/meta.md +1 -1
  24. package/skills/evolve-evals/references/sdk-reference/methods/checks.md +2 -0
  25. package/skills/evolve-evals/references/sdk-reference/methods/jobs.md +3 -1
  26. package/skills/evolve-evals/references/sdk-reference/methods/meta.md +6 -2
  27. package/skills/evolve-evals/references/sdk-reference/types.md +11 -5
  28. package/spec/openapi.yaml +145 -86
@@ -18,6 +18,40 @@
18
18
  ],
19
19
  "defaultReasoningEffort": "medium",
20
20
  "harnesses": {
21
+ "antigravity": {
22
+ "defaultModel": "gemini-3.8-flash",
23
+ "models": [
24
+ {
25
+ "alias": "gemini-3.8-flash",
26
+ "modelId": "vertex_ai/gemini-3.8-flash",
27
+ "description": "Latest Flash on Vertex AI: coding + agentic planning"
28
+ },
29
+ {
30
+ "alias": "gemini-3.5-flash-lite",
31
+ "modelId": "vertex_ai/gemini-3.5-flash-lite",
32
+ "description": "Latest Flash-Lite on Vertex AI: most cost-effective"
33
+ },
34
+ {
35
+ "alias": "gemini-3.1-pro-preview",
36
+ "modelId": "vertex_ai/gemini-3.1-pro-preview",
37
+ "description": "Latest Pro on Vertex AI: complex agentic + coding"
38
+ }
39
+ ],
40
+ "effortSupport": "level",
41
+ "efforts": [
42
+ "off",
43
+ "minimal",
44
+ "low",
45
+ "medium",
46
+ "high",
47
+ "xhigh",
48
+ "max",
49
+ "thinking"
50
+ ],
51
+ "defaultEffort": "high",
52
+ "supportsConfig": false,
53
+ "presets": []
54
+ },
21
55
  "claude": {
22
56
  "defaultModel": "opus",
23
57
  "models": [
@@ -236,6 +270,40 @@
236
270
  "supportsConfig": false,
237
271
  "presets": []
238
272
  },
273
+ "dsh": {
274
+ "defaultModel": "openrouter/deepseek/deepseek-v4.1-flash",
275
+ "models": [
276
+ {
277
+ "alias": "openrouter/deepseek/deepseek-v4.1-flash",
278
+ "modelId": "openrouter/deepseek/deepseek-v4.1-flash",
279
+ "description": "DeepSeek V4.1 Flash via OpenRouter"
280
+ },
281
+ {
282
+ "alias": "fireworks/deepseek-v4.1-flash",
283
+ "modelId": "fireworks/deepseek-v4.1-flash",
284
+ "description": "DeepSeek V4.1 Flash via Fireworks"
285
+ },
286
+ {
287
+ "alias": "openrouter/deepseek/deepseek-v4-pro-0813",
288
+ "modelId": "openrouter/deepseek/deepseek-v4-pro-0813",
289
+ "description": "DeepSeek V4 Pro via OpenRouter"
290
+ },
291
+ {
292
+ "alias": "fireworks/deepseek-v4-pro-0813",
293
+ "modelId": "fireworks/deepseek-v4-pro-0813",
294
+ "description": "DeepSeek V4 Pro via Fireworks"
295
+ }
296
+ ],
297
+ "effortSupport": "level",
298
+ "efforts": [
299
+ "low",
300
+ "medium",
301
+ "high"
302
+ ],
303
+ "defaultEffort": "high",
304
+ "supportsConfig": false,
305
+ "presets": []
306
+ },
239
307
  "gemini": {
240
308
  "defaultModel": "gemini-3.5-flash",
241
309
  "models": [
@@ -396,6 +464,184 @@
396
464
  "supportsConfig": false,
397
465
  "presets": []
398
466
  },
467
+ "pi": {
468
+ "defaultModel": "openrouter/anthropic/claude-opus-5",
469
+ "models": [
470
+ {
471
+ "alias": "openrouter/anthropic/claude-fable-5.1",
472
+ "modelId": "openrouter/anthropic/claude-fable-5.1",
473
+ "description": "Anthropic Fable 5.1 via OpenRouter"
474
+ },
475
+ {
476
+ "alias": "openrouter/anthropic/claude-opus-5",
477
+ "modelId": "openrouter/anthropic/claude-opus-5",
478
+ "description": "Anthropic Opus 5 via OpenRouter"
479
+ },
480
+ {
481
+ "alias": "openrouter/anthropic/claude-sonnet-5",
482
+ "modelId": "openrouter/anthropic/claude-sonnet-5",
483
+ "description": "Anthropic Sonnet 5 via OpenRouter"
484
+ },
485
+ {
486
+ "alias": "openrouter/anthropic/claude-haiku-4.5",
487
+ "modelId": "openrouter/anthropic/claude-haiku-4.5",
488
+ "description": "Anthropic Haiku via OpenRouter"
489
+ },
490
+ {
491
+ "alias": "openrouter/openai/gpt-6-astra",
492
+ "modelId": "openrouter/openai/gpt-6-astra",
493
+ "description": "OpenAI GPT-6 Astra via OpenRouter"
494
+ },
495
+ {
496
+ "alias": "openrouter/openai/gpt-5.6-sol",
497
+ "modelId": "openrouter/openai/gpt-5.6-sol",
498
+ "description": "OpenAI GPT-5.6 Sol via OpenRouter"
499
+ },
500
+ {
501
+ "alias": "openrouter/openai/gpt-5.6-terra",
502
+ "modelId": "openrouter/openai/gpt-5.6-terra",
503
+ "description": "OpenAI GPT-5.6 Terra via OpenRouter"
504
+ },
505
+ {
506
+ "alias": "openrouter/openai/gpt-5.6-luna",
507
+ "modelId": "openrouter/openai/gpt-5.6-luna",
508
+ "description": "OpenAI GPT-5.6 Luna via OpenRouter"
509
+ },
510
+ {
511
+ "alias": "openrouter/google/gemini-3.6-flash",
512
+ "modelId": "openrouter/google/gemini-3.6-flash",
513
+ "description": "Gemini 3.6 Flash via OpenRouter"
514
+ },
515
+ {
516
+ "alias": "openrouter/qwen/qwen3.7-max",
517
+ "modelId": "openrouter/qwen/qwen3.7-max",
518
+ "description": "Qwen 3.7 Max via OpenRouter"
519
+ },
520
+ {
521
+ "alias": "openrouter/moonshotai/kimi-k3",
522
+ "modelId": "openrouter/moonshotai/kimi-k3",
523
+ "description": "Kimi K3 via OpenRouter"
524
+ },
525
+ {
526
+ "alias": "openrouter/z-ai/glm-5.3",
527
+ "modelId": "openrouter/z-ai/glm-5.3",
528
+ "description": "Zhipu GLM-5.3 via OpenRouter"
529
+ },
530
+ {
531
+ "alias": "openrouter/z-ai/glm-5.3-flash",
532
+ "modelId": "openrouter/z-ai/glm-5.3-flash",
533
+ "description": "Zhipu GLM-5.3 Flash (OpenRouter id; the Evolve gateway serves it from Fireworks)"
534
+ },
535
+ {
536
+ "alias": "openrouter/deepseek/deepseek-v4.1-flash",
537
+ "modelId": "openrouter/deepseek/deepseek-v4.1-flash",
538
+ "description": "DeepSeek V4.1 Flash via OpenRouter"
539
+ }
540
+ ],
541
+ "effortSupport": "level",
542
+ "efforts": [
543
+ "off",
544
+ "minimal",
545
+ "low",
546
+ "medium",
547
+ "high",
548
+ "xhigh",
549
+ "max",
550
+ "thinking"
551
+ ],
552
+ "defaultEffort": "high",
553
+ "supportsConfig": false,
554
+ "presets": []
555
+ },
556
+ "prime-agent": {
557
+ "defaultModel": "openrouter/anthropic/claude-opus-5",
558
+ "models": [
559
+ {
560
+ "alias": "openrouter/anthropic/claude-fable-5.1",
561
+ "modelId": "openrouter/anthropic/claude-fable-5.1",
562
+ "description": "Anthropic Fable 5.1 via OpenRouter"
563
+ },
564
+ {
565
+ "alias": "openrouter/anthropic/claude-opus-5",
566
+ "modelId": "openrouter/anthropic/claude-opus-5",
567
+ "description": "Anthropic Opus 5 via OpenRouter"
568
+ },
569
+ {
570
+ "alias": "openrouter/anthropic/claude-sonnet-5",
571
+ "modelId": "openrouter/anthropic/claude-sonnet-5",
572
+ "description": "Anthropic Sonnet 5 via OpenRouter"
573
+ },
574
+ {
575
+ "alias": "openrouter/anthropic/claude-haiku-4.5",
576
+ "modelId": "openrouter/anthropic/claude-haiku-4.5",
577
+ "description": "Anthropic Haiku via OpenRouter"
578
+ },
579
+ {
580
+ "alias": "openrouter/openai/gpt-6-astra",
581
+ "modelId": "openrouter/openai/gpt-6-astra",
582
+ "description": "OpenAI GPT-6 Astra via OpenRouter"
583
+ },
584
+ {
585
+ "alias": "openrouter/openai/gpt-5.6-sol",
586
+ "modelId": "openrouter/openai/gpt-5.6-sol",
587
+ "description": "OpenAI GPT-5.6 Sol via OpenRouter"
588
+ },
589
+ {
590
+ "alias": "openrouter/openai/gpt-5.6-terra",
591
+ "modelId": "openrouter/openai/gpt-5.6-terra",
592
+ "description": "OpenAI GPT-5.6 Terra via OpenRouter"
593
+ },
594
+ {
595
+ "alias": "openrouter/openai/gpt-5.6-luna",
596
+ "modelId": "openrouter/openai/gpt-5.6-luna",
597
+ "description": "OpenAI GPT-5.6 Luna via OpenRouter"
598
+ },
599
+ {
600
+ "alias": "openrouter/google/gemini-3.6-flash",
601
+ "modelId": "openrouter/google/gemini-3.6-flash",
602
+ "description": "Gemini 3.6 Flash via OpenRouter"
603
+ },
604
+ {
605
+ "alias": "openrouter/qwen/qwen3.7-max",
606
+ "modelId": "openrouter/qwen/qwen3.7-max",
607
+ "description": "Qwen 3.7 Max via OpenRouter"
608
+ },
609
+ {
610
+ "alias": "openrouter/moonshotai/kimi-k3",
611
+ "modelId": "openrouter/moonshotai/kimi-k3",
612
+ "description": "Kimi K3 via OpenRouter"
613
+ },
614
+ {
615
+ "alias": "openrouter/z-ai/glm-5.3",
616
+ "modelId": "openrouter/z-ai/glm-5.3",
617
+ "description": "Zhipu GLM-5.3 via OpenRouter"
618
+ },
619
+ {
620
+ "alias": "openrouter/z-ai/glm-5.3-flash",
621
+ "modelId": "openrouter/z-ai/glm-5.3-flash",
622
+ "description": "Zhipu GLM-5.3 Flash (OpenRouter id; the Evolve gateway serves it from Fireworks)"
623
+ },
624
+ {
625
+ "alias": "openrouter/deepseek/deepseek-v4.1-flash",
626
+ "modelId": "openrouter/deepseek/deepseek-v4.1-flash",
627
+ "description": "DeepSeek V4.1 Flash via OpenRouter"
628
+ }
629
+ ],
630
+ "effortSupport": "level",
631
+ "efforts": [
632
+ "off",
633
+ "minimal",
634
+ "low",
635
+ "medium",
636
+ "high",
637
+ "xhigh",
638
+ "max",
639
+ "thinking"
640
+ ],
641
+ "defaultEffort": "high",
642
+ "supportsConfig": false,
643
+ "presets": []
644
+ },
399
645
  "qwen": {
400
646
  "defaultModel": "qwen3.7-max",
401
647
  "models": [
@@ -425,6 +671,45 @@
425
671
  "defaultEffort": "thinking",
426
672
  "supportsConfig": false,
427
673
  "presets": []
674
+ },
675
+ "zcode": {
676
+ "defaultModel": "openrouter/z-ai/glm-5.3",
677
+ "models": [
678
+ {
679
+ "alias": "openrouter/z-ai/glm-5.3",
680
+ "modelId": "openrouter/z-ai/glm-5.3",
681
+ "description": "Zhipu GLM-5.3 via OpenRouter"
682
+ },
683
+ {
684
+ "alias": "openrouter/z-ai/glm-5.3-flash",
685
+ "modelId": "openrouter/z-ai/glm-5.3-flash",
686
+ "description": "Zhipu GLM-5.3 Flash via OpenRouter"
687
+ },
688
+ {
689
+ "alias": "fireworks/glm-5.3",
690
+ "modelId": "fireworks/glm-5.3",
691
+ "description": "Zhipu GLM-5.3 via Fireworks"
692
+ },
693
+ {
694
+ "alias": "fireworks/glm-5.3-flash",
695
+ "modelId": "fireworks/glm-5.3-flash",
696
+ "description": "Zhipu GLM-5.3 Flash via Fireworks"
697
+ }
698
+ ],
699
+ "effortSupport": "level",
700
+ "efforts": [
701
+ "off",
702
+ "minimal",
703
+ "low",
704
+ "medium",
705
+ "high",
706
+ "xhigh",
707
+ "max",
708
+ "thinking"
709
+ ],
710
+ "defaultEffort": "high",
711
+ "supportsConfig": false,
712
+ "presets": []
428
713
  }
429
714
  }
430
715
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evolvingmachines/evolve",
3
- "version": "0.0.66",
3
+ "version": "0.0.67-train-harness-wave-2026-09-25.20260926.e00a8a6d",
4
4
  "keywords": [
5
5
  "ai",
6
6
  "agents",
@@ -49,14 +49,15 @@
49
49
  "build": "tsx scripts/generate-harness-capabilities.ts --check && tsup --minify && node scripts/copy-spec.mjs && node scripts/copy-skills.mjs",
50
50
  "generate:capabilities": "tsx scripts/generate-harness-capabilities.ts",
51
51
  "dev": "tsup src/index.ts --watch",
52
- "type-check": "tsc --noEmit && tsc -p tsconfig.types-test.json",
52
+ "type-check": "tsc --noEmit && tsc -p tsconfig.types-test.json && node scripts/check-test-syntax.mjs",
53
53
  "test": "npm run test:unit && npm run test:integration",
54
54
  "pretest:unit": "npm run build",
55
- "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 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 && tsx tests/unit/sandbox-errors.test.ts && tsx --expose-gc tests/unit/hosted-tar.test.ts",
55
+ "test:unit": "node scripts/check-test-syntax.mjs && 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/pi-parser.test.ts && tsx tests/unit/prime-agent-parser.test.ts && tsx tests/unit/pi-family-mcp.test.ts && tsx tests/unit/dsh-parser.test.ts && tsx tests/unit/dsh-mcp.test.ts && tsx tests/unit/zcode-parser.test.ts && tsx tests/unit/zcode-mcp.test.ts && tsx tests/unit/antigravity-parser.test.ts && tsx tests/unit/antigravity-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/harness-uniformity.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 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 && tsx tests/unit/sandbox-errors.test.ts && tsx --expose-gc tests/unit/hosted-tar.test.ts",
56
56
  "test:unit:upload-from-path": "tsx tests/unit/upload-file-from-path.test.ts",
57
57
  "test:unit:upload-stream": "tsx tests/unit/hosted-upload-stream.test.ts",
58
58
  "test:unit:upload-memory": "tsx tests/unit/hosted-upload-memory.test.ts",
59
59
  "test:unit:parity": "tsx tests/unit/provider-parity.test.ts",
60
+ "test:unit:uniformity": "tsx tests/unit/harness-uniformity.test.ts",
60
61
  "test:unit:semaphore": "tsx tests/unit/semaphore.test.ts",
61
62
  "test:unit:swarm": "tsx tests/unit/swarm-concurrency.test.ts",
62
63
  "test:unit:verify": "tsx tests/unit/swarm-verify.test.ts",
@@ -89,6 +90,8 @@
89
90
  "test:unit:tool-name": "tsx tests/unit/parser-tool-name.test.ts",
90
91
  "test:unit:kimi-parser": "tsx tests/unit/kimi-parser.test.ts",
91
92
  "test:unit:kimi-mcp": "tsx tests/unit/kimi-mcp.test.ts",
93
+ "test:unit:dsh-parser": "tsx tests/unit/dsh-parser.test.ts",
94
+ "test:unit:dsh-mcp": "tsx tests/unit/dsh-mcp.test.ts",
92
95
  "test:unit:codex-toml": "tsx tests/unit/codex-toml.test.ts",
93
96
  "pretest:integration": "npm run build",
94
97
  "test:integration": "npm run test:01",
@@ -129,9 +132,9 @@
129
132
  },
130
133
  "dependencies": {
131
134
  "@agentclientprotocol/sdk": "^0.5.1",
132
- "@evolvingmachines/daytona": "0.0.66",
133
- "@evolvingmachines/e2b": "0.0.66",
134
- "@evolvingmachines/modal": "0.0.66",
135
+ "@evolvingmachines/daytona": "0.0.67-train-harness-wave-2026-09-25.20260926.e00a8a6d",
136
+ "@evolvingmachines/e2b": "0.0.67-train-harness-wave-2026-09-25.20260926.e00a8a6d",
137
+ "@evolvingmachines/modal": "0.0.67-train-harness-wave-2026-09-25.20260926.e00a8a6d",
135
138
  "ajv": "^8.17.1",
136
139
  "p-map": "^7.0.2",
137
140
  "smol-toml": "^1.7.0",
@@ -18,7 +18,7 @@ evolve analyze --show-defaults
18
18
  evolve analyze --show-defaults --json
19
19
  ```
20
20
 
21
- This returns the current model, reasoning effort, sandbox provider, prompt, and rubric. Defaults mode takes no job ID or other analysis options.
21
+ This returns the current agent, model, reasoning effort, sandbox provider, prompt, and rubric. Defaults mode takes no job ID or other analysis options.
22
22
 
23
23
  ## Select trials
24
24
 
@@ -51,6 +51,7 @@ Cancelled trials are excluded. `--passing` and `--failing` cannot be combined. T
51
51
 
52
52
  ```bash
53
53
  evolve analyze "$JOB_ID" \
54
+ --agent codex --model gpt-5.5 \
54
55
  --rubric rubric.toml \
55
56
  --prompt prompt.txt \
56
57
  --watch
@@ -58,7 +59,8 @@ evolve analyze "$JOB_ID" \
58
59
 
59
60
  | Option | Meaning |
60
61
  | --- | --- |
61
- | `-m`, `--model <name>` | Analyzer model. |
62
+ | `-a`, `--agent <name>` | Agent the analyzer runs on. Default `claude`. |
63
+ | `-m`, `--model <name>` | Analyzer model, from that agent's models. |
62
64
  | `--effort <value>` | Reasoning effort. |
63
65
  | `-r`, `--rubric <path>` | TOML, YAML, or JSON rubric. |
64
66
  | `-p`, `--prompt <path>` | Text file replacing the default prompt. |
@@ -44,12 +44,13 @@ evolve check --show-defaults
44
44
  | Option | Meaning |
45
45
  | --- | --- |
46
46
  | `--name <name>` | Check label. Defaults to the acceptance timestamp. |
47
- | `-m`, `--model <name>` | Checker model. |
47
+ | `-a`, `--agent <name>` | Agent the checker runs on. Default `claude`. |
48
+ | `-m`, `--model <name>` | Checker model, from that agent's models. |
48
49
  | `--effort <value>` | Reasoning effort. |
49
50
  | `-r`, `--rubric <path>` | TOML, YAML, or JSON rubric. |
50
51
  | `-p`, `--prompt <path>` | Replacement prompt text file. |
51
52
  | `-e`, `--env <provider>` | Checker sandbox provider. |
52
- | `--show-defaults` | Print the prompt, rubric, model, effort, and provider, then exit. |
53
+ | `--show-defaults` | Print the agent, model, effort, provider, prompt, and rubric, then exit. |
53
54
  | `--watch` | Wait until every task check settles. |
54
55
  | `-q`, `--quiet` | With watch, suppress intermediate progress. |
55
56
 
@@ -148,7 +148,8 @@ See [Jobs](/core-concepts/jobs) for the retry and spend rules.
148
148
  | Option | Meaning |
149
149
  | --- | --- |
150
150
  | `--analyze` | Enable analysis with the platform defaults. |
151
- | `--analyze-model <name>` | Analyzer model. |
151
+ | `--analyze-agent <name>` | Agent the analyzer runs on. Default `claude`. |
152
+ | `--analyze-model <name>` | Analyzer model, from that agent's models. |
152
153
  | `--analyze-rubric <path>` | TOML, YAML, or JSON rubric. |
153
154
  | `--analyze-prompt <path>` | Replacement prompt file. |
154
155
  | `--analyze-provider <provider>` | Analyzer sandbox provider. |
@@ -22,6 +22,11 @@ One arm
22
22
  | `kimi` | Kimi Code |
23
23
  | `opencode` | OpenCode |
24
24
  | `droid` | Droid |
25
+ | `pi` | pi |
26
+ | `prime-agent` | Prime Agent |
27
+ | `dsh` | DeepSeek Harness |
28
+ | `zcode` | Z Code |
29
+ | `antigravity` | Antigravity CLI |
25
30
 
26
31
  ```bash
27
32
  evolve run -d harbor-examples@1.0 -i hello-world \
@@ -104,7 +104,7 @@ evolve analyze "$JOB_ID" -r rubric.toml -p prompt.txt --watch
104
104
 
105
105
  An analyzer prompt can use `{trial_path}`, `{task_section}`, and `{criteria_guidance}`. Evolve appends the required output format.
106
106
 
107
- Use `-m`, `--effort`, `-e`, and `-n` for model, effort, provider, and concurrency. On job creation, use the corresponding `--analyze-*` flags. See the [full reference](/cli-reference/analyze).
107
+ Use `-a`, `-m`, `--effort`, `-e`, and `-n` for agent, model, effort, provider, and concurrency. The analyzer runs on `claude` unless `-a` names another agent; the model must be one of that agent's [models](/core-concepts/models#analysis-and-check-models). On job creation, use the corresponding `--analyze-*` flags. See the [full reference](/cli-reference/analyze).
108
108
 
109
109
  ## The result
110
110
 
@@ -52,13 +52,13 @@ A check is a hosted model run and incurs cost. `evolve dataset check` is a separ
52
52
  | Execution | Valid reference solution; rejection of non-solutions; environment works; stable verification; sufficient limits. |
53
53
  | Feasibility | The task is solvable. |
54
54
 
55
- Inspect the default rubric's criteria and their complete guidance, and the current model, effort, provider, and prompt:
55
+ Inspect the default rubric's criteria and their complete guidance, and the current agent, model, effort, provider, and prompt:
56
56
 
57
57
  ```bash
58
58
  evolve check --show-defaults
59
59
  ```
60
60
 
61
- Use `-r rubric.toml` or `-p prompt.txt` to customize. Check prompt tokens are `{task_path}`, `{file_tree}`, and `{criteria_guidance}`. The required result format is appended automatically.
61
+ Use `-r rubric.toml` or `-p prompt.txt` to customize. Check prompt tokens are `{task_path}`, `{file_tree}`, and `{criteria_guidance}`. The required result format is appended automatically. The checker runs on `claude` unless `-a` names another agent; pass a model from that agent's [models](/core-concepts/models#analysis-and-check-models) with `-m`.
62
62
 
63
63
  ## The result
64
64
 
@@ -58,15 +58,15 @@ In `/api/meta`, `agents[].effort_support` identifies the mode: `level`, `binary`
58
58
 
59
59
  ## Analysis and check models
60
60
 
61
- Trace analysis and task checks use the Claude Code harness. Select their model separately:
61
+ Trace analysis and task checks run on Claude Code unless you choose another agent. Select their agent and model separately from the evaluation arms:
62
62
 
63
- | Operation | Model option |
64
- | --- | --- |
65
- | `evolve analyze` | `-m` |
66
- | `evolve check` | `-m` |
67
- | Analysis attached to `evolve run` | `--analyze-model` |
63
+ | Operation | Agent option | Model option |
64
+ | --- | --- | --- |
65
+ | `evolve analyze` | `-a` | `-m` |
66
+ | `evolve check` | `-a` | `-m` |
67
+ | Analysis attached to `evolve run` | `--analyze-agent` | `--analyze-model` |
68
68
 
69
- Their default is `openrouter/deepseek/deepseek-v4.1-flash`. Choose from the supported Claude Code roster.
69
+ The default model is `openrouter/deepseek/deepseek-v4.1-flash`. The model must be one of the chosen agent's models, so with an agent that does not list the default, pass `-m` too. In `/api/meta`, `analyze.agents` lists the agents these commands accept, each agent's models, and the effort each model runs at when you pass none.
70
70
 
71
71
  **[Configure a run](/cli-reference/run)**
72
72
 
@@ -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 |
@@ -84,7 +85,7 @@ defaults = await analyses().defaults()
84
85
  print(defaults["model_name"], defaults["rubric"], defaults["prompt"])
85
86
  ```
86
87
 
87
- The response includes `model_name`, `rubric`, `prompt`, `reasoning_effort`, and `sandbox_provider`. The prompt is the editable template text.
88
+ The response includes `agent`, `model_name`, `rubric`, `prompt`, `reasoning_effort`, and `sandbox_provider`. The prompt is the editable template text.
88
89
 
89
90
  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
91
 
@@ -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 |
@@ -34,7 +34,7 @@ Also available as `hosted().meta()` in both languages.
34
34
  | `sandbox_providers` | Which providers support the task's resources and features? |
35
35
  | `platform_constraints` | Which requirements cannot run on this deployment? |
36
36
  | `network_modes` | Which network modes can a task declare? |
37
- | `analyze` | Which analyzer models and reasoning efforts are available? |
37
+ | `analyze` | Which agents can analyses and checks run on, with which models and reasoning efforts? |
38
38
  | `limits` | What are the current defaults and bounds for jobs, pages, uploads, and comparisons? |
39
39
  | `statuses` | Which states exist, and which are terminal? |
40
40
  | `agent_registration` | Which names, environment keys, and upload sizes can a custom agent use? |
@@ -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;
@@ -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;
@@ -77,9 +77,13 @@ interface CapabilityDocument {
77
77
  dataset_version: StatusVocabulary;
78
78
  };
79
79
  analyze?: {
80
+ default_agent: string;
80
81
  default_model: string;
81
- reasoning_efforts: string[];
82
- models: { alias: string; model_id: string; default_reasoning_effort: string }[];
82
+ agents: {
83
+ name: string;
84
+ reasoning_efforts: string[];
85
+ models: { alias: string; model_id: string; default_reasoning_effort: string | null }[];
86
+ }[];
83
87
  };
84
88
  limits: {
85
89
  job: {