SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
7c5ed63 verified
Raw History Blame Contribute Delete
1.21 kB
import { cp, mkdir, writeFile, rm } from 'node:fs/promises';
import { join } from 'node:path';
import { tmpdir } from 'node:os';
/** Copy a fixture session into a temporary KIMI_CODE_HOME. */
export async function buildSessionFixture(name: string): Promise<{
home: string;
sessionDir: string;
cleanup: () => Promise<void>;
}> {
const src = new URL(`./sessions/${name}`, import.meta.url).pathname;
const home = await mkdtemp();
const sessionsDir = join(home, 'sessions', 'wd_test_000000000000');
const sessionDir = join(sessionsDir, 'session_fixture');
await mkdir(sessionsDir, { recursive: true });
await cp(src, sessionDir, { recursive: true });
// Write session_index.jsonl.
await writeFile(
join(home, 'session_index.jsonl'),
JSON.stringify({
sessionId: 'session_fixture',
sessionDir,
workDir: '/tmp/work',
}) + '\n',
);
return {
home,
sessionDir,
cleanup: () => rm(home, { recursive: true, force: true }),
};
}
async function mkdtemp(): Promise<string> {
const base = join(tmpdir(), `vis-fixture-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`);
await mkdir(base, { recursive: true });
return base;
}