@elizaos/plugin-form 2.0.0-beta.1 → 2.0.11-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +134 -0
  3. package/package.json +21 -4
  4. package/dist/actions/restore.d.ts +0 -25
  5. package/dist/actions/restore.d.ts.map +0 -1
  6. package/dist/actions/restore.js +0 -176
  7. package/dist/actions/restore.js.map +0 -1
  8. package/dist/builder.d.ts +0 -320
  9. package/dist/builder.d.ts.map +0 -1
  10. package/dist/builder.js +0 -458
  11. package/dist/builder.js.map +0 -1
  12. package/dist/builtins.d.ts +0 -128
  13. package/dist/builtins.d.ts.map +0 -1
  14. package/dist/builtins.js +0 -233
  15. package/dist/builtins.js.map +0 -1
  16. package/dist/defaults.d.ts +0 -95
  17. package/dist/defaults.d.ts.map +0 -1
  18. package/dist/defaults.js +0 -79
  19. package/dist/defaults.js.map +0 -1
  20. package/dist/evaluators/extractor.d.ts +0 -28
  21. package/dist/evaluators/extractor.d.ts.map +0 -1
  22. package/dist/evaluators/extractor.js +0 -247
  23. package/dist/evaluators/extractor.js.map +0 -1
  24. package/dist/extraction.d.ts +0 -55
  25. package/dist/extraction.d.ts.map +0 -1
  26. package/dist/extraction.js +0 -331
  27. package/dist/extraction.js.map +0 -1
  28. package/dist/index.d.ts +0 -31
  29. package/dist/index.d.ts.map +0 -1
  30. package/dist/index.js +0 -144
  31. package/dist/index.js.map +0 -1
  32. package/dist/providers/context.d.ts +0 -56
  33. package/dist/providers/context.d.ts.map +0 -1
  34. package/dist/providers/context.js +0 -206
  35. package/dist/providers/context.js.map +0 -1
  36. package/dist/service.d.ts +0 -402
  37. package/dist/service.d.ts.map +0 -1
  38. package/dist/service.js +0 -1158
  39. package/dist/service.js.map +0 -1
  40. package/dist/storage.d.ts +0 -228
  41. package/dist/storage.d.ts.map +0 -1
  42. package/dist/storage.js +0 -218
  43. package/dist/storage.js.map +0 -1
  44. package/dist/template.d.ts +0 -10
  45. package/dist/template.d.ts.map +0 -1
  46. package/dist/template.js +0 -60
  47. package/dist/template.js.map +0 -1
  48. package/dist/ttl.d.ts +0 -144
  49. package/dist/ttl.d.ts.map +0 -1
  50. package/dist/ttl.js +0 -85
  51. package/dist/ttl.js.map +0 -1
  52. package/dist/types.d.ts +0 -1213
  53. package/dist/types.d.ts.map +0 -1
  54. package/dist/types.js +0 -39
  55. package/dist/types.js.map +0 -1
  56. package/dist/validation.d.ts +0 -156
  57. package/dist/validation.d.ts.map +0 -1
  58. package/dist/validation.js +0 -289
  59. package/dist/validation.js.map +0 -1
