@xynehq/jaf
Version:
Juspay Agent Framework - A purely functional agent framework with immutable state and composable tools
75 lines • 2.28 kB
JavaScript
import { z } from 'zod';
// Request/Response schemas
export const httpMessageSchema = z.object({
role: z.enum(['user', 'assistant', 'system']),
content: z.string()
});
export const chatRequestSchema = z.object({
messages: z.array(httpMessageSchema),
agentName: z.string(),
context: z.any().optional(),
maxTurns: z.number().optional(),
stream: z.boolean().default(false),
conversationId: z.string().optional(),
memory: z.object({
autoStore: z.boolean().default(true),
maxMessages: z.number().optional(),
compressionThreshold: z.number().optional()
}).optional()
});
// Extended message schema that includes tool calls and responses
export const fullMessageSchema = z.union([
httpMessageSchema,
z.object({
role: z.literal('assistant'),
content: z.string(),
tool_calls: z.array(z.object({
id: z.string(),
type: z.literal('function'),
function: z.object({
name: z.string(),
arguments: z.string()
})
})).optional()
}),
z.object({
role: z.literal('tool'),
content: z.string(),
tool_call_id: z.string().optional()
})
]);
export const chatResponseSchema = z.object({
success: z.boolean(),
data: z.object({
runId: z.string(),
traceId: z.string(),
conversationId: z.string().optional(),
messages: z.array(fullMessageSchema),
outcome: z.object({
status: z.enum(['completed', 'error', 'max_turns']),
output: z.string().optional(),
error: z.any().optional()
}),
turnCount: z.number(),
executionTimeMs: z.number()
}).optional(),
error: z.string().optional()
});
export const agentListResponseSchema = z.object({
success: z.boolean(),
data: z.object({
agents: z.array(z.object({
name: z.string(),
description: z.string(),
tools: z.array(z.string())
}))
}).optional(),
error: z.string().optional()
});
export const healthResponseSchema = z.object({
status: z.literal('healthy'),
timestamp: z.string(),
version: z.string(),
uptime: z.number()
});
//# sourceMappingURL=types.js.map