72 lines
2.4 KiB
JavaScript
72 lines
2.4 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import { spawnSync } from 'node:child_process';
|
|
import os from 'node:os';
|
|
import path from 'node:path';
|
|
import process from 'node:process';
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
|
|
const repoRoot = path.resolve(scriptDir, '..');
|
|
const defaultEvidencePath = path.join(
|
|
resolveAppDataDir(),
|
|
'claude-agent-teams-ui',
|
|
'opencode-bridge',
|
|
'production-e2e-evidence.json'
|
|
);
|
|
const orchestratorRoot = process.env.CLAUDE_DEV_RUNTIME_ROOT?.trim();
|
|
const siblingOrchestrator = path.resolve(repoRoot, '..', 'agent_teams_orchestrator');
|
|
|
|
const env = {
|
|
...process.env,
|
|
OPENCODE_E2E: '1',
|
|
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_E2E_WRITE_APP_EVIDENCE: '1',
|
|
OPENCODE_E2E_WRITE_EVIDENCE_PATH:
|
|
process.env.OPENCODE_E2E_WRITE_EVIDENCE_PATH?.trim() ||
|
|
process.env.CLAUDE_TEAM_OPENCODE_PRODUCTION_E2E_EVIDENCE_PATH?.trim() ||
|
|
defaultEvidencePath,
|
|
OPENCODE_DISABLE_AUTOUPDATE: process.env.OPENCODE_DISABLE_AUTOUPDATE ?? '1',
|
|
};
|
|
|
|
if (!env.CLAUDE_AGENT_TEAMS_ORCHESTRATOR_CLI_PATH?.trim()) {
|
|
const runtimeRoot = orchestratorRoot ? path.resolve(orchestratorRoot) : siblingOrchestrator;
|
|
env.CLAUDE_AGENT_TEAMS_ORCHESTRATOR_CLI_PATH = path.join(runtimeRoot, 'cli');
|
|
}
|
|
|
|
console.log('Running OpenCode production proof');
|
|
console.log(`Model: ${env.OPENCODE_E2E_MODEL}`);
|
|
console.log(`Project: ${env.OPENCODE_E2E_PROJECT_PATH}`);
|
|
console.log(`Evidence: ${env.OPENCODE_E2E_WRITE_EVIDENCE_PATH}`);
|
|
console.log(`Orchestrator CLI: ${env.CLAUDE_AGENT_TEAMS_ORCHESTRATOR_CLI_PATH}`);
|
|
|
|
const result = spawnSync(
|
|
'pnpm',
|
|
['exec', 'vitest', 'run', 'test/main/services/team/OpenCodeProductionGate.live.test.ts'],
|
|
{
|
|
cwd: repoRoot,
|
|
env,
|
|
stdio: 'inherit',
|
|
shell: process.platform === 'win32',
|
|
}
|
|
);
|
|
|
|
if (result.error) {
|
|
console.error(`Failed to run OpenCode production proof: ${result.error.message}`);
|
|
process.exit(1);
|
|
}
|
|
|
|
process.exit(result.status ?? 1);
|
|
|
|
function resolveAppDataDir() {
|
|
if (process.platform === 'darwin') {
|
|
return path.join(os.homedir(), 'Library', 'Application Support');
|
|
}
|
|
|
|
if (process.platform === 'win32') {
|
|
return process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming');
|
|
}
|
|
|
|
return process.env.XDG_CONFIG_HOME || path.join(os.homedir(), '.config');
|
|
}
|