UNPKG

@elizaos/plugin-forms

Version:

Forms plugin for ElizaOS - structured conversational data collection

85 lines (84 loc) 2.67 kB
import { IAgentRuntime, Service, type Memory, type UUID } from '@elizaos/core'; import type { Form, FormStatus, FormTemplate, FormUpdateResult } from '../types'; /** * FormsService manages form lifecycle and state. * It provides methods to create, update, list, and cancel forms. */ export declare class FormsService extends Service { static serviceName: string; static serviceType: string; private forms; private templates; private persistenceTimer?; private cleanupTimer?; private tablesChecked; private tablesExist; capabilityDescription: string; constructor(runtime: IAgentRuntime); static start(runtime: IAgentRuntime): Promise<FormsService>; initialize(_runtime: IAgentRuntime): Promise<void>; private registerDefaultTemplates; /** * Force immediate persistence of all forms * Uses batch transaction for efficiency and safety */ forcePersist(): Promise<void>; /** * Wait for database tables to be available * This can be called by plugins that depend on forms persistence */ waitForTables(maxAttempts?: number, delayMs?: number): Promise<boolean>; /** * Check if persistence is available */ isPersistenceAvailable(): boolean; /** * Create a new form from a template or custom definition */ createForm(templateOrForm: string | Partial<Form>, metadata?: Record<string, unknown>): Promise<Form>; /** * Update form with extracted values from user message */ updateForm(formId: UUID, message: Memory): Promise<FormUpdateResult>; /** * Extract form values from text using LLM */ private extractFormValues; /** * List all forms */ listForms(status?: FormStatus): Promise<Form[]>; /** * Get a specific form */ getForm(formId: UUID): Promise<Form | null>; /** * Cancel a form */ cancelForm(formId: UUID): Promise<boolean>; /** * Register a form template */ registerTemplate(template: FormTemplate): void; /** * Get all registered templates */ getTemplates(): FormTemplate[]; /** * Clean up old completed/cancelled forms */ cleanup(olderThanMs?: number): Promise<number>; stop(): Promise<void>; private checkDatabaseTables; private persistFormsBatch; private persistFormsIndividual; private persistForms; private restorePersistedForms; private validateAndSanitizeFormData; private validateAndSanitizeFieldData; private parseFieldValue; private validateFieldValue; private _serializeForm; private _deserializeForm; private cleanupOldForms; }