MCPcopy Create free account
hub / github.com/ByBrawe/opencode-loop / startWatchdog

Function startWatchdog

src/index.js:912–935  ·  view source on GitHub ↗
(directory, client, sessionID)

Source from the content-addressed store, hash-verified

910 const current = loopOwnedUserMessageGuards.get(sessionID) || { pending: 0, until: 0, messageIDs: new Map };
911 current.pending += 1;
912 current.until = Math.max(current.until || 0, now() + LOOP_OWNED_USER_MESSAGE_GUARD_MS);
913 for (const [messageID, expiresAt] of current.messageIDs.entries())
914 if (expiresAt < now())
915 current.messageIDs.delete(messageID);
916 loopOwnedUserMessageGuards.set(sessionID, current);
917 for (const [key, entry] of loopOwnedUserMessageGuards.entries()) {
918 for (const [messageID, expiresAt] of entry.messageIDs.entries())
919 if (expiresAt < now())
920 entry.messageIDs.delete(messageID);
921 if ((entry.pending || 0) <= 0 && entry.messageIDs.size === 0 && (entry.until || 0) < now())
922 loopOwnedUserMessageGuards.delete(key);
923 }
924}
925function loopOwnedUserMessageGuardActive(sessionID, messageID) {
926 const entry = loopOwnedUserMessageGuards.get(sessionID);
927 if (!entry || typeof entry !== "object")
928 return false;
929 for (const [id2, expiresAt] of entry.messageIDs.entries())
930 if (expiresAt < now())
931 entry.messageIDs.delete(id2);
932 const id = typeof messageID === "string" ? messageID : "";
933 if (id && entry.messageIDs.has(id))
934 return true;
935 if ((entry.pending || 0) > 0 && (entry.until || 0) >= now()) {
936 if (!id)
937 return true;
938 entry.pending -= 1;

Callers 1

scheduleDueWorkFunction · 0.85

Calls 7

readStateFunction · 0.85
nextDueDelayFunction · 0.85
isGoalJobFunction · 0.85
maybeRunDueJobsFunction · 0.85
scheduleDueWorkFunction · 0.85
appendLoopLogFunction · 0.85
sdkErrorMessageFunction · 0.85

Tested by

no test coverage detected