Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
0dea549
refactor(runtime): enforce canonical model execution boundary
drewstone Aug 4, 2026
2765837
fix(runtime): enforce exact model execution evidence
drewstone Aug 4, 2026
9e3435b
fix(bench): make package test timeout caller-controlled
drewstone Aug 4, 2026
753c0a0
fix(runtime): migrate exact execution consumers
drewstone Aug 4, 2026
a24e675
test(runtime): update examples for exact agent profiles
drewstone Aug 4, 2026
8c78350
docs(runtime): refresh exact execution API
drewstone Aug 4, 2026
603bbd6
fix(runtime): reject ambient execution authority
drewstone Aug 4, 2026
290d67b
test(runtime): use exact agent profiles
drewstone Aug 4, 2026
26f852d
test(runtime): cover exact sandbox authority
drewstone Aug 4, 2026
0612b6d
fix(runtime): validate executable profiles at intake
drewstone Aug 4, 2026
26983a8
docs(runtime): document exact profile intake
drewstone Aug 4, 2026
2ea1c4c
refactor(runtime): remove bypassing execution paths
drewstone Aug 4, 2026
eec691e
fix(improvement): require exact author profiles
drewstone Aug 4, 2026
449d76f
test(bench): use an exact solver profile
drewstone Aug 4, 2026
4c66adf
refactor(runtime): enforce profiled model execution
drewstone Aug 4, 2026
3a25912
fix(bench): route model execution through exact profiles
drewstone Aug 4, 2026
63c2d27
fix(bench): align exact shared-package contracts
drewstone Aug 4, 2026
87348de
fix(runtime): enforce exact profile model calls
drewstone Aug 4, 2026
54462fd
fix(runtime): harden model execution boundary scan
drewstone Aug 4, 2026
ea3fc2a
feat(runtime): bind exact profiles to task backends
drewstone Aug 4, 2026
37c2b20
fix(runtime): preserve profile retry controls
drewstone Aug 4, 2026
dad23bf
test(runtime): pin the single router transport call
drewstone Aug 4, 2026
caf1a41
chore(release): align exact shared package cohort
drewstone Aug 4, 2026
2040220
fix(runtime): leave model request deadlines unlimited
drewstone Aug 4, 2026
b65ee4d
fix(runtime): forward conversation headers through profiles
drewstone Aug 4, 2026
76030cf
test(candidate-execution): remove wall-clock flake
drewstone Aug 4, 2026
aff0f84
docs(runtime): map exact profile execution replacements
drewstone Aug 4, 2026
3d019d9
chore(release): prepare exact profile cohort
drewstone Aug 4, 2026
bcaa068
fix(runtime): preserve active model cancellation
drewstone Aug 4, 2026
996e15f
fix(release): report packed cohort cost provenance
drewstone Aug 4, 2026
e8dfede
fix(runtime): seal router retry authority
drewstone Aug 4, 2026
29646bf
fix(runtime): enforce profiled supervisor calls
drewstone Aug 4, 2026
1fbd405
chore(release): align latest shared SDK cohort
drewstone Aug 4, 2026
5ccca6f
fix(supervise): account interrupted router turns
drewstone Aug 4, 2026
aafd2a1
fix(supervise): remove guessed worker token floor
drewstone Aug 4, 2026
ae0e636
fix(bench): import scripted brain from testing entry
drewstone Aug 4, 2026
9b38355
chore(release): advance published agent cohort
drewstone Aug 4, 2026
979906a
fix(release): align eval cohort metadata
drewstone Aug 4, 2026
37d8365
fix(release): enforce exact shared package cohort
drewstone Aug 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 5 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,21 +81,21 @@ jobs:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: tangle-network/agent-sdk
ref: fc00613985c86f917a679c9bf957e6af8cbedb7c # @tangle-network/agent-interface@0.43.0
ref: 36b8e3ecc57e9a62130eb2b0fdc1c3b5be01b338 # @tangle-network/agent-interface@0.43.1
path: .cohort/agent-sdk
persist-credentials: false

- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: tangle-network/agent-eval
ref: 42a044f29725f0587d6ab0d9783f4e889d5fb8f7 # v0.143.0
ref: cd4c3195fec79c79976ce2fbe43f307107544798 # v0.144.4
path: .cohort/agent-eval
persist-credentials: false

- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: tangle-network/agent-knowledge
ref: 3a41d557a5549c324fad2b101d02f0bf30657cac # v7.0.8
ref: b5c82eb9a508b13a32e14353a867c197cda517b8 # v7.0.11
path: .cohort/agent-knowledge
persist-credentials: false

Expand Down Expand Up @@ -132,6 +132,8 @@ jobs:
run: pnpm run build

- name: Verify agent-bench against current agent-runtime
env:
AGENT_BENCH_PACKAGE_TEST_TIMEOUT_MS: 900000
run: pnpm run verify:bench

official-optimizers:
Expand Down
10 changes: 7 additions & 3 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -135,23 +135,23 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: tangle-network/agent-sdk
ref: fc00613985c86f917a679c9bf957e6af8cbedb7c # @tangle-network/agent-interface@0.43.0
ref: 36b8e3ecc57e9a62130eb2b0fdc1c3b5be01b338 # @tangle-network/agent-interface@0.43.1
path: .cohort/agent-sdk
persist-credentials: false

- name: Check out exact Eval release
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: tangle-network/agent-eval
ref: 42a044f29725f0587d6ab0d9783f4e889d5fb8f7 # v0.143.0
ref: cd4c3195fec79c79976ce2fbe43f307107544798 # v0.144.4
path: .cohort/agent-eval
persist-credentials: false

- name: Check out exact Knowledge release
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: tangle-network/agent-knowledge
ref: 3a41d557a5549c324fad2b101d02f0bf30657cac # v7.0.8
ref: b5c82eb9a508b13a32e14353a867c197cda517b8 # v7.0.11
path: .cohort/agent-knowledge
persist-credentials: false

Expand All @@ -169,6 +169,8 @@ jobs:
run: pnpm run verify:primeintellect

- name: Verify agent-bench against this release
env:
AGENT_BENCH_PACKAGE_TEST_TIMEOUT_MS: 900000
run: pnpm run verify:bench

- name: Package and verify the exact Runtime archive
Expand Down Expand Up @@ -296,6 +298,8 @@ jobs:
run: pnpm --filter @tangle-network/agent-bench run wait:published-dependencies

- name: Verify packed agent-bench against published dependencies
env:
AGENT_BENCH_PACKAGE_TEST_TIMEOUT_MS: 900000
run: pnpm run verify:bench:published

- name: Verify tag/version lock
Expand Down
31 changes: 30 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,34 @@
# Changelog

## 0.129.0

- Require Agent Eval 0.144.4, Agent Interface 0.43.1, Agent Knowledge 7.0.11, and Sandbox 0.19.1 as one dependency set, and route the official-optimizer callback through Runtime's exact `AgentProfile` execution path.
- Reject model, provider, reasoning, prompt, tool, resource, harness, and generation-setting conflicts before transport; consumers must declare those fields in the profile.
- Require `defineLeaderboard` callers to supply an exact `baseProfile`; remove its `modelBackend` override so each matrix cell's profile remains the only model authority.
- Require generic coder, researcher, and supervised-knowledge paths to receive complete profiles; remove harness/model overlays and MCP environment alias ladders.
- Resolve Sandbox execution only from `AgentProfile.harness`; a backend type may confirm that choice but cannot replace it.
- Parse, detach, and deeply freeze a complete `AgentProfile` before Scope, registry, nested-driver, or personified execution can honor any built-in or caller-supplied executor.
- Require `driverChild(profile, ...)` and `worktreeLoopRunner({ rootProfile, ... })`; remove name-only driver and personified-root shortcuts.
- Remove the public `runLocalHarness` process shortcut; use `createWorktreeCliExecutor({ profile, ... })` directly or `createExecutor({ backend: 'cli-worktree', ... })` inside a supervised run so the CLI and model derive from one exact `AgentProfile`.
- Keep missing token usage and billed cost unknown, and report reasoning-token usage when the provider supplies it.

### Removed public execution shortcuts

