Files
hapi/cli/src/codex/utils/codexEventConverter.test.ts
T
weishu 2a10ce9675 feat: add support for user message events from Codex
Add sendUserMessage() method to ApiSessionClient and CodexSession to handle
user_message events from Codex. Updates CodexConversionResult type and
convertCodexEvent() to process user_message payloads, with test coverage.
2025-12-24 17:24:16 +08:00

95 lines
2.6 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { convertCodexEvent } from './codexEventConverter';
describe('convertCodexEvent', () => {
it('extracts session_meta id', () => {
const result = convertCodexEvent({
type: 'session_meta',
payload: { id: 'session-123' }
});
expect(result).toEqual({ sessionId: 'session-123' });
});
it('converts agent_message events', () => {
const result = convertCodexEvent({
type: 'event_msg',
payload: { type: 'agent_message', message: 'hello' }
});
expect(result?.message).toMatchObject({
type: 'message',
message: 'hello'
});
});
it('converts user_message events', () => {
const result = convertCodexEvent({
type: 'event_msg',
payload: { type: 'user_message', message: 'hello user' }
});
expect(result?.userMessage).toBe('hello user');
});
it('converts reasoning events', () => {
const result = convertCodexEvent({
type: 'event_msg',
payload: { type: 'agent_reasoning', text: 'thinking' }
});
expect(result?.message).toMatchObject({
type: 'reasoning',
message: 'thinking'
});
});
it('converts reasoning delta events', () => {
const result = convertCodexEvent({
type: 'event_msg',
payload: { type: 'agent_reasoning_delta', delta: 'step' }
});
expect(result?.message).toEqual({
type: 'reasoning-delta',
delta: 'step'
});
});
it('converts function_call items', () => {
const result = convertCodexEvent({
type: 'response_item',
payload: {
type: 'function_call',
name: 'ToolName',
call_id: 'call-1',
arguments: '{"foo":"bar"}'
}
});
expect(result?.message).toMatchObject({
type: 'tool-call',
name: 'ToolName',
callId: 'call-1',
input: { foo: 'bar' }
});
});
it('converts function_call_output items', () => {
const result = convertCodexEvent({
type: 'response_item',
payload: {
type: 'function_call_output',
call_id: 'call-2',
output: { ok: true }
}
});
expect(result?.message).toMatchObject({
type: 'tool-call-result',
callId: 'call-2',
output: { ok: true }
});
});
});