@cyanheads/mcp-ts-core 0.5.4 → 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/CLAUDE.md +39 -1
- package/README.md +1 -1
- package/changelog/0.1.x/0.1.0.md +78 -0
- package/changelog/0.1.x/0.1.1.md +28 -0
- package/changelog/0.1.x/0.1.10.md +32 -0
- package/changelog/0.1.x/0.1.11.md +51 -0
- package/changelog/0.1.x/0.1.12.md +21 -0
- package/changelog/0.1.x/0.1.13.md +16 -0
- package/changelog/0.1.x/0.1.14.md +20 -0
- package/changelog/0.1.x/0.1.15.md +24 -0
- package/changelog/0.1.x/0.1.16.md +17 -0
- package/changelog/0.1.x/0.1.17.md +14 -0
- package/changelog/0.1.x/0.1.18.md +18 -0
- package/changelog/0.1.x/0.1.19.md +19 -0
- package/changelog/0.1.x/0.1.2.md +25 -0
- package/changelog/0.1.x/0.1.20.md +21 -0
- package/changelog/0.1.x/0.1.21.md +17 -0
- package/changelog/0.1.x/0.1.22.md +28 -0
- package/changelog/0.1.x/0.1.23.md +23 -0
- package/changelog/0.1.x/0.1.24.md +17 -0
- package/changelog/0.1.x/0.1.25.md +16 -0
- package/changelog/0.1.x/0.1.26.md +22 -0
- package/changelog/0.1.x/0.1.27.md +30 -0
- package/changelog/0.1.x/0.1.28.md +16 -0
- package/changelog/0.1.x/0.1.29.md +19 -0
- package/changelog/0.1.x/0.1.3.md +22 -0
- package/changelog/0.1.x/0.1.4.md +17 -0
- package/changelog/0.1.x/0.1.5.md +25 -0
- package/changelog/0.1.x/0.1.6.md +26 -0
- package/changelog/0.1.x/0.1.7.md +29 -0
- package/changelog/0.1.x/0.1.8.md +33 -0
- package/changelog/0.1.x/0.1.9.md +19 -0
- package/changelog/0.2.x/0.2.0.md +32 -0
- package/changelog/0.2.x/0.2.1.md +12 -0
- package/changelog/0.2.x/0.2.10.md +38 -0
- package/changelog/0.2.x/0.2.11.md +29 -0
- package/changelog/0.2.x/0.2.12.md +31 -0
- package/changelog/0.2.x/0.2.2.md +19 -0
- package/changelog/0.2.x/0.2.3.md +15 -0
- package/changelog/0.2.x/0.2.4.md +24 -0
- package/changelog/0.2.x/0.2.5.md +27 -0
- package/changelog/0.2.x/0.2.6.md +23 -0
- package/changelog/0.2.x/0.2.7.md +23 -0
- package/changelog/0.2.x/0.2.8.md +12 -0
- package/changelog/0.2.x/0.2.9.md +25 -0
- package/changelog/0.3.x/0.3.0.md +45 -0
- package/changelog/0.3.x/0.3.1.md +16 -0
- package/changelog/0.3.x/0.3.2.md +24 -0
- package/changelog/0.3.x/0.3.3.md +31 -0
- package/changelog/0.3.x/0.3.4.md +31 -0
- package/changelog/0.3.x/0.3.5.md +32 -0
- package/changelog/0.3.x/0.3.6.md +48 -0
- package/changelog/0.3.x/0.3.7.md +23 -0
- package/changelog/0.3.x/0.3.8.md +21 -0
- package/changelog/0.4.x/0.4.0.md +38 -0
- package/changelog/0.4.x/0.4.1.md +31 -0
- package/changelog/0.5.x/0.5.0.md +29 -0
- package/changelog/0.5.x/0.5.1.md +18 -0
- package/changelog/0.5.x/0.5.2.md +38 -0
- package/changelog/0.5.x/0.5.3.md +26 -0
- package/changelog/0.5.x/0.5.4.md +29 -0
- package/changelog/0.6.x/0.6.0.md +39 -0
- package/changelog/0.6.x/0.6.1.md +22 -0
- package/changelog/unreleased.md +40 -0
- package/dist/cli/init.js +1 -0
- package/dist/cli/init.js.map +1 -1
- package/dist/core/app.d.ts +13 -3
- package/dist/core/app.d.ts.map +1 -1
- package/dist/core/app.js +20 -13
- package/dist/core/app.js.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/serverManifest.d.ts +259 -0
- package/dist/core/serverManifest.d.ts.map +1 -0
- package/dist/core/serverManifest.js +334 -0
- package/dist/core/serverManifest.js.map +1 -0
- package/dist/core/worker.d.ts.map +1 -1
- package/dist/core/worker.js +2 -2
- package/dist/core/worker.js.map +1 -1
- package/dist/linter/rules/landing-rules.d.ts +15 -0
- package/dist/linter/rules/landing-rules.d.ts.map +1 -0
- package/dist/linter/rules/landing-rules.js +145 -0
- package/dist/linter/rules/landing-rules.js.map +1 -0
- package/dist/linter/types.d.ts +5 -2
- package/dist/linter/types.d.ts.map +1 -1
- package/dist/linter/validate.d.ts.map +1 -1
- package/dist/linter/validate.js +5 -0
- package/dist/linter/validate.js.map +1 -1
- package/dist/mcp-server/transports/http/httpTransport.d.ts +4 -3
- package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/httpTransport.js +47 -26
- package/dist/mcp-server/transports/http/httpTransport.js.map +1 -1
- package/dist/mcp-server/transports/http/httpTypes.d.ts +0 -12
- package/dist/mcp-server/transports/http/httpTypes.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/landing-page.d.ts +48 -0
- package/dist/mcp-server/transports/http/landing-page.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/landing-page.js +1529 -0
- package/dist/mcp-server/transports/http/landing-page.js.map +1 -0
- package/dist/mcp-server/transports/http/serverCard.d.ts +67 -0
- package/dist/mcp-server/transports/http/serverCard.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/serverCard.js +91 -0
- package/dist/mcp-server/transports/http/serverCard.js.map +1 -0
- package/dist/mcp-server/transports/manager.d.ts +3 -3
- package/dist/mcp-server/transports/manager.d.ts.map +1 -1
- package/dist/mcp-server/transports/manager.js +4 -4
- package/dist/mcp-server/transports/manager.js.map +1 -1
- package/dist/utils/formatting/html.d.ts +76 -0
- package/dist/utils/formatting/html.d.ts.map +1 -0
- package/dist/utils/formatting/html.js +111 -0
- package/dist/utils/formatting/html.js.map +1 -0
- package/dist/utils/formatting/index.d.ts +1 -0
- package/dist/utils/formatting/index.d.ts.map +1 -1
- package/dist/utils/formatting/index.js +1 -0
- package/dist/utils/formatting/index.js.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +5 -1
- package/scripts/build-changelog.ts +222 -0
- package/scripts/devcheck.ts +16 -1
- package/scripts/tree.ts +3 -0
- package/skills/add-app-tool/SKILL.md +2 -4
- package/skills/add-prompt/SKILL.md +2 -4
- package/skills/add-resource/SKILL.md +2 -4
- package/skills/add-service/SKILL.md +2 -4
- package/skills/add-tool/SKILL.md +6 -5
- package/skills/api-context/SKILL.md +2 -2
- package/skills/api-services/SKILL.md +1 -1
- package/skills/api-services/references/graph.md +1 -1
- package/skills/api-utils/SKILL.md +1 -1
- package/skills/api-utils/references/parsing.md +1 -1
- package/skills/api-utils/references/security.md +1 -1
- package/skills/design-mcp-server/SKILL.md +2 -2
- package/skills/maintenance/SKILL.md +12 -11
- package/skills/polish-docs-meta/SKILL.md +24 -9
- package/skills/release/SKILL.md +21 -7
- package/skills/setup/SKILL.md +4 -8
- package/templates/AGENTS.md +23 -1
- package/templates/CLAUDE.md +23 -1
- package/templates/changelog/unreleased.md +40 -0
- package/templates/package.json +3 -0
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Server manifest — the single source of truth consumed by the
|
|
3
|
+
* HTTP transport's three surfaces: the bespoke `/mcp` status JSON, the
|
|
4
|
+
* SEP-1649 Server Card at `/.well-known/mcp.json`, and the HTML landing page
|
|
5
|
+
* at `/`. `buildServerManifest()` is a pure function: feed it config + the
|
|
6
|
+
* definition arrays that were already passed to `createApp()` and it produces
|
|
7
|
+
* everything the surfaces need to render without re-reading registries or
|
|
8
|
+
* inspecting Zod schemas a second time.
|
|
9
|
+
*
|
|
10
|
+
* Landing-page content limits (tagline/logo/links/repoRoot shape) are
|
|
11
|
+
* enforced at build time here and surfaced through the definition linter —
|
|
12
|
+
* surprising input fails loudly at startup instead of quietly at render.
|
|
13
|
+
* @module src/core/serverManifest
|
|
14
|
+
*/
|
|
15
|
+
import { SUPPORTED_PROTOCOL_VERSIONS } from '@modelcontextprotocol/sdk/types.js';
|
|
16
|
+
import { toJSONSchema } from 'zod/v4/core';
|
|
17
|
+
import { FRAMEWORK_NAME, FRAMEWORK_VERSION } from '../config/index.js';
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Content limits (enforced by the linter)
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
/** Max tagline length. Longer strings break the hero layout. */
|
|
22
|
+
export const LANDING_MAX_TAGLINE_LENGTH = 120;
|
|
23
|
+
/** Max logo size when supplied as a data URI (bytes). */
|
|
24
|
+
export const LANDING_MAX_LOGO_BYTES = 24 * 1024;
|
|
25
|
+
/** Max footer link count. Beyond this the cluster wraps unreadably. */
|
|
26
|
+
export const LANDING_MAX_LINKS = 6;
|
|
27
|
+
/** Max `envExample` entries. Beyond this the connect card grows awkwardly tall. */
|
|
28
|
+
export const LANDING_MAX_ENV_EXAMPLE = 12;
|
|
29
|
+
/** `repoRoot` must match `https://github.com/{owner}/{repo}` with no trailing path. */
|
|
30
|
+
export const GITHUB_REPO_ROOT_PATTERN = /^https:\/\/github\.com\/([^/\s]+)\/([^/\s?#]+?)\/?$/;
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
// Helpers
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
const PRE_RELEASE_PATTERNS = [
|
|
35
|
+
[/-alpha/i, 'alpha'],
|
|
36
|
+
[/-beta/i, 'beta'],
|
|
37
|
+
[/-rc/i, 'rc'],
|
|
38
|
+
];
|
|
39
|
+
/** Classifies a semver string — anything pre-1.0 or with a `-tag` is a pre-release. */
|
|
40
|
+
export function classifyPreRelease(version) {
|
|
41
|
+
for (const [pattern, label] of PRE_RELEASE_PATTERNS) {
|
|
42
|
+
if (pattern.test(version))
|
|
43
|
+
return { isPreRelease: true, label };
|
|
44
|
+
}
|
|
45
|
+
// `0.x.y` signals unstable per semver convention
|
|
46
|
+
if (/^0\./.test(version))
|
|
47
|
+
return { isPreRelease: true, label: 'pre-1.0' };
|
|
48
|
+
return { isPreRelease: false };
|
|
49
|
+
}
|
|
50
|
+
/** Parses `https://github.com/{owner}/{repo}` into structured form. */
|
|
51
|
+
export function detectGitHubRepo(url) {
|
|
52
|
+
if (!url)
|
|
53
|
+
return;
|
|
54
|
+
const match = GITHUB_REPO_ROOT_PATTERN.exec(url.trim());
|
|
55
|
+
if (!match)
|
|
56
|
+
return;
|
|
57
|
+
const [, owner, repo] = match;
|
|
58
|
+
if (!owner || !repo)
|
|
59
|
+
return;
|
|
60
|
+
return { url: `https://github.com/${owner}/${repo}`, owner, repo };
|
|
61
|
+
}
|
|
62
|
+
/** Converts snake_case or kebab-case to Title Case. */
|
|
63
|
+
export function deriveTitleFromName(name) {
|
|
64
|
+
return name
|
|
65
|
+
.replace(/[_-]/g, ' ')
|
|
66
|
+
.replace(/\b\w/g, (ch) => ch.toUpperCase())
|
|
67
|
+
.trim();
|
|
68
|
+
}
|
|
69
|
+
/** snake_case → kebab-case (for source-link path derivation). */
|
|
70
|
+
export function snakeToKebab(name) {
|
|
71
|
+
return name.replace(/_/g, '-').toLowerCase();
|
|
72
|
+
}
|
|
73
|
+
/** Safe Zod → JSON Schema. Returns undefined if the schema isn't serializable. */
|
|
74
|
+
function safeToJsonSchema(schema) {
|
|
75
|
+
if (!schema || typeof schema !== 'object')
|
|
76
|
+
return;
|
|
77
|
+
try {
|
|
78
|
+
return toJSONSchema(schema);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/** Extract required field names from a Zod object schema. Silent on failure. */
|
|
85
|
+
function extractRequiredFields(schema) {
|
|
86
|
+
if (!schema || typeof schema !== 'object')
|
|
87
|
+
return [];
|
|
88
|
+
try {
|
|
89
|
+
const asObj = schema;
|
|
90
|
+
if (!asObj.shape || typeof asObj.shape !== 'object')
|
|
91
|
+
return [];
|
|
92
|
+
const fields = [];
|
|
93
|
+
for (const [key, field] of Object.entries(asObj.shape)) {
|
|
94
|
+
if (typeof field?.isOptional === 'function' && !field.isOptional()) {
|
|
95
|
+
fields.push(key);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return fields;
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return [];
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/** Detect whether a tool's `_meta.ui.resourceUri` flags it as an MCP App tool. */
|
|
105
|
+
function isMcpAppTool(def) {
|
|
106
|
+
const meta = def._meta;
|
|
107
|
+
return typeof meta?.ui?.resourceUri === 'string' && meta.ui.resourceUri.length > 0;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Build a canonical source-link URL for a definition by convention:
|
|
111
|
+
* `${repoRoot}/blob/main/src/mcp-server/<kind>/definitions/<kebab-name>.<suffix>.ts`
|
|
112
|
+
*
|
|
113
|
+
* Returns undefined if `repoRoot` isn't set or the name is empty.
|
|
114
|
+
*/
|
|
115
|
+
export function deriveSourceUrl(repoRoot, kind, name) {
|
|
116
|
+
if (!repoRoot || !name)
|
|
117
|
+
return;
|
|
118
|
+
const suffix = kind === 'tools' ? 'tool' : kind === 'resources' ? 'resource' : 'prompt';
|
|
119
|
+
const fileName = `${snakeToKebab(name)}.${suffix}.ts`;
|
|
120
|
+
return `${repoRoot.url}/blob/main/src/mcp-server/${kind}/definitions/${fileName}`;
|
|
121
|
+
}
|
|
122
|
+
/** Normalize `landing.links` to a concrete array with `external` defaulted. */
|
|
123
|
+
function normalizeLinks(links) {
|
|
124
|
+
if (!Array.isArray(links) || links.length === 0)
|
|
125
|
+
return [];
|
|
126
|
+
return links.slice(0, LANDING_MAX_LINKS).map((link) => ({
|
|
127
|
+
href: link.href,
|
|
128
|
+
label: link.label,
|
|
129
|
+
external: link.external ?? /^https?:\/\//i.test(link.href),
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
/** Discover an npm package auto-link from consumer package.json metadata. */
|
|
133
|
+
function detectNpmPackage(pkgName) {
|
|
134
|
+
if (!pkgName)
|
|
135
|
+
return;
|
|
136
|
+
// Only link scoped packages or names that look like published packages.
|
|
137
|
+
// Avoids false-positive links for internal `my-mcp-server`-style names.
|
|
138
|
+
if (!pkgName.startsWith('@') && !pkgName.includes('/'))
|
|
139
|
+
return;
|
|
140
|
+
return {
|
|
141
|
+
name: pkgName,
|
|
142
|
+
url: `https://www.npmjs.com/package/${encodeURIComponent(pkgName)}`,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Normalize `landing.envExample` into the ordered array shape the renderer
|
|
147
|
+
* consumes. Preserves insertion order (important for the rendered JSON block),
|
|
148
|
+
* truncates to {@link LANDING_MAX_ENV_EXAMPLE}, and drops non-string entries
|
|
149
|
+
* silently — the linter surfaces structural issues separately.
|
|
150
|
+
*/
|
|
151
|
+
function normalizeEnvExample(envExample) {
|
|
152
|
+
if (!envExample || typeof envExample !== 'object')
|
|
153
|
+
return [];
|
|
154
|
+
const entries = [];
|
|
155
|
+
for (const [key, value] of Object.entries(envExample)) {
|
|
156
|
+
if (typeof key !== 'string' || key.length === 0)
|
|
157
|
+
continue;
|
|
158
|
+
if (typeof value !== 'string')
|
|
159
|
+
continue;
|
|
160
|
+
entries.push({ key, value });
|
|
161
|
+
if (entries.length >= LANDING_MAX_ENV_EXAMPLE)
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
return entries;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Build the server manifest. Pure — same inputs produce the same output.
|
|
168
|
+
* Called once at startup from `composeServices()`.
|
|
169
|
+
*/
|
|
170
|
+
export function buildServerManifest(input) {
|
|
171
|
+
const { config, tools, resources, prompts, extensions, landing = {} } = input;
|
|
172
|
+
const protocolVersions = SUPPORTED_PROTOCOL_VERSIONS;
|
|
173
|
+
const latestProtocol = protocolVersions[0] ?? '2025-06-18';
|
|
174
|
+
// Auto-derive repoRoot from homepage when the consumer didn't set it explicitly.
|
|
175
|
+
const repoRoot = detectGitHubRepo(landing.repoRoot ?? config.mcpServerHomepage);
|
|
176
|
+
const accent = landing.theme?.accent ?? '#6366f1'; // indigo-500 — used by tokens when unset
|
|
177
|
+
const attribution = landing.attribution ?? true;
|
|
178
|
+
const requireAuth = landing.requireAuth ?? false;
|
|
179
|
+
// Source URL resolution order: per-definition override → repo-convention derivation.
|
|
180
|
+
const toolList = tools.map((def) => {
|
|
181
|
+
const d = def;
|
|
182
|
+
const name = d.name ?? '';
|
|
183
|
+
const inputSchema = safeToJsonSchema(d.input);
|
|
184
|
+
const outputSchema = safeToJsonSchema(d.output);
|
|
185
|
+
const requiredFields = extractRequiredFields(d.input);
|
|
186
|
+
const override = d.sourceUrl;
|
|
187
|
+
const sourceUrl = override ?? deriveSourceUrl(repoRoot, 'tools', name);
|
|
188
|
+
return {
|
|
189
|
+
name,
|
|
190
|
+
title: d.title ?? d.annotations?.title ?? deriveTitleFromName(name),
|
|
191
|
+
description: d.description ?? '',
|
|
192
|
+
...(d.annotations && { annotations: d.annotations }),
|
|
193
|
+
isTask: d.task === true,
|
|
194
|
+
isApp: isMcpAppTool(def),
|
|
195
|
+
...(d.auth && d.auth.length > 0 && { auth: d.auth }),
|
|
196
|
+
...(inputSchema !== undefined && { inputSchema }),
|
|
197
|
+
...(outputSchema !== undefined && { outputSchema }),
|
|
198
|
+
requiredFields,
|
|
199
|
+
...(sourceUrl && { sourceUrl }),
|
|
200
|
+
};
|
|
201
|
+
});
|
|
202
|
+
const resourceList = resources.map((def) => {
|
|
203
|
+
const d = def;
|
|
204
|
+
const name = d.name ?? d.uriTemplate ?? '';
|
|
205
|
+
const override = d.sourceUrl;
|
|
206
|
+
const sourceUrl = override ?? deriveSourceUrl(repoRoot, 'resources', name);
|
|
207
|
+
return {
|
|
208
|
+
name,
|
|
209
|
+
title: d.title ?? deriveTitleFromName(name),
|
|
210
|
+
description: d.description ?? '',
|
|
211
|
+
uriTemplate: d.uriTemplate ?? '',
|
|
212
|
+
...(d.mimeType && { mimeType: d.mimeType }),
|
|
213
|
+
...(d.annotations && { annotations: d.annotations }),
|
|
214
|
+
...(d.auth && d.auth.length > 0 && { auth: d.auth }),
|
|
215
|
+
...(sourceUrl && { sourceUrl }),
|
|
216
|
+
};
|
|
217
|
+
});
|
|
218
|
+
const promptList = prompts.map((def) => {
|
|
219
|
+
const d = def;
|
|
220
|
+
const name = d.name ?? '';
|
|
221
|
+
const override = d.sourceUrl;
|
|
222
|
+
const sourceUrl = override ?? deriveSourceUrl(repoRoot, 'prompts', name);
|
|
223
|
+
const args = extractPromptArgs(d.args);
|
|
224
|
+
return {
|
|
225
|
+
name,
|
|
226
|
+
title: deriveTitleFromName(name),
|
|
227
|
+
description: d.description ?? '',
|
|
228
|
+
args,
|
|
229
|
+
...(sourceUrl && { sourceUrl }),
|
|
230
|
+
};
|
|
231
|
+
});
|
|
232
|
+
return {
|
|
233
|
+
server: {
|
|
234
|
+
name: config.mcpServerName,
|
|
235
|
+
version: config.mcpServerVersion,
|
|
236
|
+
...(config.mcpServerDescription && { description: config.mcpServerDescription }),
|
|
237
|
+
...(config.mcpServerHomepage && { homepage: config.mcpServerHomepage }),
|
|
238
|
+
environment: config.environment,
|
|
239
|
+
},
|
|
240
|
+
transport: {
|
|
241
|
+
type: config.mcpTransportType,
|
|
242
|
+
endpointPath: config.mcpHttpEndpointPath,
|
|
243
|
+
sessionMode: config.mcpSessionMode,
|
|
244
|
+
},
|
|
245
|
+
protocol: {
|
|
246
|
+
supportedVersions: protocolVersions,
|
|
247
|
+
latestVersion: latestProtocol,
|
|
248
|
+
},
|
|
249
|
+
definitionCounts: {
|
|
250
|
+
tools: tools.length,
|
|
251
|
+
resources: resources.length,
|
|
252
|
+
prompts: prompts.length,
|
|
253
|
+
},
|
|
254
|
+
capabilities: {
|
|
255
|
+
logging: true,
|
|
256
|
+
tools: tools.length > 0,
|
|
257
|
+
resources: resources.length > 0,
|
|
258
|
+
prompts: prompts.length > 0,
|
|
259
|
+
},
|
|
260
|
+
...(extensions && { extensions }),
|
|
261
|
+
framework: {
|
|
262
|
+
name: FRAMEWORK_NAME,
|
|
263
|
+
version: FRAMEWORK_VERSION,
|
|
264
|
+
homepage: 'https://github.com/cyanheads/mcp-ts-core',
|
|
265
|
+
},
|
|
266
|
+
auth: {
|
|
267
|
+
mode: config.mcpAuthMode,
|
|
268
|
+
...(config.oauthIssuerUrl && { oauthIssuer: config.oauthIssuerUrl }),
|
|
269
|
+
...(config.oauthAudience && { oauthAudience: config.oauthAudience }),
|
|
270
|
+
...(config.oauthJwksUri && { jwksUri: config.oauthJwksUri }),
|
|
271
|
+
...(config.mcpServerResourceIdentifier && {
|
|
272
|
+
resourceIdentifier: config.mcpServerResourceIdentifier,
|
|
273
|
+
}),
|
|
274
|
+
},
|
|
275
|
+
definitions: {
|
|
276
|
+
tools: toolList,
|
|
277
|
+
resources: resourceList,
|
|
278
|
+
prompts: promptList,
|
|
279
|
+
},
|
|
280
|
+
landing: buildManifestLanding({
|
|
281
|
+
landing,
|
|
282
|
+
accent,
|
|
283
|
+
repoRoot,
|
|
284
|
+
requireAuth,
|
|
285
|
+
attribution,
|
|
286
|
+
// mcpServerName is derived from the consumer's package.json > MCP_SERVER_NAME > options.name.
|
|
287
|
+
// detectNpmPackage filters to scoped/slashed names, so unscoped server names yield no link.
|
|
288
|
+
packageName: config.mcpServerName,
|
|
289
|
+
version: config.mcpServerVersion,
|
|
290
|
+
}),
|
|
291
|
+
builtAt: new Date().toISOString(),
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
/** Build the derived `landing` branch of the manifest, respecting exactOptionalPropertyTypes. */
|
|
295
|
+
function buildManifestLanding(input) {
|
|
296
|
+
const { landing, accent, repoRoot, requireAuth, attribution, packageName, version } = input;
|
|
297
|
+
const npmPackage = detectNpmPackage(packageName);
|
|
298
|
+
const changelogUrl = landing.changelogUrl ?? (repoRoot ? `${repoRoot.url}/blob/main/CHANGELOG.md` : undefined);
|
|
299
|
+
return {
|
|
300
|
+
enabled: landing.enabled !== false,
|
|
301
|
+
...(landing.tagline && { tagline: landing.tagline }),
|
|
302
|
+
...(landing.logo && { logo: landing.logo }),
|
|
303
|
+
links: normalizeLinks(landing.links),
|
|
304
|
+
envExample: normalizeEnvExample(landing.envExample),
|
|
305
|
+
theme: { accent },
|
|
306
|
+
...(repoRoot && { repoRoot }),
|
|
307
|
+
...(changelogUrl && { changelogUrl }),
|
|
308
|
+
requireAuth,
|
|
309
|
+
attribution,
|
|
310
|
+
...(npmPackage && { npmPackage }),
|
|
311
|
+
preRelease: classifyPreRelease(version),
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
/** Extract prompt args (name/description/required) from a Zod object. */
|
|
315
|
+
function extractPromptArgs(schema) {
|
|
316
|
+
if (!schema || typeof schema !== 'object')
|
|
317
|
+
return [];
|
|
318
|
+
try {
|
|
319
|
+
const asObj = schema;
|
|
320
|
+
if (!asObj.shape)
|
|
321
|
+
return [];
|
|
322
|
+
const args = [];
|
|
323
|
+
for (const [name, field] of Object.entries(asObj.shape)) {
|
|
324
|
+
const required = typeof field?.isOptional === 'function' ? !field.isOptional() : true;
|
|
325
|
+
const description = field?.description ?? field?._def?.description;
|
|
326
|
+
args.push({ name, required, ...(description && { description }) });
|
|
327
|
+
}
|
|
328
|
+
return args;
|
|
329
|
+
}
|
|
330
|
+
catch {
|
|
331
|
+
return [];
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
//# sourceMappingURL=serverManifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serverManifest.js","sourceRoot":"","sources":["../../src/core/serverManifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/core/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EACV,EAAE,EAEF,UAAU,EACV,WAAW,EACX,QAAQ,EACR,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,KAAK,gBAAgB,EAAmB,MAAM,eAAe,CAAC;AAMvE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC,CAAC,EAAE,MAAM,CAAC;IAC7C,kCAAkC,CAAC,EAAE,MAAM,CAAC;IAC5C,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,+CAA+C;AAC/C,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,0EAA0E;IAC1E,mBAAmB,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,oFAAoF;IACpF,WAAW,CAAC,EAAE,CACZ,UAAU,EAAE,mBAAmB,EAC/B,GAAG,EAAE,kBAAkB,EACvB,GAAG,EAAE,gBAAgB,KAClB,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB;AAwED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB;
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/core/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EACV,EAAE,EAEF,UAAU,EACV,WAAW,EACX,QAAQ,EACR,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,KAAK,gBAAgB,EAAmB,MAAM,eAAe,CAAC;AAMvE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC,CAAC,EAAE,MAAM,CAAC;IAC7C,kCAAkC,CAAC,EAAE,MAAM,CAAC;IAC5C,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,+CAA+C;AAC/C,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,0EAA0E;IAC1E,mBAAmB,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,oFAAoF;IACpF,WAAW,CAAC,EAAE,CACZ,UAAU,EAAE,mBAAmB,EAC/B,GAAG,EAAE,kBAAkB,EACvB,GAAG,EAAE,gBAAgB,KAClB,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB;AAwED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB;mBAyFvD,OAAO,OACX,kBAAkB,OAClB,gBAAgB,GACpB,OAAO,CAAC,QAAQ,CAAC;0BA4DN,mBAAmB,OAC1B,kBAAkB,OAClB,gBAAgB,GACpB,OAAO,CAAC,IAAI,CAAC;EAuCnB"}
|
package/dist/core/worker.js
CHANGED
|
@@ -88,7 +88,7 @@ export function createWorkerHandler(options = {}) {
|
|
|
88
88
|
else {
|
|
89
89
|
Object.assign(globalThis, { IS_SERVERLESS: true });
|
|
90
90
|
}
|
|
91
|
-
const { createServer,
|
|
91
|
+
const { createServer, manifest } = await composeServices(appOptions);
|
|
92
92
|
await initHighResTimer();
|
|
93
93
|
const logLevel = env.LOG_LEVEL?.toLowerCase() ?? 'info';
|
|
94
94
|
const validLogLevels = [
|
|
@@ -114,7 +114,7 @@ export function createWorkerHandler(options = {}) {
|
|
|
114
114
|
environment: env.ENVIRONMENT ?? 'production',
|
|
115
115
|
storageProvider: env.STORAGE_PROVIDER_TYPE ?? 'in-memory',
|
|
116
116
|
});
|
|
117
|
-
const { app } = await createHttpApp(createServer, workerContext,
|
|
117
|
+
const { app } = await createHttpApp(createServer, workerContext, manifest);
|
|
118
118
|
const initDuration = Date.now() - initStartTime;
|
|
119
119
|
logger.info('Cloudflare Worker initialized successfully.', {
|
|
120
120
|
...workerContext,
|
package/dist/core/worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/core/worker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/core/worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Landing page configuration lint rules.
|
|
3
|
+
* Enforces content limits (tagline length, logo size, link count, repoRoot
|
|
4
|
+
* shape) at startup so surprising input fails loudly instead of quietly at
|
|
5
|
+
* render time.
|
|
6
|
+
* @module src/linter/rules/landing-rules
|
|
7
|
+
*/
|
|
8
|
+
import type { LintDiagnostic } from '../types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Validate the consumer-supplied `landing` object shape.
|
|
11
|
+
* Returns an empty array when `landing` is undefined (nothing to validate)
|
|
12
|
+
* or when the object passes every rule.
|
|
13
|
+
*/
|
|
14
|
+
export declare function lintLandingConfig(landing: unknown): LintDiagnostic[];
|
|
15
|
+
//# sourceMappingURL=landing-rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"landing-rules.d.ts","sourceRoot":"","sources":["../../../src/linter/rules/landing-rules.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAwClD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,EAAE,CA8IpE"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Landing page configuration lint rules.
|
|
3
|
+
* Enforces content limits (tagline length, logo size, link count, repoRoot
|
|
4
|
+
* shape) at startup so surprising input fails loudly instead of quietly at
|
|
5
|
+
* render time.
|
|
6
|
+
* @module src/linter/rules/landing-rules
|
|
7
|
+
*/
|
|
8
|
+
import { GITHUB_REPO_ROOT_PATTERN, LANDING_MAX_ENV_EXAMPLE, LANDING_MAX_LINKS, LANDING_MAX_LOGO_BYTES, LANDING_MAX_TAGLINE_LENGTH, } from '../../core/serverManifest.js';
|
|
9
|
+
const LANDING = 'landing';
|
|
10
|
+
const NAME = 'landing';
|
|
11
|
+
function error(rule, message) {
|
|
12
|
+
return {
|
|
13
|
+
rule,
|
|
14
|
+
severity: 'error',
|
|
15
|
+
message,
|
|
16
|
+
definitionType: LANDING,
|
|
17
|
+
definitionName: NAME,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function warn(rule, message) {
|
|
21
|
+
return {
|
|
22
|
+
rule,
|
|
23
|
+
severity: 'warning',
|
|
24
|
+
message,
|
|
25
|
+
definitionType: LANDING,
|
|
26
|
+
definitionName: NAME,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** Approximate byte size of a data URI's decoded content, given its raw length. */
|
|
30
|
+
function approximateDataUriBytes(uri) {
|
|
31
|
+
// data:image/png;base64,AAAA... — base64-encoded payload is ~4/3× the raw bytes.
|
|
32
|
+
const commaIndex = uri.indexOf(',');
|
|
33
|
+
if (commaIndex < 0)
|
|
34
|
+
return uri.length;
|
|
35
|
+
const payload = uri.slice(commaIndex + 1);
|
|
36
|
+
// For base64, decoded size = (payload length * 3) / 4, less padding.
|
|
37
|
+
if (uri.startsWith('data:') && /;base64/i.test(uri.slice(0, commaIndex))) {
|
|
38
|
+
const padding = payload.endsWith('==') ? 2 : payload.endsWith('=') ? 1 : 0;
|
|
39
|
+
return Math.floor((payload.length * 3) / 4) - padding;
|
|
40
|
+
}
|
|
41
|
+
// URL-encoded payload — treat byte count as character count.
|
|
42
|
+
return payload.length;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Validate the consumer-supplied `landing` object shape.
|
|
46
|
+
* Returns an empty array when `landing` is undefined (nothing to validate)
|
|
47
|
+
* or when the object passes every rule.
|
|
48
|
+
*/
|
|
49
|
+
export function lintLandingConfig(landing) {
|
|
50
|
+
if (landing == null)
|
|
51
|
+
return [];
|
|
52
|
+
if (typeof landing !== 'object' || Array.isArray(landing)) {
|
|
53
|
+
return [error('landing-shape', 'landing must be a plain object.')];
|
|
54
|
+
}
|
|
55
|
+
const diagnostics = [];
|
|
56
|
+
const l = landing;
|
|
57
|
+
// tagline
|
|
58
|
+
if (l.tagline != null) {
|
|
59
|
+
if (typeof l.tagline !== 'string') {
|
|
60
|
+
diagnostics.push(error('landing-tagline-type', 'landing.tagline must be a string.'));
|
|
61
|
+
}
|
|
62
|
+
else if (l.tagline.length > LANDING_MAX_TAGLINE_LENGTH) {
|
|
63
|
+
diagnostics.push(error('landing-tagline-length', `landing.tagline is ${l.tagline.length} chars; max is ${LANDING_MAX_TAGLINE_LENGTH}.`));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// logo
|
|
67
|
+
if (l.logo != null) {
|
|
68
|
+
if (typeof l.logo !== 'string') {
|
|
69
|
+
diagnostics.push(error('landing-logo-type', 'landing.logo must be a string.'));
|
|
70
|
+
}
|
|
71
|
+
else if (l.logo.startsWith('data:')) {
|
|
72
|
+
const bytes = approximateDataUriBytes(l.logo);
|
|
73
|
+
if (bytes > LANDING_MAX_LOGO_BYTES) {
|
|
74
|
+
diagnostics.push(error('landing-logo-size', `landing.logo data URI is ~${bytes} bytes; max is ${LANDING_MAX_LOGO_BYTES}. Inline a smaller asset or host it separately.`));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// links
|
|
79
|
+
if (l.links != null) {
|
|
80
|
+
if (!Array.isArray(l.links)) {
|
|
81
|
+
diagnostics.push(error('landing-links-type', 'landing.links must be an array.'));
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
if (l.links.length > LANDING_MAX_LINKS) {
|
|
85
|
+
diagnostics.push(warn('landing-links-count', `landing.links has ${l.links.length} entries; max is ${LANDING_MAX_LINKS}. Extras will be dropped.`));
|
|
86
|
+
}
|
|
87
|
+
for (const [i, rawLink] of l.links.entries()) {
|
|
88
|
+
if (!rawLink || typeof rawLink !== 'object') {
|
|
89
|
+
diagnostics.push(error('landing-link-shape', `landing.links[${i}] must be an object with href and label.`));
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
const link = rawLink;
|
|
93
|
+
if (typeof link.href !== 'string' || link.href.length === 0) {
|
|
94
|
+
diagnostics.push(error('landing-link-href', `landing.links[${i}].href must be a non-empty string.`));
|
|
95
|
+
}
|
|
96
|
+
if (typeof link.label !== 'string' || link.label.length === 0) {
|
|
97
|
+
diagnostics.push(error('landing-link-label', `landing.links[${i}].label must be a non-empty string.`));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// repoRoot
|
|
103
|
+
if (l.repoRoot != null) {
|
|
104
|
+
if (typeof l.repoRoot !== 'string') {
|
|
105
|
+
diagnostics.push(error('landing-repo-root-type', 'landing.repoRoot must be a string.'));
|
|
106
|
+
}
|
|
107
|
+
else if (!GITHUB_REPO_ROOT_PATTERN.test(l.repoRoot)) {
|
|
108
|
+
diagnostics.push(error('landing-repo-root-shape', `landing.repoRoot must match https://github.com/{owner}/{repo} — got "${l.repoRoot}".`));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// envExample
|
|
112
|
+
if (l.envExample != null) {
|
|
113
|
+
if (typeof l.envExample !== 'object' || Array.isArray(l.envExample)) {
|
|
114
|
+
diagnostics.push(error('landing-env-example-type', 'landing.envExample must be a plain object.'));
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
const entries = Object.entries(l.envExample);
|
|
118
|
+
if (entries.length > LANDING_MAX_ENV_EXAMPLE) {
|
|
119
|
+
diagnostics.push(warn('landing-env-example-count', `landing.envExample has ${entries.length} entries; max is ${LANDING_MAX_ENV_EXAMPLE}. Extras will be dropped.`));
|
|
120
|
+
}
|
|
121
|
+
for (const [key, value] of entries) {
|
|
122
|
+
if (!/^[A-Z][A-Z0-9_]*$/.test(key)) {
|
|
123
|
+
diagnostics.push(warn('landing-env-example-key', `landing.envExample["${key}"] should be SCREAMING_SNAKE_CASE (env var convention).`));
|
|
124
|
+
}
|
|
125
|
+
if (typeof value !== 'string') {
|
|
126
|
+
diagnostics.push(error('landing-env-example-value', `landing.envExample["${key}"] must be a string — got ${typeof value}.`));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// theme.accent
|
|
132
|
+
if (l.theme != null) {
|
|
133
|
+
if (typeof l.theme !== 'object' || Array.isArray(l.theme)) {
|
|
134
|
+
diagnostics.push(error('landing-theme-type', 'landing.theme must be a plain object.'));
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
const theme = l.theme;
|
|
138
|
+
if (theme.accent != null && typeof theme.accent !== 'string') {
|
|
139
|
+
diagnostics.push(error('landing-theme-accent', 'landing.theme.accent must be a string.'));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return diagnostics;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=landing-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"landing-rules.js","sourceRoot":"","sources":["../../../src/linter/rules/landing-rules.ts"],"names":[],"mappings":"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"}
|
package/dist/linter/types.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
/** Severity of a lint diagnostic. */
|
|
8
8
|
export type LintSeverity = 'error' | 'warning';
|
|
9
9
|
/** Definition type that produced a lint diagnostic. */
|
|
10
|
-
export type LintDefinitionType = 'tool' | 'resource' | 'prompt' | 'server-json';
|
|
10
|
+
export type LintDefinitionType = 'tool' | 'resource' | 'prompt' | 'server-json' | 'landing';
|
|
11
11
|
/**
|
|
12
12
|
* A single lint diagnostic produced by a validation rule.
|
|
13
13
|
* Errors represent spec violations that will cause runtime failures.
|
|
@@ -38,9 +38,12 @@ export interface LintReport {
|
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
40
|
* Input to `validateDefinitions()`.
|
|
41
|
-
* Mirrors the definition arrays from `CreateAppOptions`, plus optional server.json
|
|
41
|
+
* Mirrors the definition arrays from `CreateAppOptions`, plus optional server.json
|
|
42
|
+
* and landing configuration.
|
|
42
43
|
*/
|
|
43
44
|
export interface LintInput {
|
|
45
|
+
/** Landing page configuration (from `CreateAppOptions.landing`). */
|
|
46
|
+
landing?: unknown;
|
|
44
47
|
/** Parsed package.json — used for cross-validation (version sync). */
|
|
45
48
|
packageJson?: {
|
|
46
49
|
version?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/linter/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qCAAqC;AACrC,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/C,uDAAuD;AACvD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/linter/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qCAAqC;AACrC,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/C,uDAAuD;AACvD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,SAAS,CAAC;AAE5F;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,qFAAqF;IACrF,cAAc,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,cAAc,EAAE,kBAAkB,CAAC;IACnC,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,uDAAuD;IACvD,MAAM,EAAE,OAAO,CAAC;IAChB,+CAA+C;IAC/C,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,oEAAoE;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sEAAsE;IACtE,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IACtB,iGAAiG;IACjG,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;CACnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/linter/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/linter/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAkB,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAuBxE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,CAmEhE"}
|