Bug description
packages/agents/src/worker.ts lines 853–862 handle ASSIGNMENT_TIMEOUT by logging a warning, but never resolve or reject the PendingAssignment promise:
case proto.ServerMessage_Message.Case.assignment: {
// ...resolves the promise correctly
}
// ASSIGNMENT_TIMEOUT case:
default: {
logger.warn('assignment timed out');
// ← promise at this.#pending[req.id] is never resolved or rejected
}
Any caller await-ing this.#pending[req.id]?.promise hangs forever. The timed-out entry is also never deleted from #pending, so each timed-out job leaks one unresolvable Promise + entry indefinitely.
Fix
Reject the pending promise on timeout and clean up the entry:
case 'timeout': {
const pending = this.#pending[req.id];
if (pending) {
delete this.#pending[req.id];
pending.reject(new Error(`Job assignment timed out for job ${req.id}`));
}
logger.warn('assignment timed out');
break;
}
Environment
- Verified against current
main branch (packages/agents/src/worker.ts)
Bug description
packages/agents/src/worker.tslines 853–862 handleASSIGNMENT_TIMEOUTby logging a warning, but never resolve or reject thePendingAssignmentpromise:Any caller
await-ingthis.#pending[req.id]?.promisehangs forever. The timed-out entry is also never deleted from#pending, so each timed-out job leaks one unresolvable Promise + entry indefinitely.Fix
Reject the pending promise on timeout and clean up the entry:
Environment
mainbranch (packages/agents/src/worker.ts)