@dexwox-labs/a2a-server
Version:
TypeScript server implementation for Google's Agent-to-Agent (A2A) protocol - includes Express/WebSocket handlers, request validation and queue management
39 lines (33 loc) • 1.12 kB
text/typescript
import { RequestContext } from './request-context';
import { EventQueue } from './event-queue';
import { TaskManager } from '../tasks/task-manager';
import { DefaultRequestHandler } from '../request-handler';
export class TaskResubscriptionHandler {
private readonly requestHandler = new DefaultRequestHandler();
constructor(private taskManager: TaskManager) {}
/**
* Handle task resubscription request
* @param context Request context
* @param queue Event queue for streaming updates
*/
async *handleResubscription(
context: RequestContext,
queue: EventQueue
): AsyncGenerator<any, void, unknown> {
const task = await this.taskManager.getTask(context.task.id);
if (!task) {
throw this.requestHandler.normalizeError({ code: -32004, message: 'Task not found' });
}
// First yield existing task parts
for (const part of task.parts || []) {
yield part;
}
// Use the queue's built-in dequeue method
while (task.status === 'working') {
const event = await queue.dequeue();
if (event) {
yield event;
}
}
}
}