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.
This commit is contained in:
weishu
2025-12-24 17:24:16 +08:00
parent 7f2a36117c
commit 2a10ce9675
5 changed files with 50 additions and 2 deletions
+24 -1
View File
@@ -6,7 +6,7 @@ import { backoff } from '@/utils/time'
import { AsyncLock } from '@/utils/lock'
import type { RawJSONLines } from '@/claude/types'
import { configuration } from '@/configuration'
import type { AgentState, ClientToServerEvents, MessageContent, Metadata, ServerToClientEvents, Session, Update, UserMessage } from './types'
import type { AgentState, ClientToServerEvents, MessageContent, MessageMeta, Metadata, ServerToClientEvents, Session, Update, UserMessage } from './types'
import { AgentStateSchema, MetadataSchema, UserMessageSchema } from './types'
import { RpcHandlerManager } from './rpc/RpcHandlerManager'
import { registerCommonHandlers } from '../modules/common/registerCommonHandlers'
@@ -184,6 +184,29 @@ export class ApiSessionClient extends EventEmitter {
}
}
sendUserMessage(text: string, meta?: MessageMeta): void {
if (!text) {
return
}
const content: MessageContent = {
role: 'user',
content: {
type: 'text',
text
},
meta: {
sentFrom: 'cli',
...(meta ?? {})
}
}
this.socket.emit('message', {
sid: this.sessionId,
message: content
})
}
sendCodexMessage(body: unknown): void {
const content = {
role: 'agent',