@forumone/throughline-components 0.3.0 → 0.4.0
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 +55 -0
- package/README.md +3 -1
- package/dist/options.d.ts +3 -6
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +2 -4
- package/dist/options.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +4 -39
- package/dist/plugin.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,60 @@
|
|
|
1
1
|
# @forumone/throughline-components
|
|
2
2
|
|
|
3
|
+
## 0.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 3140ea0: One MCP transport, not seven
|
|
8
|
+
|
|
9
|
+
Every plugin served its own `POST /<prefix>/mcp` on a 146-line JSON-RPC subset of
|
|
10
|
+
the protocol that spoke `tools/list` and `tools/call` and nothing else. Payload
|
|
11
|
+
ships an MCP server built on the official SDK — streamable HTTP, sessions, per-key
|
|
12
|
+
capability checkboxes — and the tools were never the transport. They now reach a
|
|
13
|
+
client through the host's `@payloadcms/plugin-mcp`, on one `/api/mcp`, via the
|
|
14
|
+
collector `createMcpToolCollector` already provided.
|
|
15
|
+
|
|
16
|
+
**Breaking.** Removed from `@forumone/throughline-core`: `createMcpHandler`,
|
|
17
|
+
`McpHandlerOptions`, `createApiKeysCollection`, `ApiKeysCollectionOptions`,
|
|
18
|
+
`DEFAULT_API_KEYS_SLUG`, `createBearerTokenAuthenticator`,
|
|
19
|
+
`BearerTokenAuthenticatorOptions`, `generateApiKey`. Removed from
|
|
20
|
+
`@forumone/throughline-plugin-contract`: `McpAuthenticator`, `McpAuthResult`.
|
|
21
|
+
`sha256Hex` stays exported, from `./utils` rather than `./auth`.
|
|
22
|
+
|
|
23
|
+
`routePrefix` is gone from `auditQueryPlugin`, `componentsPlugin` and
|
|
24
|
+
`integrationsPlugin` — omitted from their options types, so passing one is a
|
|
25
|
+
compile error rather than config that reads as if it does something. `/mcp` was
|
|
26
|
+
the only endpoint any of the three served. `publishingPlugin`, `approvalsPlugin`
|
|
27
|
+
and `formsPlugin` keep theirs; they still serve admin controls, the approval
|
|
28
|
+
action link and the public form post.
|
|
29
|
+
|
|
30
|
+
**A host that passes no `mcpTools` collector now has no MCP surface.** There is no
|
|
31
|
+
per-server endpoint left as a fallback. This is a config change of one line per
|
|
32
|
+
plugin, and `createMcpToolCollector`'s own docs carry the shape.
|
|
33
|
+
|
|
34
|
+
**What this costs, stated plainly.** `requiredScope` is now read by nothing —
|
|
35
|
+
`plugin-mcp` gates on checkboxes generated at config time, which this suite cannot
|
|
36
|
+
fill because every tool is built at `onInit`. So a key that authenticates reaches
|
|
37
|
+
every collected tool, exactly as an all-or-nothing per-server key did. The
|
|
38
|
+
declarations are kept because they are the mapping those checkboxes need; #78
|
|
39
|
+
tracks restoring enforcement, and the type's own doc comment says so.
|
|
40
|
+
|
|
41
|
+
Also drops the key collection from the playground, which leaves that app with no
|
|
42
|
+
MCP surface at all until `mcpPlugin` can be wired there — #79, blocked on moving
|
|
43
|
+
it off `payload@^3.83.0`.
|
|
44
|
+
|
|
45
|
+
### Patch Changes
|
|
46
|
+
|
|
47
|
+
- Updated dependencies [3140ea0]
|
|
48
|
+
- @forumone/throughline-plugin-contract@0.4.0
|
|
49
|
+
- @forumone/throughline-core@0.7.0
|
|
50
|
+
|
|
51
|
+
## 0.3.1
|
|
52
|
+
|
|
53
|
+
### Patch Changes
|
|
54
|
+
|
|
55
|
+
- Updated dependencies [9131065]
|
|
56
|
+
- @forumone/throughline-core@0.6.0
|
|
57
|
+
|
|
3
58
|
## 0.3.0
|
|
4
59
|
|
|
5
60
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -4,7 +4,9 @@ MCP server that exposes a design system manifest as conversational primitives. D
|
|
|
4
4
|
|
|
5
5
|
## What this package provides
|
|
6
6
|
|
|
7
|
-
Seven MCP tools
|
|
7
|
+
Seven MCP tools, handed to the host's collector at `onInit` and served by
|
|
8
|
+
`@payloadcms/plugin-mcp` on one `/api/mcp`. Pass `mcpTools` or they reach nobody.
|
|
9
|
+
This plugin serves no HTTP endpoint of its own, and so takes no `routePrefix`.
|
|
8
10
|
|
|
9
11
|
| Tool | Purpose |
|
|
10
12
|
|---|---|
|
package/dist/options.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export interface MatchingConfig {
|
|
|
24
24
|
/** Maximum number of recommendations from `suggest_for_intent`. Default: 5. */
|
|
25
25
|
maxRecommendations?: number;
|
|
26
26
|
}
|
|
27
|
-
export interface ComponentsPluginOptions extends BaseCorePluginOptions {
|
|
27
|
+
export interface ComponentsPluginOptions extends Omit<BaseCorePluginOptions, 'routePrefix'> {
|
|
28
28
|
/** Required: where the design system manifest comes from. */
|
|
29
29
|
manifest: ManifestSource;
|
|
30
30
|
/** Optional: how the plugin matches intents to components. Defaults to TF-IDF. */
|
|
@@ -45,7 +45,6 @@ export interface ComponentsPluginOptions extends BaseCorePluginOptions {
|
|
|
45
45
|
}
|
|
46
46
|
export declare const ComponentsPluginOptionsSchema: z.ZodObject<{
|
|
47
47
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
48
|
-
routePrefix: z.ZodOptional<z.ZodString>;
|
|
49
48
|
manifest: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
50
49
|
type: z.ZodLiteral<"object">;
|
|
51
50
|
manifest: z.ZodUnknown;
|
|
@@ -103,12 +102,11 @@ export declare const ComponentsPluginOptionsSchema: z.ZodObject<{
|
|
|
103
102
|
slug: string;
|
|
104
103
|
documentId?: string | undefined;
|
|
105
104
|
};
|
|
105
|
+
enabled?: boolean | undefined;
|
|
106
106
|
matching?: {
|
|
107
107
|
strategy: "tfidf";
|
|
108
108
|
maxRecommendations?: number | undefined;
|
|
109
109
|
} | undefined;
|
|
110
|
-
enabled?: boolean | undefined;
|
|
111
|
-
routePrefix?: string | undefined;
|
|
112
110
|
}, {
|
|
113
111
|
manifest: {
|
|
114
112
|
type: "object";
|
|
@@ -122,12 +120,11 @@ export declare const ComponentsPluginOptionsSchema: z.ZodObject<{
|
|
|
122
120
|
slug: string;
|
|
123
121
|
documentId?: string | undefined;
|
|
124
122
|
};
|
|
123
|
+
enabled?: boolean | undefined;
|
|
125
124
|
matching?: {
|
|
126
125
|
strategy: "tfidf";
|
|
127
126
|
maxRecommendations?: number | undefined;
|
|
128
127
|
} | undefined;
|
|
129
|
-
enabled?: boolean | undefined;
|
|
130
|
-
routePrefix?: string | undefined;
|
|
131
128
|
}>;
|
|
132
129
|
/**
|
|
133
130
|
* Validates plugin options at load time. Throws with a multi-line message
|
package/dist/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAClF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAA;AAErE,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAErE,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAA;IACjB,+EAA+E;IAC/E,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAOD,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,qBAAqB,EAAE,aAAa,CAAC;IACzF,6DAA6D;IAC7D,QAAQ,EAAE,cAAc,CAAA;IACxB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,cAAc,CAAA;IAEzB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAC5B;AAgBD,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASxC,CAAA;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,uBAAuB,GAAG,uBAAuB,CAOzF"}
|
package/dist/options.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { formatZodIssues } from '@forumone/throughline-core';
|
|
1
2
|
import { z } from 'zod';
|
|
2
3
|
const ManifestSourceSchema = z.discriminatedUnion('type', [
|
|
3
4
|
z.object({ type: z.literal('object'), manifest: z.unknown() }),
|
|
@@ -14,7 +15,6 @@ const ManifestSourceSchema = z.discriminatedUnion('type', [
|
|
|
14
15
|
]);
|
|
15
16
|
export const ComponentsPluginOptionsSchema = z.object({
|
|
16
17
|
enabled: z.boolean().optional(),
|
|
17
|
-
routePrefix: z.string().optional(),
|
|
18
18
|
manifest: ManifestSourceSchema,
|
|
19
19
|
matching: z
|
|
20
20
|
.object({
|
|
@@ -32,9 +32,7 @@ export const ComponentsPluginOptionsSchema = z.object({
|
|
|
32
32
|
export function validateOptions(options) {
|
|
33
33
|
const result = ComponentsPluginOptionsSchema.safeParse(options);
|
|
34
34
|
if (!result.success) {
|
|
35
|
-
const issues = result.error
|
|
36
|
-
.map((i) => ` - ${i.path.join('.') || '(root)'}: ${i.message}`)
|
|
37
|
-
.join('\n');
|
|
35
|
+
const issues = formatZodIssues(result.error);
|
|
38
36
|
throw new Error(`Invalid componentsPlugin options:\n${issues}`);
|
|
39
37
|
}
|
|
40
38
|
return options;
|
package/dist/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA8CvB,MAAM,oBAAoB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACxD,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;IAC9D,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACtB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;QACrB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KACxD,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC;CACH,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,oBAAoB;IAC9B,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;QAC3B,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KAC3D,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgC;IAC9D,MAAM,MAAM,GAAG,6BAA6B,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAC/D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAA;IACjE,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
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,EAAE,MAAM,uCAAuC,CAAA;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAA;AAGvE,OAAO,EAAE,KAAK,uBAAuB,EAAmB,MAAM,cAAc,CAAA;AA4B5E,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,uBAAuB,CA8D9D,CAAA"}
|
package/dist/plugin.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getPluginRegistry } from '@forumone/throughline-plugin-contract';
|
|
2
|
-
import {
|
|
2
|
+
import { createNamedLogger, defaultLogger, getAuditWriter } from '@forumone/throughline-core';
|
|
3
3
|
import { validateOptions } from './options.js';
|
|
4
4
|
import { createManifestLoader } from './manifest-source.js';
|
|
5
5
|
import { createTfidfMatcher } from './matching/index.js';
|
|
@@ -7,7 +7,6 @@ import { createFindAntiPatternTool, createGetContractTool, createGetTokensTool,
|
|
|
7
7
|
import { validateComposition, } from './validation/composition.js';
|
|
8
8
|
const PLUGIN_ID = '@forumone/throughline-components';
|
|
9
9
|
const PLUGIN_VERSION = '0.1.0';
|
|
10
|
-
const MCP_HANDLER_SYMBOL = Symbol.for('@forumone/throughline/components-mcp-handler');
|
|
11
10
|
/**
|
|
12
11
|
* Internal IPC point: peer plugins (publishing, etc.) read this symbol from
|
|
13
12
|
* the Payload instance to call composition validation directly without
|
|
@@ -19,29 +18,10 @@ export const componentsPlugin = (rawOptions) => (incomingConfig) => {
|
|
|
19
18
|
if (rawOptions.enabled === false)
|
|
20
19
|
return incomingConfig;
|
|
21
20
|
const options = validateOptions(rawOptions);
|
|
22
|
-
// Payload mounts top-level endpoints under its API base (default /api),
|
|
23
|
-
// so the path passed here MUST NOT include /api itself or it ends up
|
|
24
|
-
// doubled (e.g. /api/api/components/mcp). The user-facing URL is still
|
|
25
|
-
// /api/components/mcp.
|
|
26
|
-
const routePrefix = options.routePrefix ?? '/components';
|
|
27
21
|
const logger = createNamedLogger('components', options.logger ?? defaultLogger);
|
|
28
22
|
const maxRecommendations = options.matching?.maxRecommendations ?? 5;
|
|
29
23
|
return {
|
|
30
24
|
...incomingConfig,
|
|
31
|
-
endpoints: [
|
|
32
|
-
...(incomingConfig.endpoints ?? []),
|
|
33
|
-
{
|
|
34
|
-
path: `${routePrefix}/mcp`,
|
|
35
|
-
method: 'post',
|
|
36
|
-
handler: async (req) => {
|
|
37
|
-
const handler = req.payload[MCP_HANDLER_SYMBOL];
|
|
38
|
-
if (!handler) {
|
|
39
|
-
return new Response(JSON.stringify({ error: 'Components MCP not initialized' }), { status: 503, headers: { 'content-type': 'application/json' } });
|
|
40
|
-
}
|
|
41
|
-
return handler(req);
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
],
|
|
45
25
|
onInit: async (payload) => {
|
|
46
26
|
if (incomingConfig.onInit) {
|
|
47
27
|
await incomingConfig.onInit(payload);
|
|
@@ -69,17 +49,10 @@ export const componentsPlugin = (rawOptions) => (incomingConfig) => {
|
|
|
69
49
|
createValidateCompositionTool({ loader, auditWriter }),
|
|
70
50
|
createFindAntiPatternTool({ loader, auditWriter }),
|
|
71
51
|
];
|
|
72
|
-
// Payload's own MCP plugin,
|
|
73
|
-
//
|
|
74
|
-
//
|
|
52
|
+
// Payload's own MCP plugin, and the only transport these tools have.
|
|
53
|
+
// `onInit` is both the earliest they can exist and still early enough
|
|
54
|
+
// that `mcpPlugin` reads the array populated.
|
|
75
55
|
options.mcpTools?.add(tools, { serverName: 'components', logger });
|
|
76
|
-
const handler = createMcpHandler({
|
|
77
|
-
payload,
|
|
78
|
-
serverName: 'components',
|
|
79
|
-
tools,
|
|
80
|
-
logger,
|
|
81
|
-
});
|
|
82
|
-
attachMcpHandler(payload, handler);
|
|
83
56
|
attachValidator(payload, loader);
|
|
84
57
|
registry.register({
|
|
85
58
|
id: PLUGIN_ID,
|
|
@@ -94,14 +67,6 @@ export const componentsPlugin = (rawOptions) => (incomingConfig) => {
|
|
|
94
67
|
},
|
|
95
68
|
};
|
|
96
69
|
};
|
|
97
|
-
function attachMcpHandler(payload, handler) {
|
|
98
|
-
Object.defineProperty(payload, MCP_HANDLER_SYMBOL, {
|
|
99
|
-
value: handler,
|
|
100
|
-
enumerable: false,
|
|
101
|
-
writable: false,
|
|
102
|
-
configurable: false,
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
70
|
/**
|
|
106
71
|
* Attaches a composition-validation function to the Payload instance under
|
|
107
72
|
* VALIDATOR_SYMBOL so peer plugins (the publishing server) can validate
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forumone/throughline-components",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "MCP server that exposes a design system manifest as conversational primitives for Throughline.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"zod": "^3.23.0",
|
|
43
|
-
"@forumone/throughline-core": "0.
|
|
43
|
+
"@forumone/throughline-core": "0.7.0",
|
|
44
44
|
"@forumone/throughline-design-contract": "0.3.0",
|
|
45
|
-
"@forumone/throughline-plugin-contract": "0.
|
|
45
|
+
"@forumone/throughline-plugin-contract": "0.4.0"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@types/node": "^20.17.0",
|