package/dist/builder.d.ts DELETED
@@ -1,320 +0,0 @@
1
- /**
2
- * @module builder
3
- * @description Fluent builder API for defining forms and controls
4
- *
5
- * ## Why a Builder API
6
- *
7
- * Form definitions can be verbose with many optional fields. The builder
8
- * API provides:
9
- *
10
- * 1. **Type Safety**: Method chaining with TypeScript gives autocomplete
11
- * 2. **Readability**: Intent is clear from method names
12
- * 3. **Defaults**: Builder applies sensible defaults
13
- * 4. **Validation**: Build-time checks for common mistakes
14
- *
15
- * ## Usage Examples
16
- *
17
- * ### Simple Form
18
- *
19
- * ```typescript
20
- * const form = Form.create('contact')
21
- * .name('Contact Form')
22
- * .control(C.email('email').required())
23
- * .control(C.text('message').required())
24
- * .build();
25
- * ```
26
- *
27
- * ### Complex Form
28
- *
29
- * ```typescript
30
- * const registrationForm = Form.create('registration')
31
- * .name('User Registration')
32
- * .description('Create your account')
33
- * .control(
34
- * C.email('email')
35
- * .required()
36
- * .ask('What email should we use for your account?')
37
- * .example('user@example.com')
38
- * )
39
- * .control(
40
- * C.text('username')
41
- * .required()
42
- * .minLength(3)
43
- * .maxLength(20)
44
- * .pattern('^[a-z0-9_]+$')
45
- * .ask('Choose a username (letters, numbers, underscore)')
46
- * )
47
- * .control(
48
- * C.number('age')
49
- * .min(13)
50
- * .ask('How old are you?')
51
- * )
52
- * .onSubmit('handle_registration')
53
- * .ttl({ minDays: 7, maxDays: 30 })
54
- * .build();
55
- * ```
56
- *
57
- * ### Custom Type
58
- *
59
- * ```typescript
60
- * // Register custom type first
61
- * FormService.registerType('solana_address', {
62
- * validate: (v) => ({
63
- * valid: /^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(String(v)),
64
- * error: 'Invalid Solana address'
65
- * }),
66
- * extractionPrompt: 'a Solana wallet address (Base58 encoded)'
67
- * });
68
- *
69
- * // Use in form
70
- * const form = Form.create('wallet')
71
- * .control(
72
- * C.field('walletAddress')
73
- * .type('solana_address')
74
- * .required()
75
- * .label('Wallet Address')
76
- * .ask('What is your Solana wallet address?')
77
- * )
78
- * .build();
79
- * ```
80
- *
81
- * ## Shorthand Exports
82
- *
83
- * For convenience:
84
- * - `Form` is an alias for `FormBuilder`
85
- * - `C` is an alias for `ControlBuilder`
86
- *
87
- * This enables the concise syntax shown in examples.
88
- */
89
- import type { JsonValue } from "@elizaos/core";
90
- import type { FormControl, FormControlDependency, FormControlOption, FormDefinition, FormDefinitionHooks } from "./types";
91
- /**
92
- * Fluent builder for FormControl.
93
- *
94
- * Create controls with readable, chainable syntax:
95
- *
96
- * ```typescript
97
- * ControlBuilder.email('email').required().ask('What is your email?')
98
- * ```
99
- *
100
- * All methods return `this` for chaining except `build()` which returns
101
- * the final FormControl.
102
- */
103
- export declare class ControlBuilder {
104
- /** Partial control being built */
105
- private control;
106
- /**
107
- * Create a new ControlBuilder.
108
- *
109
- * @param key - The unique key for this control
110
- */
111
- constructor(key: string);
112
- /** Create a generic field builder */
113
- static field(key: string): ControlBuilder;
114
- /** Create a text field */
115
- static text(key: string): ControlBuilder;
116
- /** Create an email field */
117
- static email(key: string): ControlBuilder;
118
- /** Create a number field */
119
- static number(key: string): ControlBuilder;
120
- /** Create a boolean (yes/no) field */
121
- static boolean(key: string): ControlBuilder;
122
- /** Create a select field with options */
123
- static select(key: string, options: FormControlOption[]): ControlBuilder;
124
- /** Create a date field */
125
- static date(key: string): ControlBuilder;
126
- /** Create a file upload field */
127
- static file(key: string): ControlBuilder;
128
- /** Set the field type */
129
- type(type: string): this;
130
- /** Mark field as required */
131
- required(): this;
132
- /** Mark field as optional (default) */
133
- optional(): this;
134
- /** Mark field as hidden (extract silently, never ask) */
135
- hidden(): this;
136
- /** Mark field as sensitive (don't echo value back) */
137
- sensitive(): this;
138
- /** Mark field as readonly (can't change after set) */
139
- readonly(): this;
140
- /** Mark field as accepting multiple values */
141
- multiple(): this;
142
- /** Set regex pattern for validation */
143
- pattern(regex: string): this;
144
- /** Set minimum value (for numbers) or minimum length (via minLength) */
145
- min(n: number): this;
146
- /** Set maximum value (for numbers) or maximum length (via maxLength) */
147
- max(n: number): this;
148
- /** Set minimum string length */
149
- minLength(n: number): this;
150
- /** Set maximum string length */
151
- maxLength(n: number): this;
152
- /** Set allowed values (enum) */
153
- enum(values: string[]): this;
154
- /** Set select options */
155
- options(opts: FormControlOption[]): this;
156
- /** Set human-readable label */
157
- label(label: string): this;
158
- /** Set custom prompt for asking this field */
159
- ask(prompt: string): this;
160
- /** Set description for LLM context */
161
- description(desc: string): this;
162
- /** Add extraction hints (keywords to look for) */
163
- hint(...hints: string[]): this;
164
- /** Set example value for "give me an example" */
165
- example(value: string): this;
166
- /** Set confidence threshold for auto-acceptance */
167
- confirmThreshold(n: number): this;
168
- /** Set accepted MIME types for file upload */
169
- accept(mimeTypes: string[]): this;
170
- /** Set maximum file size in bytes */
171
- maxSize(bytes: number): this;
172
- /** Set maximum number of files */
173
- maxFiles(n: number): this;
174
- /** Set roles that can see/fill this field */
175
- roles(...roles: string[]): this;
176
- /** Set default value */
177
- default(value: JsonValue): this;
178
- /** Set dependency on another field */
179
- dependsOn(field: string, condition?: FormControlDependency["condition"], value?: JsonValue): this;
180
- /** Set database column name (defaults to key) */
181
- dbbind(columnName: string): this;
182
- /** Set section name for grouping */
183
- section(name: string): this;
184
- /** Set display order within section */
185
- order(n: number): this;
186
- /** Set placeholder text */
187
- placeholder(text: string): this;
188
- /** Set help text */
189
- helpText(text: string): this;
190
- /** Set custom widget type */
191
- widget(type: string): this;
192
- /** Add localized text for a locale */
193
- i18n(locale: string, translations: {
194
- label?: string;
195
- description?: string;
196
- askPrompt?: string;
197
- helpText?: string;
198
- }): this;
199
- /** Add custom metadata */
200
- meta(key: string, value: JsonValue): this;
201
- /**
202
- * Build the final FormControl.
203
- *
204
- * Applies defaults and validates the control.
205
- *
206
- * @returns Complete FormControl object
207
- */
208
- build(): FormControl;
209
- }
210
- /**
211
- * Fluent builder for FormDefinition.
212
- *
213
- * Create forms with readable, chainable syntax:
214
- *
215
- * ```typescript
216
- * Form.create('contact')
217
- * .name('Contact Form')
218
- * .control(C.email('email').required())
219
- * .onSubmit('handle_contact')
220
- * .build();
221
- * ```
222
- */
223
- export declare class FormBuilder {
224
- /** Partial form being built */
225
- private form;
226
- /**
227
- * Create a new FormBuilder.
228
- *
229
- * @param id - Unique form identifier
230
- */
231
- constructor(id: string);
232
- /** Create a new form builder */
233
- static create(id: string): FormBuilder;
234
- /** Set form name */
235
- name(name: string): this;
236
- /** Set form description */
237
- description(desc: string): this;
238
- /** Set form version */
239
- version(v: number): this;
240
- /**
241
- * Add a control to the form.
242
- *
243
- * Accepts either a ControlBuilder (calls .build()) or a FormControl.
244
- */
245
- control(builder: ControlBuilder | FormControl): this;
246
- /** Add multiple controls */
247
- controls(...builders: (ControlBuilder | FormControl)[]): this;
248
- /** Add required text fields */
249
- required(...keys: string[]): this;
250
- /** Add optional text fields */
251
- optional(...keys: string[]): this;
252
- /** Set roles that can start this form */
253
- roles(...roles: string[]): this;
254
- /** Allow multiple submissions per user */
255
- allowMultiple(): this;
256
- /** Disable undo functionality */
257
- noUndo(): this;
258
- /** Disable skip functionality */
259
- noSkip(): this;
260
- /** Disable autofill */
261
- noAutofill(): this;
262
- /** Set maximum undo steps */
263
- maxUndoSteps(n: number): this;
264
- /** Configure TTL (time-to-live) settings */
265
- ttl(config: {
266
- minDays?: number;
267
- maxDays?: number;
268
- effortMultiplier?: number;
269
- }): this;
270
- /** Disable nudge messages */
271
- noNudge(): this;
272
- /** Set inactivity hours before nudge */
273
- nudgeAfter(hours: number): this;
274
- /** Set custom nudge message */
275
- nudgeMessage(message: string): this;
276
- /** Set task worker to call on session start */
277
- onStart(workerName: string): this;
278
- /** Set task worker to call on field change */
279
- onFieldChange(workerName: string): this;
280
- /** Set task worker to call when form is ready to submit */
281
- onReady(workerName: string): this;
282
- /** Set task worker to call on submission */
283
- onSubmit(workerName: string): this;
284
- /** Set task worker to call on cancellation */
285
- onCancel(workerName: string): this;
286
- /** Set task worker to call on expiration */
287
- onExpire(workerName: string): this;
288
- /** Set multiple hooks at once */
289
- hooks(hooks: FormDefinitionHooks): this;
290
- /** Enable debug mode (logs extraction reasoning) */
291
- debug(): this;
292
- /** Add localized form text */
293
- i18n(locale: string, translations: {
294
- name?: string;
295
- description?: string;
296
- }): this;
297
- /** Add custom metadata */
298
- meta(key: string, value: JsonValue): this;
299
- /**
300
- * Build the final FormDefinition.
301
- *
302
- * Applies defaults and validates the form.
303
- *
304
- * @returns Complete FormDefinition object
305
- */
306
- build(): FormDefinition;
307
- }
308
- /**
309
- * Shorthand for FormBuilder.create
310
- *
311
- * Usage: `Form.create('myForm')...`
312
- */
313
- export declare const Form: typeof FormBuilder;
314
- /**
315
- * Shorthand for ControlBuilder factories
316
- *
317
- * Usage: `C.email('email').required()`
318
- */
319
- export declare const C: typeof ControlBuilder;
320
- //# sourceMappingURL=builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}