MCPcopy
hub / github.com/opactorai/Claudable / persistMessage

Function persistMessage

lib/services/cli/codex.ts:294–345  ·  view source on GitHub ↗
(
  projectId: string,
  payload: {
    id?: string;
    role: Message['role'];
    messageType: Message['messageType'];
    content: string;
    metadata?: Record<string, unknown> | null;
  },
  requestId?: string,
  overrides?: Partial<RealtimeMessage>
)

Source from the content-addressed store, hash-verified

292}
293
294async function persistMessage(
295 projectId: string,
296 payload: {
297 id?: string;
298 role: Message['role'];
299 messageType: Message['messageType'];
300 content: string;
301 metadata?: Record<string, unknown> | null;
302 },
303 requestId?: string,
304 overrides?: Partial<RealtimeMessage>
305) {
306 try {
307 const saved = await createMessage({
308 ...(payload.id ? { id: payload.id } : {}),
309 projectId,
310 role: payload.role,
311 messageType: payload.messageType,
312 content: payload.content,
313 metadata: payload.metadata ?? null,
314 cliSource: 'codex',
315 requestId,
316 });
317
318 const serializedOverrides = {
319 ...(requestId ? { requestId } : {}),
320 ...(overrides ?? {}),
321 };
322
323 streamManager.publish(projectId, {
324 type: 'message',
325 data: serializeMessage(saved, serializedOverrides),
326 });
327 } catch (error) {
328 console.error('[CodexService] Failed to persist message. Falling back to realtime emit:', error);
329 const fallback = createRealtimeMessage({
330 id: payload.id ?? randomUUID(),
331 projectId,
332 role: payload.role,
333 messageType: payload.messageType,
334 content: payload.content,
335 metadata: payload.metadata ?? null,
336 cliSource: 'codex',
337 requestId,
338 ...(overrides ?? {}),
339 });
340 streamManager.publish(projectId, {
341 type: 'message',
342 data: fallback,
343 });
344 }
345}
346
347const encodeHash = (value: string): string =>
348 Buffer.from(value, 'utf-8').toString('base64');

Callers 2

dispatchToolMessageFunction · 0.70
flushAssistantMessageFunction · 0.70

Calls 4

createMessageFunction · 0.90
serializeMessageFunction · 0.90
createRealtimeMessageFunction · 0.90
publishMethod · 0.80

Tested by

no test coverage detected