Errors API
Error classes, codes, and Result types.
Error Classes
AgentForgeError
Base error class:
typescript
class AgentForgeError extends Error {
code: string;
context: ErrorContext;
timestamp: number;
errorId: string;
getUserMessage(): string;
getDiagnostics(): object;
}ProviderError
LLM provider errors:
typescript
class ProviderError extends AgentForgeError {
provider: string;
statusCode?: number;
}ToolExecutionError
Tool execution errors:
typescript
class ToolExecutionError extends AgentForgeError {
toolName: string;
}ValidationError
Input validation errors:
typescript
class ValidationError extends AgentForgeError {
field?: string;
static missingRequired(field: string): ValidationError;
static invalidField(field: string, expected: string, actual: unknown): ValidationError;
static invalidFormat(field: string, format: string): ValidationError;
}ConfigurationError
Configuration errors:
typescript
class ConfigurationError extends AgentForgeError {}AgentExecutionError
Agent execution errors:
typescript
class AgentExecutionError extends AgentForgeError {}Error Codes
typescript
enum ErrorCode {
// Provider
PROVIDER_ERROR = 'PROVIDER_ERROR',
PROVIDER_RATE_LIMITED = 'PROVIDER_RATE_LIMITED',
PROVIDER_AUTHENTICATION_FAILED = 'PROVIDER_AUTHENTICATION_FAILED',
PROVIDER_TIMEOUT = 'PROVIDER_TIMEOUT',
PROVIDER_INVALID_RESPONSE = 'PROVIDER_INVALID_RESPONSE',
// Tool
TOOL_NOT_FOUND = 'TOOL_NOT_FOUND',
TOOL_EXECUTION_FAILED = 'TOOL_EXECUTION_FAILED',
TOOL_VALIDATION_FAILED = 'TOOL_VALIDATION_FAILED',
TOOL_TIMEOUT = 'TOOL_TIMEOUT',
// Validation
VALIDATION_FAILED = 'VALIDATION_FAILED',
INVALID_INPUT = 'INVALID_INPUT',
MISSING_REQUIRED_FIELD = 'MISSING_REQUIRED_FIELD',
// Agent
AGENT_MAX_ITERATIONS = 'AGENT_MAX_ITERATIONS',
AGENT_ABORTED = 'AGENT_ABORTED',
// Config
INVALID_CONFIGURATION = 'INVALID_CONFIGURATION',
// Unknown
UNKNOWN_ERROR = 'UNKNOWN_ERROR',
}Error Utilities
isAgentForgeError()
typescript
function isAgentForgeError(error: unknown): error is AgentForgeErrorisRetryableError()
typescript
function isRetryableError(error: unknown): booleanChecks for rate limits, timeouts, and server errors.
wrapError()
typescript
function wrapError(error: unknown, context?: Partial<ErrorContext>): AgentForgeErrorWraps any error in AgentForgeError.
createErrorHandler()
typescript
function createErrorHandler(handlers: {
onProviderError?: (error: ProviderError) => void;
onToolError?: (error: ToolExecutionError) => void;
onValidationError?: (error: ValidationError) => void;
onUnknown?: (error: Error) => void;
}): (error: unknown) => voidResult Types
Functional error handling without exceptions.
Result Type
typescript
type Result<T, E = Error> = Ok<T> | Err<E>;
interface Ok<T> {
readonly _tag: 'ok';
readonly value: T;
}
interface Err<E> {
readonly _tag: 'err';
readonly error: E;
}Creating Results
typescript
import { ok, err, errFrom } from 'agentforge';
const success = ok(42); // Ok<number>
const failure = err(new Error('fail')); // Err<Error>
const wrapped = errFrom('fail'); // Err<Error>Checking Results
typescript
import { isOk, isErr } from 'agentforge';
if (isOk(result)) {
console.log(result.value);
}
if (isErr(result)) {
console.log(result.error.message);
}Unwrapping
typescript
import { unwrap, unwrapOr, unwrapOrElse } from 'agentforge';
unwrap(result); // Throws if Err
unwrapOr(result, 0); // Returns 0 if Err
unwrapOrElse(result, () => fallback()); // Lazy fallbackTransforming
typescript
import { map, mapErr, flatMap } from 'agentforge';
map(result, x => x * 2); // Transform value
mapErr(result, e => new CustomError(e)); // Transform error
flatMap(result, x => ok(x * 2)); // Chain operationsCombining
typescript
import { combine } from 'agentforge';
const results = [ok(1), ok(2), ok(3)];
const combined = combine(results); // Ok<[1, 2, 3]> or first ErrTry/Catch Wrappers
typescript
import { tryCatch, tryCatchAsync } from 'agentforge';
const sync = tryCatch(() => JSON.parse(str));
const async = await tryCatchAsync(() => fetch(url));Pattern Matching
typescript
import { match } from 'agentforge';
const message = match(result, {
ok: (value) => `Success: ${value}`,
err: (error) => `Failed: ${error.message}`,
});Promise Conversion
typescript
import { fromPromise, toPromise } from 'agentforge';
const result = await fromPromise(promise);
const promise = toPromise(result);