@forumone/throughline-forms 0.5.0 → 0.6.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/CHANGELOG.md +100 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +8 -1
- package/dist/plugin.js.map +1 -1
- package/dist/tools/create-form.d.ts.map +1 -1
- package/dist/tools/create-form.js +2 -2
- package/dist/tools/create-form.js.map +1 -1
- package/dist/tools/descriptors.d.ts +30 -0
- package/dist/tools/descriptors.d.ts.map +1 -0
- package/dist/tools/descriptors.js +39 -0
- package/dist/tools/descriptors.js.map +1 -0
- package/dist/tools/get-form-submissions.d.ts.map +1 -1
- package/dist/tools/get-form-submissions.js +2 -2
- package/dist/tools/get-form-submissions.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-allowed-destinations.d.ts.map +1 -1
- package/dist/tools/list-allowed-destinations.js +2 -2
- package/dist/tools/list-allowed-destinations.js.map +1 -1
- package/dist/tools/update-form-destinations.d.ts.map +1 -1
- package/dist/tools/update-form-destinations.js +2 -2
- package/dist/tools/update-form-destinations.js.map +1 -1
- package/dist/tools/update-form-fields.d.ts.map +1 -1
- package/dist/tools/update-form-fields.js +2 -2
- package/dist/tools/update-form-fields.js.map +1 -1
- package/dist/tools/validate-form.d.ts.map +1 -1
- package/dist/tools/validate-form.js +2 -2
- package/dist/tools/validate-form.js.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,105 @@
|
|
|
1
1
|
# @forumone/throughline-forms
|
|
2
2
|
|
|
3
|
+
## 0.6.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 957403b: One `@types/node`, so a host does not end up with two copies of `@payloadcms/ui`
|
|
8
|
+
|
|
9
|
+
Twelve packages asked for `@types/node@^20.17.0` and `design-system-payload`
|
|
10
|
+
asked for `^24.13.2`. Inside this repository that is untidy. Inside a host that
|
|
11
|
+
consumes the suite from source — which is how `forumone/forumone-2026` uses it,
|
|
12
|
+
as a git submodule in one pnpm workspace — it is a runtime failure.
|
|
13
|
+
|
|
14
|
+
pnpm hashes a package's identity with its resolved peers. `publishing` and
|
|
15
|
+
`integrations` both take `@payloadcms/ui` as a peer _and_ as a devDependency, so
|
|
16
|
+
each got its own copy resolved against `@types/node@20`, while the host's copy
|
|
17
|
+
resolved against `@types/node@24`. Same version, 3.87.1, two directories:
|
|
18
|
+
|
|
19
|
+
apps/web → @payloadcms+ui@3.87.1_…_9ce0de5c…
|
|
20
|
+
packages/publishing → @payloadcms+ui@3.87.1_…_13184ec4…
|
|
21
|
+
packages/integrations → @payloadcms+ui@3.87.1_…_13184ec4…
|
|
22
|
+
|
|
23
|
+
Two directories are two module instances. Two instances of `@payloadcms/ui` are
|
|
24
|
+
two `ConfigContext` objects, and `PublishButton` read the one the admin's
|
|
25
|
+
provider had never populated:
|
|
26
|
+
|
|
27
|
+
TypeError: Cannot destructure property 'config' of useConfig() as it is undefined
|
|
28
|
+
|
|
29
|
+
The host saw an intermittent 500 on every admin document view — `PublishButton`
|
|
30
|
+
is installed on each collection with a publish policy, so lists, `/admin` and
|
|
31
|
+
the login screen were all fine and only editing broke. Nothing caught it:
|
|
32
|
+
install, `--frozen-lockfile`, typecheck, lint and every test passed, because the
|
|
33
|
+
two copies are byte-identical and the split exists only at module resolution.
|
|
34
|
+
forumone/forumone-2026#498.
|
|
35
|
+
|
|
36
|
+
Aligning on `^24.13.2` collapses them to one instance. Nothing here targets a
|
|
37
|
+
Node 20 API deliberately; the packages typecheck and test unchanged against the
|
|
38
|
+
newer types.
|
|
39
|
+
|
|
40
|
+
`create-throughline` keeps `^20.17.0` on purpose. It is the one package
|
|
41
|
+
declaring `engines.node: >=20.9.0`, and typechecking a CLI against types newer
|
|
42
|
+
than the runtime it promises to support is how a Node 24-only call ships to
|
|
43
|
+
somebody on Node 20.
|
|
44
|
+
|
|
45
|
+
- Updated dependencies [957403b]
|
|
46
|
+
- @forumone/throughline-core@0.8.1
|
|
47
|
+
- @forumone/throughline-email@0.2.9
|
|
48
|
+
- @forumone/throughline-plugin-contract@0.4.1
|
|
49
|
+
|
|
50
|
+
## 0.6.0
|
|
51
|
+
|
|
52
|
+
### Minor Changes
|
|
53
|
+
|
|
54
|
+
- a9262da: Per-tool gating works, because tool names no longer wait for `onInit`
|
|
55
|
+
|
|
56
|
+
`@payloadcms/plugin-mcp` generates one per-key checkbox per tool while the host's
|
|
57
|
+
config is being built, and then gates every call on the checkbox matching the
|
|
58
|
+
tool's name. Every Throughline tool was built at `onInit` — each closes over
|
|
59
|
+
`payload`, the publishing service or the manifest loader — so the array it maps
|
|
60
|
+
over was empty, no checkboxes were generated, and its `?? false` denied all 27
|
|
61
|
+
tools to every key. A valid key got a 200 and an empty `tools/list`, with nothing
|
|
62
|
+
wrong on either side.
|
|
63
|
+
|
|
64
|
+
The plugin needs only `name` and `description` then, and neither needs a Payload.
|
|
65
|
+
So a server now **declares** its tools as the config is built and **binds** their
|
|
66
|
+
handlers at `onInit`:
|
|
67
|
+
|
|
68
|
+
```ts
|
|
69
|
+
options.mcpTools?.declare(PUBLISHING_TOOL_DESCRIPTORS, { serverName: 'publishing' })
|
|
70
|
+
// …later, at onInit:
|
|
71
|
+
options.mcpTools?.add(tools, { serverName: 'publishing' })
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Each package gained a `tools/descriptors.ts` holding every tool's name and
|
|
75
|
+
description; the factories spread from it, so the checkbox and the MCP client
|
|
76
|
+
cannot describe a tool differently. A `descriptors.test.ts` in each package
|
|
77
|
+
asserts the two sets match, without needing a database.
|
|
78
|
+
|
|
79
|
+
`createMcpToolCollector` gains `declare()` and an `unbound` list. Both mismatches
|
|
80
|
+
are refused rather than absorbed: a tool built but never declared throws at
|
|
81
|
+
`onInit` (it would otherwise be denied to every key, silently), and a tool
|
|
82
|
+
declared but never bound stays advertised with a handler that explains itself.
|
|
83
|
+
|
|
84
|
+
**Order in the host's plugin array is now load-bearing.** Every tool-bearing
|
|
85
|
+
server must come before `mcpPlugin`, or it declares into an array that has
|
|
86
|
+
already been read. It was only a convention before; it is a requirement now, and
|
|
87
|
+
the failure mode — a server's tools missing from every key — is the one this
|
|
88
|
+
change exists to remove.
|
|
89
|
+
|
|
90
|
+
`requiredScope` stays declared and read by nothing. Enforcement is the checkbox;
|
|
91
|
+
these record which tools are consequential, and are the mapping a scope-aware
|
|
92
|
+
default would be built from.
|
|
93
|
+
|
|
94
|
+
The playground registers `mcpPlugin` for the first time, so the suite's only
|
|
95
|
+
end-to-end host now exercises the tools rather than just their composition.
|
|
96
|
+
|
|
97
|
+
### Patch Changes
|
|
98
|
+
|
|
99
|
+
- Updated dependencies [a9262da]
|
|
100
|
+
- @forumone/throughline-core@0.8.0
|
|
101
|
+
- @forumone/throughline-email@0.2.8
|
|
102
|
+
|
|
3
103
|
## 0.5.0
|
|
4
104
|
|
|
5
105
|
### Minor Changes
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,uCAAuC,CAAA;AAI1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,EAAE,KAAK,kBAAkB,EAAmB,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,uCAAuC,CAAA;AAI1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,EAAE,KAAK,kBAAkB,EAAmB,MAAM,cAAc,CAAA;AA8BvE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,EAAE,UAAU,CAAC,kBAAkB,CA+IpD,CAAA;AAEH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,CAKzE"}
|
package/dist/plugin.js
CHANGED
|
@@ -6,7 +6,7 @@ import { validateOptions } from './options.js';
|
|
|
6
6
|
import { addFormPolicyFields } from './policy-fields.js';
|
|
7
7
|
import { validateDestinationLabel } from './destinations.js';
|
|
8
8
|
import { createSubmitEndpoint } from './submit/endpoint.js';
|
|
9
|
-
import { createCreateFormTool, createGetFormSubmissionsTool, createListAllowedDestinationsTool, createUpdateFormDestinationsTool, createUpdateFormFieldsTool, createValidateFormTool, } from './tools/index.js';
|
|
9
|
+
import { FORMS_TOOL_DESCRIPTORS, createCreateFormTool, createGetFormSubmissionsTool, createListAllowedDestinationsTool, createUpdateFormDestinationsTool, createUpdateFormFieldsTool, createValidateFormTool, } from './tools/index.js';
|
|
10
10
|
import { createEmailDestinationFunction, createFormFanOutFunction, createSubmitterConfirmationFunction, createWebhookDestinationFunction, } from './functions/index.js';
|
|
11
11
|
const PLUGIN_ID = '@forumone/throughline-forms';
|
|
12
12
|
const PLUGIN_VERSION = '0.1.0';
|
|
@@ -99,6 +99,13 @@ export const formsPlugin = (rawOptions) => (incomingConfig) => {
|
|
|
99
99
|
});
|
|
100
100
|
const withFormBuilder = formBuilderConfig(incomingConfig);
|
|
101
101
|
const submitEndpoint = createSubmitEndpoint(resolved);
|
|
102
|
+
/*
|
|
103
|
+
Declared here, bound at `onInit` — `mcpPlugin` generates its per-key
|
|
104
|
+
checkboxes from these names and descriptions while the config is built, and
|
|
105
|
+
denies any tool it has no checkbox for. This plugin must therefore come
|
|
106
|
+
before `mcpPlugin` in the host's array.
|
|
107
|
+
*/
|
|
108
|
+
resolved.options.mcpTools?.declare(FORMS_TOOL_DESCRIPTORS, { serverName: 'forms' });
|
|
102
109
|
return {
|
|
103
110
|
...withFormBuilder,
|
|
104
111
|
endpoints: [
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-form.d.ts","sourceRoot":"","sources":["../../src/tools/create-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAE9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"create-form.d.ts","sourceRoot":"","sources":["../../src/tools/create-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAE9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAUxD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8BgB,CAAC;sBAElB,CAAC;kBAEb,CAAA;;iBACiB,CAAC;sBAER,CAAC;kBACG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAfjB,CAAA;AAEF,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,mBAAmB,CAAA;CAC9B;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,cAAc,GACnB,iBAAiB,CAAC,OAAO,WAAW,CAAC,CAiEvC"}
|
|
@@ -3,6 +3,7 @@ import { auditContext, withMeta, getAuditWriter } from '@forumone/throughline-co
|
|
|
3
3
|
import { validateDestinationLabel } from '../destinations.js';
|
|
4
4
|
import { FieldSchema, validateFieldSet, validateSubmitterConfirmation, } from './_field-schema.js';
|
|
5
5
|
import { deniedEnvelope, isFormsAuthor } from './access.js';
|
|
6
|
+
import { FORMS_TOOLS } from './descriptors.js';
|
|
6
7
|
const inputSchema = withMeta({
|
|
7
8
|
title: z.string().min(1),
|
|
8
9
|
intent: z
|
|
@@ -29,9 +30,8 @@ const inputSchema = withMeta({
|
|
|
29
30
|
});
|
|
30
31
|
export function createCreateFormTool(deps) {
|
|
31
32
|
return {
|
|
32
|
-
|
|
33
|
+
...FORMS_TOOLS.createForm,
|
|
33
34
|
requiredScope: 'forms.manage',
|
|
34
|
-
description: "Creates a form with privacy notice, consent checkbox, and honeypot enabled by default. Destinations must be selected from the allowlist (call list_allowed_destinations first). Field names must be snake_case; every field needs a label (accessibility); submitterConfirmation, if enabled, must point to an existing email-typed field on the form.",
|
|
35
35
|
inputSchema,
|
|
36
36
|
handler: async (input, ctx) => {
|
|
37
37
|
if (!isFormsAuthor(ctx)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-form.js","sourceRoot":"","sources":["../../src/tools/create-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAEnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"create-form.js","sourceRoot":"","sources":["../../src/tools/create-form.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { McpToolDescriptor } from '@forumone/throughline-core';
|
|
2
|
+
export declare const FORMS_TOOLS: {
|
|
3
|
+
readonly listAllowedDestinations: {
|
|
4
|
+
readonly name: "list_allowed_destinations";
|
|
5
|
+
readonly description: "Returns the labels of destinations forms can route submissions to in this deployment. Use this before create_form / update_form_destinations to discover what is allowed. Adding a new destination requires editing the plugin config and redeploying — that friction is the security model.";
|
|
6
|
+
};
|
|
7
|
+
readonly validateForm: {
|
|
8
|
+
readonly name: "validate_form";
|
|
9
|
+
readonly description: "Runs the same checks `create_form` runs (allowlist, accessibility, submitter-confirmation pointer) without writing anything. Use to confirm a form definition is shippable before persisting it.";
|
|
10
|
+
};
|
|
11
|
+
readonly createForm: {
|
|
12
|
+
readonly name: "create_form";
|
|
13
|
+
readonly description: "Creates a form with privacy notice, consent checkbox, and honeypot enabled by default. Destinations must be selected from the allowlist (call list_allowed_destinations first). Field names must be snake_case; every field needs a label (accessibility); submitterConfirmation, if enabled, must point to an existing email-typed field on the form.";
|
|
14
|
+
};
|
|
15
|
+
readonly updateFormFields: {
|
|
16
|
+
readonly name: "update_form_fields";
|
|
17
|
+
readonly description: "Replaces the fields on an existing form. Re-runs the same accessibility / submitter-confirmation checks `create_form` runs against the form's current submitterConfirmation config so existing email-field references stay valid.";
|
|
18
|
+
};
|
|
19
|
+
readonly updateFormDestinations: {
|
|
20
|
+
readonly name: "update_form_destinations";
|
|
21
|
+
readonly description: "Replaces a form's destinations with the given labels. Every label must be on the allowlist (use list_allowed_destinations to discover). The replace-all semantics are deliberate — incremental destination edits are too easy to misuse via prompt injection.";
|
|
22
|
+
};
|
|
23
|
+
readonly getFormSubmissions: {
|
|
24
|
+
readonly name: "get_form_submissions";
|
|
25
|
+
readonly description: "Lists submissions for a form. Defaults to redacted output (counts + timestamps). Set includePii=true to read submission data; that requires admin or form-admin role.";
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
/** Every tool this server contributes, for the collector. */
|
|
29
|
+
export declare const FORMS_TOOL_DESCRIPTORS: readonly McpToolDescriptor[];
|
|
30
|
+
//# sourceMappingURL=descriptors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptors.d.ts","sourceRoot":"","sources":["../../src/tools/descriptors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAYnE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;CA+B8B,CAAA;AAEtD,6DAA6D;AAC7D,eAAO,MAAM,sBAAsB,EAAE,SAAS,iBAAiB,EAA+B,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/*
|
|
2
|
+
This server's tools, by name and description, knowable without a Payload.
|
|
3
|
+
|
|
4
|
+
`@payloadcms/plugin-mcp` reads exactly these two fields while the host's config
|
|
5
|
+
is being built, to generate one per-key checkbox per tool, and denies any tool it
|
|
6
|
+
has no checkbox for. The handlers close over `payload` and the resolved options,
|
|
7
|
+
so they cannot exist that early — the names never needed to wait.
|
|
8
|
+
|
|
9
|
+
The factories below spread these, so the two cannot drift.
|
|
10
|
+
*/
|
|
11
|
+
export const FORMS_TOOLS = {
|
|
12
|
+
listAllowedDestinations: {
|
|
13
|
+
name: 'list_allowed_destinations',
|
|
14
|
+
description: 'Returns the labels of destinations forms can route submissions to in this deployment. Use this before create_form / update_form_destinations to discover what is allowed. Adding a new destination requires editing the plugin config and redeploying — that friction is the security model.',
|
|
15
|
+
},
|
|
16
|
+
validateForm: {
|
|
17
|
+
name: 'validate_form',
|
|
18
|
+
description: 'Runs the same checks `create_form` runs (allowlist, accessibility, submitter-confirmation pointer) without writing anything. Use to confirm a form definition is shippable before persisting it.',
|
|
19
|
+
},
|
|
20
|
+
createForm: {
|
|
21
|
+
name: 'create_form',
|
|
22
|
+
description: 'Creates a form with privacy notice, consent checkbox, and honeypot enabled by default. Destinations must be selected from the allowlist (call list_allowed_destinations first). Field names must be snake_case; every field needs a label (accessibility); submitterConfirmation, if enabled, must point to an existing email-typed field on the form.',
|
|
23
|
+
},
|
|
24
|
+
updateFormFields: {
|
|
25
|
+
name: 'update_form_fields',
|
|
26
|
+
description: "Replaces the fields on an existing form. Re-runs the same accessibility / submitter-confirmation checks `create_form` runs against the form's current submitterConfirmation config so existing email-field references stay valid.",
|
|
27
|
+
},
|
|
28
|
+
updateFormDestinations: {
|
|
29
|
+
name: 'update_form_destinations',
|
|
30
|
+
description: "Replaces a form's destinations with the given labels. Every label must be on the allowlist (use list_allowed_destinations to discover). The replace-all semantics are deliberate — incremental destination edits are too easy to misuse via prompt injection.",
|
|
31
|
+
},
|
|
32
|
+
getFormSubmissions: {
|
|
33
|
+
name: 'get_form_submissions',
|
|
34
|
+
description: 'Lists submissions for a form. Defaults to redacted output (counts + timestamps). Set includePii=true to read submission data; that requires admin or form-admin role.',
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
/** Every tool this server contributes, for the collector. */
|
|
38
|
+
export const FORMS_TOOL_DESCRIPTORS = Object.values(FORMS_TOOLS);
|
|
39
|
+
//# sourceMappingURL=descriptors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptors.js","sourceRoot":"","sources":["../../src/tools/descriptors.ts"],"names":[],"mappings":"AAEA;;;;;;;;;EASE;AACF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,uBAAuB,EAAE;QACvB,IAAI,EAAE,2BAA2B;QACjC,WAAW,EACT,8RAA8R;KACjS;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,kMAAkM;KACrM;IACD,UAAU,EAAE;QACV,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,wVAAwV;KAC3V;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,mOAAmO;KACtO;IACD,sBAAsB,EAAE;QACtB,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACT,+PAA+P;KAClQ;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACT,uKAAuK;KAC1K;CACmD,CAAA;AAEtD,6DAA6D;AAC7D,MAAM,CAAC,MAAM,sBAAsB,GAAiC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-form-submissions.d.ts","sourceRoot":"","sources":["../../src/tools/get-form-submissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,OAAO,EAAS,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"get-form-submissions.d.ts","sourceRoot":"","sources":["../../src/tools/get-form-submissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,OAAO,EAAS,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAIxD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;EAQf,CAAA;AAEF,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,mBAAmB,CAAA;CAC9B;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,sBAAsB,GAC3B,iBAAiB,CAAC,OAAO,WAAW,CAAC,CAqCvC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { deniedEnvelope, isFormsAuthor, isPiiReader } from './access.js';
|
|
3
|
+
import { FORMS_TOOLS } from './descriptors.js';
|
|
3
4
|
const inputSchema = z.object({
|
|
4
5
|
formId: z.string(),
|
|
5
6
|
limit: z.number().int().positive().max(100).optional(),
|
|
@@ -11,8 +12,7 @@ const inputSchema = z.object({
|
|
|
11
12
|
});
|
|
12
13
|
export function createGetFormSubmissionsTool(deps) {
|
|
13
14
|
return {
|
|
14
|
-
|
|
15
|
-
description: "Lists submissions for a form. Defaults to redacted output (counts + timestamps). Set includePii=true to read submission data; that requires admin or form-admin role.",
|
|
15
|
+
...FORMS_TOOLS.getFormSubmissions,
|
|
16
16
|
inputSchema,
|
|
17
17
|
handler: async (input, ctx) => {
|
|
18
18
|
if (!isFormsAuthor(ctx)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-form-submissions.js","sourceRoot":"","sources":["../../src/tools/get-form-submissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"get-form-submissions.js","sourceRoot":"","sources":["../../src/tools/get-form-submissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IACtF,UAAU,EAAE,CAAC;SACV,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,gFAAgF,CAAC;CAC9F,CAAC,CAAA;AAOF,MAAM,UAAU,4BAA4B,CAC1C,IAA4B;IAE5B,OAAO;QACL,GAAG,WAAW,CAAC,kBAAkB;QACjC,WAAW;QACX,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,cAAc,CAAC,qDAAqD,CAAC,CAAA;YAC9E,CAAC;YACD,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnD,OAAO,cAAc,CACnB,kFAAkF,CACnF,CAAA;YACH,CAAC;YAED,MAAM,UAAU,GAAY,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YAChE,IAAI,KAAK,CAAC,KAAK;gBAAE,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,kBAAkB,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YAEpF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBACrC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,yBAAyB;gBACnD,KAAK,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE;gBAC1B,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;aACzB,CAAC,CAAA;YAEF,OAAO;gBACL,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,MAAM,CAAC,SAAS;gBACvB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;gBAC5B,WAAW,EAAG,MAAM,CAAC,IAAuC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACzE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACrB,UAAU,EAAE,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;oBAC1E,cAAc,EAAE,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI;oBACxF,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,kCAAkC;iBAC9F,CAAC,CAAC;aACJ,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AACpE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,gCAAgC,EAAE,MAAM,+BAA+B,CAAA;AAChF,YAAY,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AACxE,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,iCAAiC,EAAE,MAAM,gCAAgC,CAAA;AAClF,YAAY,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAA;AACjF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AACpE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,gCAAgC,EAAE,MAAM,+BAA+B,CAAA;AAChF,YAAY,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AACxE,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,iCAAiC,EAAE,MAAM,gCAAgC,CAAA;AAClF,YAAY,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAA;AACjF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/tools/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { FORMS_TOOLS, FORMS_TOOL_DESCRIPTORS } from './descriptors.js';
|
|
1
2
|
export { createCreateFormTool } from './create-form.js';
|
|
2
3
|
export { createUpdateFormFieldsTool } from './update-form-fields.js';
|
|
3
4
|
export { createUpdateFormDestinationsTool } from './update-form-destinations.js';
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AAEpE,OAAO,EAAE,gCAAgC,EAAE,MAAM,+BAA+B,CAAA;AAEhF,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AAExE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAE3D,OAAO,EAAE,iCAAiC,EAAE,MAAM,gCAAgC,CAAA;AAElF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AAEpE,OAAO,EAAE,gCAAgC,EAAE,MAAM,+BAA+B,CAAA;AAEhF,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AAExE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAE3D,OAAO,EAAE,iCAAiC,EAAE,MAAM,gCAAgC,CAAA;AAElF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-allowed-destinations.d.ts","sourceRoot":"","sources":["../../src/tools/list-allowed-destinations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAE9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"list-allowed-destinations.d.ts","sourceRoot":"","sources":["../../src/tools/list-allowed-destinations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAE9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAGvD,QAAA,MAAM,WAAW,iDAAwB,CAAA;AAEzC,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,kBAAkB,CAAA;CAC5B;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,2BAA2B,GAChC,iBAAiB,CAAC,OAAO,WAAW,CAAC,CAQvC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { listDestinations } from '../destinations.js';
|
|
3
|
+
import { FORMS_TOOLS } from './descriptors.js';
|
|
3
4
|
const inputSchema = z.object({}).strict();
|
|
4
5
|
export function createListAllowedDestinationsTool(deps) {
|
|
5
6
|
return {
|
|
6
|
-
|
|
7
|
-
description: 'Returns the labels of destinations forms can route submissions to in this deployment. Use this before create_form / update_form_destinations to discover what is allowed. Adding a new destination requires editing the plugin config and redeploying — that friction is the security model.',
|
|
7
|
+
...FORMS_TOOLS.listAllowedDestinations,
|
|
8
8
|
inputSchema,
|
|
9
9
|
handler: async () => {
|
|
10
10
|
return { destinations: listDestinations(deps.options) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-allowed-destinations.js","sourceRoot":"","sources":["../../src/tools/list-allowed-destinations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"list-allowed-destinations.js","sourceRoot":"","sources":["../../src/tools/list-allowed-destinations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAA;AAMzC,MAAM,UAAU,iCAAiC,CAC/C,IAAiC;IAEjC,OAAO;QACL,GAAG,WAAW,CAAC,uBAAuB;QACtC,WAAW;QACX,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,OAAO,EAAE,YAAY,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;QACzD,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-form-destinations.d.ts","sourceRoot":"","sources":["../../src/tools/update-form-destinations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAE9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"update-form-destinations.d.ts","sourceRoot":"","sources":["../../src/tools/update-form-destinations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAE9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAKxD,QAAA,MAAM,WAAW;;;;;;;;;iBA2BqD,CAAC;sBAG/D,CAAC;kBAAwC,CAAC;;iBAEtB,CAAC;sBACN,CAAC;kBACd,CAAF;;;;;;;;;;;;;;;;;;EA/BN,CAAA;AAEF,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,mBAAmB,CAAA;CAC9B;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,0BAA0B,GAC/B,iBAAiB,CAAC,OAAO,WAAW,CAAC,CA4DvC"}
|
|
@@ -2,15 +2,15 @@ import { z } from 'zod';
|
|
|
2
2
|
import { auditContext, withMeta, getAuditWriter } from '@forumone/throughline-core';
|
|
3
3
|
import { validateDestinationLabel } from '../destinations.js';
|
|
4
4
|
import { deniedEnvelope, isFormsAuthor } from './access.js';
|
|
5
|
+
import { FORMS_TOOLS } from './descriptors.js';
|
|
5
6
|
const inputSchema = withMeta({
|
|
6
7
|
formId: z.string(),
|
|
7
8
|
destinationLabels: z.array(z.string()).min(1),
|
|
8
9
|
});
|
|
9
10
|
export function createUpdateFormDestinationsTool(deps) {
|
|
10
11
|
return {
|
|
11
|
-
|
|
12
|
+
...FORMS_TOOLS.updateFormDestinations,
|
|
12
13
|
requiredScope: 'forms.manage',
|
|
13
|
-
description: "Replaces a form's destinations with the given labels. Every label must be on the allowlist (use list_allowed_destinations to discover). The replace-all semantics are deliberate — incremental destination edits are too easy to misuse via prompt injection.",
|
|
14
14
|
inputSchema,
|
|
15
15
|
handler: async (input, ctx) => {
|
|
16
16
|
if (!isFormsAuthor(ctx)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-form-destinations.js","sourceRoot":"","sources":["../../src/tools/update-form-destinations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAEnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"update-form-destinations.js","sourceRoot":"","sources":["../../src/tools/update-form-destinations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-form-fields.d.ts","sourceRoot":"","sources":["../../src/tools/update-form-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAE9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"update-form-fields.d.ts","sourceRoot":"","sources":["../../src/tools/update-form-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAE9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAUxD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6BH,CAAC;sBACgB,CAAC;kBAEtB,CAAC;;iBAEiB,CAAA;sBAA4C,CAAC;kBAE1C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAjC9B,CAAA;AAEF,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,mBAAmB,CAAA;CAC9B;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,oBAAoB,GACzB,iBAAiB,CAAC,OAAO,WAAW,CAAC,CAkDvC"}
|
|
@@ -2,15 +2,15 @@ import { z } from 'zod';
|
|
|
2
2
|
import { auditContext, withMeta, getAuditWriter } from '@forumone/throughline-core';
|
|
3
3
|
import { FieldSchema, validateFieldSet, validateSubmitterConfirmation, } from './_field-schema.js';
|
|
4
4
|
import { deniedEnvelope, isFormsAuthor } from './access.js';
|
|
5
|
+
import { FORMS_TOOLS } from './descriptors.js';
|
|
5
6
|
const inputSchema = withMeta({
|
|
6
7
|
formId: z.string(),
|
|
7
8
|
fields: z.array(FieldSchema).min(1),
|
|
8
9
|
});
|
|
9
10
|
export function createUpdateFormFieldsTool(deps) {
|
|
10
11
|
return {
|
|
11
|
-
|
|
12
|
+
...FORMS_TOOLS.updateFormFields,
|
|
12
13
|
requiredScope: 'forms.manage',
|
|
13
|
-
description: 'Replaces the fields on an existing form. Re-runs the same accessibility / submitter-confirmation checks `create_form` runs against the form\'s current submitterConfirmation config so existing email-field references stay valid.',
|
|
14
14
|
inputSchema,
|
|
15
15
|
handler: async (input, ctx) => {
|
|
16
16
|
if (!isFormsAuthor(ctx)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-form-fields.js","sourceRoot":"","sources":["../../src/tools/update-form-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAEnF,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,6BAA6B,GAE9B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"update-form-fields.js","sourceRoot":"","sources":["../../src/tools/update-form-fields.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-form.d.ts","sourceRoot":"","sources":["../../src/tools/validate-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAE9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"validate-form.d.ts","sourceRoot":"","sources":["../../src/tools/validate-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAE9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAUvD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+Be,CAAC;sBAE3B,CAAD;kBAAwC,CAAC;;iBACR,CAAC;sBACjC,CAAA;kBAAwC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAxB7C,CAAA;AAEF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,kBAAkB,CAAA;CAC5B;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,gBAAgB,GACrB,iBAAiB,CAAC,OAAO,WAAW,CAAC,CAkCvC"}
|
|
@@ -3,6 +3,7 @@ import { withMeta } from '@forumone/throughline-core';
|
|
|
3
3
|
import { validateDestinationLabel } from '../destinations.js';
|
|
4
4
|
import { FieldSchema, validateFieldSet, validateSubmitterConfirmation, } from './_field-schema.js';
|
|
5
5
|
import { deniedEnvelope, isFormsAuthor } from './access.js';
|
|
6
|
+
import { FORMS_TOOLS } from './descriptors.js';
|
|
6
7
|
const inputSchema = withMeta({
|
|
7
8
|
fields: z.array(FieldSchema).min(1),
|
|
8
9
|
destinationLabels: z.array(z.string()).min(1),
|
|
@@ -17,8 +18,7 @@ const inputSchema = withMeta({
|
|
|
17
18
|
});
|
|
18
19
|
export function createValidateFormTool(deps) {
|
|
19
20
|
return {
|
|
20
|
-
|
|
21
|
-
description: 'Runs the same checks `create_form` runs (allowlist, accessibility, submitter-confirmation pointer) without writing anything. Use to confirm a form definition is shippable before persisting it.',
|
|
21
|
+
...FORMS_TOOLS.validateForm,
|
|
22
22
|
inputSchema,
|
|
23
23
|
handler: async (input, ctx) => {
|
|
24
24
|
if (!isFormsAuthor(ctx)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-form.js","sourceRoot":"","sources":["../../src/tools/validate-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAErD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"validate-form.js","sourceRoot":"","sources":["../../src/tools/validate-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAErD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,MAAM,WAAW,GAAG,QAAQ,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,qBAAqB,EAAE,CAAC;SACrB,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QACpB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC5B,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAA;AAMF,MAAM,UAAU,sBAAsB,CACpC,IAAsB;IAEtB,OAAO;QACL,GAAG,WAAW,CAAC,YAAY;QAC3B,WAAW;QACX,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,cAAc,CAAC,wDAAwD,CAAC,CAAA;YACjF,CAAC;YAED,MAAM,MAAM,GAAa,EAAE,CAAA;YAC3B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC5C,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;gBAC3D,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM;oBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAC1D,CAAC;YACD,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACjD,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC,MAAM;gBAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;YACvE,MAAM,iBAAiB,GAAG,6BAA6B,CACrD,KAAK,CAAC,qBAAqB,EAC3B,KAAK,CAAC,MAAM,CACb,CAAA;YACD,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC;gBACtD,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;YACvC,CAAC;YAED,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;gBACvB,MAAM;gBACN,OAAO,EACL,MAAM,CAAC,MAAM,KAAK,CAAC;oBACjB,CAAC,CAAC,oCAAoC;oBACtC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS;aACvE,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forumone/throughline-forms",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "Policy-aware forms layer for the Throughline framework. Wraps Payload's Form Builder with privacy notices, consent, honeypot spam protection, IP rate limiting, a destination allowlist, and submitter confirmation. Six MCP tools for Claude-driven form management; submissions fan out to email and webhook destinations via Inngest.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -46,13 +46,13 @@
|
|
|
46
46
|
"@react-email/components": "^0.5.4",
|
|
47
47
|
"@react-email/render": "^1.3.2",
|
|
48
48
|
"zod": "^3.23.0",
|
|
49
|
-
"@forumone/throughline-core": "0.
|
|
50
|
-
"@forumone/throughline-email": "0.2.
|
|
51
|
-
"@forumone/throughline-plugin-contract": "0.4.
|
|
49
|
+
"@forumone/throughline-core": "0.8.1",
|
|
50
|
+
"@forumone/throughline-email": "0.2.9",
|
|
51
|
+
"@forumone/throughline-plugin-contract": "0.4.1"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@payloadcms/plugin-form-builder": "3.83.0",
|
|
55
|
-
"@types/node": "^
|
|
55
|
+
"@types/node": "^24.13.2",
|
|
56
56
|
"@types/react": "^19.2.0",
|
|
57
57
|
"eslint": "^9.15.0",
|
|
58
58
|
"inngest": "^4.2.0",
|