UNPKG

@xynehq/jaf

Version:

Juspay Agent Framework - A purely functional agent framework with immutable state and composable tools

395 lines 13.5 kB
/** * A2A Task Memory Types for JAF * Extends the core memory system to support A2A task queue persistence */ import { z } from 'zod'; import { A2ATask, TaskState } from '../types.js'; export interface A2ATaskQuery { readonly taskId?: string; readonly contextId?: string; readonly state?: TaskState; readonly limit?: number; readonly offset?: number; readonly since?: Date; readonly until?: Date; readonly includeHistory?: boolean; readonly includeArtifacts?: boolean; } export interface A2ATaskStorage { readonly taskId: string; readonly contextId: string; readonly state: TaskState; readonly taskData: string; readonly statusMessage?: string; readonly createdAt: Date; readonly updatedAt: Date; readonly expiresAt?: Date; readonly metadata?: Readonly<Record<string, any>>; } export type A2ATaskProvider = { /** * Store a new A2A task */ readonly storeTask: (task: A2ATask, metadata?: { expiresAt?: Date; [key: string]: any; }) => Promise<A2AResult<void>>; /** * Retrieve a task by ID */ readonly getTask: (taskId: string) => Promise<A2AResult<A2ATask | null>>; /** * Update an existing task */ readonly updateTask: (task: A2ATask, metadata?: { [key: string]: any; }) => Promise<A2AResult<void>>; /** * Update task status only (optimized for frequent status changes) */ readonly updateTaskStatus: (taskId: string, state: TaskState, statusMessage?: any, timestamp?: string) => Promise<A2AResult<void>>; /** * Search tasks by query */ readonly findTasks: (query: A2ATaskQuery) => Promise<A2AResult<A2ATask[]>>; /** * Get tasks by context ID */ readonly getTasksByContext: (contextId: string, limit?: number) => Promise<A2AResult<A2ATask[]>>; /** * Delete a task */ readonly deleteTask: (taskId: string) => Promise<A2AResult<boolean>>; /** * Delete tasks by context ID */ readonly deleteTasksByContext: (contextId: string) => Promise<A2AResult<number>>; /** * Clean up expired tasks */ readonly cleanupExpiredTasks: () => Promise<A2AResult<number>>; /** * Get task statistics */ readonly getTaskStats: (contextId?: string) => Promise<A2AResult<{ totalTasks: number; tasksByState: Record<TaskState, number>; oldestTask?: Date; newestTask?: Date; }>>; /** * Health check for the task provider */ readonly healthCheck: () => Promise<A2AResult<{ healthy: boolean; latencyMs?: number; error?: string; }>>; /** * Close/cleanup the provider */ readonly close: () => Promise<A2AResult<void>>; }; export declare const A2ATaskMemoryConfigSchema: z.ZodObject<{ type: z.ZodEnum<["memory", "redis", "postgres"]>; keyPrefix: z.ZodDefault<z.ZodString>; defaultTtl: z.ZodOptional<z.ZodNumber>; cleanupInterval: z.ZodDefault<z.ZodNumber>; maxTasks: z.ZodDefault<z.ZodNumber>; enableHistory: z.ZodDefault<z.ZodBoolean>; enableArtifacts: z.ZodDefault<z.ZodBoolean>; }, "strip", z.ZodTypeAny, { type: "memory" | "redis" | "postgres"; keyPrefix: string; cleanupInterval: number; maxTasks: number; enableHistory: boolean; enableArtifacts: boolean; defaultTtl?: number | undefined; }, { type: "memory" | "redis" | "postgres"; keyPrefix?: string | undefined; defaultTtl?: number | undefined; cleanupInterval?: number | undefined; maxTasks?: number | undefined; enableHistory?: boolean | undefined; enableArtifacts?: boolean | undefined; }>; export declare const A2AInMemoryTaskConfigSchema: z.ZodObject<{ keyPrefix: z.ZodDefault<z.ZodString>; defaultTtl: z.ZodOptional<z.ZodNumber>; cleanupInterval: z.ZodDefault<z.ZodNumber>; maxTasks: z.ZodDefault<z.ZodNumber>; enableHistory: z.ZodDefault<z.ZodBoolean>; enableArtifacts: z.ZodDefault<z.ZodBoolean>; } & { type: z.ZodLiteral<"memory">; maxTasksPerContext: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { type: "memory"; keyPrefix: string; cleanupInterval: number; maxTasks: number; enableHistory: boolean; enableArtifacts: boolean; maxTasksPerContext: number; defaultTtl?: number | undefined; }, { type: "memory"; keyPrefix?: string | undefined; defaultTtl?: number | undefined; cleanupInterval?: number | undefined; maxTasks?: number | undefined; enableHistory?: boolean | undefined; enableArtifacts?: boolean | undefined; maxTasksPerContext?: number | undefined; }>; export declare const A2ARedisTaskConfigSchema: z.ZodObject<{ keyPrefix: z.ZodDefault<z.ZodString>; defaultTtl: z.ZodOptional<z.ZodNumber>; cleanupInterval: z.ZodDefault<z.ZodNumber>; maxTasks: z.ZodDefault<z.ZodNumber>; enableHistory: z.ZodDefault<z.ZodBoolean>; enableArtifacts: z.ZodDefault<z.ZodBoolean>; } & { type: z.ZodLiteral<"redis">; host: z.ZodDefault<z.ZodString>; port: z.ZodDefault<z.ZodNumber>; password: z.ZodOptional<z.ZodString>; db: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { type: "redis"; host: string; port: number; db: number; keyPrefix: string; cleanupInterval: number; maxTasks: number; enableHistory: boolean; enableArtifacts: boolean; password?: string | undefined; defaultTtl?: number | undefined; }, { type: "redis"; host?: string | undefined; port?: number | undefined; password?: string | undefined; db?: number | undefined; keyPrefix?: string | undefined; defaultTtl?: number | undefined; cleanupInterval?: number | undefined; maxTasks?: number | undefined; enableHistory?: boolean | undefined; enableArtifacts?: boolean | undefined; }>; export declare const A2APostgresTaskConfigSchema: z.ZodObject<{ keyPrefix: z.ZodDefault<z.ZodString>; defaultTtl: z.ZodOptional<z.ZodNumber>; cleanupInterval: z.ZodDefault<z.ZodNumber>; maxTasks: z.ZodDefault<z.ZodNumber>; enableHistory: z.ZodDefault<z.ZodBoolean>; enableArtifacts: z.ZodDefault<z.ZodBoolean>; } & { type: z.ZodLiteral<"postgres">; host: z.ZodDefault<z.ZodString>; port: z.ZodDefault<z.ZodNumber>; database: z.ZodDefault<z.ZodString>; username: z.ZodDefault<z.ZodString>; password: z.ZodOptional<z.ZodString>; ssl: z.ZodDefault<z.ZodBoolean>; tableName: z.ZodDefault<z.ZodString>; maxConnections: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { type: "postgres"; host: string; port: number; keyPrefix: string; database: string; username: string; ssl: boolean; tableName: string; maxConnections: number; cleanupInterval: number; maxTasks: number; enableHistory: boolean; enableArtifacts: boolean; password?: string | undefined; defaultTtl?: number | undefined; }, { type: "postgres"; host?: string | undefined; port?: number | undefined; password?: string | undefined; keyPrefix?: string | undefined; database?: string | undefined; username?: string | undefined; ssl?: boolean | undefined; tableName?: string | undefined; maxConnections?: number | undefined; defaultTtl?: number | undefined; cleanupInterval?: number | undefined; maxTasks?: number | undefined; enableHistory?: boolean | undefined; enableArtifacts?: boolean | undefined; }>; export declare const A2ATaskProviderConfigSchema: z.ZodUnion<[z.ZodObject<{ keyPrefix: z.ZodDefault<z.ZodString>; defaultTtl: z.ZodOptional<z.ZodNumber>; cleanupInterval: z.ZodDefault<z.ZodNumber>; maxTasks: z.ZodDefault<z.ZodNumber>; enableHistory: z.ZodDefault<z.ZodBoolean>; enableArtifacts: z.ZodDefault<z.ZodBoolean>; } & { type: z.ZodLiteral<"memory">; maxTasksPerContext: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { type: "memory"; keyPrefix: string; cleanupInterval: number; maxTasks: number; enableHistory: boolean; enableArtifacts: boolean; maxTasksPerContext: number; defaultTtl?: number | undefined; }, { type: "memory"; keyPrefix?: string | undefined; defaultTtl?: number | undefined; cleanupInterval?: number | undefined; maxTasks?: number | undefined; enableHistory?: boolean | undefined; enableArtifacts?: boolean | undefined; maxTasksPerContext?: number | undefined; }>, z.ZodObject<{ keyPrefix: z.ZodDefault<z.ZodString>; defaultTtl: z.ZodOptional<z.ZodNumber>; cleanupInterval: z.ZodDefault<z.ZodNumber>; maxTasks: z.ZodDefault<z.ZodNumber>; enableHistory: z.ZodDefault<z.ZodBoolean>; enableArtifacts: z.ZodDefault<z.ZodBoolean>; } & { type: z.ZodLiteral<"redis">; host: z.ZodDefault<z.ZodString>; port: z.ZodDefault<z.ZodNumber>; password: z.ZodOptional<z.ZodString>; db: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { type: "redis"; host: string; port: number; db: number; keyPrefix: string; cleanupInterval: number; maxTasks: number; enableHistory: boolean; enableArtifacts: boolean; password?: string | undefined; defaultTtl?: number | undefined; }, { type: "redis"; host?: string | undefined; port?: number | undefined; password?: string | undefined; db?: number | undefined; keyPrefix?: string | undefined; defaultTtl?: number | undefined; cleanupInterval?: number | undefined; maxTasks?: number | undefined; enableHistory?: boolean | undefined; enableArtifacts?: boolean | undefined; }>, z.ZodObject<{ keyPrefix: z.ZodDefault<z.ZodString>; defaultTtl: z.ZodOptional<z.ZodNumber>; cleanupInterval: z.ZodDefault<z.ZodNumber>; maxTasks: z.ZodDefault<z.ZodNumber>; enableHistory: z.ZodDefault<z.ZodBoolean>; enableArtifacts: z.ZodDefault<z.ZodBoolean>; } & { type: z.ZodLiteral<"postgres">; host: z.ZodDefault<z.ZodString>; port: z.ZodDefault<z.ZodNumber>; database: z.ZodDefault<z.ZodString>; username: z.ZodDefault<z.ZodString>; password: z.ZodOptional<z.ZodString>; ssl: z.ZodDefault<z.ZodBoolean>; tableName: z.ZodDefault<z.ZodString>; maxConnections: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { type: "postgres"; host: string; port: number; keyPrefix: string; database: string; username: string; ssl: boolean; tableName: string; maxConnections: number; cleanupInterval: number; maxTasks: number; enableHistory: boolean; enableArtifacts: boolean; password?: string | undefined; defaultTtl?: number | undefined; }, { type: "postgres"; host?: string | undefined; port?: number | undefined; password?: string | undefined; keyPrefix?: string | undefined; database?: string | undefined; username?: string | undefined; ssl?: boolean | undefined; tableName?: string | undefined; maxConnections?: number | undefined; defaultTtl?: number | undefined; cleanupInterval?: number | undefined; maxTasks?: number | undefined; enableHistory?: boolean | undefined; enableArtifacts?: boolean | undefined; }>]>; export type A2ATaskMemoryConfig = z.infer<typeof A2ATaskMemoryConfigSchema>; export type A2AInMemoryTaskConfig = z.infer<typeof A2AInMemoryTaskConfigSchema>; export type A2ARedisTaskConfig = z.infer<typeof A2ARedisTaskConfigSchema>; export type A2APostgresTaskConfig = z.infer<typeof A2APostgresTaskConfigSchema>; export type A2ATaskProviderConfig = z.infer<typeof A2ATaskProviderConfigSchema>; export type A2ATaskError = { readonly _tag: 'A2ATaskError'; readonly message: string; readonly code: string; readonly provider: string; readonly taskId?: string; readonly cause?: Error; }; export type A2ATaskNotFoundError = { readonly _tag: 'A2ATaskNotFoundError'; readonly message: string; readonly taskId: string; readonly provider: string; }; export type A2ATaskStorageError = { readonly _tag: 'A2ATaskStorageError'; readonly message: string; readonly operation: string; readonly provider: string; readonly taskId?: string; readonly cause?: Error; }; export type A2ATaskErrorUnion = A2ATaskError | A2ATaskNotFoundError | A2ATaskStorageError; export type A2AResult<T> = { success: true; data: T; } | { success: false; error: A2ATaskErrorUnion; }; export declare const createA2ATaskError: (message: string, code: string, provider: string, taskId?: string, cause?: Error) => A2ATaskError; export declare const createA2ATaskNotFoundError: (taskId: string, provider: string) => A2ATaskNotFoundError; export declare const createA2ATaskStorageError: (operation: string, provider: string, taskId?: string, cause?: Error) => A2ATaskStorageError; export declare const isA2ATaskError: (error: any) => error is A2ATaskErrorUnion; export declare const isA2ATaskNotFoundError: (error: any) => error is A2ATaskNotFoundError; export declare const isA2ATaskStorageError: (error: any) => error is A2ATaskStorageError; export declare const createA2ASuccess: <T>(data: T) => A2AResult<T>; export declare const createA2AFailure: (error: A2ATaskErrorUnion) => A2AResult<never>; export declare const createSuccess: <T>(data: T) => A2AResult<T>; export declare const createFailure: (error: A2ATaskErrorUnion) => A2AResult<never>; //# sourceMappingURL=types.d.ts.map