@ng-forge/dynamic-form-mcp 0.5.1
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.
- package/README.md +221 -0
- package/bin/ng-forge-mcp.d.ts +8 -0
- package/bin/ng-forge-mcp.d.ts.map +1 -0
- package/bin/ng-forge-mcp.js +10202 -0
- package/package.json +61 -0
- package/src/index.d.ts +14 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +10265 -0
- package/src/registry/api-reference.json +510 -0
- package/src/registry/docs.json +230 -0
- package/src/registry/examples.json +629 -0
- package/src/registry/field-types.json +490 -0
- package/src/registry/index.d.ts +110 -0
- package/src/registry/index.d.ts.map +1 -0
- package/src/registry/instructions.d.ts +8 -0
- package/src/registry/instructions.d.ts.map +1 -0
- package/src/registry/ui-adapters.json +225 -0
- package/src/registry/validators.json +158 -0
- package/src/resources/documentation.resource.d.ts +8 -0
- package/src/resources/documentation.resource.d.ts.map +1 -0
- package/src/resources/examples.resource.d.ts +8 -0
- package/src/resources/examples.resource.d.ts.map +1 -0
- package/src/resources/field-types.resource.d.ts +8 -0
- package/src/resources/field-types.resource.d.ts.map +1 -0
- package/src/resources/index.d.ts +11 -0
- package/src/resources/index.d.ts.map +1 -0
- package/src/resources/instructions.resource.d.ts +8 -0
- package/src/resources/instructions.resource.d.ts.map +1 -0
- package/src/resources/schemas.resource.d.ts +9 -0
- package/src/resources/schemas.resource.d.ts.map +1 -0
- package/src/resources/ui-adapters.resource.d.ts +8 -0
- package/src/resources/ui-adapters.resource.d.ts.map +1 -0
- package/src/resources/validators.resource.d.ts +8 -0
- package/src/resources/validators.resource.d.ts.map +1 -0
- package/src/server.d.ts +22 -0
- package/src/server.d.ts.map +1 -0
- package/src/tools/data/lookup-topics.d.ts +18 -0
- package/src/tools/data/lookup-topics.d.ts.map +1 -0
- package/src/tools/examples.tool.d.ts +12 -0
- package/src/tools/examples.tool.d.ts.map +1 -0
- package/src/tools/index.d.ts +33 -0
- package/src/tools/index.d.ts.map +1 -0
- package/src/tools/lookup.tool.d.ts +15 -0
- package/src/tools/lookup.tool.d.ts.map +1 -0
- package/src/tools/scaffold.tool.d.ts +11 -0
- package/src/tools/scaffold.tool.d.ts.map +1 -0
- package/src/tools/validate.tool.d.ts +14 -0
- package/src/tools/validate.tool.d.ts.map +1 -0
- package/src/utils/ast-extractor.d.ts +88 -0
- package/src/utils/ast-extractor.d.ts.map +1 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"library": "material",
|
|
4
|
+
"package": "@ng-forge/dynamic-forms-material",
|
|
5
|
+
"providerFunction": "withMaterialFields()",
|
|
6
|
+
"fieldTypes": [
|
|
7
|
+
{
|
|
8
|
+
"type": "input",
|
|
9
|
+
"componentName": "MatInputFieldComponent",
|
|
10
|
+
"additionalProps": {
|
|
11
|
+
"appearance": {
|
|
12
|
+
"name": "appearance",
|
|
13
|
+
"type": "'fill' | 'outline'",
|
|
14
|
+
"description": "Material form field appearance",
|
|
15
|
+
"required": false,
|
|
16
|
+
"default": "outline"
|
|
17
|
+
},
|
|
18
|
+
"subscriptSizing": {
|
|
19
|
+
"name": "subscriptSizing",
|
|
20
|
+
"type": "'fixed' | 'dynamic'",
|
|
21
|
+
"description": "Error/hint text sizing",
|
|
22
|
+
"required": false,
|
|
23
|
+
"default": "dynamic"
|
|
24
|
+
},
|
|
25
|
+
"hint": {
|
|
26
|
+
"name": "hint",
|
|
27
|
+
"type": "DynamicText",
|
|
28
|
+
"description": "Hint text below the field",
|
|
29
|
+
"required": false
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"type": "select",
|
|
35
|
+
"componentName": "MatSelectFieldComponent",
|
|
36
|
+
"additionalProps": {
|
|
37
|
+
"appearance": {
|
|
38
|
+
"name": "appearance",
|
|
39
|
+
"type": "'fill' | 'outline'",
|
|
40
|
+
"description": "Material form field appearance",
|
|
41
|
+
"required": false,
|
|
42
|
+
"default": "outline"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"type": "checkbox",
|
|
48
|
+
"componentName": "MatCheckboxFieldComponent",
|
|
49
|
+
"additionalProps": {
|
|
50
|
+
"color": {
|
|
51
|
+
"name": "color",
|
|
52
|
+
"type": "'primary' | 'accent' | 'warn'",
|
|
53
|
+
"description": "Checkbox color theme",
|
|
54
|
+
"required": false,
|
|
55
|
+
"default": "primary"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"type": "datepicker",
|
|
61
|
+
"componentName": "MatDatepickerFieldComponent",
|
|
62
|
+
"additionalProps": {
|
|
63
|
+
"startView": {
|
|
64
|
+
"name": "startView",
|
|
65
|
+
"type": "'month' | 'year' | 'multi-year'",
|
|
66
|
+
"description": "Initial calendar view",
|
|
67
|
+
"required": false,
|
|
68
|
+
"default": "month"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"library": "bootstrap",
|
|
76
|
+
"package": "@ng-forge/dynamic-forms-bootstrap",
|
|
77
|
+
"providerFunction": "withBootstrapFields()",
|
|
78
|
+
"fieldTypes": [
|
|
79
|
+
{
|
|
80
|
+
"type": "input",
|
|
81
|
+
"componentName": "BootstrapInputComponent",
|
|
82
|
+
"additionalProps": {
|
|
83
|
+
"size": {
|
|
84
|
+
"name": "size",
|
|
85
|
+
"type": "'sm' | 'lg'",
|
|
86
|
+
"description": "Bootstrap input size",
|
|
87
|
+
"required": false
|
|
88
|
+
},
|
|
89
|
+
"floating": {
|
|
90
|
+
"name": "floating",
|
|
91
|
+
"type": "boolean",
|
|
92
|
+
"description": "Use floating labels",
|
|
93
|
+
"required": false,
|
|
94
|
+
"default": false
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"type": "select",
|
|
100
|
+
"componentName": "BootstrapSelectComponent",
|
|
101
|
+
"additionalProps": {
|
|
102
|
+
"size": {
|
|
103
|
+
"name": "size",
|
|
104
|
+
"type": "'sm' | 'lg'",
|
|
105
|
+
"description": "Bootstrap select size",
|
|
106
|
+
"required": false
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
]
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"library": "primeng",
|
|
114
|
+
"package": "@ng-forge/dynamic-forms-primeng",
|
|
115
|
+
"providerFunction": "withPrimeNGFields()",
|
|
116
|
+
"fieldTypes": [
|
|
117
|
+
{
|
|
118
|
+
"type": "input",
|
|
119
|
+
"componentName": "PrimeInputComponent",
|
|
120
|
+
"additionalProps": {
|
|
121
|
+
"variant": {
|
|
122
|
+
"name": "variant",
|
|
123
|
+
"type": "'outlined' | 'filled'",
|
|
124
|
+
"description": "Input variant style",
|
|
125
|
+
"required": false,
|
|
126
|
+
"default": "outlined"
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"type": "select",
|
|
132
|
+
"componentName": "PrimeDropdownComponent",
|
|
133
|
+
"additionalProps": {
|
|
134
|
+
"filter": {
|
|
135
|
+
"name": "filter",
|
|
136
|
+
"type": "boolean",
|
|
137
|
+
"description": "Enable dropdown filtering",
|
|
138
|
+
"required": false,
|
|
139
|
+
"default": false
|
|
140
|
+
},
|
|
141
|
+
"showClear": {
|
|
142
|
+
"name": "showClear",
|
|
143
|
+
"type": "boolean",
|
|
144
|
+
"description": "Show clear button",
|
|
145
|
+
"required": false,
|
|
146
|
+
"default": false
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"type": "datepicker",
|
|
152
|
+
"componentName": "PrimeDatepickerComponent",
|
|
153
|
+
"additionalProps": {
|
|
154
|
+
"showIcon": {
|
|
155
|
+
"name": "showIcon",
|
|
156
|
+
"type": "boolean",
|
|
157
|
+
"description": "Show calendar icon",
|
|
158
|
+
"required": false,
|
|
159
|
+
"default": true
|
|
160
|
+
},
|
|
161
|
+
"dateFormat": {
|
|
162
|
+
"name": "dateFormat",
|
|
163
|
+
"type": "string",
|
|
164
|
+
"description": "Date format pattern",
|
|
165
|
+
"required": false,
|
|
166
|
+
"default": "mm/dd/yy"
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
]
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"library": "ionic",
|
|
174
|
+
"package": "@ng-forge/dynamic-forms-ionic",
|
|
175
|
+
"providerFunction": "withIonicFields()",
|
|
176
|
+
"fieldTypes": [
|
|
177
|
+
{
|
|
178
|
+
"type": "input",
|
|
179
|
+
"componentName": "IonicInputComponent",
|
|
180
|
+
"additionalProps": {
|
|
181
|
+
"fill": {
|
|
182
|
+
"name": "fill",
|
|
183
|
+
"type": "'solid' | 'outline'",
|
|
184
|
+
"description": "Input fill style",
|
|
185
|
+
"required": false,
|
|
186
|
+
"default": "solid"
|
|
187
|
+
},
|
|
188
|
+
"labelPlacement": {
|
|
189
|
+
"name": "labelPlacement",
|
|
190
|
+
"type": "'fixed' | 'stacked' | 'floating'",
|
|
191
|
+
"description": "Label placement style",
|
|
192
|
+
"required": false,
|
|
193
|
+
"default": "floating"
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"type": "select",
|
|
199
|
+
"componentName": "IonicSelectComponent",
|
|
200
|
+
"additionalProps": {
|
|
201
|
+
"interface": {
|
|
202
|
+
"name": "interface",
|
|
203
|
+
"type": "'alert' | 'action-sheet' | 'popover'",
|
|
204
|
+
"description": "Selection interface style",
|
|
205
|
+
"required": false,
|
|
206
|
+
"default": "alert"
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"type": "toggle",
|
|
212
|
+
"componentName": "IonicToggleComponent",
|
|
213
|
+
"additionalProps": {
|
|
214
|
+
"enableOnOffLabels": {
|
|
215
|
+
"name": "enableOnOffLabels",
|
|
216
|
+
"type": "boolean",
|
|
217
|
+
"description": "Show on/off labels",
|
|
218
|
+
"required": false,
|
|
219
|
+
"default": false
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
]
|
|
224
|
+
}
|
|
225
|
+
]
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"type": "required",
|
|
4
|
+
"category": "built-in",
|
|
5
|
+
"description": "Validates that a field has a non-empty value",
|
|
6
|
+
"parameters": {},
|
|
7
|
+
"example": "{ type: 'required' }\n// or shorthand: required: true"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"type": "email",
|
|
11
|
+
"category": "built-in",
|
|
12
|
+
"description": "Validates email format",
|
|
13
|
+
"parameters": {},
|
|
14
|
+
"example": "{ type: 'email' }\n// or shorthand: email: true"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"type": "min",
|
|
18
|
+
"category": "built-in",
|
|
19
|
+
"description": "Validates minimum numeric value",
|
|
20
|
+
"parameters": {
|
|
21
|
+
"value": {
|
|
22
|
+
"name": "value",
|
|
23
|
+
"type": "number",
|
|
24
|
+
"description": "Minimum allowed value",
|
|
25
|
+
"required": true
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"example": "{ type: 'min', value: 0 }\n// or shorthand: min: 0"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"type": "max",
|
|
32
|
+
"category": "built-in",
|
|
33
|
+
"description": "Validates maximum numeric value",
|
|
34
|
+
"parameters": {
|
|
35
|
+
"value": {
|
|
36
|
+
"name": "value",
|
|
37
|
+
"type": "number",
|
|
38
|
+
"description": "Maximum allowed value",
|
|
39
|
+
"required": true
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"example": "{ type: 'max', value: 100 }\n// or shorthand: max: 100"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"type": "minLength",
|
|
46
|
+
"category": "built-in",
|
|
47
|
+
"description": "Validates minimum string length",
|
|
48
|
+
"parameters": {
|
|
49
|
+
"value": {
|
|
50
|
+
"name": "value",
|
|
51
|
+
"type": "number",
|
|
52
|
+
"description": "Minimum string length",
|
|
53
|
+
"required": true
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"example": "{ type: 'minLength', value: 3 }\n// or shorthand: minLength: 3"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"type": "maxLength",
|
|
60
|
+
"category": "built-in",
|
|
61
|
+
"description": "Validates maximum string length",
|
|
62
|
+
"parameters": {
|
|
63
|
+
"value": {
|
|
64
|
+
"name": "value",
|
|
65
|
+
"type": "number",
|
|
66
|
+
"description": "Maximum string length",
|
|
67
|
+
"required": true
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"example": "{ type: 'maxLength', value: 100 }\n// or shorthand: maxLength: 100"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"type": "pattern",
|
|
74
|
+
"category": "built-in",
|
|
75
|
+
"description": "Validates against a regular expression pattern",
|
|
76
|
+
"parameters": {
|
|
77
|
+
"value": {
|
|
78
|
+
"name": "value",
|
|
79
|
+
"type": "string | RegExp",
|
|
80
|
+
"description": "Regular expression pattern",
|
|
81
|
+
"required": true
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"example": "{ type: 'pattern', value: '^[A-Z][a-z]+$' }\n// or shorthand: pattern: '^[A-Z][a-z]+$'"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"type": "custom",
|
|
88
|
+
"category": "custom",
|
|
89
|
+
"description": "Custom synchronous validator using registered function or expression. IMPORTANT: The validator returns { kind: 'errorKind' } on failure. The actual error MESSAGE is defined in 'validationMessages' at the FIELD level, NOT in the validator config.",
|
|
90
|
+
"parameters": {
|
|
91
|
+
"functionName": {
|
|
92
|
+
"name": "functionName",
|
|
93
|
+
"type": "string",
|
|
94
|
+
"description": "Name of registered validator function",
|
|
95
|
+
"required": false
|
|
96
|
+
},
|
|
97
|
+
"expression": {
|
|
98
|
+
"name": "expression",
|
|
99
|
+
"type": "string",
|
|
100
|
+
"description": "JavaScript expression to evaluate",
|
|
101
|
+
"required": false
|
|
102
|
+
},
|
|
103
|
+
"kind": {
|
|
104
|
+
"name": "kind",
|
|
105
|
+
"type": "string",
|
|
106
|
+
"description": "Error kind returned when validation fails. This kind maps to a message in field-level validationMessages.",
|
|
107
|
+
"required": false
|
|
108
|
+
},
|
|
109
|
+
"params": {
|
|
110
|
+
"name": "params",
|
|
111
|
+
"type": "Record<string, unknown>",
|
|
112
|
+
"description": "Parameters to pass to validator function",
|
|
113
|
+
"required": false
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"example": "// Expression-based custom validator with error message\n// The validator:\n{\n type: 'custom',\n expression: 'fieldValue === formValue.password',\n kind: 'passwordMismatch' // Just the error KIND, not the message\n}\n\n// COMPLETE FIELD with validationMessages at FIELD level:\n{\n key: 'confirmPassword',\n type: 'input',\n label: 'Confirm Password',\n props: { type: 'password' },\n validators: [\n { type: 'custom', expression: 'fieldValue === formValue.password', kind: 'passwordMismatch' }\n ],\n validationMessages: {\n passwordMismatch: 'Passwords do not match' // Message goes HERE at field level\n }\n}"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"type": "customAsync",
|
|
120
|
+
"category": "async",
|
|
121
|
+
"description": "Async validator using registered async function",
|
|
122
|
+
"parameters": {
|
|
123
|
+
"functionName": {
|
|
124
|
+
"name": "functionName",
|
|
125
|
+
"type": "string",
|
|
126
|
+
"description": "Name of registered async validator function",
|
|
127
|
+
"required": true
|
|
128
|
+
},
|
|
129
|
+
"params": {
|
|
130
|
+
"name": "params",
|
|
131
|
+
"type": "Record<string, unknown>",
|
|
132
|
+
"description": "Parameters to pass to validator function",
|
|
133
|
+
"required": false
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"example": "{\n type: 'customAsync',\n functionName: 'checkUsernameAvailability'\n}"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"type": "customHttp",
|
|
140
|
+
"category": "http",
|
|
141
|
+
"description": "HTTP-based validator with automatic request cancellation",
|
|
142
|
+
"parameters": {
|
|
143
|
+
"functionName": {
|
|
144
|
+
"name": "functionName",
|
|
145
|
+
"type": "string",
|
|
146
|
+
"description": "Name of registered HTTP validator configuration",
|
|
147
|
+
"required": true
|
|
148
|
+
},
|
|
149
|
+
"params": {
|
|
150
|
+
"name": "params",
|
|
151
|
+
"type": "Record<string, unknown>",
|
|
152
|
+
"description": "Parameters to pass to HTTP validator",
|
|
153
|
+
"required": false
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
"example": "{\n type: 'customHttp',\n functionName: 'validateEmailExists'\n}"
|
|
157
|
+
}
|
|
158
|
+
]
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Documentation Resource
|
|
3
|
+
*
|
|
4
|
+
* Exposes ng-forge library documentation from generated docs.json.
|
|
5
|
+
*/
|
|
6
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
7
|
+
export declare function registerDocumentationResource(server: McpServer): void;
|
|
8
|
+
//# sourceMappingURL=documentation.resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentation.resource.d.ts","sourceRoot":"","sources":["../../../../../packages/dynamic-form-mcp/src/resources/documentation.resource.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6FrE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Examples Resource
|
|
3
|
+
*
|
|
4
|
+
* Provides curated FormConfig examples for common use cases.
|
|
5
|
+
*/
|
|
6
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
7
|
+
export declare function registerExamplesResource(server: McpServer): void;
|
|
8
|
+
//# sourceMappingURL=examples.resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"examples.resource.d.ts","sourceRoot":"","sources":["../../../../../packages/dynamic-form-mcp/src/resources/examples.resource.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqBpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgHhE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field Types Resource
|
|
3
|
+
*
|
|
4
|
+
* Exposes available ng-forge field types and their configurations.
|
|
5
|
+
*/
|
|
6
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
7
|
+
export declare function registerFieldTypesResource(server: McpServer): void;
|
|
8
|
+
//# sourceMappingURL=field-types.resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-types.resource.d.ts","sourceRoot":"","sources":["../../../../../packages/dynamic-form-mcp/src/resources/field-types.resource.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkHlE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Resources Registration
|
|
3
|
+
*
|
|
4
|
+
* Registers all available resources with the MCP server.
|
|
5
|
+
*/
|
|
6
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
7
|
+
/**
|
|
8
|
+
* Register all MCP resources
|
|
9
|
+
*/
|
|
10
|
+
export declare function registerResources(server: McpServer): void;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/dynamic-form-mcp/src/resources/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASpE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAQzD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Instructions Resource
|
|
3
|
+
*
|
|
4
|
+
* Exposes ng-forge best practices and usage guidelines for AI assistants.
|
|
5
|
+
*/
|
|
6
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
7
|
+
export declare function registerInstructionsResource(server: McpServer): void;
|
|
8
|
+
//# sourceMappingURL=instructions.resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.resource.d.ts","sourceRoot":"","sources":["../../../../../packages/dynamic-form-mcp/src/resources/instructions.resource.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAYpE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schemas Resource
|
|
3
|
+
*
|
|
4
|
+
* Provides a lightweight index pointing to tools for schema access.
|
|
5
|
+
* Actual schemas are accessed via tools to control context size.
|
|
6
|
+
*/
|
|
7
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
8
|
+
export declare function registerSchemasResource(server: McpServer): void;
|
|
9
|
+
//# sourceMappingURL=schemas.resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.resource.d.ts","sourceRoot":"","sources":["../../../../../packages/dynamic-form-mcp/src/resources/schemas.resource.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8C/D"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI Adapters Resource
|
|
3
|
+
*
|
|
4
|
+
* Exposes UI library-specific field configurations for Material, Bootstrap, PrimeNG, and Ionic.
|
|
5
|
+
*/
|
|
6
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
7
|
+
export declare function registerUIAdaptersResource(server: McpServer): void;
|
|
8
|
+
//# sourceMappingURL=ui-adapters.resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-adapters.resource.d.ts","sourceRoot":"","sources":["../../../../../packages/dynamic-form-mcp/src/resources/ui-adapters.resource.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmGlE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validators Resource
|
|
3
|
+
*
|
|
4
|
+
* Exposes available ng-forge validators and their configurations.
|
|
5
|
+
*/
|
|
6
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
7
|
+
export declare function registerValidatorsResource(server: McpServer): void;
|
|
8
|
+
//# sourceMappingURL=validators.resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.resource.d.ts","sourceRoot":"","sources":["../../../../../packages/dynamic-form-mcp/src/resources/validators.resource.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkIlE"}
|
package/src/server.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server for ng-forge dynamic forms
|
|
3
|
+
*
|
|
4
|
+
* Provides AI assistants with tools and resources for:
|
|
5
|
+
* - Field type discovery
|
|
6
|
+
* - Form schema generation
|
|
7
|
+
* - Validation configuration
|
|
8
|
+
* - Expression building
|
|
9
|
+
*/
|
|
10
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
11
|
+
declare const SERVER_NAME = "ng-forge-mcp";
|
|
12
|
+
declare const SERVER_VERSION: string;
|
|
13
|
+
/**
|
|
14
|
+
* Create and configure the MCP server
|
|
15
|
+
*/
|
|
16
|
+
export declare function createServer(): McpServer;
|
|
17
|
+
/**
|
|
18
|
+
* Run the MCP server with stdio transport
|
|
19
|
+
*/
|
|
20
|
+
export declare function runStdioServer(): Promise<void>;
|
|
21
|
+
export { SERVER_NAME, SERVER_VERSION };
|
|
22
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../packages/dynamic-form-mcp/src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQpE,QAAA,MAAM,WAAW,iBAAiB,CAAC;AACnC,QAAA,MAAM,cAAc,QAAsB,CAAC;AAE3C;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAaxC;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAIpD;AAED,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lookup Topics Data
|
|
3
|
+
*
|
|
4
|
+
* Documentation content for the ngforge_lookup tool.
|
|
5
|
+
* Extracted from lookup.tool.ts for better maintainability.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Topic-specific documentation content.
|
|
9
|
+
*/
|
|
10
|
+
export declare const TOPICS: Record<string, {
|
|
11
|
+
brief: string;
|
|
12
|
+
full: string;
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* Topic aliases for flexible lookup.
|
|
16
|
+
*/
|
|
17
|
+
export declare const TOPIC_ALIASES: Record<string, string>;
|
|
18
|
+
//# sourceMappingURL=lookup-topics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lookup-topics.d.ts","sourceRoot":"","sources":["../../../../../../packages/dynamic-form-mcp/src/tools/data/lookup-topics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA+sDlE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA+GhD,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Examples Tool
|
|
3
|
+
*
|
|
4
|
+
* Consolidated working code patterns tool that absorbs:
|
|
5
|
+
* - get-example.tool.ts (complete and mega examples)
|
|
6
|
+
* - explain-feature.tool.ts (conceptual explanations)
|
|
7
|
+
*
|
|
8
|
+
* Single tool for "Show me how to do X"
|
|
9
|
+
*/
|
|
10
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
11
|
+
export declare function registerExamplesTool(server: McpServer): void;
|
|
12
|
+
//# sourceMappingURL=examples.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"examples.tool.d.ts","sourceRoot":"","sources":["../../../../../packages/dynamic-form-mcp/src/tools/examples.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkpDpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsI5D"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tools Registration
|
|
3
|
+
*
|
|
4
|
+
* Registers all available tools with the MCP server.
|
|
5
|
+
*
|
|
6
|
+
* 4 tools with zero overlap, each serving a single clear purpose:
|
|
7
|
+
*
|
|
8
|
+
* | Tool | Purpose | One-liner |
|
|
9
|
+
* |-------------------|----------------|-------------------------|
|
|
10
|
+
* | ngforge_lookup | Documentation | "Tell me about X" |
|
|
11
|
+
* | ngforge_examples | Working code | "Show me how to do X" |
|
|
12
|
+
* | ngforge_validate | Verification | "Is my config correct?" |
|
|
13
|
+
* | ngforge_scaffold | Generation | "Generate a skeleton" |
|
|
14
|
+
*
|
|
15
|
+
* RECOMMENDED WORKFLOW:
|
|
16
|
+
* 1. ngforge_lookup topic="workflow" - See tool usage guide
|
|
17
|
+
* 2. ngforge_lookup topic="golden-path" - Get form structure templates
|
|
18
|
+
* 3. ngforge_lookup topic="<field-type>" - Get syntax for specific fields
|
|
19
|
+
* 4. ngforge_validate - Validate your config (catches all errors)
|
|
20
|
+
*
|
|
21
|
+
* For working code examples:
|
|
22
|
+
* - ngforge_examples pattern="complete" - Full multi-page form
|
|
23
|
+
* - ngforge_examples pattern="minimal-conditional" - Minimal conditional example
|
|
24
|
+
*
|
|
25
|
+
* For generating skeletons:
|
|
26
|
+
* - ngforge_scaffold pages=2 arrays=["contacts"] groups=["address"]
|
|
27
|
+
*/
|
|
28
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
29
|
+
/**
|
|
30
|
+
* Register all MCP tools (4 total)
|
|
31
|
+
*/
|
|
32
|
+
export declare function registerTools(server: McpServer): void;
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/dynamic-form-mcp/src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAYrD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Lookup Tool
|
|
3
|
+
*
|
|
4
|
+
* Consolidated documentation tool that absorbs:
|
|
5
|
+
* - quick-lookup.tool.ts (primary content source)
|
|
6
|
+
* - get-field-info.tool.ts (field documentation + placement rules)
|
|
7
|
+
* - get-api-reference.tool.ts (logic-matrix, context-api content)
|
|
8
|
+
* - get-cheatsheet.tool.ts (comprehensive reference)
|
|
9
|
+
* - get-field-schema.tool.ts (JSON schema for depth=schema)
|
|
10
|
+
*
|
|
11
|
+
* Single tool for "Tell me about X"
|
|
12
|
+
*/
|
|
13
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
14
|
+
export declare function registerLookupTool(server: McpServer): void;
|
|
15
|
+
//# sourceMappingURL=lookup.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lookup.tool.d.ts","sourceRoot":"","sources":["../../../../../packages/dynamic-form-mcp/src/tools/lookup.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkJpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmH1D"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold Tool (NEW)
|
|
3
|
+
*
|
|
4
|
+
* Generates valid FormConfig skeletons based on parameters.
|
|
5
|
+
* Produces copy-paste ready code with proper structure.
|
|
6
|
+
*
|
|
7
|
+
* Single tool for "Generate a skeleton for X"
|
|
8
|
+
*/
|
|
9
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
10
|
+
export declare function registerScaffoldTool(server: McpServer): void;
|
|
11
|
+
//# sourceMappingURL=scaffold.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold.tool.d.ts","sourceRoot":"","sources":["../../../../../packages/dynamic-form-mcp/src/tools/scaffold.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsWpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8E5D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Validation Tool
|
|
3
|
+
*
|
|
4
|
+
* Consolidated validation tool that absorbs:
|
|
5
|
+
* - validate-file.tool.ts (TypeScript file validation with AST extraction)
|
|
6
|
+
* - validate-form-config.tool.ts (JSON config validation)
|
|
7
|
+
* - validate-field.tool.ts (single field validation)
|
|
8
|
+
*
|
|
9
|
+
* Single tool for "Is my config correct?"
|
|
10
|
+
* Auto-detects if config is a file path or JSON object.
|
|
11
|
+
*/
|
|
12
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
13
|
+
export declare function registerValidateTool(server: McpServer): void;
|
|
14
|
+
//# sourceMappingURL=validate.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.tool.d.ts","sourceRoot":"","sources":["../../../../../packages/dynamic-form-mcp/src/tools/validate.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuQpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2J5D"}
|