@xynehq/jaf
Version:
Juspay Agent Framework - A purely functional agent framework with immutable state and composable tools
57 lines • 2.6 kB
TypeScript
/**
* Standardized tool result types for consistent error handling
*/
export type ToolResultStatus = 'success' | 'error' | 'validation_error' | 'permission_denied' | 'not_found';
export interface ToolResult<T = any> {
readonly status: ToolResultStatus;
readonly data?: T;
readonly error?: {
readonly code: string;
readonly message: string;
readonly details?: any;
};
readonly metadata?: {
readonly executionTimeMs?: number;
readonly toolName?: string;
readonly [key: string]: any;
};
}
export declare const ToolErrorCodes: {
readonly INVALID_INPUT: "INVALID_INPUT";
readonly MISSING_REQUIRED_FIELD: "MISSING_REQUIRED_FIELD";
readonly INVALID_FORMAT: "INVALID_FORMAT";
readonly PERMISSION_DENIED: "PERMISSION_DENIED";
readonly INSUFFICIENT_PERMISSIONS: "INSUFFICIENT_PERMISSIONS";
readonly NOT_FOUND: "NOT_FOUND";
readonly RESOURCE_UNAVAILABLE: "RESOURCE_UNAVAILABLE";
readonly EXECUTION_FAILED: "EXECUTION_FAILED";
readonly TIMEOUT: "TIMEOUT";
readonly EXTERNAL_SERVICE_ERROR: "EXTERNAL_SERVICE_ERROR";
readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
};
export type ToolErrorCode = typeof ToolErrorCodes[keyof typeof ToolErrorCodes];
/**
* Helper functions for creating standardized tool results
*/
export declare class ToolResponse {
static success<T>(data: T, metadata?: ToolResult['metadata']): ToolResult<T>;
static error(code: ToolErrorCode, message: string, details?: any, metadata?: ToolResult['metadata']): ToolResult;
static validationError(message: string, details?: any, metadata?: ToolResult['metadata']): ToolResult;
static permissionDenied(message: string, requiredPermissions?: string[], metadata?: ToolResult['metadata']): ToolResult;
static notFound(resource: string, identifier?: string, metadata?: ToolResult['metadata']): ToolResult;
}
/**
* Tool execution wrapper that provides standardized error handling
*/
export declare function withErrorHandling<TArgs, TResult, TContext>(toolName: string, executor: (args: TArgs, context: TContext) => Promise<TResult> | TResult): (args: TArgs, context: TContext) => Promise<ToolResult<TResult>>;
/**
* Permission checking helper
*/
export declare function requirePermissions<TContext extends {
permissions?: string[];
}>(requiredPermissions: string[]): (context: TContext) => ToolResult | null;
/**
* Convert ToolResult to string for backward compatibility with existing tools
*/
export declare function toolResultToString(result: ToolResult): string;
//# sourceMappingURL=tool-results.d.ts.map