@cyanheads/mcp-ts-core 0.5.3 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/CLAUDE.md +41 -2
  2. package/README.md +1 -1
  3. package/changelog/0.1.x/0.1.0.md +78 -0
  4. package/changelog/0.1.x/0.1.1.md +28 -0
  5. package/changelog/0.1.x/0.1.10.md +32 -0
  6. package/changelog/0.1.x/0.1.11.md +51 -0
  7. package/changelog/0.1.x/0.1.12.md +21 -0
  8. package/changelog/0.1.x/0.1.13.md +16 -0
  9. package/changelog/0.1.x/0.1.14.md +20 -0
  10. package/changelog/0.1.x/0.1.15.md +24 -0
  11. package/changelog/0.1.x/0.1.16.md +17 -0
  12. package/changelog/0.1.x/0.1.17.md +14 -0
  13. package/changelog/0.1.x/0.1.18.md +18 -0
  14. package/changelog/0.1.x/0.1.19.md +19 -0
  15. package/changelog/0.1.x/0.1.2.md +25 -0
  16. package/changelog/0.1.x/0.1.20.md +21 -0
  17. package/changelog/0.1.x/0.1.21.md +17 -0
  18. package/changelog/0.1.x/0.1.22.md +28 -0
  19. package/changelog/0.1.x/0.1.23.md +23 -0
  20. package/changelog/0.1.x/0.1.24.md +17 -0
  21. package/changelog/0.1.x/0.1.25.md +16 -0
  22. package/changelog/0.1.x/0.1.26.md +22 -0
  23. package/changelog/0.1.x/0.1.27.md +30 -0
  24. package/changelog/0.1.x/0.1.28.md +16 -0
  25. package/changelog/0.1.x/0.1.29.md +19 -0
  26. package/changelog/0.1.x/0.1.3.md +22 -0
  27. package/changelog/0.1.x/0.1.4.md +17 -0
  28. package/changelog/0.1.x/0.1.5.md +25 -0
  29. package/changelog/0.1.x/0.1.6.md +26 -0
  30. package/changelog/0.1.x/0.1.7.md +29 -0
  31. package/changelog/0.1.x/0.1.8.md +33 -0
  32. package/changelog/0.1.x/0.1.9.md +19 -0
  33. package/changelog/0.2.x/0.2.0.md +32 -0
  34. package/changelog/0.2.x/0.2.1.md +12 -0
  35. package/changelog/0.2.x/0.2.10.md +38 -0
  36. package/changelog/0.2.x/0.2.11.md +29 -0
  37. package/changelog/0.2.x/0.2.12.md +31 -0
  38. package/changelog/0.2.x/0.2.2.md +19 -0
  39. package/changelog/0.2.x/0.2.3.md +15 -0
  40. package/changelog/0.2.x/0.2.4.md +24 -0
  41. package/changelog/0.2.x/0.2.5.md +27 -0
  42. package/changelog/0.2.x/0.2.6.md +23 -0
  43. package/changelog/0.2.x/0.2.7.md +23 -0
  44. package/changelog/0.2.x/0.2.8.md +12 -0
  45. package/changelog/0.2.x/0.2.9.md +25 -0
  46. package/changelog/0.3.x/0.3.0.md +45 -0
  47. package/changelog/0.3.x/0.3.1.md +16 -0
  48. package/changelog/0.3.x/0.3.2.md +24 -0
  49. package/changelog/0.3.x/0.3.3.md +31 -0
  50. package/changelog/0.3.x/0.3.4.md +31 -0
  51. package/changelog/0.3.x/0.3.5.md +32 -0
  52. package/changelog/0.3.x/0.3.6.md +48 -0
  53. package/changelog/0.3.x/0.3.7.md +23 -0
  54. package/changelog/0.3.x/0.3.8.md +21 -0
  55. package/changelog/0.4.x/0.4.0.md +38 -0
  56. package/changelog/0.4.x/0.4.1.md +31 -0
  57. package/changelog/0.5.x/0.5.0.md +29 -0
  58. package/changelog/0.5.x/0.5.1.md +18 -0
  59. package/changelog/0.5.x/0.5.2.md +38 -0
  60. package/changelog/0.5.x/0.5.3.md +26 -0
  61. package/changelog/0.5.x/0.5.4.md +29 -0
  62. package/changelog/0.6.x/0.6.0.md +39 -0
  63. package/changelog/unreleased.md +40 -0
  64. package/dist/cli/init.js +1 -0
  65. package/dist/cli/init.js.map +1 -1
  66. package/dist/core/app.d.ts +13 -3
  67. package/dist/core/app.d.ts.map +1 -1
  68. package/dist/core/app.js +20 -13
  69. package/dist/core/app.js.map +1 -1
  70. package/dist/core/index.d.ts +1 -0
  71. package/dist/core/index.d.ts.map +1 -1
  72. package/dist/core/index.js.map +1 -1
  73. package/dist/core/serverManifest.d.ts +237 -0
  74. package/dist/core/serverManifest.d.ts.map +1 -0
  75. package/dist/core/serverManifest.js +310 -0
  76. package/dist/core/serverManifest.js.map +1 -0
  77. package/dist/core/worker.d.ts.map +1 -1
  78. package/dist/core/worker.js +2 -2
  79. package/dist/core/worker.js.map +1 -1
  80. package/dist/linter/rules/landing-rules.d.ts +15 -0
  81. package/dist/linter/rules/landing-rules.d.ts.map +1 -0
  82. package/dist/linter/rules/landing-rules.js +125 -0
  83. package/dist/linter/rules/landing-rules.js.map +1 -0
  84. package/dist/linter/types.d.ts +5 -2
  85. package/dist/linter/types.d.ts.map +1 -1
  86. package/dist/linter/validate.d.ts.map +1 -1
  87. package/dist/linter/validate.js +26 -2
  88. package/dist/linter/validate.js.map +1 -1
  89. package/dist/mcp-server/transports/http/httpTransport.d.ts +4 -3
  90. package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -1
  91. package/dist/mcp-server/transports/http/httpTransport.js +47 -26
  92. package/dist/mcp-server/transports/http/httpTransport.js.map +1 -1
  93. package/dist/mcp-server/transports/http/httpTypes.d.ts +0 -12
  94. package/dist/mcp-server/transports/http/httpTypes.d.ts.map +1 -1
  95. package/dist/mcp-server/transports/http/landing-page.d.ts +48 -0
  96. package/dist/mcp-server/transports/http/landing-page.d.ts.map +1 -0
  97. package/dist/mcp-server/transports/http/landing-page.js +912 -0
  98. package/dist/mcp-server/transports/http/landing-page.js.map +1 -0
  99. package/dist/mcp-server/transports/http/serverCard.d.ts +67 -0
  100. package/dist/mcp-server/transports/http/serverCard.d.ts.map +1 -0
  101. package/dist/mcp-server/transports/http/serverCard.js +91 -0
  102. package/dist/mcp-server/transports/http/serverCard.js.map +1 -0
  103. package/dist/mcp-server/transports/manager.d.ts +3 -3
  104. package/dist/mcp-server/transports/manager.d.ts.map +1 -1
  105. package/dist/mcp-server/transports/manager.js +4 -4
  106. package/dist/mcp-server/transports/manager.js.map +1 -1
  107. package/dist/utils/formatting/html.d.ts +76 -0
  108. package/dist/utils/formatting/html.d.ts.map +1 -0
  109. package/dist/utils/formatting/html.js +111 -0
  110. package/dist/utils/formatting/html.js.map +1 -0
  111. package/dist/utils/formatting/index.d.ts +1 -0
  112. package/dist/utils/formatting/index.d.ts.map +1 -1
  113. package/dist/utils/formatting/index.js +1 -0
  114. package/dist/utils/formatting/index.js.map +1 -1
  115. package/dist/utils/index.d.ts +1 -1
  116. package/dist/utils/index.d.ts.map +1 -1
  117. package/dist/utils/index.js +1 -1
  118. package/dist/utils/index.js.map +1 -1
  119. package/package.json +5 -1
  120. package/scripts/build-changelog.ts +222 -0
  121. package/scripts/devcheck.ts +19 -4
  122. package/scripts/tree.ts +3 -0
  123. package/skills/add-app-tool/SKILL.md +2 -4
  124. package/skills/add-prompt/SKILL.md +2 -4
  125. package/skills/add-resource/SKILL.md +2 -4
  126. package/skills/add-service/SKILL.md +2 -4
  127. package/skills/add-tool/SKILL.md +6 -5
  128. package/skills/api-context/SKILL.md +2 -2
  129. package/skills/api-linter/SKILL.md +391 -0
  130. package/skills/api-services/SKILL.md +1 -1
  131. package/skills/api-services/references/graph.md +1 -1
  132. package/skills/api-utils/SKILL.md +1 -1
  133. package/skills/api-utils/references/parsing.md +1 -1
  134. package/skills/api-utils/references/security.md +1 -1
  135. package/skills/design-mcp-server/SKILL.md +2 -2
  136. package/skills/maintenance/SKILL.md +12 -11
  137. package/skills/polish-docs-meta/SKILL.md +24 -9
  138. package/skills/release/SKILL.md +21 -7
  139. package/skills/setup/SKILL.md +4 -8
  140. package/templates/AGENTS.md +23 -1
  141. package/templates/CLAUDE.md +23 -1
  142. package/templates/changelog/unreleased.md +40 -0
  143. package/templates/package.json +3 -0
