MCPcopy
hub / github.com/coder/mux / handleSessionMessage

Function handleSessionMessage

src/node/orpc/replayBufferedStreamMessageRelay.ts:138–157  ·  view source on GitHub ↗
(message: WorkspaceChatMessage)

Source from the content-addressed store, hash-verified

136 };
137
138 const handleSessionMessage = (message: WorkspaceChatMessage) => {
139 if (isReplaying && isReplayBufferedSessionMessage(message)) {
140 if (!isReplayMessage(message)) {
141 // Preserve live ordering during replay buffering. Init events need the same isolation as
142 // stream events so reconnect replay cannot blank the row or drop lines due to reordering.
143 bufferedLiveSessionMessages.push(message);
144 return;
145 }
146
147 // Track replayed deltas/init events so buffered live events from the same window do not
148 // double-apply after `caught-up`.
149 if (isReplayBufferedDeltaMessage(message)) {
150 noteReplayedDelta(message);
151 } else if (isReplayBufferedInitMessage(message)) {
152 noteReplayedInit(message);
153 }
154 }
155
156 push(message);
157 };
158
159 const finishReplay = () => {
160 // Flush buffered live session messages after replay (`caught-up` already queued by replayHistory).

Callers

nothing calls this directly

Calls 8

isReplayMessageFunction · 0.85
noteReplayedDeltaFunction · 0.85
noteReplayedInitFunction · 0.85
pushFunction · 0.70
pushMethod · 0.65

Tested by

no test coverage detected