@formio/uag 1.12.2 → 1.12.4
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 +33 -12
- package/lib/index.js +10 -0
- package/package.json +11 -3
package/README.md
CHANGED
|
@@ -2,28 +2,31 @@
|
|
|
2
2
|
<img src="./examples/images/logo-formio-uag.png" alt="The Form.io Universal Agent Gateway (UAG)" width="40%">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://www.npmjs.com/package/@formio/uag"><img src="https://img.shields.io/npm/v/%40formio%2Fuag?label=%40formio%2Fuag" alt="npm: @formio/uag"></a>
|
|
7
|
+
<a href="https://hub.docker.com/r/formio/uag"><img src="https://img.shields.io/docker/v/formio/uag?label=docker&sort=semver" alt="Docker: formio/uag"></a>
|
|
8
|
+
<a href="https://registry.modelcontextprotocol.io/v0/servers?search=io.form/formio-uag"><img src="https://img.shields.io/badge/MCP%20Registry-io.form%2Fformio--uag-blue" alt="MCP Registry: io.form/formio-uag"></a>
|
|
9
|
+
<a href="./LICENSE.txt"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT"></a>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
5
12
|
The Universal Agent Gateway (UAG) leverages the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/docs/getting-started/intro) to enable in-process agentic automation using Form.io. It provides to an AI Agent the same thing that our [JavaScript Renderer](https://github.com/formio/formio.js) provides to a human; an interpretation of the Form JSON schema into an understandable format. In the case of UAG, it transforms the Form JSON model into an AI readible markdown format so that the Agent can easily understand the purpose and structure of the data that needs to be collected.
|
|
6
13
|
|
|
7
14
|

|
|
8
15
|
|
|
9
|
-
Official Documentation
|
|
10
|
-
--------------------------
|
|
11
|
-
For the latest documentation, release information, and guides, always refer to the official Form.io Help Documentation available here:
|
|
12
|
-
|
|
13
|
-
**[https://help.form.io](https://help.form.io/dev/ai/uag)**
|
|
14
|
-
|
|
15
16
|
--------------------------
|
|
16
17
|
There are two primary scenarios that the UAG enables:
|
|
17
18
|
|
|
18
19
|
- **Unstructured 'chat' input to deterministic form submission**: This capability uses the JSON schema of a Form.io form to produce a deterministic structured data object provided natural language conversational input.
|
|
19
20
|
|
|
20
21
|

|
|
22
|
+
|
|
23
|
+
For a working example of this flow, please try out the [Conversation Form Example](./examples/conversation-form).
|
|
21
24
|
|
|
22
25
|
- **Agentic Form.io Workflows**: UAG provides an AI Agent the ability to take existing submission data + "context" criteria in order to prompt an AI Agent to provide its own data and analysis within a workflow scenario. The following example, which shows a college application process using a Form.io application form, shows how this primary scenario works.
|
|
23
26
|
|
|
24
27
|

|
|
25
28
|
|
|
26
|
-
|
|
29
|
+
For more information on Agentic workflows, checkout the dedicated [Agentic Workflows](#agentic-workflows) section. For a working example of this flow, please try out the [Agentic Workflow Example](./examples/agentic-workflow).
|
|
27
30
|
|
|
28
31
|
---
|
|
29
32
|
|
|
@@ -36,12 +39,10 @@ There are three working examples in this repo, each spinning up a Form.io server
|
|
|
36
39
|
|---------|---------|-----------|
|
|
37
40
|
| **[Custom Module](examples/custom-module)** | **Conversational, existing client.** Connect Claude Desktop to your forms and talk to them: "I would like to add a new customer." Built as a custom module, so roles and permissions decide what the agent may do. | Open Source — free |
|
|
38
41
|
| **[Conversation Form](examples/conversation-form)** | **Conversational, your own UI.** A chat application whose questions come entirely from a form. About 200 lines, no field names in the code — edit the form and the conversation changes. | Open Source — free |
|
|
39
|
-
| **[Agentic Workflow](examples/agentic-workflow)** | **Autonomous.** A submission triggers an agent that scores it against a rubric and writes its decision back, which in turn triggers a second agent. No human, no chat window. | Enterprise
|
|
42
|
+
| **[Agentic Workflow](examples/agentic-workflow)** | **Autonomous.** A submission triggers an agent that scores it against a rubric and writes its decision back, which in turn triggers a second agent. No human, no chat window. | Enterprise |
|
|
40
43
|
|
|
41
44
|
There is also a [Flow Viewer](examples/flow-viewer) — a small proxy that shows every leg of an agentic run live, which is the fastest way to see what an agent is actually doing.
|
|
42
45
|
|
|
43
|
-
**[Conversation »](examples/conversation-form)** | **[Claude Desktop »](examples/custom-module)** | **[Autonomous »](examples/agentic-workflow)**
|
|
44
|
-
|
|
45
46
|
## Documentation in this repository
|
|
46
47
|
|
|
47
48
|
This file is the main reference: what the UAG is, how to configure a form for it, how to deploy it, and how to troubleshoot it. The rest of the documentation lives next to the code it describes.
|
|
@@ -169,6 +170,26 @@ These integrations can be found within the **integrations** folder. The followin
|
|
|
169
170
|
|
|
170
171
|
Please click on one of these integration links to read how they work.
|
|
171
172
|
|
|
173
|
+
### Integration Version Compatibility
|
|
174
|
+
|
|
175
|
+
Integrations are **versioned independently of the UAG**. They share no code with it — each one runs its own MCP client and talks to the UAG over MCP/HTTP — so an integration release does not imply a UAG release, and vice versa. Matching version numbers between the two would be misleading rather than helpful.
|
|
176
|
+
|
|
177
|
+
Use this matrix to pick a compatible pair. Each row records the UAG range an integration version is known to work against:
|
|
178
|
+
|
|
179
|
+
| Integration | Version | Compatible UAG versions | Notes |
|
|
180
|
+
| ----------- | ------- | ----------------------- | ----- |
|
|
181
|
+
| `@formio/uag-claude` | 1.3.x | >= 1.12.0 | Current. |
|
|
182
|
+
| `@formio/uag-claude` | 1.2.x | 1.10.0 – 1.11.x | |
|
|
183
|
+
|
|
184
|
+
Both artifacts are published on every release where their own version changed:
|
|
185
|
+
|
|
186
|
+
- npm: [`@formio/uag`](https://www.npmjs.com/package/@formio/uag), [`@formio/uag-claude`](https://www.npmjs.com/package/@formio/uag-claude)
|
|
187
|
+
- Docker Hub: [`formio/uag`](https://hub.docker.com/r/formio/uag), [`formio/uag-claude`](https://hub.docker.com/r/formio/uag-claude)
|
|
188
|
+
|
|
189
|
+
**When adding a row:** bump the integration's own `package.json` version. CI publishes it to npm and Docker Hub on the next release tag, and skips it automatically when that version is already published — so a core-only release does not rebuild an unchanged integration.
|
|
190
|
+
|
|
191
|
+
The `examples/` compose files reference `formio/uag` and `formio/uag-claude` without a tag, so they always pull the current release and cannot drift out of date. If you need a reproducible stack, pin both images to a compatible pair from the matrix above.
|
|
192
|
+
|
|
172
193
|
---
|
|
173
194
|
|
|
174
195
|
## Technical Overview
|
|
@@ -408,7 +429,7 @@ This module can be configured in many ways. One of those ways is through the use
|
|
|
408
429
|
|
|
409
430
|
| Variable | Description | Example |
|
|
410
431
|
|----------|-------------|---------|
|
|
411
|
-
| PROJECT | The API Endpoint to either an Enterprise project endpoint, or the OSS server url. | http://localhost:3000 |
|
|
432
|
+
| PROJECT | **Required.** The API Endpoint to either an Enterprise project endpoint, or the OSS server url. | http://localhost:3000 |
|
|
412
433
|
| PROJECT_KEY | (Enterprise Only) The API Key of the project this UAG is bound to, found in **Project Settings → API Keys**. Open Source deployments use `ADMIN_KEY` instead. | CHANGEME |
|
|
413
434
|
| ADMIN_KEY | (Open Source Only) Allows you to provide the ADMIN_KEY to install and connect to the OSS Server. | CHANGEME |
|
|
414
435
|
| UAG_LICENSE | The license to run the UAG against a Form.io Enterprise Deployment. | |
|
|
@@ -416,7 +437,7 @@ This module can be configured in many ways. One of those ways is through the use
|
|
|
416
437
|
| PORT | The port you wish to run the server on. | 3200 |
|
|
417
438
|
| DEBUG | Variable used to perform debug logs of server activity | formio.* |
|
|
418
439
|
| PORTAL_SECRET | Enterprise Only: Allows you to connect to the UAG from the Form.io Enterprise Portal. | CHANGEME |
|
|
419
|
-
| JWT_SECRET | A secret used to generate and validate JWT tokens generated through the authentication process of the UAG. This does not need to match the JWT_SECRET of the Enterprise Server that it is connected to. | CHANGEME |
|
|
440
|
+
| JWT_SECRET | **Required.** A secret used to generate and validate JWT tokens generated through the authentication process of the UAG. This does not need to match the JWT_SECRET of the Enterprise Server that it is connected to. | CHANGEME |
|
|
420
441
|
| JWT_EXPIRE_TIME | The expiration for the jwt secret. | 3600 |
|
|
421
442
|
| MONGO | (Enterprise Only) Allows you to connect the UAG directly to a mongo database, rather than having to redirect the submissions to the Form.io Submission APIs. | |
|
|
422
443
|
| MONGO_CONFIG | JSON configuration for the Node.js Mongo Driver. | |
|
package/lib/index.js
CHANGED
|
@@ -38,6 +38,16 @@ class UAGServer extends appserver_1.Server {
|
|
|
38
38
|
async router() {
|
|
39
39
|
const router = await super.router();
|
|
40
40
|
const uagProject = Object.values(this.projectRouter?.projects || {})[0];
|
|
41
|
+
// Without a project there are no forms to expose, so there is nothing to
|
|
42
|
+
// serve. Say why: this used to throw "Cannot read properties of undefined
|
|
43
|
+
// (reading 'uagRouter')", which told the operator nothing about the
|
|
44
|
+
// misconfiguration that caused it.
|
|
45
|
+
if (!uagProject) {
|
|
46
|
+
throw new Error('No Form.io project could be loaded, so the UAG has nothing to serve. Check that PROJECT ' +
|
|
47
|
+
'points at a reachable Form.io deployment, and that it is paired with the right ' +
|
|
48
|
+
'credential — ADMIN_KEY for an Open Source server, or PROJECT_KEY plus UAG_LICENSE for ' +
|
|
49
|
+
'an Enterprise project. Earlier log lines report why the project load failed.');
|
|
50
|
+
}
|
|
41
51
|
router.use(uagProject.uagRouter());
|
|
42
52
|
return router;
|
|
43
53
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@formio/uag",
|
|
3
|
-
"version": "1.12.
|
|
4
|
-
"mcpName": "io.form/uag",
|
|
3
|
+
"version": "1.12.4",
|
|
4
|
+
"mcpName": "io.form/formio-uag",
|
|
5
5
|
"description": "The Form.io Universal Agent Gateway (UAG).",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"types": "lib/index.d.ts",
|
|
@@ -70,5 +70,13 @@
|
|
|
70
70
|
"tsx": "^4.23.1",
|
|
71
71
|
"typescript": "^7.0.2"
|
|
72
72
|
},
|
|
73
|
-
"packageManager": "yarn@4.17.1"
|
|
73
|
+
"packageManager": "yarn@4.17.1",
|
|
74
|
+
"dependenciesMeta": {
|
|
75
|
+
"esbuild": {
|
|
76
|
+
"built": true
|
|
77
|
+
},
|
|
78
|
+
"isolated-vm": {
|
|
79
|
+
"built": true
|
|
80
|
+
}
|
|
81
|
+
}
|
|
74
82
|
}
|