- Remove `driverLoopGenerator`, `DriverLoopGeneratorOptions`, `buildDriverSystem`, and `researchDriverNote`; use `improve({ surface: 'code', code: { profile, executorForWorktree, buildPrompt } })` or `agenticGenerator` so every authoring call uses the exact declared profile through Runtime.
- Remove `AGENTIC_PROFILE_RESOURCE_ROOT`; profile resources now travel inside the exact `AgentProfile` and Runtime materializes them at execution.
- Remove `AgentBackendKind`, `ResolveAgentBackendOptions`, `resolveAgentBackend`, `createOpenAICompatibleBackend`, and `BackendRetryPolicy`; select a built-in transport with `ExecutorConfig` and `createExecutor(...)`, bind it to an exact profile with `createProfileExecutionBackend(...)` for `runAgentTaskStream` or conversation APIs, or pass both directly to `streamAgentTurn`.
- Move retry configuration into `AgentProfile.model.metadata.retry`, including attempt count, per-attempt timeout, retryable status codes, exponential-backoff bounds, and jitter, so deleting the parallel backend API does not delete caller control.
- Remove the public Router chat and tool-loop API (`RouterConfig`, `RouterChatResult`, `RouterChatToolsResult`, `RouterToolCall`, `RouterToolLoopResult`, `routerChatWithUsage`, `routerChatWithTools`, `streamRouterChatWithTools`, `routerToolLoop`, and `routerBrain`); use `createExecutor(...)` plus `streamAgentTurn` and `collectAgentTurn`, use `ToolLoopToolCall` for the provider-neutral tool-call record, use `profileChatClient` for Eval integrations, or use `supervise(...)` for a profiled supervisor.
- Replace `ShotPersona` with `ShotSpec.profile`, which carries a complete exact profile instead of a prompt/model-only override.
- Remove `canonicalizeAuthoredProfile`; inputs must already satisfy `agentProfileSchema`, with no flat legacy spelling that Runtime silently repairs.
- Remove `authoredWorker`; use `workerFromBackend(...)`, which admits each complete profile through the same executor path as every other supervised worker.
- Remove the public `chatCompletionsTransport` constructor; inject an offline completion function through `ChatTransportExecutorOptions.complete`, or use an exact profile with `createExecutor(...)` for real execution.
- Remove `createPrimeIntellectBackend`; use `primeIntellectExecutorConfig(context)` with `createExecutor(...)`, then execute an exact profile through `streamAgentTurn` or bind it with `createProfileExecutionBackend(...)` when an `AgentExecutionBackend` is required.
- Remove `uiAuditorProfile`, `createInProcessUiAuditClient`, and their browser/judge option types; author a normal `AgentProfile`, execute it through Runtime, and keep using `UiAuditTask`, `encodeAuditTaskEnvelope`, `formatAuditorPrompt`, `parseAuditorEvents`, and `createUiAuditorValidator` from `/profiles`.
- Remove the bundled UI-audit example and the Playwright peer dependency because browser placement belongs to the caller-owned execution environment, not a profile-specific Runtime client.
- Remove direct model injection from `SuperviseOptions`, `RunGraphOptions`, and `SupervisorAgentDeps`, and remove `driverAgent`, `DriverAgentOptions`, and `ToolLoopChat` from `/kernel`; production supervisor calls now derive model execution only from the exact root `AgentProfile`, while deterministic scripted calls live under the explicit `/testing` entrypoint.
- Bind every root Router turn to one Runtime-authored cancellation signal, call id, and correlation id; preserve provider-observed model, prompt-cache, retry-attempt, reasoning-token, and billed-cost evidence; meter a mismatched model response before refusing its output; and reuse one nonempty idempotency key across all physical retries of the logical call.

## 0.128.0

### chat-transport executor: workers on a bare chat-completions transport
Expand Down Expand Up @@ -151,7 +180,7 @@ The fix therefore lives in agent-eval, but a consumer only receives it if this p

BREAKING. `LocalHarness` was a private three-member vocabulary (`'claude' | 'codex' | 'opencode'`) that spelled one harness differently from every other layer in the stack. It is now a narrowing of the shared `HarnessType`: **`'claude'` is renamed to `'claude-code'`**. `claude` remains the EXECUTABLE name and lives only in the harness table's `command` field.

