MCPcopy Create free account
hub / github.com/tiann/hapi / convertCodexEvent

Function convertCodexEvent

cli/src/codex/utils/codexEventConverter.ts:118–278  ·  view source on GitHub ↗
(rawEvent: unknown)

Source from the content-addressed store, hash-verified

116}
117
118export function convertCodexEvent(rawEvent: unknown): CodexConversionResult | null {
119 const parsed = CodexSessionEventSchema.safeParse(rawEvent);
120 if (!parsed.success) {
121 return null;
122 }
123
124 const { type, payload } = parsed.data;
125 const payloadRecord = asRecord(payload);
126
127 if (type === 'session_meta') {
128 const sessionId = payloadRecord ? asString(payloadRecord.id) : null;
129 if (!sessionId) {
130 return null;
131 }
132 return { sessionId };
133 }
134
135 if (!payloadRecord) {
136 return null;
137 }
138
139 if (type === 'event_msg') {
140 const eventType = asString(payloadRecord.type);
141 if (!eventType) {
142 return null;
143 }
144
145 if (eventType === 'user_message') {
146 const message = asString(payloadRecord.message)
147 ?? asString(payloadRecord.text)
148 ?? asString(payloadRecord.content);
149 if (!message) {
150 return null;
151 }
152 return {
153 userMessage: message
154 };
155 }
156
157 if (eventType === 'agent_message') {
158 const message = asString(payloadRecord.message);
159 if (!message) {
160 return null;
161 }
162 return {
163 message: {
164 type: 'message',
165 message,
166 id: randomUUID()
167 }
168 };
169 }
170
171 if (eventType === 'agent_reasoning') {
172 const message = asString(payloadRecord.text) ?? asString(payloadRecord.message);
173 if (!message) {
174 return null;
175 }

Callers 2

processTranscriptPathFunction · 0.90

Calls 5

extractCallIdFunction · 0.85
parseArgumentsFunction · 0.85
asRecordFunction · 0.70
asStringFunction · 0.70
extractCodexTextFunction · 0.70

Tested by

no test coverage detected