@leanmcp/elicitation 0.1.4-alpha.6.6dae082 → 0.1.5

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 (2) hide show
  1. package/README.md +70 -76
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -52,32 +52,32 @@ npm install @leanmcp/elicitation @leanmcp/core
52
52
  ### Simple Form Elicitation
53
53
 
54
54
  ```typescript
55
- import { Tool } from '@leanmcp/core';
56
- import { Elicitation } from '@leanmcp/elicitation';
55
+ import { Tool } from "@leanmcp/core";
56
+ import { Elicitation } from "@leanmcp/elicitation";
57
57
 
58
58
  class SlackService {
59
- @Tool({ description: 'Create a new Slack channel' })
59
+ @Tool({ description: "Create a new Slack channel" })
60
60
  @Elicitation({
61
- title: 'Create Channel',
62
- description: 'Please provide channel details',
61
+ title: "Create Channel",
62
+ description: "Please provide channel details",
63
63
  fields: [
64
64
  {
65
- name: 'channelName',
66
- label: 'Channel Name',
67
- type: 'text',
65
+ name: "channelName",
66
+ label: "Channel Name",
67
+ type: "text",
68
68
  required: true,
69
69
  validation: {
70
- pattern: '^[a-z0-9-]+$',
71
- errorMessage: 'Must be lowercase alphanumeric with hyphens',
72
- },
70
+ pattern: "^[a-z0-9-]+$",
71
+ errorMessage: "Must be lowercase alphanumeric with hyphens"
72
+ }
73
73
  },
74
74
  {
75
- name: 'isPrivate',
76
- label: 'Private Channel',
77
- type: 'boolean',
78
- defaultValue: false,
79
- },
80
- ],
75
+ name: "isPrivate",
76
+ label: "Private Channel",
77
+ type: "boolean",
78
+ defaultValue: false
79
+ }
80
+ ]
81
81
  })
82
82
  async createChannel(args: { channelName: string; isPrivate: boolean }) {
83
83
  return { success: true, channelName: args.channelName };
@@ -101,26 +101,29 @@ class SlackService {
101
101
  For more complex forms, use `ElicitationFormBuilder`:
102
102
 
103
103
  ```typescript
104
- import { Tool } from '@leanmcp/core';
105
- import { Elicitation, ElicitationFormBuilder, validation } from '@leanmcp/elicitation';
104
+ import { Tool } from "@leanmcp/core";
105
+ import { Elicitation, ElicitationFormBuilder, validation } from "@leanmcp/elicitation";
106
106
 
