@just-every/design 0.1.1 → 0.1.3

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 CHANGED
@@ -4,33 +4,72 @@ MCP (Model Context Protocol) stdio server that proxies the **Design App API** (d
4
4
 
5
5
  ## Quick start
6
6
 
7
- 1) Login once (interactive approval-link flow):
7
+ The recommended path is to run the guided installer once. It will:
8
+
9
+ - Authenticate you (if needed)
10
+ - Install a local `every-design` launcher (no `npx` required after)
11
+ - Configure detected MCP clients (and install Skills where supported)
12
+
13
+ ```bash
14
+ npx -y @just-every/design@latest install
15
+ ```
16
+
17
+ After install, you can use `every-design` directly.
18
+
19
+ ### Authenticate
20
+
21
+ Login once (interactive approval-link flow):
8
22
 
9
23
  ```bash
10
- npx @just-every/design auth login
24
+ every-design auth login
25
+ ```
26
+
27
+ If you do not have `every-design` on PATH yet, you can always run:
28
+
29
+ ```bash
30
+ npx -y @just-every/design@latest auth login
11
31
  ```
12
32
 
13
33
  If your user belongs to multiple companies, this will prompt you to pick one.
14
34
  To skip the prompt, pass `--account <slug>`.
15
35
 
16
- 2) Run as an MCP server (stdio):
36
+ ### Run as an MCP server (stdio)
37
+
38
+ ```bash
39
+ every-design
40
+ ```
41
+
42
+ Fallback (no local install):
17
43
 
18
44
  ```bash
19
- npx @just-every/design
45
+ npx -y @just-every/design@latest
20
46
  ```
21
47
 
22
48
  ## Install into common MCP clients
23
49
 
24
- This writes MCP server config entries for detected clients (Claude Desktop, Cursor, Gemini CLI, Qwen Code, Codex, and Every Code), and installs a small local playbook “skill” for Codex/Every Code.
50
+ This writes MCP server config entries for detected clients (Claude Desktop, Cursor, Gemini CLI, Qwen Code, Codex, and Every Code), and installs a small local playbook “skill” where supported.
25
51
 
26
52
  ```bash
27
- npx @just-every/design install
53
+ npx -y @just-every/design@latest install
54
+ ```
55
+
56
+ By default, install will prefer a local launcher and attempt to ensure `~/.local/bin` is on your `PATH`.
57
+ To skip modifying shell config files:
58
+
59
+ ```bash
60
+ npx -y @just-every/design@latest install --no-path
28
61
  ```
29
62
 
30
63
  To force-install into all supported clients:
31
64
 
32
65
  ```bash
33
- npx @just-every/design install --client all --yes
66
+ npx -y @just-every/design@latest install --client all --yes
67
+ ```
68
+
69
+ To remove the MCP server + playbook skill from detected clients:
70
+
71
+ ```bash
72
+ npx -y @just-every/design@latest remove
34
73
  ```
35
74
 
36
75
  ### Claude Desktop config example
@@ -39,13 +78,15 @@ npx @just-every/design install --client all --yes
39
78
  {
40
79
  "mcpServers": {
41
80
  "every-design": {
42
- "command": "npx",
43
- "args": ["-y", "@just-every/design"]
81
+ "command": "/absolute/path/to/every-design",
82
+ "args": []
44
83
  }
45
84
  }
46
85
  }
