a8dde34531
* pin all CLI installations to explicit versions and use pro models by default - codex: pin @openai/codex to 0.101.0 (was "latest") - opencode: pin opencode-ai to 1.1.56 (was "latest") - gemini: pin gemini-cli to v0.28.2 via new tag param on installFromGithub - cursor: pin to 2026.01.28-fd13201 via direct tarball download (replaces curl install script) - add installFromDirectTarball to install.ts for versioned tarball URLs - gemini auto effort now uses pro-preview instead of flash-preview - test runner model overrides updated to use pro-preview consistently Co-authored-by: Cursor <cursoragent@cursor.com> * increase activity timeout * fix delegation timeout * fix delegate timeouts --------- Co-authored-by: Cursor <cursoragent@cursor.com>
57 lines
2.4 KiB
TypeScript
57 lines
2.4 KiB
TypeScript
import type { AgentResult, TestRunnerOptions, ValidationCheck } from "../utils.ts";
|
|
import { defineFixture, getAgentOutput, getStructuredOutput } from "../utils.ts";
|
|
|
|
/**
|
|
* delegateTimeout test - validates that the activity timeout does NOT fire
|
|
* during a delegation that takes longer than 60 seconds.
|
|
*
|
|
* uses effort: "auto" for both orchestrator and subagent so the total
|
|
* delegation time exceeds 60s. if the markActivity fix is missing,
|
|
* this test will fail with "activity timeout: no output for Xs".
|
|
*/
|
|
|
|
const fixture = defineFixture(
|
|
{
|
|
prompt: `Delegate to the Plan mode with auto effort. Pass these instructions to the subagent:
|
|
"Carefully analyze the following engineering question and provide a thorough response, then call set_output with the value 'DELEGATE_TIMEOUT_PASSED'.
|
|
|
|
Question: Design a comprehensive error handling strategy for a distributed microservices architecture. Consider:
|
|
1. Circuit breaker patterns — when to open, half-open, close. What thresholds to use.
|
|
2. Retry policies — exponential backoff with jitter. Maximum retry counts. Which errors are retryable.
|
|
3. Dead letter queues — when to use them, how to process failed messages, alerting.
|
|
4. Health check endpoints — liveness vs readiness probes, dependency health checks.
|
|
5. Graceful degradation — fallback responses, feature flags, bulkhead pattern.
|
|
|
|
Provide a detailed analysis covering ALL 5 points with concrete examples before calling set_output."`,
|
|
effort: "auto",
|
|
timeout: "8m",
|
|
},
|
|
{ localOnly: true }
|
|
);
|
|
|
|
function validator(result: AgentResult): ValidationCheck[] {
|
|
const output = getStructuredOutput(result);
|
|
const agentOutput = getAgentOutput(result);
|
|
|
|
const setOutputCalled = output !== null;
|
|
const correctValue = setOutputCalled && /DELEGATE_TIMEOUT_PASSED/i.test(output);
|
|
const delegationOccurred = /» delegating to \w+ mode/i.test(agentOutput);
|
|
// the critical check: no activity timeout occurred
|
|
const noActivityTimeout = !/activity timeout/i.test(agentOutput);
|
|
|
|
return [
|
|
{ name: "set_output", passed: setOutputCalled },
|
|
{ name: "correct_value", passed: correctValue },
|
|
{ name: "delegation_occurred", passed: delegationOccurred },
|
|
{ name: "no_activity_timeout", passed: noActivityTimeout },
|
|
];
|
|
}
|
|
|
|
export const test: TestRunnerOptions = {
|
|
name: "delegate-timeout",
|
|
fixture,
|
|
validator,
|
|
env: { GITHUB_REPOSITORY: "pullfrog/test-repo" },
|
|
tags: ["adhoc"],
|
|
};
|