File size: 1,171 Bytes
4e23b01 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | /**
* Shared engine bootstrap for klient integration tests. Mirrors what
* kap-server does: `bootstrap()` plus the `ILogOptions` seed the
* Session-scoped log writer needs (bare `bootstrap({ homeDir })` leaves
* `logOptions` unregistered and any eager service depending on `ILogService`
* fails to instantiate).
*/
import { mkdtemp } from 'node:fs/promises';
import { tmpdir } from 'node:os';
import { join } from 'node:path';
import { bootstrap, logSeed, resolveLoggingConfig } from '@moonshot-ai/agent-core-v2';
/** Shared host identity for klient test engines (bootstrap requires one). */
export const TEST_CLIENT_IDENTITY = {
productName: 'klient-test',
version: '0.0.0-test',
platform: 'test',
} as const;
export interface TestEngine {
readonly homeDir: string;
readonly app: ReturnType<typeof bootstrap>['app'];
}
export async function makeEngine(prefix = 'klient-test-engine-'): Promise<TestEngine> {
const homeDir = await mkdtemp(join(tmpdir(), prefix));
const { app } = bootstrap({ homeDir, clientIdentity: TEST_CLIENT_IDENTITY }, [
...logSeed(resolveLoggingConfig({ homeDir, env: process.env })),
]);
return { homeDir, app };
}
|