Callers to update: `runLocalHarness({ harness })`, `harnessInvocation(harness, …)`, `runWorktreeHarness({ harness })`, `agenticGenerator({ harness })`, `driverLoopGenerator({ harness })`, `createInProcessExecutor({ harnesses })`, `AuthoredHarness.harness`, and the `AGENT_RUNTIME_LOCAL_HARNESSES` env list. Anything that passed `'claude'` passes `'claude-code'`; `codex` and `opencode` are unchanged.
Callers to update: `runLocalHarness({ harness })`, `harnessInvocation(harness, …)`, `runWorktreeHarness({ harness })`, `agenticGenerator({ harness })`, `createInProcessExecutor({ harnesses })`, `AuthoredHarness.harness`, and the `AGENT_RUNTIME_LOCAL_HARNESSES` env list. Anything that passed `'claude'` passes `'claude-code'`; `codex` and `opencode` are unchanged.

Deleting the alias removed `materializerHarness()` outright — a `LocalHarness` is now handed straight to the profile materializer with no translation.

Expand Down
89 changes: 69 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,15 @@ That file defines the scripted `worker`, `output`, and `validator` used below so
Replace the scripted worker with a sandbox, CLI bridge, or router backend without changing the driver.

```ts
import type { AgentProfile } from '@tangle-network/agent-interface'
import { inProcessSandboxClient, runAgentRounds } from '@tangle-network/agent-runtime/kernel'

const noteWriterProfile = {
name: 'note-writer',
harness: 'cli-base',
model: { provider: 'scripted', default: 'scripted/note-writer' },
} satisfies AgentProfile

const result = await runAgentRounds<Task, Note, 'refine' | 'pick-winner' | 'fail'>({
task: { prompt: 'Write a one-line release note for one-click restore.' },
driver: {
Expand All @@ -47,7 +54,7 @@ const result = await runAgentRounds<Task, Note, 'refine' | 'pick-winner' | 'fail
decide: (history) =>
history.some((shot) => shot.verdict?.valid) ? 'pick-winner' : history.length < 3 ? 'refine' : 'fail',
},
agentRun: { profile: { name: 'note-writer' } as AgentProfile, taskToPrompt: (t) => t.prompt },
agentRun: { profile: noteWriterProfile, taskToPrompt: (t) => t.prompt },
output, // parses the worker's event stream into { note }
validator, // pass/fail check: does the note mention "rollback"?
ctx: { sandboxClient: worker },
Expand All @@ -60,9 +67,9 @@ Run it from a clone of this repo and you get exactly this:
```bash
$ pnpm i && pnpm build
$ pnpm tsx examples/quickstart/quickstart.ts
shot 0: reject: "Shipped one-click restore."
shot 1: PASS: "Shipped one-click restore with an instant rollback path."
decision: pick-winner: winner: shot 1
shot 0: reject "Shipped one-click restore."
shot 1: PASS "Shipped one-click restore with an instant rollback path."
decision: pick-winner winner: shot 1
```

The annotated version is [`examples/driver-loop`](./examples/driver-loop).
Expand Down Expand Up @@ -119,6 +126,7 @@ const result = await supervise(
{
name: 'supervisor',
harness: 'cli-base',
model: { provider: 'tangle-router', default: process.env.TANGLE_MODEL! },
prompt: {
systemPrompt: 'Delegate to workers; do not solve the task yourself.',
},
Expand All @@ -137,28 +145,55 @@ The profile is never changed.

```ts
import { improve, officialGepa } from '@tangle-network/agent-runtime'
import { canonicalCandidateDigest } from '@tangle-network/agent-interface'
import { profileOptimizerModelCall } from '@tangle-network/agent-runtime/kernel'
import {
type AgentProfile,
canonicalAgentProfileDigest,
canonicalCandidateDigest,
} from '@tangle-network/agent-interface'

const executionRef = canonicalCandidateDigest({
deployment: process.env.AGENT_DEPLOYMENT_SHA!,
model: process.env.AGENT_MODEL!,
tools: process.env.AGENT_TOOLSET_SHA!,
})

