Files
obelisk/tests/kimi-runtime.test.mjs
T

47 lines
2.0 KiB
JavaScript
Raw Normal View History

2026-07-20 22:43:23 +08:00
import { test } from 'node:test';
import assert from 'node:assert/strict';
import { mkdirSync, mkdtempSync, writeFileSync } from 'node:fs';
import { tmpdir } from 'node:os';
import { join } from 'node:path';
import { spawnSync } from 'node:child_process';
import { pathToFileURL } from 'node:url';
test('passive-pull runtime indexes Kimi sessions from the default home', () => {
const home = mkdtempSync(join(tmpdir(), 'obelisk-kimi-runtime-'));
const sessionDir = join(home, '.kimi-code', 'sessions', 'workspace-1', 'session-runtime-1');
const mainDir = join(sessionDir, 'agents', 'main');
mkdirSync(mainDir, { recursive: true });
writeFileSync(join(sessionDir, 'state.json'), JSON.stringify({
title: 'Runtime Kimi session',
workDir: '/tmp/runtime-kimi',
createdAt: '2026-07-20T10:00:00.000Z',
updatedAt: '2026-07-20T10:01:00.000Z',
agents: { main: { type: 'main' } },
}));
writeFileSync(join(mainDir, 'wire.jsonl'), [
JSON.stringify({ type: 'metadata', protocol_version: '1.5', created_at: 1753005600000 }),
JSON.stringify({ type: 'context.append_message', time: 1753005601000, message: { role: 'user', content: [{ type: 'text', text: 'runtime kimi needle' }], toolCalls: [], origin: { kind: 'user' } } }),
'',
].join('\n'));
const coreUrl = pathToFileURL(join(process.cwd(), 'packages/core/src/core.ts')).href;
const script = `
import { executeQuery } from ${JSON.stringify(coreUrl)};
const result = await executeQuery("return sessions({ source: 'kimi', limit: 5 });");
process.stdout.write(JSON.stringify(result));
`;
const run = spawnSync(process.execPath, ['--experimental-strip-types', '--input-type=module', '-e', script], {
cwd: process.cwd(),
env: { ...process.env, HOME: home, USERPROFILE: home },
encoding: 'utf8',
});
assert.equal(run.status, 0, run.stderr);
const sessions = JSON.parse(run.stdout);
assert.deepEqual(sessions.map(({ id, title, source }) => ({ id, title, source })), [{
id: 'kimi:session-runtime-1',
title: 'Runtime Kimi session',
source: 'kimi',
}]);
});