agent-ecosystem/scripts/prove-opencode-mixed-recovery.mjs
2026-06-02 08:56:20 +03:00

64 lines
2 KiB
JavaScript

#!/usr/bin/env node
import path from 'node:path';
import process from 'node:process';
import { fileURLToPath } from 'node:url';
import { resolveLiveSmokeOrchestratorCliPath } from './lib/live-smoke-runtime.mjs';
import {
exitForSkippedPreflight,
preflightOpenCodeLiveEnvironment,
} from './lib/opencode-live-preflight.mjs';
import { spawnSyncWithWindowsShell } from './lib/windows-shell-spawn.mjs';
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
const repoRoot = path.resolve(scriptDir, '..');
const env = {
...process.env,
OPENCODE_E2E: '1',
OPENCODE_E2E_MIXED_RECOVERY: '1',
OPENCODE_E2E_MIXED_RECOVERY_MULTI: process.env.OPENCODE_E2E_MIXED_RECOVERY_MULTI ?? '0',
OPENCODE_E2E_PROJECT_PATH: process.env.OPENCODE_E2E_PROJECT_PATH?.trim() || repoRoot,
OPENCODE_E2E_MODEL: process.env.OPENCODE_E2E_MODEL?.trim() || 'opencode/big-pickle',
OPENCODE_DISABLE_AUTOUPDATE: process.env.OPENCODE_DISABLE_AUTOUPDATE ?? '1',
};
if (!env.CLAUDE_AGENT_TEAMS_ORCHESTRATOR_CLI_PATH?.trim()) {
env.CLAUDE_AGENT_TEAMS_ORCHESTRATOR_CLI_PATH = resolveLiveSmokeOrchestratorCliPath({
env,
repoRoot,
});
}
console.log('Running OpenCode mixed recovery live smoke');
console.log(`Model: ${env.OPENCODE_E2E_MODEL}`);
console.log(`Project: ${env.OPENCODE_E2E_PROJECT_PATH}`);
console.log(`Orchestrator CLI: ${env.CLAUDE_AGENT_TEAMS_ORCHESTRATOR_CLI_PATH}`);
console.log(`Multi-lane: ${env.OPENCODE_E2E_MIXED_RECOVERY_MULTI === '1' ? 'enabled' : 'disabled'}`);
const preflight = await preflightOpenCodeLiveEnvironment({ repoRoot });
exitForSkippedPreflight(preflight);
const result = spawnSyncWithWindowsShell(
'pnpm',
[
'exec',
'vitest',
'run',
'--maxWorkers=1',
'test/main/services/team/OpenCodeMixedRecovery.live.test.ts',
],
{
cwd: repoRoot,
env,
stdio: 'inherit',
}
);
if (result.error) {
console.error(`Failed to run OpenCode mixed recovery smoke: ${result.error.message}`);
process.exit(1);
}
process.exit(result.status ?? 1);