const optimizerProfile = {
name: 'support-prompt-optimizer',
harness: 'cli-base',
model: {
provider: 'tangle-router',
default: process.env.OPTIMIZER_MODEL!,
metadata: { maxTokens: 16_384 },
},
} satisfies AgentProfile
const optimizerPricing = {
inputUsdPerMillion: Number(process.env.OPTIMIZER_INPUT_USD_PER_MILLION),
outputUsdPerMillion: Number(process.env.OPTIMIZER_OUTPUT_USD_PER_MILLION),
}
const optimizer = {
model: process.env.OPTIMIZER_MODEL!,
baseUrl: process.env.OPTIMIZER_BASE_URL!,
apiKey: process.env.OPTIMIZER_API_KEY!,
model: optimizerProfile.model.default,
call: profileOptimizerModelCall({
profile: optimizerProfile,
context: 'support-prompt optimizer',
executor: {
backend: 'router',
routerBaseUrl: process.env.OPTIMIZER_BASE_URL!,
routerKey: process.env.OPTIMIZER_API_KEY!,
},
pricing: optimizerPricing,
}),
callRef: canonicalCandidateDigest({
profile: canonicalAgentProfileDigest(optimizerProfile),
deployment: process.env.OPTIMIZER_DEPLOYMENT_SHA!,
}),
budget: {
maxCostUsd: 10,
maxRequests: 50,
maxRequestBytes: 2_000_000,
maxResponseBytes: 2_000_000,
maxOutputTokensPerRequest: 16_384,
pricing: {
inputUsdPerMillion: Number(process.env.OPTIMIZER_INPUT_USD_PER_MILLION),
outputUsdPerMillion: Number(process.env.OPTIMIZER_OUTPUT_USD_PER_MILLION),
},
pricing: optimizerPricing,
},
}

Expand Down Expand Up @@ -207,7 +242,7 @@ There is no local fallback.
Install its optional Python process before using it:

```bash
python -m pip install "agent-eval-rpc==0.143.0"
python -m pip install "agent-eval-rpc==0.144.4"
python -m pip install "gepa[full]==0.1.4"
```

Expand All @@ -221,14 +256,14 @@ python -m pip install "gepa[full] @ git+https://github.com/gepa-ai/gepa.git@f919
Use `officialSkillOpt(...)` for Microsoft's SkillOpt:

```bash
python -m pip install "agent-eval-rpc==0.143.0"
python -m pip install "agent-eval-rpc==0.144.4"
python -m pip install "skillopt @ git+https://github.com/microsoft/SkillOpt.git@61735e3922efc2b90c6d6cab561e62e98452ca90"
```

SkillOpt 0.2.0's published wheel omits prompt files required by `ReflACTTrainer`, so the tested SkillOpt source revision remains necessary.
SkillOpt and GEPA's standard reflection engine require `optimizer: { model, baseUrl, apiKey, budget }`.
SkillOpt and GEPA's standard reflection engine require `optimizer: { model, call, callRef, budget }`.
Agent-based GEPA engines may own their model connection instead.
Agent Eval proxies those model calls, enforces the nested budget, and records their cost.
Runtime owns those model calls through one exact `AgentProfile`; Agent Eval enforces the nested budget and records their measured cost and execution evidence without receiving provider credentials.
`costCeiling` is the total limit for optimizer calls, candidate runs, judges, and final scoring.
Runtime returns `hold` when any part of that cost is unknown.
Runtime rejects a reported total above the limit.
Expand Down Expand Up @@ -269,7 +304,7 @@ It uses Runtime's isolated git worktrees and coding-agent candidate execution:
```ts
const result = await improve({
surface: 'code',
code: { repoRoot, baseRef, generator },
code: { repoRoot, baseRef, profile, generator },
scenarios,
judge,
agent,
Expand Down Expand Up @@ -414,13 +449,27 @@ Here, `runProductAgent` is the application's existing entry point, not another l

```ts
import {
createPrimeIntellectBackend,
primeIntellectExecutorConfig,
runPrimeIntellectProgram,
} from '@tangle-network/agent-runtime/primeintellect'
import {
collectAgentTurn,
createExecutor,
streamAgentTurn,
} from '@tangle-network/agent-runtime/kernel'