47
86
  ```
48
87
 
88
+ Tip: GUI apps may not inherit your shell `PATH`, so an absolute path is recommended.
89
+
49
90
  ## Authentication (recommended)
50
91
 
51
92
  This package uses the JustEvery **login approval-link** flow:
@@ -61,7 +102,7 @@ This avoids needing long-lived client secrets and is the lowest-friction path fo
61
102
 
62
103
  ### Config file
63
104
 
64
- - Default path: `~/.config/just-every/every-design/mcp.json`
105
+ - Default path: `$XDG_CONFIG_HOME/just-every/every-design/mcp.json` (or `~/.config/just-every/every-design/mcp.json`)
65
106
  - Override: `DESIGN_MCP_CONFIG_PATH=/path/to/mcp.json`
66
107
 
67
108
  ### Environment variables
@@ -82,3 +123,16 @@ Current tools are focused on runs + artifacts:
82
123
  - `design.events`
83
124
  - `design.artifacts.list`
84
125
  - `design.artifacts.download` (downloads and caches locally)
126
+
127
+ CLI helper commands (non-MCP):
128
+
129
+ - `every-design screenshot <url>`
130
+ - `every-design critique --json '{...}'`
131
+
132
+ ## Output kinds (CLI/MCP)
133
+
134
+ When using this package via MCP/CLI:
135
+
136
+ - HTML output is **opt-in**: set `output.designKind` to `html`.
137
+ - For web/app UI prompts with no explicit `output`, the CLI/MCP path defaults to `output.designKind: "interface"` to avoid expensive code builds while still producing a UI design.
138
+ - If you explicitly set `output.designKind` to `auto`, the backend will infer the best kind from the prompt (this may select `html`).
package/dist/auth.d.ts CHANGED
@@ -12,8 +12,19 @@ export type LoginFlowResult = {
12
12
  bearerToken: string;
13
13
  bearerExpiresAt?: number;
14
14
  userId: string;
15
+ organizationId?: string;
16
+ organizationSlug?: string;
15
17
  sessionToken: string;
16
18
  sessionExpiresAt?: string;
17
19
  };
20
+ export declare function refreshLoginSession(args: {
21
+ loginOrigin: string;
22
+ sessionToken: string;
23
+ timeoutMs?: number;
24
+ }): Promise<{
25
+ sessionToken: string;
26
+ sessionExpiresAt?: string;
27
+ changed: boolean;
28
+ } | null>;
18
29
  export declare function runApprovalLinkLoginFlow(options: LoginFlowOptions): Promise<LoginFlowResult>;
19
30
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AA+BA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAqElG"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAkCA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAYF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAAC,CA4CxF;AAED,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CA4FlG"}
package/dist/auth.js CHANGED
@@ -2,8 +2,48 @@ import { setTimeout as sleep } from 'node:timers/promises';
2
2
  import { execFileSync } from 'node:child_process';
3
3
  import os from 'node:os';
4
4
  import { httpRequest, readErrorBodyText } from './http.js';
5
+ import { CookieJar, getSetCookieHeaders } from './cookies.js';
6
+ export async function refreshLoginSession(args) {
7
+ const { loginOrigin, sessionToken } = args;
8
+ const timeoutMs = args.timeoutMs ?? 30000;
9
+ const origin = stripTrailingSlash(loginOrigin);
10
+ const jar = new CookieJar({
11
+ '__Secure-better-auth.session_token': sessionToken,
12
+ 'better-auth.session_token': sessionToken,
13
+ });
14
+ const res = await httpRequest(`${origin}/api/auth/session`, {
15
+ method: 'GET',
16
+ headers: {
17
+ cookie: jar.toHeader(),
18
+ },
19
+ timeoutMs,
20
+ });
21
+ // Better Auth uses 401 for unauthenticated.
22
+ if (res.status === 401 || res.status === 403) {
23
+ return null;
24
+ }
25
+ if (!res.ok) {
26
+ throw new Error(`Session refresh failed (${res.status}): ${await readErrorBodyText(res)}`);
27
+ }
28
+ for (const cookie of getSetCookieHeaders(res.headers)) {
29
+ jar.applySetCookie(cookie);
30
+ }
31
+ const cookieToken = jar.get('__Secure-better-auth.session_token') ?? jar.get('better-auth.session_token') ?? '';
32
+ const nextToken = cookieToken.trim() || sessionToken.trim();
33
+ let sessionExpiresAt;
34
+ try {
35
+ const payload = (await res.json());
36
+ const maybe = typeof payload?.session?.expiresAt === 'string' ? payload.session.expiresAt : null;
37
+ sessionExpiresAt = maybe ? maybe : undefined;
38
+ }
39
+ catch {
40
+ // Non-fatal; token refresh is primarily via Set-Cookie.
41
+ }
42
+ const changed = nextToken !== sessionToken;
43
+ return { sessionToken: nextToken, sessionExpiresAt, changed };
44
+ }
5
45
  export async function runApprovalLinkLoginFlow(options) {
6
- const { loginOrigin, scopes = ['auth.impersonate'], ttlSeconds, ttlHours, ttlDays, intervalSeconds = 5, timeoutSeconds = 600, openBrowser = true, } = options;
46
+ const { loginOrigin, scopes = ['design.mcp'], ttlSeconds, ttlHours, ttlDays, intervalSeconds = 5, timeoutSeconds = 600, openBrowser = true, } = options;
7
47
  const requestPayload = { scopes };
8
48
  if (typeof ttlSeconds === 'number')
9
49
  requestPayload.ttlSeconds = ttlSeconds;
@@ -24,49 +64,74 @@ export async function runApprovalLinkLoginFlow(options) {
24
64
  throw new Error('Login approval request returned an unexpected payload');
25
65
  }
26
66
  const expiresAtText = typeof approval.expiresAt === 'number' ? new Date(approval.expiresAt).toISOString() : 'unknown';
27
- console.error('Approve this MCP client in your browser:');
28
- console.error(approval.approvalUrl);
29
- console.error(`Approval request expires at: ${expiresAtText}`);
67
+ console.error('Every Design authentication');
68
+ console.error('');
69
+ console.error('1) Approve this login request in your browser:');
70
+ console.error(` ${approval.approvalUrl}`);
71
+ console.error(` Expires at: ${expiresAtText}`);
72
+ console.error('');
73
+ console.error('2) Return here and this CLI will finish setup automatically.');
30
74
  if (openBrowser) {
31
- openUrl(approval.approvalUrl);
75
+ const opened = openUrl(approval.approvalUrl);
76
+ if (opened) {
77
+ console.error('Opened your browser to the approval link.');
78
+ }
79
+ else {
80
+ console.error('Could not auto-open a browser window. Open the link manually.');
81
+ }
32
82
  }
33
83
  const deadline = Date.now() + timeoutSeconds * 1000;
34
84
  let lastStatus = '';
85
+ const startedAt = Date.now();
35
86
  while (Date.now() < deadline) {
36
87
  const pollRes = await httpRequest(`${approval.pollUrl}?secret=${encodeURIComponent(approval.pollSecret)}`, {
37
88
  method: 'GET',
38
89
  timeoutMs: 30000,
39
90
  });
40
- if (pollRes.ok) {
41
- const poll = (await pollRes.json());
42
- if (poll?.token && poll.userId) {
43
- const session = await exchangeBearerForSession(loginOrigin, poll.token, poll.userId);
44
- return {
45
- bearerToken: poll.token,
46
- bearerExpiresAt: poll.expiresAt,
47
- userId: poll.userId,
48
- sessionToken: session.sessionToken,
49
- sessionExpiresAt: session.expiresAt ?? undefined,
50
- };
51
- }
52
- const status = String(poll?.status ?? 'pending');
53
- if (status && status !== lastStatus) {
54
- console.error(`Approval status: ${status}`);
55
- lastStatus = status;
91
+ if (!pollRes.ok) {
92
+ // Transient errors happen; keep polling until timeout.
93
+ if (!lastStatus) {
94
+ console.error(`Waiting for approval… (poll error ${pollRes.status})`);
95
+ lastStatus = 'pending';
56
96
  }
97
+ await sleep(intervalSeconds * 1000);
98
+ continue;
99
+ }
100
+ const poll = (await pollRes.json());
101
+ if (poll?.token && poll.userId) {
102
+ console.error('Approval received. Minting session…');
103
+ const session = await exchangeBearerForSession({ loginOrigin, bearerToken: poll.token, userId: poll.userId, scopes });
104
+ console.error('Login complete.');
105
+ return {
106
+ bearerToken: poll.token,
107
+ bearerExpiresAt: poll.expiresAt,
108
+ userId: poll.userId,
109
+ organizationId: typeof poll.organizationId === 'string' ? poll.organizationId : undefined,
110
+ organizationSlug: typeof poll.organizationSlug === 'string' ? poll.organizationSlug : undefined,
111
+ sessionToken: session.sessionToken,
112
+ sessionExpiresAt: session.expiresAt ?? undefined,
113
+ };
114
+ }
115
+ const status = String(poll?.status ?? 'pending');
116
+ if (status && status !== lastStatus) {
117
+ console.error(`Waiting for approval… (status: ${status}, elapsed: ${formatElapsed(Date.now() - startedAt)})`);
118
+ lastStatus = status;
57
119
  }
58
120
  await sleep(intervalSeconds * 1000);
59
121
  }
60
122
  throw new Error('Timed out waiting for approval');
61
123
  }
62
- async function exchangeBearerForSession(loginOrigin, bearerToken, userId) {
63
- const sessionRes = await httpRequest(`${stripTrailingSlash(loginOrigin)}/api/auth/m2m/session`, {
124
+ async function exchangeBearerForSession(args) {
125
+ const { loginOrigin, bearerToken, userId, scopes } = args;
126
+ const wantsImpersonation = scopes.includes('auth.impersonate');
127
+ const endpoint = wantsImpersonation ? '/api/auth/m2m/session' : '/api/auth/m2m/session-self';
128
+ const sessionRes = await httpRequest(`${stripTrailingSlash(loginOrigin)}${endpoint}`, {
64
129
  method: 'POST',
65
130
  headers: {
66
131
  Authorization: `Bearer ${bearerToken}`,
67
132
  },
68
133
  json: {
69
- userId,
134
+ ...(wantsImpersonation ? { userId } : {}),
70
135
  returnToken: true,
71
136
  redirect: '/profile',
72
137
  },
@@ -76,29 +141,46 @@ async function exchangeBearerForSession(loginOrigin, bearerToken, userId) {
76
141
  throw new Error(`Failed to mint session (${sessionRes.status}): ${await readErrorBodyText(sessionRes)}`);
77
142
  }
78
143
  const payload = (await sessionRes.json());
79
- if (!payload?.sessionToken) {
80
- throw new Error('Login session endpoint did not return a sessionToken');
144
+ // Prefer the actual cookie value, since some backends return a session id in JSON
145
+ // while setting the real session token as a cookie.
146
+ const jar = new CookieJar();
147
+ for (const cookie of getSetCookieHeaders(sessionRes.headers)) {
148
+ jar.applySetCookie(cookie);
81
149
  }
82
- return { sessionToken: payload.sessionToken, expiresAt: payload.expiresAt };
150
+ const cookieToken = jar.get('__Secure-better-auth.session_token') ?? jar.get('better-auth.session_token') ?? '';
151
+ const payloadToken = typeof payload?.sessionToken === 'string' ? payload.sessionToken.trim() : '';
152
+ const sessionToken = (cookieToken || payloadToken).trim();
153
+ if (!sessionToken) {
154
+ throw new Error('Login session endpoint did not return a usable session token');
155
+ }
156
+ return { sessionToken, expiresAt: payload.expiresAt };
83
157
  }
84
158
  function stripTrailingSlash(value) {
85
159
  return value.replace(/\/+$/, '');
86
160
  }
161
+ function formatElapsed(ms) {
162
+ const totalSeconds = Math.max(0, Math.floor(ms / 1000));
163
+ const minutes = Math.floor(totalSeconds / 60);
164
+ const seconds = totalSeconds % 60;
165
+ return `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;
166
+ }
87
167
  function openUrl(url) {
88
168
  try {
89
169
  const platform = os.platform();
90
170
  if (platform === 'darwin') {
91
171
  execFileSync('open', [url], { stdio: 'ignore' });
92
- return;
172
+ return true;
93
173
  }
94
174
  if (platform === 'win32') {
95
175
  execFileSync('cmd', ['/c', 'start', '', url], { stdio: 'ignore' });
96
- return;
176
+ return true;
97
177
  }
98
178
  execFileSync('xdg-open', [url], { stdio: 'ignore' });
179
+ return true;
99
180
  }
100
181
  catch {
101
182
  // Best-effort only.
183
+ return false;
102
184
  }
103
185
  }
104
186
  //# sourceMappingURL=auth.js.map
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}