taskforce-aiagent
Version:
TaskForce is a modular, open-source, production-ready TypeScript agent framework for orchestrating AI agents, LLM-powered autonomous agents, task pipelines, dynamic toolchains, RAG workflows and memory/retrieval systems.
67 lines (66 loc) • 2.45 kB
TypeScript
export type LLMToolParameter = {
type: "object";
properties: Record<string, LLMToolParameterField>;
required?: string[];
};
export type LLMToolParameterField = {
type: "string" | "number" | "boolean" | "object" | "array";
description?: string;
example?: any;
properties?: Record<string, LLMToolParameterField>;
items?: LLMToolParameterField;
required?: string[];
};
export type InputSchema = {
type: "string" | "number" | "object";
required: boolean;
};
/**
* Base class for all tools. All tools must inherit from this.
* Tools are callable by agents and must define input/output schema,
* robust error handling, caching, and examples for documentation/UI.
*/
export declare abstract class Tool {
/** Unique id of the tool (for registry and usage) */
abstract id: string;
/** Human-readable name of the tool */
abstract name: string;
/** Short description of the tool (displayed in UI and prompt) */
abstract description: string;
/** Input schema (for validation, doc, UI) */
abstract inputSchema: InputSchema;
/** LLM-optimized function parameter definitions */
abstract parameters?: LLMToolParameter;
/**
* Main tool handler. Must return a string or JSON-serializable result.
* Must handle input validation and throw on invalid inputs.
*/
abstract handler(input: any): Promise<string>;
/** Should results of this tool be cached? */
cacheable: boolean;
/**
* Optionally override cache logic. Return true to cache, false to skip.
* Example: cache only if result.status === "success"
*/
cacheFunction?(args: Record<string, any>, result: any): boolean;
/**
* Custom error handler. Return a string or object, or rethrow to escalate.
* Example: log and return "API is temporarily unavailable, try later."
*/
errorHandler?(error: any): any;
/**
* At least one example (used for prompt enrichment, auto-documentation, UI display, and testing).
* Example: ["Summarize the web page at url: https://example.com"]
*/
examples?: string[];
/**
* Optional category or tags for discovery, UI grouping, filtering, etc.
* Example: "search", "data-processing", "web"
*/
category?: string;
/**
* Optional external source/adapter/platform for cross-platform tool registry
* Example: "crewai", "langchain", "custom"
*/
source?: string;
}