@@ -0,0 +1,310 @@
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
+ /** `repoRoot` must match `https://github.com/{owner}/{repo}` with no trailing path. */
28
+ export const GITHUB_REPO_ROOT_PATTERN = /^https:\/\/github\.com\/([^/\s]+)\/([^/\s?#]+?)\/?$/;
29
+ // ---------------------------------------------------------------------------
30
+ // Helpers
31
+ // ---------------------------------------------------------------------------
32
+ const PRE_RELEASE_PATTERNS = [
33
+ [/-alpha/i, 'alpha'],
34
+ [/-beta/i, 'beta'],
35
+ [/-rc/i, 'rc'],
36
+ ];
37
+ /** Classifies a semver string — anything pre-1.0 or with a `-tag` is a pre-release. */
38
+ export function classifyPreRelease(version) {
39
+ for (const [pattern, label] of PRE_RELEASE_PATTERNS) {
40
+ if (pattern.test(version))
41
+ return { isPreRelease: true, label };
42
+ }
43
+ // `0.x.y` signals unstable per semver convention
44
+ if (/^0\./.test(version))
45
+ return { isPreRelease: true, label: 'pre-1.0' };
46
+ return { isPreRelease: false };
47
+ }
48
+ /** Parses `https://github.com/{owner}/{repo}` into structured form. */
49
+ export function detectGitHubRepo(url) {
50
+ if (!url)
51
+ return;
52
+ const match = GITHUB_REPO_ROOT_PATTERN.exec(url.trim());
53
+ if (!match)
54
+ return;
55
+ const [, owner, repo] = match;
56
+ if (!owner || !repo)
57
+ return;
58
+ return { url: `https://github.com/${owner}/${repo}`, owner, repo };
59
+ }
60
+ /** Converts snake_case or kebab-case to Title Case. */
61
+ export function deriveTitleFromName(name) {
62
+ return name
63
+ .replace(/[_-]/g, ' ')
64
+ .replace(/\b\w/g, (ch) => ch.toUpperCase())
65
+ .trim();
66
+ }
67
+ /** snake_case → kebab-case (for source-link path derivation). */
68
+ export function snakeToKebab(name) {
69
+ return name.replace(/_/g, '-').toLowerCase();
70
+ }
71
+ /** Safe Zod → JSON Schema. Returns undefined if the schema isn't serializable. */
72
+ function safeToJsonSchema(schema) {
73
+ if (!schema || typeof schema !== 'object')
74
+ return;
75
+ try {
76
+ return toJSONSchema(schema);
77
+ }
78
+ catch {
79
+ return;
80
+ }
81
+ }
82
+ /** Extract required field names from a Zod object schema. Silent on failure. */
83
+ function extractRequiredFields(schema) {
84
+ if (!schema || typeof schema !== 'object')
85
+ return [];
86
+ try {
87
+ const asObj = schema;
88
+ if (!asObj.shape || typeof asObj.shape !== 'object')
89
+ return [];
90
+ const fields = [];
91
+ for (const [key, field] of Object.entries(asObj.shape)) {
92
+ if (typeof field?.isOptional === 'function' && !field.isOptional()) {
93
+ fields.push(key);
94
+ }
95
+ }
96
+ return fields;
97
+ }
98
+ catch {
99
+ return [];
100
+ }
101
+ }
102
+ /** Detect whether a tool's `_meta.ui.resourceUri` flags it as an MCP App tool. */
103
+ function isMcpAppTool(def) {
104
+ const meta = def._meta;
105
+ return typeof meta?.ui?.resourceUri === 'string' && meta.ui.resourceUri.length > 0;
106
+ }
107
+ /**
108
+ * Build a canonical source-link URL for a definition by convention:
109
+ * `${repoRoot}/blob/main/src/mcp-server/<kind>/definitions/<kebab-name>.<suffix>.ts`
110
+ *
111
+ * Returns undefined if `repoRoot` isn't set or the name is empty.
112
+ */
113
+ export function deriveSourceUrl(repoRoot, kind, name) {
114
+ if (!repoRoot || !name)
115
+ return;
116
+ const suffix = kind === 'tools' ? 'tool' : kind === 'resources' ? 'resource' : 'prompt';
117
+ const fileName = `${snakeToKebab(name)}.${suffix}.ts`;
118
+ return `${repoRoot.url}/blob/main/src/mcp-server/${kind}/definitions/${fileName}`;
119
+ }
120
+ /** Normalize `landing.links` to a concrete array with `external` defaulted. */
121
+ function normalizeLinks(links) {
122
+ if (!Array.isArray(links) || links.length === 0)
123
+ return [];
124
+ return links.slice(0, LANDING_MAX_LINKS).map((link) => ({
125
+ href: link.href,
126
+ label: link.label,
127
+ external: link.external ?? /^https?:\/\//i.test(link.href),
128
+ }));
129
+ }
130
+ /** Discover an npm package auto-link from consumer package.json metadata. */
131
+ function detectNpmPackage(pkgName) {
132
+ if (!pkgName)
133
+ return;
134
+ // Only link scoped packages or names that look like published packages.
135
+ // Avoids false-positive links for internal `my-mcp-server`-style names.
136
+ if (!pkgName.startsWith('@') && !pkgName.includes('/'))
137
+ return;
138
+ return {
139
+ name: pkgName,
140
+ url: `https://www.npmjs.com/package/${encodeURIComponent(pkgName)}`,
141
+ };
142
+ }
143
+ /**
144
+ * Build the server manifest. Pure — same inputs produce the same output.
145
+ * Called once at startup from `composeServices()`.
146
+ */
147
+ export function buildServerManifest(input) {
148
+ const { config, tools, resources, prompts, extensions, landing = {} } = input;
149
+ const protocolVersions = SUPPORTED_PROTOCOL_VERSIONS;
150
+ const latestProtocol = protocolVersions[0] ?? '2025-06-18';
151
+ // Auto-derive repoRoot from homepage when the consumer didn't set it explicitly.
152
+ const repoRoot = detectGitHubRepo(landing.repoRoot ?? config.mcpServerHomepage);
153
+ const accent = landing.theme?.accent ?? '#6366f1'; // indigo-500 — used by tokens when unset
154
+ const attribution = landing.attribution ?? true;
155
+ const requireAuth = landing.requireAuth ?? false;
156
+ // Source URL resolution order: per-definition override → repo-convention derivation.
157
+ const toolList = tools.map((def) => {
158
+ const d = def;
159
+ const name = d.name ?? '';
160
+ const inputSchema = safeToJsonSchema(d.input);
161
+ const outputSchema = safeToJsonSchema(d.output);
162
+ const requiredFields = extractRequiredFields(d.input);
163
+ const override = d.sourceUrl;
164
+ const sourceUrl = override ?? deriveSourceUrl(repoRoot, 'tools', name);
165
+ return {
166
+ name,
167
+ title: d.title ?? d.annotations?.title ?? deriveTitleFromName(name),
168
+ description: d.description ?? '',
169
+ ...(d.annotations && { annotations: d.annotations }),
170
+ isTask: d.task === true,
171
+ isApp: isMcpAppTool(def),
172
+ ...(d.auth && d.auth.length > 0 && { auth: d.auth }),
173
+ ...(inputSchema !== undefined && { inputSchema }),
174
+ ...(outputSchema !== undefined && { outputSchema }),
175
+ requiredFields,
176
+ ...(sourceUrl && { sourceUrl }),
177
+ };
178
+ });
179
+ const resourceList = resources.map((def) => {
180
+ const d = def;
181
+ const name = d.name ?? d.uriTemplate ?? '';
182
+ const override = d.sourceUrl;
183
+ const sourceUrl = override ?? deriveSourceUrl(repoRoot, 'resources', name);
184
+ return {
185
+ name,
186
+ title: d.title ?? deriveTitleFromName(name),
187
+ description: d.description ?? '',
188
+ uriTemplate: d.uriTemplate ?? '',
189
+ ...(d.mimeType && { mimeType: d.mimeType }),
190
+ ...(d.annotations && { annotations: d.annotations }),
191
+ ...(d.auth && d.auth.length > 0 && { auth: d.auth }),
192
+ ...(sourceUrl && { sourceUrl }),
193
+ };
194
+ });
195
+ const promptList = prompts.map((def) => {
196
+ const d = def;
197
+ const name = d.name ?? '';
198
+ const override = d.sourceUrl;
199
+ const sourceUrl = override ?? deriveSourceUrl(repoRoot, 'prompts', name);
200
+ const args = extractPromptArgs(d.args);
201
+ return {
202
+ name,
203
+ title: deriveTitleFromName(name),
204
+ description: d.description ?? '',
205
+ args,
206
+ ...(sourceUrl && { sourceUrl }),
207
+ };
208
+ });
209
+ return {
210
+ server: {
211
+ name: config.mcpServerName,
212
+ version: config.mcpServerVersion,
213
+ ...(config.mcpServerDescription && { description: config.mcpServerDescription }),
214
+ ...(config.mcpServerHomepage && { homepage: config.mcpServerHomepage }),
215
+ environment: config.environment,
216
+ },
217
+ transport: {
218
+ type: config.mcpTransportType,
219
+ endpointPath: config.mcpHttpEndpointPath,
220
+ sessionMode: config.mcpSessionMode,
221
+ },
222
+ protocol: {
223
+ supportedVersions: protocolVersions,
224
+ latestVersion: latestProtocol,
225
+ },
226
+ definitionCounts: {
227
+ tools: tools.length,
228
+ resources: resources.length,
229
+ prompts: prompts.length,
230
+ },
231
+ capabilities: {
232
+ logging: true,
233
+ tools: tools.length > 0,
234
+ resources: resources.length > 0,
235
+ prompts: prompts.length > 0,
236
+ },
237
+ ...(extensions && { extensions }),
238
+ framework: {
239
+ name: FRAMEWORK_NAME,
240
+ version: FRAMEWORK_VERSION,
241
+ homepage: 'https://github.com/cyanheads/mcp-ts-core',
242
+ },
243
+ auth: {
244
+ mode: config.mcpAuthMode,
245
+ ...(config.oauthIssuerUrl && { oauthIssuer: config.oauthIssuerUrl }),
246
+ ...(config.oauthAudience && { oauthAudience: config.oauthAudience }),
247
+ ...(config.oauthJwksUri && { jwksUri: config.oauthJwksUri }),
248
+ ...(config.mcpServerResourceIdentifier && {
249
+ resourceIdentifier: config.mcpServerResourceIdentifier,
250
+ }),
251
+ },
252
+ definitions: {
253
+ tools: toolList,
254
+ resources: resourceList,
255
+ prompts: promptList,
256
+ },
257
+ landing: buildManifestLanding({
258
+ landing,
259
+ accent,
260
+ repoRoot,
261
+ requireAuth,
262
+ attribution,
263
+ // mcpServerName is derived from the consumer's package.json > MCP_SERVER_NAME > options.name.
264
+ // detectNpmPackage filters to scoped/slashed names, so unscoped server names yield no link.
265
+ packageName: config.mcpServerName,
266
+ version: config.mcpServerVersion,
267
+ }),
268
+ builtAt: new Date().toISOString(),
269
+ };
270
+ }
271
+ /** Build the derived `landing` branch of the manifest, respecting exactOptionalPropertyTypes. */
272
+ function buildManifestLanding(input) {
273
+ const { landing, accent, repoRoot, requireAuth, attribution, packageName, version } = input;
274
+ const npmPackage = detectNpmPackage(packageName);
275
+ const changelogUrl = landing.changelogUrl ?? (repoRoot ? `${repoRoot.url}/blob/main/CHANGELOG.md` : undefined);
276
+ return {
277
+ enabled: landing.enabled !== false,
278
+ ...(landing.tagline && { tagline: landing.tagline }),
279
+ ...(landing.logo && { logo: landing.logo }),
280
+ links: normalizeLinks(landing.links),
281
+ theme: { accent },
282
+ ...(repoRoot && { repoRoot }),
283
+ ...(changelogUrl && { changelogUrl }),
284
+ requireAuth,
285
+ attribution,
286
+ ...(npmPackage && { npmPackage }),
287
+ preRelease: classifyPreRelease(version),
288
+ };
289
+ }
290
+ /** Extract prompt args (name/description/required) from a Zod object. */
291
+ function extractPromptArgs(schema) {
292
+ if (!schema || typeof schema !== 'object')
293
+ return [];
294
+ try {
295
+ const asObj = schema;
296
+ if (!asObj.shape)
297
+ return [];
298
+ const args = [];
299
+ for (const [name, field] of Object.entries(asObj.shape)) {
300
+ const required = typeof field?.isOptional === 'function' ? !field.isOptional() : true;
301
+ const description = field?.description ?? field?._def?.description;
302
+ args.push({ name, required, ...(description && { description }) });
303
+ }
304
+ return args;
305
+ }
306
+ catch {
307
+ return [];
308
+ }
309
+ }
310
+ //# 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;mBAqFvD,OAAO,OACX,kBAAkB,OAClB,gBAAgB,GACpB,OAAO,CAAC,QAAQ,CAAC;0BA4DN,mBAAmB,OAC1B,kBAAkB,OAClB,gBAAgB,GACpB,OAAO,CAAC,IAAI,CAAC;EAuCnB"}
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"}
@@ -88,7 +88,7 @@ export function createWorkerHandler(options = {}) {
88
88
  else {
89
89
  Object.assign(globalThis, { IS_SERVERLESS: true });
90
90
  }
91
- const { createServer, meta } = await composeServices(appOptions);
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, meta);
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,
@@ -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;AASH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAwClD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,EAAE,CAyGpE"}
@@ -0,0 +1,125 @@
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_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
+ // theme.accent
112
+ if (l.theme != null) {
113
+ if (typeof l.theme !== 'object' || Array.isArray(l.theme)) {
114
+ diagnostics.push(error('landing-theme-type', 'landing.theme must be a plain object.'));
115
+ }
116
+ else {
117
+ const theme = l.theme;
118
+ if (theme.accent != null && typeof theme.accent !== 'string') {
119
+ diagnostics.push(error('landing-theme-accent', 'landing.theme.accent must be a string.'));
120
+ }
121
+ }
122
+ }
123
+ return diagnostics;
124
+ }
125
+ //# 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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"}
@@ -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;AAEhF;;;;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;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,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
+ {"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;AAOH,OAAO,KAAK,EAAkB,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,CA6DhE"}
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"}
@@ -4,11 +4,30 @@
4
4
  * and produces a structured `LintReport`.
5
5
  * @module src/linter/validate
6
6
  */
7
+ import { lintLandingConfig } from './rules/landing-rules.js';
7
8
  import { checkDuplicateNames } from './rules/name-rules.js';
8
9
  import { lintPromptDefinition } from './rules/prompt-rules.js';
9
10
  import { lintResourceDefinition } from './rules/resource-rules.js';
10
11
  import { lintServerJson } from './rules/server-json-rules.js';
11
12
  import { lintAppToolResourcePairing, lintToolDefinition } from './rules/tool-rules.js';
13
+ /** Where the rule reference lives. Appended to every diagnostic message. */
14
+ const SKILL_REFERENCE_PATH = 'skills/api-linter/SKILL.md';
15
+ /**
16
+ * Maps a rule ID to its anchor in the api-linter skill doc. Most rules have
17
+ * a per-rule sub-header whose auto-generated anchor matches the rule ID. The
18
+ * server.json family (~40 rules) is documented in a single tabular section,
19
+ * so every `server-json-*` rule points to that section.
20
+ */
21
+ function ruleAnchor(rule) {
22
+ return rule.startsWith('server-json-') ? 'server-json-rules' : rule;
23
+ }
24
+ /** Appends a "See: skills/api-linter/SKILL.md#<rule>" breadcrumb to the message. */
25
+ function withBreadcrumb(diagnostic) {
26
+ return {
27
+ ...diagnostic,
28
+ message: `${diagnostic.message}\nSee: ${SKILL_REFERENCE_PATH}#${ruleAnchor(diagnostic.rule)}`,
29
+ };
30
+ }
12
31
  /**
13
32
  * Validates MCP tool, resource, and prompt definitions against the MCP spec
14
33
  * and framework conventions. Returns a structured report with errors and warnings.
@@ -71,8 +90,13 @@ export function validateDefinitions(input) {
71
90
  diagnostics.push(...checkDuplicateNames(extractNames(prompts), 'prompt'));
72
91
  // Cross-definition: app tool ↔ app resource pairing
73
92
  diagnostics.push(...lintAppToolResourcePairing(tools, resources));
74
- const errors = diagnostics.filter((d) => d.severity === 'error');
75
- const warnings = diagnostics.filter((d) => d.severity === 'warning');
93
+ // Landing page configuration
94
+ if (input.landing != null) {
95
+ diagnostics.push(...lintLandingConfig(input.landing));
96
+ }
97
+ const annotated = diagnostics.map(withBreadcrumb);
98
+ const errors = annotated.filter((d) => d.severity === 'error');
99
+ const warnings = annotated.filter((d) => d.severity === 'warning');
76
100
  return {
77
101
  errors,
78
102
  warnings,