@elizaos/plugin-forms
Version:
Forms plugin for ElizaOS - structured conversational data collection
85 lines (84 loc) • 2.67 kB
TypeScript
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;
}