MCPcopy Create free account
hub / github.com/MoonshotAI/kimi-code / reduceAppEvent

Function reduceAppEvent

apps/kimi-web/src/api/daemon/eventReducer.ts:230–672  ·  view source on GitHub ↗
(
  state: KimiClientState,
  event: AppEvent,
  meta: EventMeta,
)

Source from the content-addressed store, hash-verified

228}
229
230export function reduceAppEvent(
231 state: KimiClientState,
232 event: AppEvent,
233 meta: EventMeta,
234): KimiClientState {
235 const next = cloneState(state);
236
237 // Always advance lastSeqBySession for every event that carries seq info.
238 advanceSeq(next, meta.sessionId, meta.seq);
239
240 switch (event.type) {
241 // -------------------------------------------------------------------------
242 case 'sessionCreated': {
243 const exists = next.sessions.some((s) => s.id === event.session.id);
244 if (!exists) {
245 next.sessions = [event.session, ...next.sessions];
246 }
247 break;
248 }
249
250 // -------------------------------------------------------------------------
251 case 'sessionUpdated': {
252 next.sessions = next.sessions.map((s) =>
253 s.id === event.session.id ? event.session : s,
254 );
255 break;
256 }
257
258 // -------------------------------------------------------------------------
259 case 'sessionDeleted': {
260 const id = event.sessionId;
261 next.sessions = next.sessions.filter((s) => s.id !== id);
262 delete next.messagesBySession[id];
263 delete next.tasksBySession[id];
264 delete next.goalBySession[id];
265 delete next.approvalsBySession[id];
266 delete next.questionsBySession[id];
267 delete next.lastSeqBySession[id];
268 if (next.activeSessionId === id) {
269 next.activeSessionId = undefined;
270 }
271 break;
272 }
273
274 // -------------------------------------------------------------------------
275 case 'sessionStatusChanged': {
276 next.sessions = next.sessions.map((s) => {
277 if (s.id !== event.sessionId) return s;
278 return {
279 ...s,
280 status: event.status,
281 currentPromptId: event.currentPromptId,
282 };
283 });
284 break;
285 }
286
287 // -------------------------------------------------------------------------

Callers 2

applyEventFunction · 0.90

Calls 5

cloneStateFunction · 0.85
advanceSeqFunction · 0.85
pushMethod · 0.45

Tested by

no test coverage detected