@somewhere-tech/cli 0.10.0 → 0.11.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.
- package/README.md +3 -0
- package/dist/commands/auth.js +15 -7
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/mcp.js +266 -63
- package/dist/commands/mcp.js.map +1 -1
- package/dist/lib/config.js +34 -0
- package/dist/lib/config.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -31,6 +31,7 @@ After `somewhere init`, Claude Code and Codex auto-connect via the `.mcp.json` i
|
|
|
31
31
|
| Command | What it does |
|
|
32
32
|
|---|---|
|
|
33
33
|
| `somewhere login` | Authenticate via browser (Google OAuth) |
|
|
34
|
+
| `somewhere auth login` | Alias of `somewhere login` |
|
|
34
35
|
| `somewhere logout` | Clear stored credentials |
|
|
35
36
|
| `somewhere whoami` | Show current user, plan, project count |
|
|
36
37
|
| `somewhere init` | Create project + write `.somewhere.json` + `.mcp.json` |
|
|
@@ -55,6 +56,8 @@ After `somewhere init`, Claude Code and Codex auto-connect via the `.mcp.json` i
|
|
|
55
56
|
| `somewhere dev` | Private preview watcher — save a file, your owner-only preview updates in seconds (no local server, nothing to prod) |
|
|
56
57
|
| `somewhere api GET /v1/projects` | Raw API call with auto-auth |
|
|
57
58
|
| `somewhere mcp` | Run MCP server over stdio (proxies to mcp.somewhere.tech) |
|
|
59
|
+
| `somewhere mcp install <host>` | Configure an MCP host (`codex`, `claude-code`, `cursor`) |
|
|
60
|
+
| `somewhere mcp doctor` | Check MCP setup: login, token, server reachability, host configs |
|
|
58
61
|
|
|
59
62
|
Short alias: `sw` works everywhere `somewhere` does.
|
|
60
63
|
|
package/dist/commands/auth.js
CHANGED
|
@@ -6,18 +6,19 @@ import { ApiClient } from '../lib/client.js';
|
|
|
6
6
|
import { clearConfig, loadConfig, saveConfig, saveGlobalMcpConfig, } from '../lib/config.js';
|
|
7
7
|
import { getDeviceId, getDeviceKeyName } from '../lib/device.js';
|
|
8
8
|
import { dim, error, info, success, teal } from '../lib/output.js';
|
|
9
|
+
async function loginAction(opts) {
|
|
10
|
+
if (opts.legacy) {
|
|
11
|
+
await runLegacyLogin();
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
await runDeviceLogin();
|
|
15
|
+
}
|
|
9
16
|
export function registerAuth(program) {
|
|
10
17
|
program
|
|
11
18
|
.command('login')
|
|
12
19
|
.description('Authenticate with somewhere.tech')
|
|
13
20
|
.option('--legacy', 'Use the localhost-callback flow instead of device code')
|
|
14
|
-
.action(
|
|
15
|
-
if (opts.legacy) {
|
|
16
|
-
await runLegacyLogin();
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
await runDeviceLogin();
|
|
20
|
-
});
|
|
21
|
+
.action(loginAction);
|
|
21
22
|
program
|
|
22
23
|
.command('logout')
|
|
23
24
|
.description('Remove stored credentials')
|
|
@@ -52,6 +53,13 @@ export function registerAuth(program) {
|
|
|
52
53
|
}
|
|
53
54
|
});
|
|
54
55
|
const auth = program.command('auth').description('Manage stored credentials');
|
|
56
|
+
// Alias of the top-level `login` — published docs and gh-style muscle
|
|
57
|
+
// memory both expect `somewhere auth login` to work.
|
|
58
|
+
auth
|
|
59
|
+
.command('login')
|
|
60
|
+
.description('Authenticate with somewhere.tech (alias of `somewhere login`)')
|
|
61
|
+
.option('--legacy', 'Use the localhost-callback flow instead of device code')
|
|
62
|
+
.action(loginAction);
|
|
55
63
|
auth
|
|
56
64
|
.command('set <token>')
|
|
57
65
|
.description('Save an smt_ token directly (no browser flow)')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAiB,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,EACV,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEnE,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/mcp.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import { spawnSync } from 'node:child_process';
|
|
1
2
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
2
3
|
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
|
|
3
4
|
import { UnauthorizedError } from '@modelcontextprotocol/sdk/client/auth.js';
|
|
4
|
-
import { loadConfig } from '../lib/config.js';
|
|
5
|
+
import { CURSOR_MCP_PATH, hasCursorMcpConfig, hasGlobalMcpConfig, loadConfig, saveCursorMcpConfig, saveGlobalMcpConfig, } from '../lib/config.js';
|
|
6
|
+
import { ApiClient } from '../lib/client.js';
|
|
7
|
+
import { dim, error, info, success, teal } from '../lib/output.js';
|
|
5
8
|
const UPSTREAM_URL = 'https://mcp.somewhere.tech/mcp';
|
|
9
|
+
const INSTALL_HOSTS = ['codex', 'claude-code', 'cursor'];
|
|
10
|
+
const RESTART_HINT = 'MCP hosts load tools when a session starts. Open a NEW session (or restart the host), then look for tools named mcp__somewhere__*.';
|
|
6
11
|
// Emit a JSON-RPC error notification on stdout so MCP hosts surface a clear
|
|
7
12
|
// message instead of a generic crash. id=null because it's not a response to
|
|
8
13
|
// any specific request.
|
|
@@ -15,82 +20,280 @@ function emitFatalError(message) {
|
|
|
15
20
|
process.stdout.write(JSON.stringify(payload) + '\n');
|
|
16
21
|
}
|
|
17
22
|
export function registerMcp(program) {
|
|
18
|
-
program
|
|
23
|
+
const mcp = program
|
|
19
24
|
.command('mcp')
|
|
20
25
|
.description('Run somewhere.tech MCP server over stdio (proxies to mcp.somewhere.tech)')
|
|
26
|
+
.action(runStdioBridge);
|
|
27
|
+
// Hidden alias: docs/llms-full.md taught `somewhere mcp stdio` — keep it
|
|
28
|
+
// true rather than breaking copies already cached in agents and scrapes.
|
|
29
|
+
mcp
|
|
30
|
+
.command('stdio', { hidden: true })
|
|
31
|
+
.description('Alias of bare `somewhere mcp`')
|
|
32
|
+
.action(runStdioBridge);
|
|
33
|
+
mcp
|
|
34
|
+
.command('install <host>')
|
|
35
|
+
.description(`Configure an MCP host to use somewhere.tech (${INSTALL_HOSTS.join(', ')})`)
|
|
36
|
+
.action(runInstall);
|
|
37
|
+
mcp
|
|
38
|
+
.command('doctor')
|
|
39
|
+
.description('Check MCP setup: login, token validity, server reachability, host configs')
|
|
21
40
|
.action(async () => {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
41
|
+
await runDoctor(program.version() ?? 'unknown');
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/* ─── stdio bridge (bare `somewhere mcp`) ─────────────────────────── */
|
|
45
|
+
async function runStdioBridge() {
|
|
46
|
+
const config = loadConfig();
|
|
47
|
+
if (!config?.token) {
|
|
48
|
+
emitFatalError('Not logged in. Run: somewhere login');
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
const httpTransport = new StreamableHTTPClientTransport(new URL(UPSTREAM_URL), {
|
|
52
|
+
requestInit: {
|
|
53
|
+
headers: { Authorization: `Bearer ${config.token}` },
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
const stdioTransport = new StdioServerTransport();
|
|
57
|
+
let shuttingDown = false;
|
|
58
|
+
const shutdown = async (reason) => {
|
|
59
|
+
if (shuttingDown)
|
|
60
|
+
return;
|
|
61
|
+
shuttingDown = true;
|
|
62
|
+
if (reason instanceof UnauthorizedError) {
|
|
63
|
+
emitFatalError('somewhere.tech rejected the API key. Run: somewhere login');
|
|
26
64
|
}
|
|
27
|
-
const httpTransport = new StreamableHTTPClientTransport(new URL(UPSTREAM_URL), {
|
|
28
|
-
requestInit: {
|
|
29
|
-
headers: { Authorization: `Bearer ${config.token}` },
|
|
30
|
-
},
|
|
31
|
-
});
|
|
32
|
-
const stdioTransport = new StdioServerTransport();
|
|
33
|
-
let shuttingDown = false;
|
|
34
|
-
const shutdown = async (reason) => {
|
|
35
|
-
if (shuttingDown)
|
|
36
|
-
return;
|
|
37
|
-
shuttingDown = true;
|
|
38
|
-
if (reason instanceof UnauthorizedError) {
|
|
39
|
-
emitFatalError('somewhere.tech rejected the API key. Run: somewhere login');
|
|
40
|
-
}
|
|
41
|
-
try {
|
|
42
|
-
await stdioTransport.close();
|
|
43
|
-
}
|
|
44
|
-
catch { }
|
|
45
|
-
try {
|
|
46
|
-
await httpTransport.close();
|
|
47
|
-
}
|
|
48
|
-
catch { }
|
|
49
|
-
};
|
|
50
|
-
stdioTransport.onmessage = (msg) => {
|
|
51
|
-
httpTransport.send(msg).catch((err) => {
|
|
52
|
-
if (err instanceof UnauthorizedError) {
|
|
53
|
-
void shutdown(err);
|
|
54
|
-
process.exit(1);
|
|
55
|
-
}
|
|
56
|
-
process.stderr.write(`[somewhere mcp] upstream send failed: ${String(err)}\n`);
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
httpTransport.onmessage = (msg) => {
|
|
60
|
-
stdioTransport.send(msg).catch((err) => {
|
|
61
|
-
process.stderr.write(`[somewhere mcp] stdio send failed: ${String(err)}\n`);
|
|
62
|
-
});
|
|
63
|
-
};
|
|
64
|
-
stdioTransport.onclose = () => { void shutdown(); };
|
|
65
|
-
httpTransport.onclose = () => { void shutdown(); };
|
|
66
|
-
stdioTransport.onerror = (err) => {
|
|
67
|
-
process.stderr.write(`[somewhere mcp] stdio error: ${String(err)}\n`);
|
|
68
|
-
};
|
|
69
|
-
httpTransport.onerror = (err) => {
|
|
70
|
-
if (err instanceof UnauthorizedError) {
|
|
71
|
-
void shutdown(err);
|
|
72
|
-
process.exit(1);
|
|
73
|
-
}
|
|
74
|
-
process.stderr.write(`[somewhere mcp] upstream error: ${String(err)}\n`);
|
|
75
|
-
};
|
|
76
65
|
try {
|
|
77
|
-
await
|
|
66
|
+
await stdioTransport.close();
|
|
78
67
|
}
|
|
79
|
-
catch
|
|
68
|
+
catch { }
|
|
69
|
+
try {
|
|
70
|
+
await httpTransport.close();
|
|
71
|
+
}
|
|
72
|
+
catch { }
|
|
73
|
+
};
|
|
74
|
+
stdioTransport.onmessage = (msg) => {
|
|
75
|
+
httpTransport.send(msg).catch((err) => {
|
|
80
76
|
if (err instanceof UnauthorizedError) {
|
|
81
|
-
|
|
77
|
+
void shutdown(err);
|
|
82
78
|
process.exit(1);
|
|
83
79
|
}
|
|
84
|
-
|
|
80
|
+
process.stderr.write(`[somewhere mcp] upstream send failed: ${String(err)}\n`);
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
httpTransport.onmessage = (msg) => {
|
|
84
|
+
stdioTransport.send(msg).catch((err) => {
|
|
85
|
+
process.stderr.write(`[somewhere mcp] stdio send failed: ${String(err)}\n`);
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
stdioTransport.onclose = () => { void shutdown(); };
|
|
89
|
+
httpTransport.onclose = () => { void shutdown(); };
|
|
90
|
+
stdioTransport.onerror = (err) => {
|
|
91
|
+
process.stderr.write(`[somewhere mcp] stdio error: ${String(err)}\n`);
|
|
92
|
+
};
|
|
93
|
+
httpTransport.onerror = (err) => {
|
|
94
|
+
if (err instanceof UnauthorizedError) {
|
|
95
|
+
void shutdown(err);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
process.stderr.write(`[somewhere mcp] upstream error: ${String(err)}\n`);
|
|
99
|
+
};
|
|
100
|
+
try {
|
|
101
|
+
await httpTransport.start();
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
if (err instanceof UnauthorizedError) {
|
|
105
|
+
emitFatalError('somewhere.tech rejected the API key. Run: somewhere login');
|
|
85
106
|
process.exit(1);
|
|
86
107
|
}
|
|
108
|
+
emitFatalError(`Failed to connect to mcp.somewhere.tech: ${String(err)}`);
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
await stdioTransport.start();
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
emitFatalError(`Failed to start stdio transport: ${String(err)}`);
|
|
116
|
+
process.exit(1);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/* ─── somewhere mcp install <host> ────────────────────────────────── */
|
|
120
|
+
function runInstall(host) {
|
|
121
|
+
if (!INSTALL_HOSTS.includes(host)) {
|
|
122
|
+
error(`Unknown host "${host}". Supported: ${INSTALL_HOSTS.join(', ')}`);
|
|
123
|
+
process.exit(1);
|
|
124
|
+
}
|
|
125
|
+
const loggedIn = !!loadConfig()?.token;
|
|
126
|
+
switch (host) {
|
|
127
|
+
case 'codex':
|
|
128
|
+
installCodex(loggedIn);
|
|
129
|
+
break;
|
|
130
|
+
case 'claude-code':
|
|
131
|
+
installClaudeCode();
|
|
132
|
+
break;
|
|
133
|
+
case 'cursor':
|
|
134
|
+
installCursor(loggedIn);
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/** Codex owns its own config format, so we drive its CLI instead of writing
|
|
139
|
+
* the file ourselves. The entry uses the stdio bridge so auth rides the
|
|
140
|
+
* CLI login rather than a token pasted into Codex config. */
|
|
141
|
+
function installCodex(loggedIn) {
|
|
142
|
+
const probe = spawnSync('codex', ['--version'], { stdio: 'ignore' });
|
|
143
|
+
if (probe.error || probe.status !== 0) {
|
|
144
|
+
error('Codex CLI not found on PATH.');
|
|
145
|
+
info('Install Codex first, then either re-run this command or add the entry manually:');
|
|
146
|
+
info(dim(' codex mcp add somewhere -- somewhere mcp'));
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
const existing = spawnSync('codex', ['mcp', 'get', 'somewhere'], { stdio: 'ignore' });
|
|
150
|
+
if (existing.status === 0) {
|
|
151
|
+
success('Codex already has a "somewhere" MCP server configured.');
|
|
152
|
+
info(dim('To reconfigure: codex mcp remove somewhere, then re-run this command.'));
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
const add = spawnSync('codex', ['mcp', 'add', 'somewhere', '--', 'somewhere', 'mcp'], { stdio: 'inherit' });
|
|
156
|
+
if (add.status !== 0) {
|
|
157
|
+
error('`codex mcp add` failed (see output above).');
|
|
158
|
+
process.exit(1);
|
|
159
|
+
}
|
|
160
|
+
success(`Codex configured: ${teal('somewhere')} → somewhere mcp (stdio bridge)`);
|
|
161
|
+
}
|
|
162
|
+
if (!loggedIn)
|
|
163
|
+
info(`Not logged in yet — run: ${teal('somewhere login')}`);
|
|
164
|
+
printVerify('codex');
|
|
165
|
+
}
|
|
166
|
+
function installClaudeCode() {
|
|
167
|
+
const config = loadConfig();
|
|
168
|
+
if (!config?.token) {
|
|
169
|
+
error('Not logged in. Run: somewhere login');
|
|
170
|
+
info(dim('`somewhere login` configures Claude Code automatically — no separate install step needed.'));
|
|
171
|
+
process.exit(1);
|
|
172
|
+
}
|
|
173
|
+
saveGlobalMcpConfig(config.token);
|
|
174
|
+
success(`Claude Code configured (~/.claude.json): ${teal('somewhere')} → ${UPSTREAM_URL}`);
|
|
175
|
+
printVerify('claude-code');
|
|
176
|
+
}
|
|
177
|
+
function installCursor(loggedIn) {
|
|
178
|
+
saveCursorMcpConfig();
|
|
179
|
+
success(`Cursor configured (${CURSOR_MCP_PATH}): ${teal('somewhere')} → somewhere mcp (stdio bridge)`);
|
|
180
|
+
if (!loggedIn)
|
|
181
|
+
info(`Not logged in yet — run: ${teal('somewhere login')}`);
|
|
182
|
+
printVerify('cursor');
|
|
183
|
+
}
|
|
184
|
+
function printVerify(host) {
|
|
185
|
+
info('');
|
|
186
|
+
switch (host) {
|
|
187
|
+
case 'codex':
|
|
188
|
+
info(`Verify: ${teal('codex mcp list')} should show "somewhere".`);
|
|
189
|
+
break;
|
|
190
|
+
case 'claude-code':
|
|
191
|
+
info(`Verify: run ${teal('/mcp')} inside Claude Code — "somewhere" should be listed.`);
|
|
192
|
+
break;
|
|
193
|
+
case 'cursor':
|
|
194
|
+
info('Verify: Cursor Settings → MCP should list "somewhere".');
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
info(RESTART_HINT);
|
|
198
|
+
info(dim('Full setup check: somewhere mcp doctor'));
|
|
199
|
+
}
|
|
200
|
+
/* ─── somewhere mcp doctor ────────────────────────────────────────── */
|
|
201
|
+
async function runDoctor(version) {
|
|
202
|
+
let failures = 0;
|
|
203
|
+
const fail = (msg, fix) => {
|
|
204
|
+
failures++;
|
|
205
|
+
error(msg);
|
|
206
|
+
if (fix)
|
|
207
|
+
info(dim(`fix: ${fix}`));
|
|
208
|
+
};
|
|
209
|
+
info(`somewhere CLI ${version}`);
|
|
210
|
+
info('');
|
|
211
|
+
// 1. Login config present
|
|
212
|
+
const config = loadConfig();
|
|
213
|
+
if (config?.token) {
|
|
214
|
+
success(`Logged in as ${teal(config.user.email || '(unknown)')} (~/.somewhere/config.json)`);
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
fail('Not logged in — no token in ~/.somewhere/config.json.', 'somewhere login');
|
|
218
|
+
}
|
|
219
|
+
// 2. Token actually valid against the API. /auth/whoami is the endpoint
|
|
220
|
+
// that accepts smt_ keys (verified 2026-06-09: /auth/platform-me rejects
|
|
221
|
+
// a key that whoami and the MCP server both accept).
|
|
222
|
+
if (config?.token) {
|
|
87
223
|
try {
|
|
88
|
-
await
|
|
224
|
+
const me = await new ApiClient(config.token).call('GET', '/auth/whoami');
|
|
225
|
+
success(`Token valid (${me.user?.email ?? config.user.email ?? 'unknown account'})`);
|
|
89
226
|
}
|
|
90
227
|
catch (err) {
|
|
91
|
-
|
|
92
|
-
process.exit(1);
|
|
228
|
+
fail(`Token rejected by api.somewhere.tech: ${err instanceof Error ? err.message : String(err)}`, 'somewhere login');
|
|
93
229
|
}
|
|
94
|
-
}
|
|
230
|
+
}
|
|
231
|
+
// 3. MCP server reachability — a real initialize round-trip, not a ping.
|
|
232
|
+
try {
|
|
233
|
+
const headers = {
|
|
234
|
+
'Content-Type': 'application/json',
|
|
235
|
+
Accept: 'application/json, text/event-stream',
|
|
236
|
+
};
|
|
237
|
+
if (config?.token)
|
|
238
|
+
headers.Authorization = `Bearer ${config.token}`;
|
|
239
|
+
const res = await fetch(UPSTREAM_URL, {
|
|
240
|
+
method: 'POST',
|
|
241
|
+
headers,
|
|
242
|
+
body: JSON.stringify({
|
|
243
|
+
jsonrpc: '2.0',
|
|
244
|
+
id: 1,
|
|
245
|
+
method: 'initialize',
|
|
246
|
+
params: {
|
|
247
|
+
protocolVersion: '2025-03-26',
|
|
248
|
+
capabilities: {},
|
|
249
|
+
clientInfo: { name: 'somewhere-mcp-doctor', version },
|
|
250
|
+
},
|
|
251
|
+
}),
|
|
252
|
+
signal: AbortSignal.timeout(10_000),
|
|
253
|
+
});
|
|
254
|
+
if (res.ok) {
|
|
255
|
+
success('MCP server reachable — initialize accepted (mcp.somewhere.tech)');
|
|
256
|
+
}
|
|
257
|
+
else if (res.status === 401 && !config?.token) {
|
|
258
|
+
success('MCP server reachable (responded 401 — expected without a login)');
|
|
259
|
+
}
|
|
260
|
+
else if (res.status === 401) {
|
|
261
|
+
fail('MCP server reachable but it rejected the token.', 'somewhere login');
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
fail(`MCP server responded ${res.status} to initialize.`);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
catch (err) {
|
|
268
|
+
fail(`Cannot reach ${UPSTREAM_URL}: ${err instanceof Error ? err.message : String(err)}`);
|
|
269
|
+
}
|
|
270
|
+
// 4. Host configs — informational, not failures: not everyone uses every host.
|
|
271
|
+
info('');
|
|
272
|
+
info('Host configs:');
|
|
273
|
+
if (hasGlobalMcpConfig()) {
|
|
274
|
+
success('Claude Code: "somewhere" entry in ~/.claude.json');
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
info(dim('Claude Code: not configured — somewhere mcp install claude-code (or just somewhere login)'));
|
|
278
|
+
}
|
|
279
|
+
const codexProbe = spawnSync('codex', ['--version'], { stdio: 'ignore' });
|
|
280
|
+
if (codexProbe.error || codexProbe.status !== 0) {
|
|
281
|
+
info(dim('Codex: CLI not found on PATH — skipped'));
|
|
282
|
+
}
|
|
283
|
+
else if (spawnSync('codex', ['mcp', 'get', 'somewhere'], { stdio: 'ignore' }).status === 0) {
|
|
284
|
+
success('Codex: "somewhere" MCP server configured');
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
info(dim('Codex: not configured — somewhere mcp install codex'));
|
|
288
|
+
}
|
|
289
|
+
if (hasCursorMcpConfig()) {
|
|
290
|
+
success(`Cursor: "somewhere" entry in ${CURSOR_MCP_PATH}`);
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
info(dim('Cursor: not configured — somewhere mcp install cursor'));
|
|
294
|
+
}
|
|
295
|
+
info('');
|
|
296
|
+
info(RESTART_HINT);
|
|
297
|
+
process.exit(failures > 0 ? 1 : 0);
|
|
95
298
|
}
|
|
96
299
|
//# sourceMappingURL=mcp.js.map
|
package/dist/commands/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE7E,OAAO,
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.js
CHANGED
|
@@ -94,4 +94,38 @@ export function hasGlobalMcpConfig() {
|
|
|
94
94
|
return false;
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
|
+
const CURSOR_DIR = join(homedir(), '.cursor');
|
|
98
|
+
export const CURSOR_MCP_PATH = join(CURSOR_DIR, 'mcp.json');
|
|
99
|
+
/** Cursor gets the stdio bridge (`somewhere mcp`) rather than an embedded
|
|
100
|
+
* bearer token: the bridge reads ~/.somewhere/config.json at runtime, so a
|
|
101
|
+
* re-login never leaves a stale token behind in Cursor's config. */
|
|
102
|
+
export function saveCursorMcpConfig() {
|
|
103
|
+
let config = {};
|
|
104
|
+
if (existsSync(CURSOR_MCP_PATH)) {
|
|
105
|
+
try {
|
|
106
|
+
config = JSON.parse(readFileSync(CURSOR_MCP_PATH, 'utf-8'));
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// Malformed — preserve nothing, write fresh
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const servers = (config.mcpServers ?? {});
|
|
113
|
+
servers.somewhere = { command: 'somewhere', args: ['mcp'] };
|
|
114
|
+
config.mcpServers = servers;
|
|
115
|
+
if (!existsSync(CURSOR_DIR))
|
|
116
|
+
mkdirSync(CURSOR_DIR, { recursive: true });
|
|
117
|
+
writeFileSync(CURSOR_MCP_PATH, JSON.stringify(config, null, 2) + '\n');
|
|
118
|
+
}
|
|
119
|
+
export function hasCursorMcpConfig() {
|
|
120
|
+
if (!existsSync(CURSOR_MCP_PATH))
|
|
121
|
+
return false;
|
|
122
|
+
try {
|
|
123
|
+
const config = JSON.parse(readFileSync(CURSOR_MCP_PATH, 'utf-8'));
|
|
124
|
+
const servers = config.mcpServers;
|
|
125
|
+
return !!servers?.somewhere;
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
97
131
|
//# sourceMappingURL=config.js.map
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AACjD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AACpD,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;AAC3D,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAEvC,SAAS,SAAS;IAChB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAc,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAiB;IAC1C,SAAS,EAAE,CAAC;IACZ,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,UAAU,CAAC,WAAW,CAAC;QAAE,UAAU,CAAC,WAAW,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAkB,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,MAAqB;IAClE,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,KAAa;IACtD,MAAM,GAAG,GAAG;QACV,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,gCAAgC;gBACrC,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,KAAK,EAAE;iBACjC;aACF;SACF;KACF,CAAC;IACF,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,IAAI,MAAM,GAA4B,EAAE,CAAC;IACzC,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAA4B,CAAC;QAC5F,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAA4B,CAAC;IACrE,OAAO,CAAC,SAAS,GAAG;QAClB,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,gCAAgC;QACrC,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE;KAC9C,CAAC;IACF,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;IAE5B,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAA4B,CAAC;QAChG,MAAM,OAAO,GAAG,MAAM,CAAC,UAAiD,CAAC;QACzE,OAAO,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAE5D;;qEAEqE;AACrE,MAAM,UAAU,mBAAmB;IACjC,IAAI,MAAM,GAA4B,EAAE,CAAC;IACzC,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAA4B,CAAC;QACzF,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAA4B,CAAC;IACrE,OAAO,CAAC,SAAS,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5D,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;IAE5B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAA4B,CAAC;QAC7F,MAAM,OAAO,GAAG,MAAM,CAAC,UAAiD,CAAC;QACzE,OAAO,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|