@somewhere-tech/cli 0.12.0 → 0.12.2
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/dist/commands/api.js
CHANGED
|
@@ -6,6 +6,7 @@ export function registerApi(program) {
|
|
|
6
6
|
.command('api <method> <path>')
|
|
7
7
|
.description('Make a raw API call (adds auth automatically)')
|
|
8
8
|
.option('-d, --data <json>', 'JSON body')
|
|
9
|
+
.option('--raw', 'Print the response body as-is without JSON-parsing — for non-JSON endpoints (e.g. a SQL db dump); a 200 non-JSON body is not treated as an error')
|
|
9
10
|
.action(async (method, path, opts) => {
|
|
10
11
|
const client = new ApiClient(getToken());
|
|
11
12
|
let body;
|
|
@@ -18,8 +19,23 @@ export function registerApi(program) {
|
|
|
18
19
|
process.exit(1);
|
|
19
20
|
}
|
|
20
21
|
}
|
|
22
|
+
const apiPath = path.startsWith('/v1/') ? path.slice(3) : path;
|
|
23
|
+
// Raw mode: stream the response body verbatim. A 200 with a non-JSON body
|
|
24
|
+
// (e.g. /v1/db/dump returns SQL) must NOT be an error (audit #14).
|
|
25
|
+
if (opts.raw) {
|
|
26
|
+
try {
|
|
27
|
+
const r = await client.callRaw(method.toUpperCase(), apiPath, body);
|
|
28
|
+
process.stdout.write(r.body.endsWith('\n') ? r.body : r.body + '\n');
|
|
29
|
+
if (!r.ok)
|
|
30
|
+
process.exitCode = 1;
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
error(String(err));
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
21
38
|
try {
|
|
22
|
-
const apiPath = path.startsWith('/v1/') ? path.slice(3) : path;
|
|
23
39
|
const result = await client.call(method.toUpperCase(), apiPath, body);
|
|
24
40
|
console.log(JSON.stringify(result, null, 2));
|
|
25
41
|
}
|
package/dist/commands/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/commands/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,OAAO;SACJ,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;SACxC,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAAY,EAAE,IAAI,EAAE,EAAE;QACnD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzC,IAAI,IAAa,CAAC;QAClB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/commands/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,OAAO;SACJ,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;SACxC,MAAM,CAAC,OAAO,EAAE,kJAAkJ,CAAC;SACnK,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAAY,EAAE,IAAI,EAAE,EAAE;QACnD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzC,IAAI,IAAa,CAAC;QAClB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE/D,0EAA0E;QAC1E,mEAAmE;QACnE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;gBACpE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;gBACrE,IAAI,CAAC,CAAC,CAAC,EAAE;oBAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,KAAK,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;gBAC1C,MAAM,MAAM,GAAG,GAAmD,CAAC;gBACnE,OAAO,CAAC,KAAK,CACX,IAAI,CAAC,SAAS,CACZ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,EAC1E,IAAI,EACJ,CAAC,CACF,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACrB,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/commands/status.js
CHANGED
|
@@ -33,8 +33,12 @@ export function registerStatus(program) {
|
|
|
33
33
|
try {
|
|
34
34
|
const ws = await client.call('GET', '/hosted/status');
|
|
35
35
|
console.log('');
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
// The hosted code workspace is OPTIONAL and separate from the deployed
|
|
37
|
+
// app — a non-'ready' status here (e.g. "waking") NEVER means the live
|
|
38
|
+
// site is down (audit #8 / tsk_30633bb3). Label it as the dev workspace
|
|
39
|
+
// and say so, so "waking" doesn't read as an outage.
|
|
40
|
+
const wsStatus = ws.status === 'ready' ? 'running' : `${ws.status} (starting)`;
|
|
41
|
+
info(`Dev workspace: ${wsStatus} ${dim('— optional code workspace; your deployed app serves regardless')}`);
|
|
38
42
|
if (ws.terminal_url) {
|
|
39
43
|
info(`Terminal: ${dim(ws.terminal_url)}`);
|
|
40
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE9E,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO;SACJ,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,UAA8B,EAAE,EAAE;QAC/C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,SAAS,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,KAAK,CAAC,+FAA+F,CAAC,CAAC;gBACvG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;QAChC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAKxB,KAAK,EAAE,aAAa,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAExD,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrE,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;gBAChB,IAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,iBAAiB,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;gBACjB,IAAI,CAAC,gBAAgB,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAGzB,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAE5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;YAC/
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE9E,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO;SACJ,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,UAA8B,EAAE,EAAE;QAC/C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,SAAS,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,KAAK,CAAC,+FAA+F,CAAC,CAAC;gBACvG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;QAChC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAKxB,KAAK,EAAE,aAAa,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAExD,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrE,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;gBAChB,IAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,iBAAiB,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;gBACjB,IAAI,CAAC,gBAAgB,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAGzB,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAE5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,uEAAuE;YACvE,uEAAuE;YACvE,wEAAwE;YACxE,qDAAqD;YACrD,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,aAAa,CAAC;YAC/E,IAAI,CAAC,kBAAkB,QAAQ,IAAI,GAAG,CAAC,gEAAgE,CAAC,EAAE,CAAC,CAAC;YAC5G,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,6CAA6C;QAC/C,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/lib/client.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Agent } from 'undici';
|
|
1
2
|
const BASE_URL = 'https://api.somewhere.tech/v1';
|
|
2
3
|
/** Default request timeout. Long-running calls (deploy compiles, pulls)
|
|
3
4
|
* pass an explicit budget via opts.timeoutMs instead. */
|
|
@@ -39,6 +40,13 @@ export class ApiClient {
|
|
|
39
40
|
headers,
|
|
40
41
|
body: reqBody,
|
|
41
42
|
signal: AbortSignal.timeout(timeoutMs),
|
|
43
|
+
// Match undici's internal header/body timeouts to OUR budget. Node's
|
|
44
|
+
// global fetch defaults headersTimeout to ~300s — SHORTER than a long
|
|
45
|
+
// deploy's 10-min budget — so a cold first deploy (while the project is
|
|
46
|
+
// provisioned) tripped UND_ERR_HEADERS_TIMEOUT before our AbortSignal
|
|
47
|
+
// fired, and the failure got mislabeled as the user's network
|
|
48
|
+
// (tsk_896f9c7b). Now our AbortSignal is the only real deadline.
|
|
49
|
+
dispatcher: new Agent({ headersTimeout: timeoutMs, bodyTimeout: timeoutMs }),
|
|
42
50
|
});
|
|
43
51
|
}
|
|
44
52
|
catch (err) {
|
|
@@ -56,7 +64,19 @@ export class ApiClient {
|
|
|
56
64
|
// auth, payload, or network (pfb_70e9d140c5a0) — name the
|
|
57
65
|
// endpoint and the underlying cause.
|
|
58
66
|
const cause = err.cause;
|
|
59
|
-
const
|
|
67
|
+
const code = cause?.code;
|
|
68
|
+
// undici's own header/body timeout means the CONNECTION established but the
|
|
69
|
+
// server was slow to respond — NOT the user's network. Common on a first
|
|
70
|
+
// deploy while the project is provisioned (tsk_896f9c7b). With the matching
|
|
71
|
+
// dispatcher above this should rarely fire now, but if it does, say what's
|
|
72
|
+
// actually happening instead of blaming the network.
|
|
73
|
+
if (code === 'UND_ERR_HEADERS_TIMEOUT' || code === 'UND_ERR_BODY_TIMEOUT') {
|
|
74
|
+
throw new CliApiError('SERVER_SLOW', `${method} ${url.split('?')[0]} connected, but the server didn't finish responding in time. ` +
|
|
75
|
+
'This is usually a first deploy while your project is being provisioned — the request may ' +
|
|
76
|
+
'still be completing server-side. Check `somewhere status` before retrying ' +
|
|
77
|
+
'(retrying a first deploy is safe — it just creates a new version).', 0);
|
|
78
|
+
}
|
|
79
|
+
const detail = code ??
|
|
60
80
|
cause?.message ??
|
|
61
81
|
(err instanceof Error ? err.message : String(err));
|
|
62
82
|
throw new CliApiError('NETWORK_ERROR', `Could not reach ${method} ${url.split('?')[0]} — ${detail}. ` +
|
|
@@ -76,6 +96,37 @@ export class ApiClient {
|
|
|
76
96
|
const errBody = parsed;
|
|
77
97
|
throw new CliApiError(errBody.error ?? 'UNKNOWN', errBody.message ?? 'Unknown error', res.status, errBody.data, errBody.hint);
|
|
78
98
|
}
|
|
99
|
+
/** Like call(), but returns the raw response TEXT instead of JSON-parsing it
|
|
100
|
+
* — for endpoints that legitimately return non-JSON (e.g. a SQL db dump). A
|
|
101
|
+
* 200 with a non-JSON body is NOT an error (audit #14 / tsk_30633bb3). Used
|
|
102
|
+
* by `somewhere api --raw`. call() is intentionally left untouched so every
|
|
103
|
+
* existing command keeps its exact behavior. */
|
|
104
|
+
async callRaw(method, path, body, opts) {
|
|
105
|
+
const url = `${BASE_URL}${path}`;
|
|
106
|
+
const headers = { Authorization: `Bearer ${this.token}` };
|
|
107
|
+
let reqBody;
|
|
108
|
+
if (body !== undefined) {
|
|
109
|
+
headers['Content-Type'] = 'application/json';
|
|
110
|
+
reqBody = JSON.stringify(body);
|
|
111
|
+
}
|
|
112
|
+
const timeoutMs = opts?.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
113
|
+
let res;
|
|
114
|
+
try {
|
|
115
|
+
res = await fetch(url, {
|
|
116
|
+
method,
|
|
117
|
+
headers,
|
|
118
|
+
body: reqBody,
|
|
119
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
120
|
+
dispatcher: new Agent({ headersTimeout: timeoutMs, bodyTimeout: timeoutMs }),
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
const cause = err.cause;
|
|
125
|
+
const detail = cause?.code ?? cause?.message ?? (err instanceof Error ? err.message : String(err));
|
|
126
|
+
throw new CliApiError('NETWORK_ERROR', `Could not reach ${method} ${url} — ${detail}. No HTTP response was received.`, 0);
|
|
127
|
+
}
|
|
128
|
+
return { status: res.status, ok: res.status < 400, body: await res.text() };
|
|
129
|
+
}
|
|
79
130
|
}
|
|
80
131
|
export class CliApiError extends Error {
|
|
81
132
|
code;
|
package/dist/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@somewhere-tech/cli",
|
|
3
|
-
"version": "0.12.
|
|
4
|
-
"description": "CLI for somewhere.tech
|
|
3
|
+
"version": "0.12.2",
|
|
4
|
+
"description": "CLI for somewhere.tech — auth, projects, deploy, pull, promote, db, logs, env, MCP bridge.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"somewhere",
|
|
7
7
|
"somewhere.tech",
|
|
@@ -49,7 +49,8 @@
|
|
|
49
49
|
"commander": "^12.0.0",
|
|
50
50
|
"open": "^10.0.0",
|
|
51
51
|
"ora": "^8.0.0",
|
|
52
|
-
"prompts": "^2.4.2"
|
|
52
|
+
"prompts": "^2.4.2",
|
|
53
|
+
"undici": "^8.4.1"
|
|
53
54
|
},
|
|
54
55
|
"devDependencies": {
|
|
55
56
|
"@types/node": "^22.19.21",
|