107
107
  class UserService {
108
- @Tool({ description: 'Create user account' })
108
+ @Tool({ description: "Create user account" })
109
109
  @Elicitation({
110
- builder: () =>
111
- new ElicitationFormBuilder()
112
- .title('User Registration')
113
- .description('Create a new user account')
114
- .addEmailField('email', 'Email Address', { required: true })
115
- .addTextField('username', 'Username', {
116
- required: true,
117
- validation: validation().minLength(3).maxLength(20).pattern('^[a-zA-Z0-9_]+$').build(),
118
- })
119
- .addSelectField('role', 'Role', [
120
- { label: 'Admin', value: 'admin' },
121
- { label: 'User', value: 'user' },
122
- ])
123
- .build(),
110
+ builder: () => new ElicitationFormBuilder()
111
+ .title("User Registration")
112
+ .description("Create a new user account")
113
+ .addEmailField("email", "Email Address", { required: true })
114
+ .addTextField("username", "Username", {
115
+ required: true,
116
+ validation: validation()
117
+ .minLength(3)
118
+ .maxLength(20)
119
+ .pattern("^[a-zA-Z0-9_]+$")
120
+ .build()
121
+ })
122
+ .addSelectField("role", "Role", [
123
+ { label: "Admin", value: "admin" },
124
+ { label: "User", value: "user" }
125
+ ])
126
+ .build()
124
127
  })
125
128
  async createUser(args: any) {
126
129
  return { success: true, email: args.email };
@@ -130,22 +133,22 @@ class UserService {
130
133
 
131
134
  ### Builder Methods
132
135
 
133
- | Method | Description |
134
- | -------------------------------------------------- | ----------------------------- |
135
- | `title(string)` | Set form title |
136
- | `description(string)` | Set form description |
137
- | `condition(fn)` | Set condition for elicitation |
138
- | `addTextField(name, label, opts?)` | Add text input |
139
- | `addTextAreaField(name, label, opts?)` | Add textarea |
140
- | `addNumberField(name, label, opts?)` | Add number input |
141
- | `addBooleanField(name, label, opts?)` | Add checkbox |
142
- | `addSelectField(name, label, options, opts?)` | Add dropdown |
143
- | `addMultiSelectField(name, label, options, opts?)` | Add multi-select |
144
- | `addEmailField(name, label, opts?)` | Add email input |
145
- | `addUrlField(name, label, opts?)` | Add URL input |
146
- | `addDateField(name, label, opts?)` | Add date picker |
147
- | `addCustomField(field)` | Add custom field |
148
- | `build()` | Build final config |
136
+ | Method | Description |
137
+ |--------|-------------|
138
+ | `title(string)` | Set form title |
139
+ | `description(string)` | Set form description |
140
+ | `condition(fn)` | Set condition for elicitation |
141
+ | `addTextField(name, label, opts?)` | Add text input |
142
+ | `addTextAreaField(name, label, opts?)` | Add textarea |
143
+ | `addNumberField(name, label, opts?)` | Add number input |
144
+ | `addBooleanField(name, label, opts?)` | Add checkbox |
145
+ | `addSelectField(name, label, options, opts?)` | Add dropdown |
146
+ | `addMultiSelectField(name, label, options, opts?)` | Add multi-select |
147
+ | `addEmailField(name, label, opts?)` | Add email input |
148
+ | `addUrlField(name, label, opts?)` | Add URL input |
149
+ | `addDateField(name, label, opts?)` | Add date picker |
150
+ | `addCustomField(field)` | Add custom field |
151
+ | `build()` | Build final config |
149
152
 
150
153
  ---
151
154
 
@@ -225,17 +228,17 @@ async deployApp(args: any) {
225
228
 
226
229
  ## Field Types
227
230
 
228
- | Type | Description |
229
- | ------------- | ------------------------ |
230
- | `text` | Single-line text input |
231
- | `textarea` | Multi-line text area |
232
- | `number` | Numeric input |
233
- | `boolean` | Checkbox |
234
- | `select` | Dropdown (single choice) |
235
- | `multiselect` | Multi-select |
236
- | `email` | Email input |
237
- | `url` | URL input |
238
- | `date` | Date picker |
231
+ | Type | Description |
232
+ |------|-------------|
233
+ | `text` | Single-line text input |
234
+ | `textarea` | Multi-line text area |
235
+ | `number` | Numeric input |
236
+ | `boolean` | Checkbox |
237
+ | `select` | Dropdown (single choice) |
238
+ | `multiselect` | Multi-select |
239
+ | `email` | Email input |
240
+ | `url` | URL input |
241
+ | `date` | Date picker |
239
242
 
240
243
  ---
241
244
 
@@ -260,15 +263,15 @@ async deployApp(args: any) {
260
263
  ### Using ValidationBuilder
261
264
 
262
265
  ```typescript
263
- import { validation } from '@leanmcp/elicitation';
266
+ import { validation } from "@leanmcp/elicitation";
264
267
 
265
268
  validation()
266
269
  .minLength(8)
267
270
  .maxLength(100)
268
- .pattern('^[a-zA-Z0-9]+$')
269
- .customValidator((value) => value !== 'admin')
270
- .errorMessage('Invalid input')
271
- .build();
271
+ .pattern("^[a-zA-Z0-9]+$")
272
+ .customValidator((value) => value !== "admin")
273
+ .errorMessage("Invalid input")
274
+ .build()
272
275
  ```
273
276
 
274
277
  ---
@@ -294,16 +297,7 @@ interface ElicitationConfig {
294
297
  interface ElicitationField {
295
298
  name: string;
296
299
  label: string;
297
- type:
298
- | 'text'
299
- | 'number'
300
- | 'boolean'
301
- | 'select'
302
- | 'multiselect'
303
- | 'date'
304
- | 'email'
305
- | 'url'
306
- | 'textarea';
300
+ type: 'text' | 'number' | 'boolean' | 'select' | 'multiselect' | 'date' | 'email' | 'url' | 'textarea';
307
301
  description?: string;
308
302
  required?: boolean;
309
303
  defaultValue?: any;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leanmcp/elicitation",
3
- "version": "0.1.4-alpha.6.6dae082",
3
+ "version": "0.1.5",
4
4
  "description": "Elicitation support for LeanMCP - structured user input collection",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",