@somewhere-tech/cli 0.9.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 +21 -11
- package/dist/commands/auth.js +15 -7
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/dev.js +18 -15
- package/dist/commands/dev.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` |
|
|
@@ -52,9 +53,11 @@ After `somewhere init`, Claude Code and Codex auto-connect via the `.mcp.json` i
|
|
|
52
53
|
| `somewhere status` | Show project + workspace status |
|
|
53
54
|
| `somewhere open` | Open project URL in browser |
|
|
54
55
|
| `somewhere open --dashboard` | Open the dashboard |
|
|
55
|
-
| `somewhere dev` |
|
|
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
|
|
|
@@ -100,21 +103,28 @@ somewhere deploy --scope functions # ship a backend fix without touching the
|
|
|
100
103
|
somewhere dev
|
|
101
104
|
```
|
|
102
105
|
|
|
103
|
-
Starts a file watcher that
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
Starts a file watcher that updates a **private preview** on every save — no local
|
|
107
|
+
server, no emulator. You get a preview link (`{project}-dev.somewhere.tech`) that
|
|
108
|
+
**only you can see** (owner-gated). Edit a file, save, and the preview refreshes
|
|
109
|
+
in a couple of seconds on the real platform with full `sw.*` context.
|
|
110
|
+
|
|
111
|
+
**It is not a deploy.** Nothing goes to production, no version number changes, no
|
|
112
|
+
deployment-history entry — your real users never see your half-finished work.
|
|
113
|
+
When it looks right, run `somewhere deploy` to ship to production. Compile errors
|
|
114
|
+
show up in the terminal immediately (file + line); your last working preview keeps
|
|
115
|
+
serving until you fix them.
|
|
108
116
|
|
|
109
117
|
```
|
|
110
118
|
$ somewhere dev
|
|
111
|
-
✓ Synced 3 files
|
|
119
|
+
✓ Synced 3 files to preview
|
|
112
120
|
👀 Watching /my-app for changes
|
|
113
|
-
🌐 https://my-app.somewhere.tech
|
|
121
|
+
🌐 Preview: https://my-app-dev.somewhere.tech
|
|
122
|
+
private to you — save a file and the preview updates. Not live to users.
|
|
123
|
+
run `somewhere deploy` to ship to production.
|
|
114
124
|
|
|
115
|
-
[13:41:01] src/main.tsx → ✓
|
|
116
|
-
[13:41:18] api/users.ts → ✗ compile failed (1.4s) ←
|
|
117
|
-
[13:41:24] api/users.ts → ✓
|
|
125
|
+
[13:41:01] src/main.tsx → ✓ preview (1.2s)
|
|
126
|
+
[13:41:18] api/users.ts → ✗ compile failed (1.4s) ← last working preview still up
|
|
127
|
+
[13:41:24] api/users.ts → ✓ preview (0.9s)
|
|
118
128
|
```
|
|
119
129
|
|
|
120
130
|
Passing a command (`somewhere dev npm run dev`) keeps the legacy behavior — run
|
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/dev.js
CHANGED
|
@@ -13,7 +13,7 @@ const DEBOUNCE_MS = 500;
|
|
|
13
13
|
export function registerDev(program) {
|
|
14
14
|
program
|
|
15
15
|
.command('dev [cmd...]')
|
|
16
|
-
.description('
|
|
16
|
+
.description('Private preview watcher: save a file → your owner-only preview updates in seconds (nothing to prod, no version bump). ' +
|
|
17
17
|
'Pass a command (e.g. `somewhere dev npm run dev`) to run it locally with platform env vars instead.')
|
|
18
18
|
.option('--project <id>', 'Override project ID')
|
|
19
19
|
.action(async (cmdParts, opts) => {
|
|
@@ -41,13 +41,15 @@ async function runHotDeploy(opts) {
|
|
|
41
41
|
projectId = config.project_id;
|
|
42
42
|
subdomain = config.subdomain;
|
|
43
43
|
}
|
|
44
|
-
// Initial full sync
|
|
45
|
-
//
|
|
46
|
-
|
|
44
|
+
// Initial full sync to the PREVIEW slot (preview: true). Writes only the
|
|
45
|
+
// owner-gated dev slot — never prod, never a version bump or history entry.
|
|
46
|
+
// /deploy/patch rejects projects with no prior deploy, so a full (preview)
|
|
47
|
+
// deploy first establishes the sandbox AND returns the {slug}-dev URL.
|
|
48
|
+
const spinner = ora('Syncing to preview...').start();
|
|
47
49
|
const { files, binaryFiles, functions } = collectFiles(cwd);
|
|
48
50
|
let url;
|
|
49
51
|
try {
|
|
50
|
-
const body = { project_id: projectId, files };
|
|
52
|
+
const body = { project_id: projectId, files, preview: true };
|
|
51
53
|
if (Object.keys(binaryFiles).length)
|
|
52
54
|
body.binary_files = binaryFiles;
|
|
53
55
|
if (Object.keys(functions).length)
|
|
@@ -56,7 +58,7 @@ async function runHotDeploy(opts) {
|
|
|
56
58
|
url = res.url;
|
|
57
59
|
spinner.stop();
|
|
58
60
|
const n = typeof res.files === 'number' ? res.files : (res.files ?? []).length;
|
|
59
|
-
success(`Synced ${n} files`);
|
|
61
|
+
success(`Synced ${n} files to preview`);
|
|
60
62
|
if (res.warnings?.length)
|
|
61
63
|
for (const w of res.warnings)
|
|
62
64
|
warn(w);
|
|
@@ -68,8 +70,9 @@ async function runHotDeploy(opts) {
|
|
|
68
70
|
}
|
|
69
71
|
console.log('');
|
|
70
72
|
console.log(`${green('👀')} ${bold('Watching')} ${dim(cwd)} ${dim('for changes')}`);
|
|
71
|
-
console.log(`${teal('🌐')} ${teal(url)}`);
|
|
72
|
-
console.log(dim(' save a file and
|
|
73
|
+
console.log(`${teal('🌐')} ${bold('Preview:')} ${teal(url)}`);
|
|
74
|
+
console.log(dim(' private to you — save a file and the preview updates. Not live to users.'));
|
|
75
|
+
console.log(dim(' run `somewhere deploy` to ship to production. Ctrl-C to stop.\n'));
|
|
73
76
|
open(url).catch(() => { });
|
|
74
77
|
// Debounced batch of changes. Saving three files in quick succession ships
|
|
75
78
|
// one patch, not three.
|
|
@@ -153,7 +156,7 @@ async function deployBatch(client, projectId, cwd, changed, deleted) {
|
|
|
153
156
|
}
|
|
154
157
|
for (const rel of deleted)
|
|
155
158
|
deleteKeys.push(classifyKey(rel).key);
|
|
156
|
-
const body = { project_id: projectId };
|
|
159
|
+
const body = { project_id: projectId, preview: true };
|
|
157
160
|
if (Object.keys(updateFiles).length)
|
|
158
161
|
body.update_files = updateFiles;
|
|
159
162
|
if (Object.keys(updateFunctions).length)
|
|
@@ -163,20 +166,20 @@ async function deployBatch(client, projectId, cwd, changed, deleted) {
|
|
|
163
166
|
if (deleteKeys.length)
|
|
164
167
|
body.delete_files = deleteKeys;
|
|
165
168
|
// Nothing real to ship (e.g. every changed file vanished) — skip quietly.
|
|
166
|
-
if (Object.keys(body).length ===
|
|
169
|
+
if (Object.keys(body).length === 2)
|
|
167
170
|
return;
|
|
168
171
|
const label = describeBatch(changed, deleted);
|
|
169
172
|
const t0 = Date.now();
|
|
170
|
-
process.stdout.write(`${dim(stamp())} ${label} ${dim('→
|
|
173
|
+
process.stdout.write(`${dim(stamp())} ${label} ${dim('→ updating preview...')}`);
|
|
171
174
|
try {
|
|
172
175
|
const r = await client.call('POST', '/deploy/patch', body);
|
|
173
176
|
const secs = ((Date.now() - t0) / 1000).toFixed(1);
|
|
174
|
-
// Carriage-return overwrites the "
|
|
177
|
+
// Carriage-return overwrites the "updating..." line with the verdict.
|
|
175
178
|
process.stdout.write('\r\x1b[K');
|
|
176
179
|
if (r.bundle_error) {
|
|
177
180
|
console.log(`${dim(stamp())} ${label} ${red('✗ compile failed')} ${dim(`(${secs}s)`)}`);
|
|
178
181
|
error(r.bundle_error);
|
|
179
|
-
info(dim('
|
|
182
|
+
info(dim('Your last working preview is still up. Fix and save again.'));
|
|
180
183
|
return;
|
|
181
184
|
}
|
|
182
185
|
if (r.function_errors?.length) {
|
|
@@ -189,12 +192,12 @@ async function deployBatch(client, projectId, cwd, changed, deleted) {
|
|
|
189
192
|
return;
|
|
190
193
|
}
|
|
191
194
|
if (r.warnings?.length) {
|
|
192
|
-
console.log(`${dim(stamp())} ${label} ${yellow('⚠
|
|
195
|
+
console.log(`${dim(stamp())} ${label} ${yellow('⚠ preview')} ${dim(`(${secs}s)`)}`);
|
|
193
196
|
for (const w of r.warnings)
|
|
194
197
|
warn(w);
|
|
195
198
|
return;
|
|
196
199
|
}
|
|
197
|
-
console.log(`${dim(stamp())} ${label} ${green('✓
|
|
200
|
+
console.log(`${dim(stamp())} ${label} ${green('✓ preview')} ${dim(`(${secs}s)`)}`);
|
|
198
201
|
}
|
|
199
202
|
catch (err) {
|
|
200
203
|
const secs = ((Date.now() - t0) / 1000).toFixed(1);
|
package/dist/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.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":"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"}
|