Download src/lib/a2a/taskExecution.ts from automindy/fiemwl: direct link, hf CLI and curl.
- Browser
- Download file 2.1 kB
-
https://huggingface.co/spaces/automindy/fiemwl/resolve/main/src/lib/a2a/taskExecution.ts
- Command line
-
hf download hf://spaces/automindy/fiemwl/src/lib/a2a/taskExecution.ts
-
curl -L -o taskExecution.ts https://huggingface.co/spaces/automindy/fiemwl/resolve/main/src/lib/a2a/taskExecution.ts
2.1 kB
| import type { A2ATask, TaskArtifact } from "./taskManager"; | |
| type TaskManagerLike = { | |
| updateTask: ( | |
| taskId: string, | |
| state: "completed" | "failed", | |
| artifacts?: Array<{ type: string; content: string }>, | |
| message?: string | |
| ) => unknown; | |
| }; | |
| type StreamTaskResult = { | |
| artifacts: TaskArtifact[]; | |
| metadata: Record<string, unknown>; | |
| }; | |
| export type A2ASkillHandler = (task: A2ATask) => Promise<StreamTaskResult>; | |
| export const A2A_SKILL_HANDLERS: Record<string, A2ASkillHandler> = { | |
| "smart-routing": async (task) => { | |
| const skillModule = await import("./skills/smartRouting"); | |
| return skillModule.executeSmartRouting(task); | |
| }, | |
| "quota-management": async (task) => { | |
| const skillModule = await import("./skills/quotaManagement"); | |
| return skillModule.executeQuotaManagement(task); | |
| }, | |
| "provider-discovery": async (task) => { | |
| const skillModule = await import("./skills/providerDiscovery"); | |
| return skillModule.executeProviderDiscovery(task); | |
| }, | |
| "cost-analysis": async (task) => { | |
| const skillModule = await import("./skills/costAnalysis"); | |
| return skillModule.executeCostAnalysis(task); | |
| }, | |
| "health-report": async (task) => { | |
| const skillModule = await import("./skills/healthReport"); | |
| return skillModule.executeHealthReport(task); | |
| }, | |
| "list-capabilities": async (task) => { | |
| const skillModule = await import("./skills/listCapabilities"); | |
| return skillModule.executeListCapabilities(task); | |
| }, | |
| }; | |
| export async function executeA2ATaskWithState( | |
| tm: TaskManagerLike, | |
| task: A2ATask, | |
| handler: (task: A2ATask) => Promise<StreamTaskResult> | |
| ) { | |
| try { | |
| const result = await handler(task); | |
| tm.updateTask(task.id, "completed", result.artifacts); | |
| return result; | |
| } catch (err) { | |
| const msg = err instanceof Error ? err.message : String(err); | |
| try { | |
| tm.updateTask(task.id, "failed", [{ type: "error", content: msg }], msg); | |
| } catch { | |
| // Task may already be terminal (e.g., cancelled). Preserve original error. | |
| } | |
| throw err; | |
| } | |
| } | |