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

Method handleCodexEvent

cli/src/codex/codexRemoteLauncher.ts:1959–2476  ·  view source on GitHub ↗
(msg: Record<string, unknown>)

Source from the content-addressed store, hash-verified

1957 let codexEventQueue: Promise<void> | null = null;
1958
1959 const handleCodexEvent = async (msg: Record<string, unknown>): Promise<void> => {
1960 const msgType = asString(msg.type);
1961 if (!msgType) return;
1962 const eventTurnId = asString(msg.turn_id ?? msg.turnId);
1963 const eventThreadId = asString(msg.thread_id ?? msg.threadId);
1964 const isTerminalEvent = msgType === 'task_complete' || msgType === 'turn_aborted' || msgType === 'task_failed';
1965 const suppressReadyForThisTerminalEvent = isTerminalEvent
1966 ? consumeInterruptedTurnReadySuppression(eventTurnId)
1967 : false;
1968
1969 if (msgType === 'thread_started') {
1970 const threadId = asString(msg.thread_id ?? msg.threadId);
1971 if (threadId) {
1972 if (!this.currentThreadId || this.currentThreadId === threadId) {
1973 this.currentThreadId = threadId;
1974 session.onSessionFound(threadId);
1975 } else {
1976 logger.debug(
1977 `[Codex] Ignoring thread_started for non-active thread; ` +
1978 `eventThreadId=${threadId}, activeThread=${this.currentThreadId}`
1979 );
1980 }
1981 }
1982 return;
1983 }
1984
1985 if (msgType === 'thread_compacted') {
1986 completeCompactRecovery(eventThreadId);
1987 return;
1988 }
1989
1990 if (eventThreadId && this.currentThreadId && eventThreadId !== this.currentThreadId) {
1991 logger.debug(
1992 `[Codex] Routing event from non-active thread into agent trace; ` +
1993 `type=${msgType}, eventThreadId=${eventThreadId}, activeThread=${this.currentThreadId}`
1994 );
1995 if (msgType === 'task_started') {
1996 if (eventTurnId) {
1997 this.activeChildTurns.set(eventThreadId, eventTurnId);
1998 } else {
1999 logger.debug(`[Codex] Child task_started missing turn id; threadId=${eventThreadId}`);
2000 }
2001 linkPendingAgentStartFromChildTask(eventThreadId);
2002 } else if (isTerminalEvent) {
2003 this.activeChildTurns.delete(eventThreadId);
2004 }
2005 handleChildCodexEvent(eventThreadId, msg);
2006 return;
2007 }
2008
2009 if (!eventThreadId && this.currentThreadId && isScopeSensitiveCodexEvent(msgType) && hasKnownChildAgents()) {
2010 logger.debug(
2011 `[Codex] Dropping unscoped scope-sensitive event while child agents are active; ` +
2012 `type=${msgType}, activeThread=${this.currentThreadId}`
2013 );
2014 return;
2015 }
2016

Callers

nothing calls this directly

Calls 15

isCodexAgentToolNameFunction · 0.85
debugMethod · 0.80
sendAgentMessageMethod · 0.80
warnMethod · 0.80
sendSessionEventMethod · 0.80
clearMethod · 0.80
handleSectionBreakMethod · 0.80
processDeltaMethod · 0.80

Tested by

no test coverage detected