@xynehq/jaf
Version:
Juspay Agent Framework - A purely functional agent framework with immutable state and composable tools
73 lines • 2.31 kB
JavaScript
/**
* Pure functional A2A types for JAF
* Maintains immutability and type safety
*/
import { z } from 'zod';
// Error Types
export const A2AErrorCodes = {
PARSE_ERROR: -32700,
INVALID_REQUEST: -32600,
METHOD_NOT_FOUND: -32601,
INVALID_PARAMS: -32602,
INTERNAL_ERROR: -32603,
TASK_NOT_FOUND: -32001,
TASK_NOT_CANCELABLE: -32002,
PUSH_NOTIFICATION_NOT_SUPPORTED: -32003,
UNSUPPORTED_OPERATION: -32004,
CONTENT_TYPE_NOT_SUPPORTED: -32005,
INVALID_AGENT_RESPONSE: -32006
};
// Validation Schemas
export const a2aMessageSchema = z.object({
role: z.enum(['user', 'agent']),
parts: z.array(z.union([
z.object({
kind: z.literal('text'),
text: z.string(),
metadata: z.record(z.any()).optional()
}),
z.object({
kind: z.literal('data'),
data: z.record(z.any()),
metadata: z.record(z.any()).optional()
}),
z.object({
kind: z.literal('file'),
file: z.union([
z.object({
bytes: z.string(),
name: z.string().optional(),
mimeType: z.string().optional()
}),
z.object({
uri: z.string(),
name: z.string().optional(),
mimeType: z.string().optional()
})
]),
metadata: z.record(z.any()).optional()
})
])),
messageId: z.string(),
contextId: z.string().optional(),
taskId: z.string().optional(),
kind: z.literal('message'),
metadata: z.record(z.any()).optional(),
extensions: z.array(z.string()).optional(),
referenceTaskIds: z.array(z.string()).optional()
});
export const sendMessageRequestSchema = z.object({
jsonrpc: z.literal('2.0'),
id: z.union([z.string(), z.number()]),
method: z.literal('message/send'),
params: z.object({
message: a2aMessageSchema,
configuration: z.object({
acceptedOutputModes: z.array(z.string()).optional(),
historyLength: z.number().optional(),
blocking: z.boolean().optional()
}).optional(),
metadata: z.record(z.any()).optional()
})
});
//# sourceMappingURL=types.js.map