await runPrimeIntellectProgram(async (episode) => {
const backend = createPrimeIntellectBackend(episode)
return runProductAgent({ task: episode.task, backend })
const profile = makeProductProfile({ model: episode.model.name })
return collectAgentTurn(
streamAgentTurn(
{
kind: 'executor',
profile,
factory: createExecutor(primeIntellectExecutorConfig(episode)),
},
episode.task.prompt,
),
)
})
```

Expand Down
4 changes: 4 additions & 0 deletions bench/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## 0.7.2

- Consume Runtime 0.129.0, Eval 0.144.4, Interface 0.43.1, Knowledge 7.0.11, and Sandbox 0.19.1 so benchmark model calls use the exact-profile execution boundary and the released optimizer callback contract without loading duplicate agent contracts.

## 0.7.1

- Consume Runtime 0.126.0 with Eval 0.143.0 and Knowledge 7.0.8, so campaign cost remains observed, estimated, or explicitly uncaptured across the complete benchmark dependency tree.
Expand Down
12 changes: 8 additions & 4 deletions bench/gen3-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@
"repsPerInstance": 2,
"premeasuredBaselinePath": "/tmp/claude-1000/-home-drew-code-supervisor-lab/f06fd156-042a-4ef9-bd88-f2ec7f52b90c/scratchpad/hh/gen3/premeasured-baseline.json",
"maxShots": 3,
"proposerHarness": "claude-code",
"proposerHarness": "pi",
"proposerProfile": "default-author.profile.json",
"proposerTimeoutMs": 2400000,
"analystModels": [
"glm-5.2",
Expand Down Expand Up @@ -77,19 +78,22 @@
{
"name": "default-author",
"profile": "default-author.profile.json",
"harness": "claude"
"harness": "pi",
"model": "glm-5.2"
},
{
"name": "mechanics-author",
"profile": "default-author.profile.json",
"harness": "claude",
"harness": "pi",
"model": "glm-5.2",
"diagnosisSlice": "mechanics",
"lens": "Focus on MECHANICS: worker lifecycle, sandbox/clone contracts, settlement and delivery paths. Prefer code-path fixes over prompt wording."
},
{
"name": "prompts-author",
"profile": "default-author.profile.json",
"harness": "claude",
"harness": "pi",
"model": "glm-5.2",
"diagnosisSlice": "prompts",
"lens": "Focus on PROMPTS: worker/brain instruction wording, placement guidance, self-check discipline. Prefer prompt/instruction changes over code-path rewrites."
}
Expand Down
24 changes: 12 additions & 12 deletions bench/gen4-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,12 @@
"tangle-router.env"
],
"generations": 1,
"populationSize": 4,
"populationSize": 3,
"repsPerInstance": 2,
"premeasuredBaselinePath": "/tmp/claude-1000/-home-drew-code-supervisor-lab/f06fd156-042a-4ef9-bd88-f2ec7f52b90c/scratchpad/hh/gen4/premeasured-baseline.json",
"maxShots": 3,
"proposerHarness": "claude-code",
"proposerHarness": "pi",
"proposerProfile": "default-author.profile.json",
"proposerTimeoutMs": 2400000,
"analystModels": [
"glm-5.2",
Expand Down Expand Up @@ -74,24 +75,23 @@
"costGuardRatio": 1.2,
"dispatchTimeoutMs": 7200000,
"proposers": [
{
"name": "claude-author",
"profile": "default-author.profile.json",
"harness": "claude"
},
{
"name": "glm-author",
"harness": "opencode",
"model": "zai-coding-plan/glm-5.2"
"profile": "default-author.profile.json",
"harness": "pi",
"model": "glm-5.2"
},
{
"name": "codex-author",
"harness": "codex"
"name": "deepseek-author",
"profile": "deepseek-author.profile.json",
"harness": "pi",
"model": "deepseek-v4-flash"
},
{
"name": "merge-author",
"profile": "default-author.profile.json",
"harness": "claude",
"harness": "pi",
"model": "glm-5.2",
"merge": true
}
],
Expand Down
Loading