import { vi } from 'vitest';
const OG_ENV_KEYS = [
'OG_MEMORY_URL',
'OG_MEMORY_ACCOUNT_ID', 'OG_ACCOUNT_ID',
'OG_MEMORY_USER_ID', 'OG_USER_ID',
'OG_MEMORY_AGENT_ID', 'OG_AGENT_ID',
'OG_AUTH_API_KEY',
] as const;
const originalEnv: Record<string, string | undefined> = {};
export function saveEnv(): void {
for (const key of OG_ENV_KEYS) {
originalEnv[key] = process.env[key];
}
}
export function resetEnv(): void {
for (const key of OG_ENV_KEYS) {
if (originalEnv[key] === undefined) {
delete process.env[key];
} else {
process.env[key] = originalEnv[key]!;
}
}
}
export function stubEnv(vars: Record<string, string>): void {
for (const [key, value] of Object.entries(vars)) {
process.env[key] = value;
}
}
export function createMockFetch(
response: { ok: boolean; status: number; json: () => Promise<unknown> },
): typeof fetch {
return vi.fn().mockResolvedValue(response);
}
export function createMockOpencodeClient() {
return {
app: {
log: vi.fn().mockResolvedValue({ data: true }),
},
session: {
messages: vi.fn().mockResolvedValue({
data: [],
error: undefined,
request: new Request('http://localhost:3000/session/s1/message'),
response: new Response(),
}),
},
};
}