@waniwani/kit 0.3.1 → 0.4.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 +51 -2
- package/dist/cli/codegen.js +3 -0
- package/dist/cli/codegen.js.map +1 -1
- package/dist/docs.d.ts +51 -0
- package/dist/docs.d.ts.map +1 -0
- package/dist/docs.js +296 -0
- package/dist/docs.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +9 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +32 -0
- package/dist/server.js.map +1 -1
- package/package.json +2 -2
- package/src/docs.ts +389 -0
- package/src/index.ts +7 -0
- package/src/server.ts +50 -0
package/README.md
CHANGED
|
@@ -483,6 +483,54 @@ for `/api/*` does not exist under `.well-known`, and the build writes no static
|
|
|
483
483
|
file there, so the request misses the filesystem phase and the catch-all already
|
|
484
484
|
in the tree carries it to the server.
|
|
485
485
|
|
|
486
|
+
### Every app serves a /docs page
|
|
487
|
+
|
|
488
|
+
`GET /docs` on the deployed server answers an HTML page that documents the MCP
|
|
489
|
+
server for a person reading it. That is the URL to give anyone who asks for an
|
|
490
|
+
app's API or MCP documentation, such as an integration form or a store
|
|
491
|
+
submission:
|
|
492
|
+
|
|
493
|
+
```
|
|
494
|
+
https://<your-mcp-host>/docs
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
The page is rendered by the runtime from the same definitions `registerApp`
|
|
498
|
+
hands the framework, so it cannot drift from what `tools/list` returns. It
|
|
499
|
+
shows:
|
|
500
|
+
|
|
501
|
+
- the app's `title`, `name` and version, and its `overview`
|
|
502
|
+
- the URL to connect an MCP client to, built from the request's host
|
|
503
|
+
(`x-forwarded-host` and `x-forwarded-proto` first, the way the framework
|
|
504
|
+
builds its own URLs)
|
|
505
|
+
- every tool, widget and flow the deployment registers, with its title, name,
|
|
506
|
+
description, the hints it carries (read-only, destructive, idempotent, open
|
|
507
|
+
world) and a table of its input parameters: name, type, whether it is
|
|
508
|
+
required, description and default, with nested object fields listed as
|
|
509
|
+
`plans[].id`
|
|
510
|
+
|
|
511
|
+
Under a surface, the page lists that surface's tools, widgets and flows and
|
|
512
|
+
shows that surface's `overview`, the same narrowing `tools/list` gets. The
|
|
513
|
+
template's own tools, such as `search`, are registered by the template rather
|
|
514
|
+
than by the app, and the page does not list them.
|
|
515
|
+
|
|
516
|
+
The page is one self-contained response: inline CSS, no script, no external
|
|
517
|
+
request, light and dark from the reader's system setting. Every value on it is
|
|
518
|
+
escaped, and its `Content-Security-Policy` allows no script at all. It answers
|
|
519
|
+
`GET` and `HEAD` at exactly `/docs`; no app endpoint can take the path, because
|
|
520
|
+
endpoints live under `/api/` and `/.well-known/`. On Vercel it reaches the
|
|
521
|
+
server through the catch-all route with no routing of its own.
|
|
522
|
+
|
|
523
|
+
It is served without authentication, so anyone with the URL reads the tool
|
|
524
|
+
list and the overview. An app whose server is private turns it off:
|
|
525
|
+
|
|
526
|
+
```ts
|
|
527
|
+
// waniwani.config.ts
|
|
528
|
+
export default defineApp({
|
|
529
|
+
name: "oney",
|
|
530
|
+
docs: false,
|
|
531
|
+
});
|
|
532
|
+
```
|
|
533
|
+
|
|
486
534
|
### Styling is Tailwind, and only Tailwind
|
|
487
535
|
|
|
488
536
|
A widget styles itself with utility classes in its `ui.tsx`. There is no
|
|
@@ -763,8 +811,9 @@ the same mistake before a deploy, along with any id in a surface that matches
|
|
|
763
811
|
no file.
|
|
764
812
|
|
|
765
813
|
Endpoints under `api/` and `well-known/` are served on every surface; the model
|
|
766
|
-
never sees them. The
|
|
767
|
-
and is not part of a surface:
|
|
814
|
+
never sees them. The `/docs` page follows the surface. The template's own
|
|
815
|
+
`search` tool is registered before the app's and is not part of a surface:
|
|
816
|
+
`search: { enabled: false }` is what turns it off.
|
|
768
817
|
|
|
769
818
|
### What the build check catches
|
|
770
819
|
|
package/dist/cli/codegen.js
CHANGED
|
@@ -689,6 +689,9 @@ export async function registerApp(server: McpServer): Promise<void> {
|
|
|
689
689
|
styleDomains: ${list(styleDomains.map((origin) => `"${origin}"`))},
|
|
690
690
|
// Narrows the lists above; absent when WANIWANI_SURFACE is unset.
|
|
691
691
|
surface,
|
|
692
|
+
// The heading and overview of the /docs page, which \`docs: false\` turns off.
|
|
693
|
+
app,
|
|
694
|
+
docs: config.docs,
|
|
692
695
|
});
|
|
693
696
|
}
|
|
694
697
|
`;
|
package/dist/cli/codegen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../cli/codegen.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../cli/codegen.ts"],"names":[],"mappings":"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"}
|
package/dist/docs.d.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `/docs` page every app serves: a human-readable account of what its MCP
|
|
3
|
+
* server registers, for anyone who needs a URL to point at rather than an MCP
|
|
4
|
+
* client to connect with.
|
|
5
|
+
*
|
|
6
|
+
* It is rendered from the same definitions `registerApp` hands the framework,
|
|
7
|
+
* after surface narrowing, so the page lists what this deployment's `tools/list`
|
|
8
|
+
* lists from the app and nothing it does not.
|
|
9
|
+
*
|
|
10
|
+
* The markup is built at runtime and sent as a response, never written into an
|
|
11
|
+
* app's files. Every interpolated value goes through `html`, which escapes it
|
|
12
|
+
* unless it is a fragment `html` itself produced, so a description holding
|
|
13
|
+
* markup reaches the page as text.
|
|
14
|
+
*/
|
|
15
|
+
import type { RequestHandler } from "express";
|
|
16
|
+
/** What the page says about the server itself. */
|
|
17
|
+
export type DocsApp = {
|
|
18
|
+
name: string;
|
|
19
|
+
title?: string;
|
|
20
|
+
version?: string;
|
|
21
|
+
/** The overview the server hands the model at `initialize`, surface applied. */
|
|
22
|
+
instructions?: string;
|
|
23
|
+
};
|
|
24
|
+
/** The MCP annotations a registered tool carries, as far as the page shows them. */
|
|
25
|
+
export type DocsAnnotations = {
|
|
26
|
+
readOnlyHint?: boolean;
|
|
27
|
+
destructiveHint?: boolean;
|
|
28
|
+
openWorldHint?: boolean;
|
|
29
|
+
idempotentHint?: boolean;
|
|
30
|
+
};
|
|
31
|
+
/** One registered tool, widget or flow. */
|
|
32
|
+
export type DocsEntry = {
|
|
33
|
+
name: string;
|
|
34
|
+
title?: string;
|
|
35
|
+
description?: string;
|
|
36
|
+
/** A Zod shape, or a Zod object schema: whatever the tool registered as `inputSchema`. */
|
|
37
|
+
input?: unknown;
|
|
38
|
+
annotations?: DocsAnnotations;
|
|
39
|
+
};
|
|
40
|
+
export type DocsModel = {
|
|
41
|
+
app?: DocsApp;
|
|
42
|
+
tools: DocsEntry[];
|
|
43
|
+
widgets: DocsEntry[];
|
|
44
|
+
flows: DocsEntry[];
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* The `GET /docs` handler. The page carries no script, and its CSP says so, so
|
|
48
|
+
* even markup that escaped escaping could not run.
|
|
49
|
+
*/
|
|
50
|
+
export declare function docsHandler(model: DocsModel): RequestHandler;
|
|
51
|
+
//# sourceMappingURL=docs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAW,cAAc,EAAE,MAAM,SAAS,CAAC;AAGvD,kDAAkD;AAClD,MAAM,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,oFAAoF;AACpF,MAAM,MAAM,eAAe,GAAG;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,2CAA2C;AAC3C,MAAM,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0FAA0F;IAC1F,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,EAAE,SAAS,EAAE,CAAC;CACnB,CAAC;AAiSF;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,cAAc,CA6C5D"}
|
package/dist/docs.js
ADDED
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `/docs` page every app serves: a human-readable account of what its MCP
|
|
3
|
+
* server registers, for anyone who needs a URL to point at rather than an MCP
|
|
4
|
+
* client to connect with.
|
|
5
|
+
*
|
|
6
|
+
* It is rendered from the same definitions `registerApp` hands the framework,
|
|
7
|
+
* after surface narrowing, so the page lists what this deployment's `tools/list`
|
|
8
|
+
* lists from the app and nothing it does not.
|
|
9
|
+
*
|
|
10
|
+
* The markup is built at runtime and sent as a response, never written into an
|
|
11
|
+
* app's files. Every interpolated value goes through `html`, which escapes it
|
|
12
|
+
* unless it is a fragment `html` itself produced, so a description holding
|
|
13
|
+
* markup reaches the page as text.
|
|
14
|
+
*/
|
|
15
|
+
import { z } from "zod";
|
|
16
|
+
// ------------------------------------------------------------------- escaping
|
|
17
|
+
/** Markup `html` produced, and so already escaped. */
|
|
18
|
+
class Html {
|
|
19
|
+
value;
|
|
20
|
+
constructor(value) {
|
|
21
|
+
this.value = value;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const ENTITIES = {
|
|
25
|
+
"&": "&",
|
|
26
|
+
"<": "<",
|
|
27
|
+
">": ">",
|
|
28
|
+
'"': """,
|
|
29
|
+
"'": "'",
|
|
30
|
+
};
|
|
31
|
+
function escapeText(value) {
|
|
32
|
+
return value.replace(/[&<>"']/g, (char) => ENTITIES[char]);
|
|
33
|
+
}
|
|
34
|
+
function flatten(part) {
|
|
35
|
+
if (part instanceof Html)
|
|
36
|
+
return part.value;
|
|
37
|
+
if (Array.isArray(part))
|
|
38
|
+
return part.map(flatten).join("");
|
|
39
|
+
if (part === null || part === undefined || part === false || part === true)
|
|
40
|
+
return "";
|
|
41
|
+
return escapeText(String(part));
|
|
42
|
+
}
|
|
43
|
+
/** Tagged template: literal markup passes through, every interpolation is escaped. */
|
|
44
|
+
function html(strings, ...parts) {
|
|
45
|
+
let out = strings[0];
|
|
46
|
+
for (let i = 0; i < parts.length; i++) {
|
|
47
|
+
out += flatten(parts[i]) + strings[i + 1];
|
|
48
|
+
}
|
|
49
|
+
return new Html(out);
|
|
50
|
+
}
|
|
51
|
+
/** Nested object fields are listed as `parent.child` down to this depth. */
|
|
52
|
+
const MAX_DEPTH = 3;
|
|
53
|
+
function isZodSchema(value) {
|
|
54
|
+
return typeof value === "object" && value !== null && "_zod" in value;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The JSON Schema a client receives for this input, read the way the MCP SDK
|
|
58
|
+
* reads it for `tools/list`: the input side of any transform or default.
|
|
59
|
+
*
|
|
60
|
+
* `null` when the schema cannot be represented, so the page says so for that
|
|
61
|
+
* one entry instead of failing to render.
|
|
62
|
+
*/
|
|
63
|
+
function inputSchema(input) {
|
|
64
|
+
if (input === undefined)
|
|
65
|
+
return {};
|
|
66
|
+
try {
|
|
67
|
+
const schema = isZodSchema(input) ? input : z.object(input);
|
|
68
|
+
return z.toJSONSchema(schema, { io: "input", unrepresentable: "any" });
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/** A schema value as JSON, or as plain text for one JSON cannot hold. */
|
|
75
|
+
function literal(value) {
|
|
76
|
+
try {
|
|
77
|
+
return JSON.stringify(value) ?? String(value);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return String(value);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function typeLabel(schema) {
|
|
84
|
+
if (schema.const !== undefined)
|
|
85
|
+
return literal(schema.const);
|
|
86
|
+
if (Array.isArray(schema.enum))
|
|
87
|
+
return schema.enum.map(literal).join(" | ");
|
|
88
|
+
const union = schema.anyOf ?? schema.oneOf;
|
|
89
|
+
if (union)
|
|
90
|
+
return union.map(typeLabel).join(" | ");
|
|
91
|
+
if (schema.type === "array") {
|
|
92
|
+
const item = typeLabel(schema.items ?? {});
|
|
93
|
+
return item.includes(" | ") ? `(${item})[]` : `${item}[]`;
|
|
94
|
+
}
|
|
95
|
+
if (Array.isArray(schema.type))
|
|
96
|
+
return schema.type.join(" | ");
|
|
97
|
+
if (schema.type)
|
|
98
|
+
return schema.format ? `${schema.type} (${schema.format})` : schema.type;
|
|
99
|
+
return schema.$ref ? "object" : "any";
|
|
100
|
+
}
|
|
101
|
+
/** The object schema whose fields are listed under a parameter, if it has one. */
|
|
102
|
+
function nestedObject(schema) {
|
|
103
|
+
if (schema.properties)
|
|
104
|
+
return { schema, suffix: "." };
|
|
105
|
+
if (schema.type === "array" && schema.items?.properties) {
|
|
106
|
+
return { schema: schema.items, suffix: "[]." };
|
|
107
|
+
}
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
function parameters(schema, prefix = "", depth = 0) {
|
|
111
|
+
const required = new Set(schema.required ?? []);
|
|
112
|
+
return Object.entries(schema.properties ?? {}).flatMap(([key, property]) => {
|
|
113
|
+
const name = prefix + key;
|
|
114
|
+
const row = {
|
|
115
|
+
name,
|
|
116
|
+
type: typeLabel(property),
|
|
117
|
+
required: required.has(key),
|
|
118
|
+
description: property.description,
|
|
119
|
+
default: property.default,
|
|
120
|
+
};
|
|
121
|
+
const nested = depth < MAX_DEPTH ? nestedObject(property) : undefined;
|
|
122
|
+
return nested ? [row, ...parameters(nested.schema, name + nested.suffix, depth + 1)] : [row];
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
const SECTIONS = [
|
|
126
|
+
{ kind: "tool", key: "tools", heading: "Tools" },
|
|
127
|
+
{ kind: "widget", key: "widgets", heading: "Widgets" },
|
|
128
|
+
{ kind: "flow", key: "flows", heading: "Flows" },
|
|
129
|
+
];
|
|
130
|
+
const HINTS = [
|
|
131
|
+
{ key: "readOnlyHint", label: "read-only" },
|
|
132
|
+
{ key: "destructiveHint", label: "destructive" },
|
|
133
|
+
{ key: "idempotentHint", label: "idempotent" },
|
|
134
|
+
{ key: "openWorldHint", label: "open world" },
|
|
135
|
+
];
|
|
136
|
+
function anchor(kind, name) {
|
|
137
|
+
return `${kind}-${name}`;
|
|
138
|
+
}
|
|
139
|
+
function parameterTable(entry) {
|
|
140
|
+
const schema = inputSchema(entry.input);
|
|
141
|
+
if (schema === null) {
|
|
142
|
+
return html `<p class="muted">The input schema cannot be shown as JSON Schema.</p>`;
|
|
143
|
+
}
|
|
144
|
+
const rows = parameters(schema);
|
|
145
|
+
if (rows.length === 0)
|
|
146
|
+
return html `<p class="muted">No parameters.</p>`;
|
|
147
|
+
return html `<div class="params"><table>
|
|
148
|
+
<thead><tr><th>Parameter</th><th>Type</th><th>Required</th><th>Description</th></tr></thead>
|
|
149
|
+
<tbody>${rows.map((row) => html `
|
|
150
|
+
<tr><td><code>${row.name}</code></td><td><code>${row.type}</code></td><td>${row.required ? "yes" : "no"}</td><td>${row.description ?? ""}${row.default !== undefined
|
|
151
|
+
? html `${row.description ? " " : ""}<span class="muted">Default: <code>${literal(row.default)}</code></span>`
|
|
152
|
+
: ""}</td></tr>`)}
|
|
153
|
+
</tbody>
|
|
154
|
+
</table></div>`;
|
|
155
|
+
}
|
|
156
|
+
function entryCard(kind, entry) {
|
|
157
|
+
const hints = HINTS.filter(({ key }) => entry.annotations?.[key] === true);
|
|
158
|
+
return html `
|
|
159
|
+
<article id="${anchor(kind, entry.name)}">
|
|
160
|
+
<h3>${entry.title ?? entry.name}</h3>
|
|
161
|
+
<p class="meta"><code>${entry.name}</code>${hints.map(({ label }) => html ` <span class="badge badge-${label.replace(" ", "-")}">${label}</span>`)}</p>
|
|
162
|
+
${entry.description ? html `<p class="text">${entry.description}</p>` : ""}
|
|
163
|
+
${parameterTable(entry)}
|
|
164
|
+
</article>`;
|
|
165
|
+
}
|
|
166
|
+
const STYLE = `
|
|
167
|
+
:root{color-scheme:light dark;--bg:#fff;--fg:#1a1a1a;--muted:#5f6368;--line:#e3e3e3;--card:#fafafa;--code:#f1f1f1;--accent:#2d5bd7;--warn:#b3261e}
|
|
168
|
+
@media (prefers-color-scheme:dark){:root{--bg:#121212;--fg:#ececec;--muted:#a0a4a8;--line:#2e2e2e;--card:#1a1a1a;--code:#262626;--accent:#8ab0ff;--warn:#f2b8b5}}
|
|
169
|
+
*{box-sizing:border-box}
|
|
170
|
+
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.55 system-ui,-apple-system,"Segoe UI",sans-serif}
|
|
171
|
+
main{max-width:880px;margin:0 auto;padding:40px 16px 64px}
|
|
172
|
+
h1{font-size:28px;margin:0 0 4px}h2{font-size:20px;margin:40px 0 12px;padding-bottom:6px;border-bottom:1px solid var(--line)}h3{font-size:17px;margin:0 0 4px}
|
|
173
|
+
a{color:var(--accent)}
|
|
174
|
+
code,pre{font:13px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}
|
|
175
|
+
code{background:var(--code);padding:1px 5px;border-radius:4px;overflow-wrap:anywhere}
|
|
176
|
+
pre{background:var(--code);padding:12px 14px;border-radius:8px;overflow-x:auto;margin:8px 0}
|
|
177
|
+
pre code{background:none;padding:0}
|
|
178
|
+
.muted,.meta{color:var(--muted)}
|
|
179
|
+
.text{white-space:pre-wrap}
|
|
180
|
+
article{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin:12px 0}
|
|
181
|
+
.badge{display:inline-block;font-size:12px;border:1px solid var(--line);border-radius:999px;padding:0 8px;margin-left:4px}
|
|
182
|
+
.badge-destructive{color:var(--warn);border-color:currentColor}
|
|
183
|
+
.params{overflow-x:auto;margin-top:8px}
|
|
184
|
+
table{width:100%;border-collapse:collapse;font-size:14px}
|
|
185
|
+
th,td{text-align:left;vertical-align:top;padding:6px 10px 6px 0;border-top:1px solid var(--line)}
|
|
186
|
+
th{font-weight:600;border-top:none}
|
|
187
|
+
td code{overflow-wrap:normal}
|
|
188
|
+
td:first-child code{white-space:nowrap}
|
|
189
|
+
nav ul{margin:8px 0 0;padding-left:20px}
|
|
190
|
+
footer{margin-top:48px;font-size:13px}
|
|
191
|
+
`;
|
|
192
|
+
/**
|
|
193
|
+
* Everything on the page except the server's own URL, which depends on the
|
|
194
|
+
* request. Rendered once, because the definitions do not change while the
|
|
195
|
+
* server runs.
|
|
196
|
+
*/
|
|
197
|
+
function renderBody(model) {
|
|
198
|
+
const title = model.app?.title ?? model.app?.name ?? "MCP server";
|
|
199
|
+
const present = SECTIONS.filter(({ key }) => model[key].length > 0);
|
|
200
|
+
const head = html `<header>
|
|
201
|
+
<h1>${title}</h1>
|
|
202
|
+
<p class="meta">${model.app?.name ? html `<code>${model.app.name}</code>` : ""}${model.app?.version ? html ` version ${model.app.version}` : ""}</p>
|
|
203
|
+
</header>`;
|
|
204
|
+
const tail = html `
|
|
205
|
+
${model.app?.instructions
|
|
206
|
+
? html `<section>
|
|
207
|
+
<h2>Overview</h2>
|
|
208
|
+
<p class="text">${model.app.instructions}</p>
|
|
209
|
+
</section>`
|
|
210
|
+
: ""}
|
|
211
|
+
${present.length > 0
|
|
212
|
+
? html `<nav>
|
|
213
|
+
<h2>Contents</h2>
|
|
214
|
+
<ul>${present.map(({ kind, key, heading }) => html `
|
|
215
|
+
<li>${heading} (${model[key].length})<ul>${model[key].map((entry) => html `<li><a href="#${anchor(kind, entry.name)}">${entry.title ?? entry.name}</a></li>`)}</ul></li>`)}
|
|
216
|
+
</ul>
|
|
217
|
+
</nav>`
|
|
218
|
+
: html `<p class="muted">This server registers no tools, widgets or flows of its own.</p>`}
|
|
219
|
+
${present.map(({ kind, key, heading }) => html `
|
|
220
|
+
<section>
|
|
221
|
+
<h2>${heading}</h2>
|
|
222
|
+
${model[key].map((entry) => entryCard(kind, entry))}
|
|
223
|
+
</section>`)}
|
|
224
|
+
<footer class="muted">Generated from the definitions this server registers.
|
|
225
|
+
Widgets are tools that also render a view in hosts that support MCP Apps.
|
|
226
|
+
Flows are tools that guide a multi-step conversation.</footer>`;
|
|
227
|
+
return { title, head, tail };
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* This server's public origin, the way the framework resolves it for view URLs
|
|
231
|
+
* and OAuth metadata: `x-forwarded-host` first, then `Host`, first hop of a
|
|
232
|
+
* forwarded chain only. A forwarded host with no forwarded protocol is https;
|
|
233
|
+
* a bare `localhost` or `127.0.0.1` host is http.
|
|
234
|
+
*/
|
|
235
|
+
function serverOrigin(req) {
|
|
236
|
+
const firstHop = (value) => value?.split(",")[0]?.trim();
|
|
237
|
+
const forwardedHost = firstHop(req.get("x-forwarded-host"));
|
|
238
|
+
if (forwardedHost) {
|
|
239
|
+
const proto = firstHop(req.get("x-forwarded-proto")) || "https";
|
|
240
|
+
return `${proto}://${forwardedHost}`;
|
|
241
|
+
}
|
|
242
|
+
const host = req.get("host");
|
|
243
|
+
if (host) {
|
|
244
|
+
const local = ["localhost:", "127.0.0.1:"].some((prefix) => host.startsWith(prefix));
|
|
245
|
+
return `${local ? "http" : "https"}://${host}`;
|
|
246
|
+
}
|
|
247
|
+
return `http://localhost:${process.env.__PORT || "3000"}`;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* The `GET /docs` handler. The page carries no script, and its CSP says so, so
|
|
251
|
+
* even markup that escaped escaping could not run.
|
|
252
|
+
*/
|
|
253
|
+
export function docsHandler(model) {
|
|
254
|
+
// A definition the page cannot render costs the page, never the server start.
|
|
255
|
+
let body;
|
|
256
|
+
try {
|
|
257
|
+
body = renderBody(model);
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
console.error("[waniwani] the /docs page could not be rendered:", error);
|
|
261
|
+
return (_req, res) => {
|
|
262
|
+
res.status(500).type("text/plain").send("The documentation page could not be rendered.");
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
const { title, head, tail } = body;
|
|
266
|
+
return (req, res) => {
|
|
267
|
+
const endpoint = `${serverOrigin(req)}/mcp`;
|
|
268
|
+
const page = html `<!doctype html>
|
|
269
|
+
<html lang="en">
|
|
270
|
+
<head>
|
|
271
|
+
<meta charset="utf-8">
|
|
272
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
273
|
+
<title>${title} · MCP documentation</title>
|
|
274
|
+
<style>${new Html(STYLE)}</style>
|
|
275
|
+
</head>
|
|
276
|
+
<body>
|
|
277
|
+
<main>
|
|
278
|
+
${head}
|
|
279
|
+
<section>
|
|
280
|
+
<h2>Connect</h2>
|
|
281
|
+
<p>Add this URL to any MCP client as a remote server. It speaks MCP over Streamable HTTP, with JSON-RPC requests sent as <code>POST</code>.</p>
|
|
282
|
+
<pre><code>${endpoint}</code></pre>
|
|
283
|
+
</section>
|
|
284
|
+
${tail}
|
|
285
|
+
</main>
|
|
286
|
+
</body>
|
|
287
|
+
</html>
|
|
288
|
+
`;
|
|
289
|
+
res.setHeader("Content-Type", "text/html; charset=utf-8");
|
|
290
|
+
res.setHeader("Content-Security-Policy", "default-src 'none'; style-src 'unsafe-inline'; base-uri 'none'; form-action 'none'");
|
|
291
|
+
res.setHeader("X-Content-Type-Options", "nosniff");
|
|
292
|
+
res.setHeader("Cache-Control", "public, max-age=300");
|
|
293
|
+
res.send(page.value);
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=docs.js.map
|
package/dist/docs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -194,6 +194,13 @@ export type AppConfig = {
|
|
|
194
194
|
* empty serves everything; an undeclared name refuses to start.
|
|
195
195
|
*/
|
|
196
196
|
surfaces?: Record<string, SurfaceConfig>;
|
|
197
|
+
/**
|
|
198
|
+
* Serve the HTML page at `/docs` that lists this deployment's tools,
|
|
199
|
+
* widgets and flows, their parameters, and the URL to connect an MCP client
|
|
200
|
+
* to. On by default, and served without authentication: `false` is for a
|
|
201
|
+
* server whose tool list should only reach a client that signed in.
|
|
202
|
+
*/
|
|
203
|
+
docs?: boolean;
|
|
197
204
|
};
|
|
198
205
|
export declare function defineApp(config: AppConfig): AppConfig;
|
|
199
206
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAyMH,MAAM,UAAU,SAAS,CAAC,MAAiB;IAC1C,OAAO,MAAM,CAAC;AACf,CAAC;AAwBD,MAAM,UAAU,UAAU,CACzB,GAAyB;IAEzB,OAAO,GAAG,CAAC;AACZ,CAAC;AAsDD,MAAM,UAAU,YAAY,CAAkB,GAAwB;IACrE,OAAO,GAAG,CAAC;AACZ,CAAC;AAmDD,MAAM,UAAU,cAAc,CAAC,GAAuB;IACrD,OAAO,GAAG,CAAC;AACZ,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* hands them to `registerApp()`. Nothing else.
|
|
12
12
|
*/
|
|
13
13
|
import type { McpServer } from "skybridge/server";
|
|
14
|
+
import { type DocsApp } from "./docs.js";
|
|
14
15
|
import type { EndpointDefinition, Shape, SurfaceConfig, ToolHints, WidgetCsp } from "./index.js";
|
|
15
16
|
export { resolveSurface } from "./surface.js";
|
|
16
17
|
/**
|
|
@@ -68,6 +69,14 @@ export type Manifest = {
|
|
|
68
69
|
styleDomains?: string[];
|
|
69
70
|
/** From `resolveSurface()`. Absent: the whole manifest is registered. */
|
|
70
71
|
surface?: SurfaceConfig;
|
|
72
|
+
/**
|
|
73
|
+
* The server's identity, for the `/docs` page's heading and overview. The
|
|
74
|
+
* generated `waniwani.ts` passes the object it constructs the server from, so
|
|
75
|
+
* `instructions` is the overview the active surface serves.
|
|
76
|
+
*/
|
|
77
|
+
app?: DocsApp;
|
|
78
|
+
/** `false` leaves `/docs` unmounted. Anything else serves it. */
|
|
79
|
+
docs?: boolean;
|
|
71
80
|
};
|
|
72
81
|
/**
|
|
73
82
|
* Register an app's tools, widgets and flows onto a server the template built.
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAsB,MAAM,kBAAkB,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIjG,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;GAIG;AACH,KAAK,iBAAiB,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;CAC/B,CAAC;AAEF,KAAK,mBAAmB,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC;IAClC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;CACjC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IAEb,MAAM,EAAE,GAAG,CAAC;IAEZ,OAAO,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACtB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,iBAAiB,CAAA;KAAE,CAAC,CAAC;IACvD,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,mBAAmB,CAAA;KAAE,CAAC,CAAC;IAC3D,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,kBAAkB,CAAA;KAAE,CAAC,CAAC;IAC7D;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,yEAAyE;IACzE,OAAO,CAAC,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAsB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,KAAK,OAAO,EAA+B,MAAM,WAAW,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIjG,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;GAIG;AACH,KAAK,iBAAiB,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;CAC/B,CAAC;AAEF,KAAK,mBAAmB,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC;IAClC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;CACjC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IAEb,MAAM,EAAE,GAAG,CAAC;IAEZ,OAAO,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACtB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,iBAAiB,CAAA;KAAE,CAAC,CAAC;IACvD,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,mBAAmB,CAAA;KAAE,CAAC,CAAC;IAC3D,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,kBAAkB,CAAA;KAAE,CAAC,CAAC;IAC7D;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,yEAAyE;IACzE,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,iEAAiE;IACjE,IAAI,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AA6LF;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAgH3F"}
|
package/dist/server.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import cors from "cors";
|
|
14
14
|
import express, {} from "express";
|
|
15
|
+
import { docsHandler } from "./docs.js";
|
|
15
16
|
import { narrow, SURFACE_ENV } from "./surface.js";
|
|
16
17
|
// The generated `waniwani.ts` imports this from `@waniwani/kit/server`.
|
|
17
18
|
export { resolveSurface } from "./surface.js";
|
|
@@ -160,6 +161,31 @@ function registerEndpoints(server, endpoints) {
|
|
|
160
161
|
server.use(path, ...chain);
|
|
161
162
|
}
|
|
162
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* What `/docs` lists: each definition as it is registered below, annotations
|
|
166
|
+
* included, so the page and `tools/list` agree.
|
|
167
|
+
*/
|
|
168
|
+
function docsModel(served) {
|
|
169
|
+
const entry = (name, def, input, defaults) => ({
|
|
170
|
+
name,
|
|
171
|
+
title: def.title,
|
|
172
|
+
description: def.description,
|
|
173
|
+
input,
|
|
174
|
+
annotations: annotations(def.title, def.hints, defaults),
|
|
175
|
+
});
|
|
176
|
+
return {
|
|
177
|
+
app: served.app,
|
|
178
|
+
tools: served.tools.map(({ name, def }) => entry(name, def, def.input, { readOnly: false })),
|
|
179
|
+
widgets: served.widgets.map(({ name, def }) => entry(name, def, def.data, { readOnly: true })),
|
|
180
|
+
flows: served.flows.map((flow) => ({
|
|
181
|
+
name: flow.name,
|
|
182
|
+
title: flow.config?.title ?? flow.config?.annotations?.title,
|
|
183
|
+
description: flow.config?.description,
|
|
184
|
+
input: flow.config?.inputSchema,
|
|
185
|
+
annotations: flow.config?.annotations,
|
|
186
|
+
})),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
163
189
|
/**
|
|
164
190
|
* Register an app's tools, widgets and flows onto a server the template built.
|
|
165
191
|
*
|
|
@@ -181,6 +207,12 @@ export async function registerApp(server, manifest) {
|
|
|
181
207
|
// serves itself: a mount here wins, so a clash would be an app answering
|
|
182
208
|
// discovery rather than a 404 anybody could read.
|
|
183
209
|
registerEndpoints(server, endpoints);
|
|
210
|
+
// Mounted here for the same ordering reason, from the narrowed lists, so a
|
|
211
|
+
// surface's page shows that surface. No app endpoint can take the path:
|
|
212
|
+
// endpoints live under `/api/` and `/.well-known/`.
|
|
213
|
+
if (manifest.docs !== false) {
|
|
214
|
+
server.express.get("/docs", docsHandler(docsModel(served)));
|
|
215
|
+
}
|
|
184
216
|
// Widgets: one `data` schema drives the input schema, the structured output,
|
|
185
217
|
// and the type the component receives.
|
|
186
218
|
//
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,OAAO,EAAE,EAAiD,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@waniwani/kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Build an MCP app as a folder: tools, widgets and flows, with one CLI and one shared server runtime.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"@skybridge/devtools": "1.4.1"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
|
-
"@waniwani/sdk": ">=0.
|
|
65
|
+
"@waniwani/sdk": ">=0.21.1",
|
|
66
66
|
"react": ">=19",
|
|
67
67
|
"react-dom": ">=19",
|
|
68
68
|
"zod": "^4"
|
package/src/docs.ts
ADDED
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `/docs` page every app serves: a human-readable account of what its MCP
|
|
3
|
+
* server registers, for anyone who needs a URL to point at rather than an MCP
|
|
4
|
+
* client to connect with.
|
|
5
|
+
*
|
|
6
|
+
* It is rendered from the same definitions `registerApp` hands the framework,
|
|
7
|
+
* after surface narrowing, so the page lists what this deployment's `tools/list`
|
|
8
|
+
* lists from the app and nothing it does not.
|
|
9
|
+
*
|
|
10
|
+
* The markup is built at runtime and sent as a response, never written into an
|
|
11
|
+
* app's files. Every interpolated value goes through `html`, which escapes it
|
|
12
|
+
* unless it is a fragment `html` itself produced, so a description holding
|
|
13
|
+
* markup reaches the page as text.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import type { Request, RequestHandler } from "express";
|
|
17
|
+
import { z } from "zod";
|
|
18
|
+
|
|
19
|
+
/** What the page says about the server itself. */
|
|
20
|
+
export type DocsApp = {
|
|
21
|
+
name: string;
|
|
22
|
+
title?: string;
|
|
23
|
+
version?: string;
|
|
24
|
+
/** The overview the server hands the model at `initialize`, surface applied. */
|
|
25
|
+
instructions?: string;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/** The MCP annotations a registered tool carries, as far as the page shows them. */
|
|
29
|
+
export type DocsAnnotations = {
|
|
30
|
+
readOnlyHint?: boolean;
|
|
31
|
+
destructiveHint?: boolean;
|
|
32
|
+
openWorldHint?: boolean;
|
|
33
|
+
idempotentHint?: boolean;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/** One registered tool, widget or flow. */
|
|
37
|
+
export type DocsEntry = {
|
|
38
|
+
name: string;
|
|
39
|
+
title?: string;
|
|
40
|
+
description?: string;
|
|
41
|
+
/** A Zod shape, or a Zod object schema: whatever the tool registered as `inputSchema`. */
|
|
42
|
+
input?: unknown;
|
|
43
|
+
annotations?: DocsAnnotations;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export type DocsModel = {
|
|
47
|
+
app?: DocsApp;
|
|
48
|
+
tools: DocsEntry[];
|
|
49
|
+
widgets: DocsEntry[];
|
|
50
|
+
flows: DocsEntry[];
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
// ------------------------------------------------------------------- escaping
|
|
54
|
+
|
|
55
|
+
/** Markup `html` produced, and so already escaped. */
|
|
56
|
+
class Html {
|
|
57
|
+
constructor(readonly value: string) {}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
type Part = Html | string | number | boolean | null | undefined | Part[];
|
|
61
|
+
|
|
62
|
+
const ENTITIES: Record<string, string> = {
|
|
63
|
+
"&": "&",
|
|
64
|
+
"<": "<",
|
|
65
|
+
">": ">",
|
|
66
|
+
'"': """,
|
|
67
|
+
"'": "'",
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
function escapeText(value: string): string {
|
|
71
|
+
return value.replace(/[&<>"']/g, (char) => ENTITIES[char] as string);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function flatten(part: Part): string {
|
|
75
|
+
if (part instanceof Html) return part.value;
|
|
76
|
+
if (Array.isArray(part)) return part.map(flatten).join("");
|
|
77
|
+
if (part === null || part === undefined || part === false || part === true) return "";
|
|
78
|
+
return escapeText(String(part));
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** Tagged template: literal markup passes through, every interpolation is escaped. */
|
|
82
|
+
function html(strings: TemplateStringsArray, ...parts: Part[]): Html {
|
|
83
|
+
let out = strings[0] as string;
|
|
84
|
+
for (let i = 0; i < parts.length; i++) {
|
|
85
|
+
out += flatten(parts[i]) + (strings[i + 1] as string);
|
|
86
|
+
}
|
|
87
|
+
return new Html(out);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// ----------------------------------------------------------------- parameters
|
|
91
|
+
|
|
92
|
+
type JsonSchema = {
|
|
93
|
+
type?: string | string[];
|
|
94
|
+
description?: string;
|
|
95
|
+
default?: unknown;
|
|
96
|
+
enum?: unknown[];
|
|
97
|
+
const?: unknown;
|
|
98
|
+
format?: string;
|
|
99
|
+
items?: JsonSchema;
|
|
100
|
+
anyOf?: JsonSchema[];
|
|
101
|
+
oneOf?: JsonSchema[];
|
|
102
|
+
properties?: Record<string, JsonSchema>;
|
|
103
|
+
required?: string[];
|
|
104
|
+
$ref?: string;
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
type Parameter = {
|
|
108
|
+
name: string;
|
|
109
|
+
type: string;
|
|
110
|
+
required: boolean;
|
|
111
|
+
description?: string;
|
|
112
|
+
default?: unknown;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
/** Nested object fields are listed as `parent.child` down to this depth. */
|
|
116
|
+
const MAX_DEPTH = 3;
|
|
117
|
+
|
|
118
|
+
function isZodSchema(value: unknown): value is z.ZodType {
|
|
119
|
+
return typeof value === "object" && value !== null && "_zod" in value;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* The JSON Schema a client receives for this input, read the way the MCP SDK
|
|
124
|
+
* reads it for `tools/list`: the input side of any transform or default.
|
|
125
|
+
*
|
|
126
|
+
* `null` when the schema cannot be represented, so the page says so for that
|
|
127
|
+
* one entry instead of failing to render.
|
|
128
|
+
*/
|
|
129
|
+
function inputSchema(input: unknown): JsonSchema | null {
|
|
130
|
+
if (input === undefined) return {};
|
|
131
|
+
try {
|
|
132
|
+
const schema = isZodSchema(input) ? input : z.object(input as z.ZodRawShape);
|
|
133
|
+
return z.toJSONSchema(schema, { io: "input", unrepresentable: "any" }) as JsonSchema;
|
|
134
|
+
} catch {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/** A schema value as JSON, or as plain text for one JSON cannot hold. */
|
|
140
|
+
function literal(value: unknown): string {
|
|
141
|
+
try {
|
|
142
|
+
return JSON.stringify(value) ?? String(value);
|
|
143
|
+
} catch {
|
|
144
|
+
return String(value);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function typeLabel(schema: JsonSchema): string {
|
|
149
|
+
if (schema.const !== undefined) return literal(schema.const);
|
|
150
|
+
if (Array.isArray(schema.enum)) return schema.enum.map(literal).join(" | ");
|
|
151
|
+
const union = schema.anyOf ?? schema.oneOf;
|
|
152
|
+
if (union) return union.map(typeLabel).join(" | ");
|
|
153
|
+
if (schema.type === "array") {
|
|
154
|
+
const item = typeLabel(schema.items ?? {});
|
|
155
|
+
return item.includes(" | ") ? `(${item})[]` : `${item}[]`;
|
|
156
|
+
}
|
|
157
|
+
if (Array.isArray(schema.type)) return schema.type.join(" | ");
|
|
158
|
+
if (schema.type) return schema.format ? `${schema.type} (${schema.format})` : schema.type;
|
|
159
|
+
return schema.$ref ? "object" : "any";
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/** The object schema whose fields are listed under a parameter, if it has one. */
|
|
163
|
+
function nestedObject(schema: JsonSchema): { schema: JsonSchema; suffix: string } | undefined {
|
|
164
|
+
if (schema.properties) return { schema, suffix: "." };
|
|
165
|
+
if (schema.type === "array" && schema.items?.properties) {
|
|
166
|
+
return { schema: schema.items, suffix: "[]." };
|
|
167
|
+
}
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
function parameters(schema: JsonSchema, prefix = "", depth = 0): Parameter[] {
|
|
172
|
+
const required = new Set(schema.required ?? []);
|
|
173
|
+
return Object.entries(schema.properties ?? {}).flatMap(([key, property]) => {
|
|
174
|
+
const name = prefix + key;
|
|
175
|
+
const row: Parameter = {
|
|
176
|
+
name,
|
|
177
|
+
type: typeLabel(property),
|
|
178
|
+
required: required.has(key),
|
|
179
|
+
description: property.description,
|
|
180
|
+
default: property.default,
|
|
181
|
+
};
|
|
182
|
+
const nested = depth < MAX_DEPTH ? nestedObject(property) : undefined;
|
|
183
|
+
return nested ? [row, ...parameters(nested.schema, name + nested.suffix, depth + 1)] : [row];
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// ------------------------------------------------------------------ rendering
|
|
188
|
+
|
|
189
|
+
type Kind = "tool" | "widget" | "flow";
|
|
190
|
+
|
|
191
|
+
const SECTIONS: Array<{ kind: Kind; key: "tools" | "widgets" | "flows"; heading: string }> = [
|
|
192
|
+
{ kind: "tool", key: "tools", heading: "Tools" },
|
|
193
|
+
{ kind: "widget", key: "widgets", heading: "Widgets" },
|
|
194
|
+
{ kind: "flow", key: "flows", heading: "Flows" },
|
|
195
|
+
];
|
|
196
|
+
|
|
197
|
+
const HINTS: Array<{ key: keyof DocsAnnotations; label: string }> = [
|
|
198
|
+
{ key: "readOnlyHint", label: "read-only" },
|
|
199
|
+
{ key: "destructiveHint", label: "destructive" },
|
|
200
|
+
{ key: "idempotentHint", label: "idempotent" },
|
|
201
|
+
{ key: "openWorldHint", label: "open world" },
|
|
202
|
+
];
|
|
203
|
+
|
|
204
|
+
function anchor(kind: Kind, name: string): string {
|
|
205
|
+
return `${kind}-${name}`;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
function parameterTable(entry: DocsEntry): Html {
|
|
209
|
+
const schema = inputSchema(entry.input);
|
|
210
|
+
if (schema === null) {
|
|
211
|
+
return html`<p class="muted">The input schema cannot be shown as JSON Schema.</p>`;
|
|
212
|
+
}
|
|
213
|
+
const rows = parameters(schema);
|
|
214
|
+
if (rows.length === 0) return html`<p class="muted">No parameters.</p>`;
|
|
215
|
+
return html`<div class="params"><table>
|
|
216
|
+
<thead><tr><th>Parameter</th><th>Type</th><th>Required</th><th>Description</th></tr></thead>
|
|
217
|
+
<tbody>${rows.map(
|
|
218
|
+
(row) => html`
|
|
219
|
+
<tr><td><code>${row.name}</code></td><td><code>${row.type}</code></td><td>${row.required ? "yes" : "no"}</td><td>${row.description ?? ""}${
|
|
220
|
+
row.default !== undefined
|
|
221
|
+
? html`${row.description ? " " : ""}<span class="muted">Default: <code>${literal(row.default)}</code></span>`
|
|
222
|
+
: ""
|
|
223
|
+
}</td></tr>`,
|
|
224
|
+
)}
|
|
225
|
+
</tbody>
|
|
226
|
+
</table></div>`;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
function entryCard(kind: Kind, entry: DocsEntry): Html {
|
|
230
|
+
const hints = HINTS.filter(({ key }) => entry.annotations?.[key] === true);
|
|
231
|
+
return html`
|
|
232
|
+
<article id="${anchor(kind, entry.name)}">
|
|
233
|
+
<h3>${entry.title ?? entry.name}</h3>
|
|
234
|
+
<p class="meta"><code>${entry.name}</code>${hints.map(({ label }) => html` <span class="badge badge-${label.replace(" ", "-")}">${label}</span>`)}</p>
|
|
235
|
+
${entry.description ? html`<p class="text">${entry.description}</p>` : ""}
|
|
236
|
+
${parameterTable(entry)}
|
|
237
|
+
</article>`;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
const STYLE = `
|
|
241
|
+
:root{color-scheme:light dark;--bg:#fff;--fg:#1a1a1a;--muted:#5f6368;--line:#e3e3e3;--card:#fafafa;--code:#f1f1f1;--accent:#2d5bd7;--warn:#b3261e}
|
|
242
|
+
@media (prefers-color-scheme:dark){:root{--bg:#121212;--fg:#ececec;--muted:#a0a4a8;--line:#2e2e2e;--card:#1a1a1a;--code:#262626;--accent:#8ab0ff;--warn:#f2b8b5}}
|
|
243
|
+
*{box-sizing:border-box}
|
|
244
|
+
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.55 system-ui,-apple-system,"Segoe UI",sans-serif}
|
|
245
|
+
main{max-width:880px;margin:0 auto;padding:40px 16px 64px}
|
|
246
|
+
h1{font-size:28px;margin:0 0 4px}h2{font-size:20px;margin:40px 0 12px;padding-bottom:6px;border-bottom:1px solid var(--line)}h3{font-size:17px;margin:0 0 4px}
|
|
247
|
+
a{color:var(--accent)}
|
|
248
|
+
code,pre{font:13px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}
|
|
249
|
+
code{background:var(--code);padding:1px 5px;border-radius:4px;overflow-wrap:anywhere}
|
|
250
|
+
pre{background:var(--code);padding:12px 14px;border-radius:8px;overflow-x:auto;margin:8px 0}
|
|
251
|
+
pre code{background:none;padding:0}
|
|
252
|
+
.muted,.meta{color:var(--muted)}
|
|
253
|
+
.text{white-space:pre-wrap}
|
|
254
|
+
article{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin:12px 0}
|
|
255
|
+
.badge{display:inline-block;font-size:12px;border:1px solid var(--line);border-radius:999px;padding:0 8px;margin-left:4px}
|
|
256
|
+
.badge-destructive{color:var(--warn);border-color:currentColor}
|
|
257
|
+
.params{overflow-x:auto;margin-top:8px}
|
|
258
|
+
table{width:100%;border-collapse:collapse;font-size:14px}
|
|
259
|
+
th,td{text-align:left;vertical-align:top;padding:6px 10px 6px 0;border-top:1px solid var(--line)}
|
|
260
|
+
th{font-weight:600;border-top:none}
|
|
261
|
+
td code{overflow-wrap:normal}
|
|
262
|
+
td:first-child code{white-space:nowrap}
|
|
263
|
+
nav ul{margin:8px 0 0;padding-left:20px}
|
|
264
|
+
footer{margin-top:48px;font-size:13px}
|
|
265
|
+
`;
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Everything on the page except the server's own URL, which depends on the
|
|
269
|
+
* request. Rendered once, because the definitions do not change while the
|
|
270
|
+
* server runs.
|
|
271
|
+
*/
|
|
272
|
+
function renderBody(model: DocsModel): { title: string; head: Html; tail: Html } {
|
|
273
|
+
const title = model.app?.title ?? model.app?.name ?? "MCP server";
|
|
274
|
+
const present = SECTIONS.filter(({ key }) => model[key].length > 0);
|
|
275
|
+
|
|
276
|
+
const head = html`<header>
|
|
277
|
+
<h1>${title}</h1>
|
|
278
|
+
<p class="meta">${model.app?.name ? html`<code>${model.app.name}</code>` : ""}${model.app?.version ? html` version ${model.app.version}` : ""}</p>
|
|
279
|
+
</header>`;
|
|
280
|
+
|
|
281
|
+
const tail = html`
|
|
282
|
+
${
|
|
283
|
+
model.app?.instructions
|
|
284
|
+
? html`<section>
|
|
285
|
+
<h2>Overview</h2>
|
|
286
|
+
<p class="text">${model.app.instructions}</p>
|
|
287
|
+
</section>`
|
|
288
|
+
: ""
|
|
289
|
+
}
|
|
290
|
+
${
|
|
291
|
+
present.length > 0
|
|
292
|
+
? html`<nav>
|
|
293
|
+
<h2>Contents</h2>
|
|
294
|
+
<ul>${present.map(
|
|
295
|
+
({ kind, key, heading }) => html`
|
|
296
|
+
<li>${heading} (${model[key].length})<ul>${model[key].map(
|
|
297
|
+
(entry) =>
|
|
298
|
+
html`<li><a href="#${anchor(kind, entry.name)}">${entry.title ?? entry.name}</a></li>`,
|
|
299
|
+
)}</ul></li>`,
|
|
300
|
+
)}
|
|
301
|
+
</ul>
|
|
302
|
+
</nav>`
|
|
303
|
+
: html`<p class="muted">This server registers no tools, widgets or flows of its own.</p>`
|
|
304
|
+
}
|
|
305
|
+
${present.map(
|
|
306
|
+
({ kind, key, heading }) => html`
|
|
307
|
+
<section>
|
|
308
|
+
<h2>${heading}</h2>
|
|
309
|
+
${model[key].map((entry) => entryCard(kind, entry))}
|
|
310
|
+
</section>`,
|
|
311
|
+
)}
|
|
312
|
+
<footer class="muted">Generated from the definitions this server registers.
|
|
313
|
+
Widgets are tools that also render a view in hosts that support MCP Apps.
|
|
314
|
+
Flows are tools that guide a multi-step conversation.</footer>`;
|
|
315
|
+
|
|
316
|
+
return { title, head, tail };
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* This server's public origin, the way the framework resolves it for view URLs
|
|
321
|
+
* and OAuth metadata: `x-forwarded-host` first, then `Host`, first hop of a
|
|
322
|
+
* forwarded chain only. A forwarded host with no forwarded protocol is https;
|
|
323
|
+
* a bare `localhost` or `127.0.0.1` host is http.
|
|
324
|
+
*/
|
|
325
|
+
function serverOrigin(req: Request): string {
|
|
326
|
+
const firstHop = (value: string | undefined) => value?.split(",")[0]?.trim();
|
|
327
|
+
const forwardedHost = firstHop(req.get("x-forwarded-host"));
|
|
328
|
+
if (forwardedHost) {
|
|
329
|
+
const proto = firstHop(req.get("x-forwarded-proto")) || "https";
|
|
330
|
+
return `${proto}://${forwardedHost}`;
|
|
331
|
+
}
|
|
332
|
+
const host = req.get("host");
|
|
333
|
+
if (host) {
|
|
334
|
+
const local = ["localhost:", "127.0.0.1:"].some((prefix) => host.startsWith(prefix));
|
|
335
|
+
return `${local ? "http" : "https"}://${host}`;
|
|
336
|
+
}
|
|
337
|
+
return `http://localhost:${process.env.__PORT || "3000"}`;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* The `GET /docs` handler. The page carries no script, and its CSP says so, so
|
|
342
|
+
* even markup that escaped escaping could not run.
|
|
343
|
+
*/
|
|
344
|
+
export function docsHandler(model: DocsModel): RequestHandler {
|
|
345
|
+
// A definition the page cannot render costs the page, never the server start.
|
|
346
|
+
let body: ReturnType<typeof renderBody>;
|
|
347
|
+
try {
|
|
348
|
+
body = renderBody(model);
|
|
349
|
+
} catch (error) {
|
|
350
|
+
console.error("[waniwani] the /docs page could not be rendered:", error);
|
|
351
|
+
return (_req, res) => {
|
|
352
|
+
res.status(500).type("text/plain").send("The documentation page could not be rendered.");
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
const { title, head, tail } = body;
|
|
356
|
+
|
|
357
|
+
return (req, res) => {
|
|
358
|
+
const endpoint = `${serverOrigin(req)}/mcp`;
|
|
359
|
+
const page = html`<!doctype html>
|
|
360
|
+
<html lang="en">
|
|
361
|
+
<head>
|
|
362
|
+
<meta charset="utf-8">
|
|
363
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
364
|
+
<title>${title} · MCP documentation</title>
|
|
365
|
+
<style>${new Html(STYLE)}</style>
|
|
366
|
+
</head>
|
|
367
|
+
<body>
|
|
368
|
+
<main>
|
|
369
|
+
${head}
|
|
370
|
+
<section>
|
|
371
|
+
<h2>Connect</h2>
|
|
372
|
+
<p>Add this URL to any MCP client as a remote server. It speaks MCP over Streamable HTTP, with JSON-RPC requests sent as <code>POST</code>.</p>
|
|
373
|
+
<pre><code>${endpoint}</code></pre>
|
|
374
|
+
</section>
|
|
375
|
+
${tail}
|
|
376
|
+
</main>
|
|
377
|
+
</body>
|
|
378
|
+
</html>
|
|
379
|
+
`;
|
|
380
|
+
res.setHeader("Content-Type", "text/html; charset=utf-8");
|
|
381
|
+
res.setHeader(
|
|
382
|
+
"Content-Security-Policy",
|
|
383
|
+
"default-src 'none'; style-src 'unsafe-inline'; base-uri 'none'; form-action 'none'",
|
|
384
|
+
);
|
|
385
|
+
res.setHeader("X-Content-Type-Options", "nosniff");
|
|
386
|
+
res.setHeader("Cache-Control", "public, max-age=300");
|
|
387
|
+
res.send(page.value);
|
|
388
|
+
};
|
|
389
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -205,6 +205,13 @@ export type AppConfig = {
|
|
|
205
205
|
* empty serves everything; an undeclared name refuses to start.
|
|
206
206
|
*/
|
|
207
207
|
surfaces?: Record<string, SurfaceConfig>;
|
|
208
|
+
/**
|
|
209
|
+
* Serve the HTML page at `/docs` that lists this deployment's tools,
|
|
210
|
+
* widgets and flows, their parameters, and the URL to connect an MCP client
|
|
211
|
+
* to. On by default, and served without authentication: `false` is for a
|
|
212
|
+
* server whose tool list should only reach a client that signed in.
|
|
213
|
+
*/
|
|
214
|
+
docs?: boolean;
|
|
208
215
|
};
|
|
209
216
|
|
|
210
217
|
export function defineApp(config: AppConfig): AppConfig {
|
package/src/server.ts
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
import cors from "cors";
|
|
15
15
|
import express, { type ErrorRequestHandler, type RequestHandler } from "express";
|
|
16
16
|
import type { McpServer, ToolMeta, ViewName } from "skybridge/server";
|
|
17
|
+
import { type DocsApp, type DocsEntry, docsHandler } from "./docs.js";
|
|
17
18
|
import type { EndpointDefinition, Shape, SurfaceConfig, ToolHints, WidgetCsp } from "./index.js";
|
|
18
19
|
import { narrow, SURFACE_ENV } from "./surface.js";
|
|
19
20
|
|
|
@@ -71,6 +72,14 @@ export type Manifest = {
|
|
|
71
72
|
styleDomains?: string[];
|
|
72
73
|
/** From `resolveSurface()`. Absent: the whole manifest is registered. */
|
|
73
74
|
surface?: SurfaceConfig;
|
|
75
|
+
/**
|
|
76
|
+
* The server's identity, for the `/docs` page's heading and overview. The
|
|
77
|
+
* generated `waniwani.ts` passes the object it constructs the server from, so
|
|
78
|
+
* `instructions` is the overview the active surface serves.
|
|
79
|
+
*/
|
|
80
|
+
app?: DocsApp;
|
|
81
|
+
/** `false` leaves `/docs` unmounted. Anything else serves it. */
|
|
82
|
+
docs?: boolean;
|
|
74
83
|
};
|
|
75
84
|
|
|
76
85
|
/**
|
|
@@ -226,6 +235,40 @@ function registerEndpoints(server: McpServer, endpoints: NonNullable<Manifest["e
|
|
|
226
235
|
}
|
|
227
236
|
}
|
|
228
237
|
|
|
238
|
+
/**
|
|
239
|
+
* What `/docs` lists: each definition as it is registered below, annotations
|
|
240
|
+
* included, so the page and `tools/list` agree.
|
|
241
|
+
*/
|
|
242
|
+
function docsModel(served: Manifest) {
|
|
243
|
+
const entry = (
|
|
244
|
+
name: string,
|
|
245
|
+
def: { title: string; description: string; hints?: ToolHints },
|
|
246
|
+
input: Shape | undefined,
|
|
247
|
+
defaults: ToolHints,
|
|
248
|
+
): DocsEntry => ({
|
|
249
|
+
name,
|
|
250
|
+
title: def.title,
|
|
251
|
+
description: def.description,
|
|
252
|
+
input,
|
|
253
|
+
annotations: annotations(def.title, def.hints, defaults),
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
return {
|
|
257
|
+
app: served.app,
|
|
258
|
+
tools: served.tools.map(({ name, def }) => entry(name, def, def.input, { readOnly: false })),
|
|
259
|
+
widgets: served.widgets.map(({ name, def }) => entry(name, def, def.data, { readOnly: true })),
|
|
260
|
+
flows: served.flows.map(
|
|
261
|
+
(flow): DocsEntry => ({
|
|
262
|
+
name: flow.name,
|
|
263
|
+
title: flow.config?.title ?? flow.config?.annotations?.title,
|
|
264
|
+
description: flow.config?.description,
|
|
265
|
+
input: flow.config?.inputSchema,
|
|
266
|
+
annotations: flow.config?.annotations,
|
|
267
|
+
}),
|
|
268
|
+
),
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
|
|
229
272
|
/**
|
|
230
273
|
* Register an app's tools, widgets and flows onto a server the template built.
|
|
231
274
|
*
|
|
@@ -251,6 +294,13 @@ export async function registerApp(server: McpServer, manifest: Manifest): Promis
|
|
|
251
294
|
// discovery rather than a 404 anybody could read.
|
|
252
295
|
registerEndpoints(server, endpoints);
|
|
253
296
|
|
|
297
|
+
// Mounted here for the same ordering reason, from the narrowed lists, so a
|
|
298
|
+
// surface's page shows that surface. No app endpoint can take the path:
|
|
299
|
+
// endpoints live under `/api/` and `/.well-known/`.
|
|
300
|
+
if (manifest.docs !== false) {
|
|
301
|
+
server.express.get("/docs", docsHandler(docsModel(served)));
|
|
302
|
+
}
|
|
303
|
+
|
|
254
304
|
// Widgets: one `data` schema drives the input schema, the structured output,
|
|
255
305
|
// and the type the component receives.
|
|
256
306
|
//
|