jodit-pro
Version:
PRO Version of Jodit Editor
85 lines (84 loc) • 2.49 kB
TypeScript
import type { IDictionary, IJodit } from "jodit/esm/types/index";
import type { ToolCallStatus, ToolParameterType, ToolPermissionScope } from "./types";
/**
* Result from a tool execution
*/
export interface IToolResult {
/** ID of the tool call this result corresponds to */
toolCallId: string;
/** Result data from tool execution */
result: any;
/** Optional error message if execution failed */
error?: string;
}
/**
* Represents a request to execute a tool
*/
export interface IToolCall {
/** Unique identifier for this tool call */
readonly id: string;
/** Name of the tool to execute */
readonly name: string;
/** Arguments to pass to the tool */
readonly arguments: IDictionary;
/** Current execution status */
readonly status: ToolCallStatus;
/** Optional error message if status is 'error' */
readonly error?: string;
/** Optional result from tool execution */
readonly result?: {
readonly result?: any;
readonly error?: string;
};
}
/**
* Tool permission record
*/
export interface IToolPermission {
/** Name of the tool */
toolName: string;
/** Whether permission is granted */
granted: boolean;
/** Timestamp when permission was granted */
grantedAt: number;
/** Scope of the permission */
scope: ToolPermissionScope;
}
/**
* Parameter definition for a tool
*/
export interface IToolParameter {
/** Parameter name */
name: string;
/** Parameter type */
type: ToolParameterType;
/** Human-readable description */
description: string;
/** Whether parameter is required */
required: boolean;
/** Optional enum values for validation */
enum?: any[];
/** Optional default value */
default?: any;
}
/**
* Tool definition
*/
export interface IToolDefinition {
/** Unique tool name */
name: string;
/** Human-readable description of what the tool does */
description: string;
/** Array of parameters the tool accepts */
parameters: IToolParameter[];
/** Whether this tool requires user permission before execution */
requiresPermission: boolean;
/**
* Function to execute the tool
* @param jodit - Editor instance
* @param args - Arguments passed to the tool
* @param signal - AbortSignal for cancellation
* @returns Promise resolving to tool result
*/
execute: (jodit: IJodit, args: IDictionary, signal: AbortSignal) => Promise<any>;
}