UNPKG

@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

126 lines 4.71 kB
/** * @module PushNotificationService * @description Service for managing and sending push notifications for task events * * This module provides functionality for configuring and sending push notifications * for task-related events in the A2A protocol server. It allows clients to receive * real-time updates about task status changes and other events. */ import type { PushNotificationConfig } from '@dexwox-labs/a2a-core'; /** * Service for managing and sending push notifications * * The PushNotificationService handles the configuration and delivery of push * notifications for task-related events. It maintains a store of notification * configurations for each task and provides methods for sending notifications * when events occur. * * @example * ```typescript * // Create a push notification service * const pushService = new PushNotificationService(); * * // Configure push notifications for a task * await pushService.setConfig('task-123', { * enabled: true, * endpoint: 'https://example.com/webhooks/a2a', * authToken: 'secret-token', * events: ['taskCompleted', 'taskFailed'] * }); * * // Send a notification * await pushService.notify('task-123', 'taskCompleted', { * taskId: 'task-123', * status: 'completed', * timestamp: Date.now() * }); * ``` */ export declare class PushNotificationService { /** * Notifies subscribers about a task status change * * This method sends a notification when a task's status changes. * It's a convenience wrapper around the notify method. * * @param taskId - ID of the task whose status changed * @param status - New status of the task * @returns Promise that resolves when the notification is sent * * @example * ```typescript * await pushService.notifyStatusChange('task-123', 'completed'); * ``` */ notifyStatusChange(taskId: string, status: string): Promise<void>; /** Store of push notification configurations by task ID */ private configStore; /** * Sets the push notification configuration for a task * * This method stores a push notification configuration for a specific task. * The configuration includes settings like the endpoint URL, authentication * token, and which events to send notifications for. * * @param taskId - ID of the task to configure notifications for * @param config - Push notification configuration * @returns Promise that resolves when the configuration is stored * * @example * ```typescript * await pushService.setConfig('task-123', { * enabled: true, * endpoint: 'https://example.com/webhooks/a2a', * authToken: 'secret-token', * events: ['taskCompleted', 'taskFailed'] * }); * ``` */ setConfig(taskId: string, config: PushNotificationConfig): Promise<void>; /** * Gets the push notification configuration for a task * * This method retrieves the push notification configuration for a specific task. * If no configuration is found, it throws an error. * * @param taskId - ID of the task to get the configuration for * @returns Promise resolving to the push notification configuration * @throws Error with code -32005 if the configuration is not found * * @example * ```typescript * try { * const config = await pushService.getConfig('task-123'); * console.log('Push notifications enabled:', config.enabled); * console.log('Endpoint:', config.endpoint); * } catch (error) { * console.error('Failed to get push config:', error.message); * } * ``` */ getConfig(taskId: string): Promise<PushNotificationConfig>; /** * Sends a push notification for a task event * * This method sends a push notification for a specific event related to a task. * It checks if notifications are enabled for the task and if the event is * included in the list of events to send notifications for. * * @param taskId - ID of the task the event is related to * @param event - Name of the event (e.g., 'taskCompleted', 'taskFailed') * @param data - Data to include in the notification * @returns Promise that resolves when the notification is sent * * @example * ```typescript * await pushService.notify('task-123', 'taskCompleted', { * taskId: 'task-123', * status: 'completed', * timestamp: Date.now(), * result: { data: 'Task output' } * }); * ``` */ notify(taskId: string, event: string, data: unknown): Promise<void>; } //# sourceMappingURL=push-service.d.ts.map