@atelier-ui/create-workspace 0.2.24 β†’ 0.2.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ ## 0.2.26 (2026-08-29)
2
+
3
+ ### 🩹 Fixes
4
+
5
+ - **schulung:** the four blockers, and the endpoint that was dead by design ([cf8e2b9](https://github.com/DominikPieper/atelier-ui/commit/cf8e2b9))
6
+
7
+ ### ❀️ Thank You
8
+
9
+ - Claude Opus 5 (1M context)
10
+ - Dominik Pieper @DominikPieper
11
+
12
+ ## 0.2.25 (2026-08-28)
13
+
14
+ This was a version bump only for create-workspace to align it with other projects, there were no code changes.
15
+
1
16
  ## 0.2.24 (2026-08-28)
2
17
 
3
18
  ### πŸš€ Features
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atelier-ui/create-workspace",
3
- "version": "0.2.24",
3
+ "version": "0.2.26",
4
4
  "description": "Nx preset for Atelier workshop workspaces",
5
5
  "keywords": [
6
6
  "nx",
@@ -3,7 +3,7 @@
3
3
  * preflight.mjs
4
4
  *
5
5
  * Pre-workshop self-check. Verifies the local environment is ready for the
6
- * Atelier workshop (Figma + Claude Code + Storybook MCP).
6
+ * Atelier UI workshop (Figma + Claude Code + Storybook MCP).
7
7
  *
8
8
  * Run via: node tools/scripts/preflight.mjs
9
9
  * (or npm run preflight)
@@ -71,19 +71,115 @@ function isAtLeast(actual, required) {
71
71
  return actual.patch >= required.patch;
72
72
  }
73
73
 
74
- async function httpReachable(url, timeoutMs = 5000) {
74
+ // ── MCP probing ──────────────────────────────────────────────────────
75
+ // A plain GET only proves a URL answers, not that the MCP behind it works:
76
+ // the hosted Storybook MCP once answered every reachability check with a
77
+ // harmless status while every actual tool call failed (broken manifest fetch
78
+ // inside the worker, surfaced as HTTP 200 + isError). So the probe speaks
79
+ // real JSON-RPC: initialize β†’ tools/list, and β€” on Atelier Storybook
80
+ // endpoints β€” one real tool call.
81
+
82
+ async function mcpPost(url, body, sessionId, timeoutMs = 10000) {
75
83
  const controller = new AbortController();
76
84
  const timer = setTimeout(() => controller.abort(), timeoutMs);
77
85
  try {
78
- const res = await fetch(url, { method: 'GET', signal: controller.signal });
79
- return { ok: true, status: res.status };
86
+ const headers = {
87
+ 'content-type': 'application/json',
88
+ accept: 'application/json, text/event-stream',
89
+ };
90
+ if (sessionId) headers['mcp-session-id'] = sessionId;
91
+ const res = await fetch(url, {
92
+ method: 'POST',
93
+ headers,
94
+ body: JSON.stringify(body),
95
+ signal: controller.signal,
96
+ });
97
+ return {
98
+ status: res.status,
99
+ contentType: res.headers.get('content-type') ?? '',
100
+ text: await res.text(),
101
+ sessionId: res.headers.get('mcp-session-id') ?? undefined,
102
+ };
80
103
  } catch (err) {
81
- return { ok: false, error: err?.name === 'AbortError' ? 'timeout' : String(err?.message ?? err) };
104
+ return { error: err?.name === 'AbortError' ? 'timeout' : String(err?.message ?? err) };
82
105
  } finally {
83
106
  clearTimeout(timer);
84
107
  }
85
108
  }
86
109
 
110
+ /** Extract the JSON-RPC message with the given id from a JSON or SSE body. */
111
+ function parseJsonRpc(contentType, text, id) {
112
+ const candidates = contentType.includes('text/event-stream')
113
+ ? text
114
+ .split('\n')
115
+ .filter((line) => line.startsWith('data:'))
116
+ .map((line) => line.slice(5).trim())
117
+ : [text];
118
+ for (const candidate of candidates) {
119
+ try {
120
+ const msg = JSON.parse(candidate);
121
+ if (msg?.id === id) return msg;
122
+ } catch {
123
+ // keep scanning β€” an SSE stream may carry unrelated events
124
+ }
125
+ }
126
+ return null;
127
+ }
128
+
129
+ async function probeMcp(url) {
130
+ // 1. initialize β€” stateful servers hand out a session id here.
131
+ const init = await mcpPost(url, {
132
+ jsonrpc: '2.0',
133
+ id: 1,
134
+ method: 'initialize',
135
+ params: {
136
+ protocolVersion: '2025-06-18',
137
+ capabilities: {},
138
+ clientInfo: { name: 'atelier-preflight', version: '1.0.0' },
139
+ },
140
+ });
141
+ if (init.error) return { level: 'unreachable', detail: init.error };
142
+ const session = init.sessionId;
143
+ if (session) {
144
+ await mcpPost(url, { jsonrpc: '2.0', method: 'notifications/initialized' }, session, 5000);
145
+ }
146
+
147
+ // 2. tools/list β€” must be HTTP 200 with a parseable JSON-RPC tools array.
148
+ const list = await mcpPost(url, { jsonrpc: '2.0', id: 2, method: 'tools/list', params: {} }, session);
149
+ if (list.error) return { level: 'broken', detail: `tools/list failed (${list.error})` };
150
+ if (list.status !== 200) return { level: 'broken', detail: `tools/list β†’ HTTP ${list.status}` };
151
+ const listMsg = parseJsonRpc(list.contentType, list.text, 2);
152
+ const tools = listMsg?.result?.tools;
153
+ if (!Array.isArray(tools)) return { level: 'broken', detail: 'tools/list β†’ no parseable result' };
154
+
155
+ // 3. On an Atelier Storybook MCP, exercise one real tool call: manifests
156
+ // are only fetched inside tool calls, and a broken manifest fetch comes
157
+ // back as HTTP 200 + isError β€” invisible to anything shallower.
158
+ if (tools.some((t) => t?.name === 'list-all-documentation')) {
159
+ const call = await mcpPost(
160
+ url,
161
+ {
162
+ jsonrpc: '2.0',
163
+ id: 3,
164
+ method: 'tools/call',
165
+ params: { name: 'list-all-documentation', arguments: {} },
166
+ },
167
+ session,
168
+ );
169
+ if (call.error) return { level: 'broken', detail: `list-all-documentation failed (${call.error})` };
170
+ if (call.status !== 200) return { level: 'broken', detail: `list-all-documentation β†’ HTTP ${call.status}` };
171
+ const callMsg = parseJsonRpc(call.contentType, call.text, 3);
172
+ if (!callMsg?.result || callMsg.result.isError) {
173
+ const reason =
174
+ callMsg?.result?.content?.[0]?.text ?? callMsg?.error?.message ?? 'no parseable result';
175
+ const oneLine = String(reason).replace(/\s+/g, ' ').trim();
176
+ return { level: 'broken', detail: `list-all-documentation β†’ ${oneLine.slice(0, 120)}` };
177
+ }
178
+ }
179
+
180
+ return { level: 'ok', status: list.status };
181
+ }
182
+
87
183
  function portFree(port) {
88
184
  return new Promise((resolveP) => {
89
185
  const server = createServer();
@@ -239,15 +335,19 @@ async function checkMcpEndpoints() {
239
335
  return;
240
336
  }
241
337
  for (const { name, url } of endpoints) {
242
- const res = await httpReachable(url);
243
- if (res.ok && res.status < 500) {
338
+ const res = await probeMcp(url);
339
+ if (res.level === 'ok') {
244
340
  ok(`MCP: ${name}`, `${url} (HTTP ${res.status})`);
245
- } else if (res.ok) {
246
- warn(`MCP: ${name}`, `${url} (HTTP ${res.status})`, 'Server reachable but returned 5xx β€” retry later');
341
+ } else if (res.level === 'broken') {
342
+ fail(
343
+ `MCP: ${name}`,
344
+ `${url} ${res.detail}`,
345
+ 'Server reachable but MCP calls fail β€” see https://atelier.pieper.io/troubleshooting#mcp-tools-error',
346
+ );
247
347
  } else {
248
348
  fail(
249
349
  `MCP: ${name}`,
250
- `${url} unreachable (${res.error})`,
350
+ `${url} unreachable (${res.detail})`,
251
351
  'Check your network or proxy settings',
252
352
  );
253
353
  }
@@ -255,7 +355,10 @@ async function checkMcpEndpoints() {
255
355
  }
256
356
 
257
357
  async function checkPorts() {
258
- const ports = [4200, 4201, 4202, 6006];
358
+ // 4200 = the dev server (every framework serves on the @nx/vite default),
359
+ // 6006 = local Storybook. Nothing in the scaffold uses 4201/4202 β€” the old
360
+ // multi-framework rig did, and checking them only confused participants.
361
+ const ports = [4200, 6006];
259
362
  for (const p of ports) {
260
363
  const free = await portFree(p);
261
364
  if (free) ok(`Port ${p}`, 'free');
@@ -271,7 +374,7 @@ function header(title) {
271
374
 
272
375
  async function main() {
273
376
  console.log('');
274
- console.log(bold('Atelier Preflight'));
377
+ console.log(bold('Atelier UI Preflight'));
275
378
  console.log(dim('Checking your environment for the workshop…'));
276
379
 
277
380
  header('Runtime');
@@ -219,7 +219,7 @@ file exports). The Desktop Bridge covers creation and inspection without a token
219
219
  pkg.scripts.preflight = 'node tools/scripts/preflight.mjs';
220
220
  return pkg;
221
221
  });
222
- // Write .claude/settings.json with MCP servers for selected frameworks
222
+ // Write .mcp.json with MCP servers for selected frameworks
223
223
  const mcpServers = {
224
224
  'nx-mcp': {
225
225
  type: 'stdio',
@@ -1 +1 @@
1
- {"version":3,"file":"preset.js","sourceRoot":"","sources":["../../../../../../libs/create-workspace/src/generators/preset/preset.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preset.js","sourceRoot":"","sources":["../../../../../../libs/create-workspace/src/generators/preset/preset.ts"],"names":[],"mappings":"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"}