@somewhere-cloud/cli 0.38.5 → 0.38.6

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.
Files changed (49) hide show
  1. package/README.md +37 -48
  2. package/bin/engine.js +27 -0
  3. package/bin/somewhere.js +10 -1
  4. package/dist/commands/api.js +67 -2
  5. package/dist/commands/api.js.map +1 -1
  6. package/dist/commands/auth.js +18 -5
  7. package/dist/commands/auth.js.map +1 -1
  8. package/dist/commands/check.js +9 -3
  9. package/dist/commands/check.js.map +1 -1
  10. package/dist/commands/deploy.js +145 -6
  11. package/dist/commands/deploy.js.map +1 -1
  12. package/dist/commands/dev.js +48 -7
  13. package/dist/commands/dev.js.map +1 -1
  14. package/dist/commands/docs.js +15 -17
  15. package/dist/commands/docs.js.map +1 -1
  16. package/dist/commands/env.js +9 -1
  17. package/dist/commands/env.js.map +1 -1
  18. package/dist/commands/init.js +16 -7
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/logs.js +6 -1
  21. package/dist/commands/logs.js.map +1 -1
  22. package/dist/commands/typecheck.js +44 -20
  23. package/dist/commands/typecheck.js.map +1 -1
  24. package/dist/index.js +16 -2
  25. package/dist/index.js.map +1 -1
  26. package/dist/lib/advisor-context.js +0 -9
  27. package/dist/lib/advisor-context.js.map +1 -1
  28. package/dist/lib/claim-handoff.js +23 -1
  29. package/dist/lib/claim-handoff.js.map +1 -1
  30. package/dist/lib/client.js +18 -7
  31. package/dist/lib/client.js.map +1 -1
  32. package/dist/lib/config.js +15 -1
  33. package/dist/lib/config.js.map +1 -1
  34. package/dist/lib/deploy-check.js +45 -44
  35. package/dist/lib/deploy-check.js.map +1 -1
  36. package/dist/lib/files.js +108 -19
  37. package/dist/lib/files.js.map +1 -1
  38. package/dist/lib/last-run.js +24 -26
  39. package/dist/lib/last-run.js.map +1 -1
  40. package/dist/lib/temp-auth.js +16 -24
  41. package/dist/lib/temp-auth.js.map +1 -1
  42. package/dist/lib/typecheck.js +209 -78
  43. package/dist/lib/typecheck.js.map +1 -1
  44. package/npm-shrinkwrap.json +2 -2
  45. package/package.json +1 -1
  46. package/runtime/DECLARED-DATA-VENDOR.json +18 -18
  47. package/runtime/SOURCE-LINT-VENDOR.json +47 -46
  48. package/runtime/declared-data.cjs +188 -108
  49. package/runtime/source-lint.cjs +311 -199
@@ -1,39 +1,37 @@
1
1
  import { mkdirSync, renameSync, writeFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import { cliConfigDir } from './config.js';
4
- import { normalizeLastRun } from './advisor-context.js';
5
- const TAIL_LIMIT = 4_000;
6
- function appendTail(current, chunk) {
7
- const text = typeof chunk === 'string' ? chunk : Buffer.isBuffer(chunk) ? chunk.toString() : String(chunk);
8
- const combined = current + text;
9
- return combined.length <= TAIL_LIMIT ? combined : combined.slice(-TAIL_LIMIT);
4
+ /** The registered command path and the option names given on the command line. */
5
+ export function describeInvocation(action) {
6
+ const names = [];
7
+ for (let at = action; at && at.parent; at = at.parent)
8
+ names.unshift(at.name());
9
+ const options = action.options
10
+ .filter((option) => action.getOptionValueSource(option.attributeName()) === 'cli')
11
+ .map((option) => option.long ?? option.short ?? '')
12
+ .filter(Boolean)
13
+ .sort();
14
+ return { command: names.join(' '), options };
10
15
  }
11
- /** Capture one invocation without changing command output or command failure behavior. */
12
- export function recordLastRun(argv) {
13
- let stdout = '';
14
- let stderr = '';
15
- const originalStdoutWrite = process.stdout.write.bind(process.stdout);
16
- const originalStderrWrite = process.stderr.write.bind(process.stderr);
17
- process.stdout.write = ((chunk, ...args) => {
18
- stdout = appendTail(stdout, chunk);
19
- return originalStdoutWrite(chunk, ...args);
20
- });
21
- process.stderr.write = ((chunk, ...args) => {
22
- stderr = appendTail(stderr, chunk);
23
- return originalStderrWrite(chunk, ...args);
24
- });
16
+ let invocation = null;
17
+ /** Called once the command is known (commander preAction). */
18
+ export function noteLastRunCommand(action) {
19
+ invocation = describeInvocation(action);
20
+ }
21
+ /** Write the record when the process exits, without changing command output or failure behavior. */
22
+ export function recordLastRun(cliVersion) {
25
23
  process.once('exit', (exitCode) => {
26
24
  try {
27
25
  const dir = cliConfigDir();
28
26
  mkdirSync(dir, { recursive: true, mode: 0o700 });
29
- const record = normalizeLastRun({
30
- command: argv[0] ?? 'somewhere',
31
- args: argv.slice(1),
27
+ const record = {
28
+ // A usage error never reaches a command: no command and no options.
29
+ command: invocation?.command ?? '',
30
+ options: invocation?.options ?? [],
32
31
  exit_code: exitCode ?? process.exitCode ?? 0,
33
- stdout_tail: stdout,
34
- stderr_tail: stderr,
35
32
  timestamp: new Date().toISOString(),
36
- });
33
+ cli_version: cliVersion,
34
+ };
37
35
  const path = join(dir, 'last-run.json');
38
36
  const temporary = join(dir, 'last-run.json.tmp');
39
37
  writeFileSync(temporary, JSON.stringify(record) + '\n', { mode: 0o600 });
@@ -1 +1 @@
1
- {"version":3,"file":"last-run.js","sourceRoot":"","sources":["../../src/lib/last-run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"last-run.js","sourceRoot":"","sources":["../../src/lib/last-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAoB3C,kFAAkF;AAClF,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,EAAE,GAAmB,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM;QAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IAChG,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;SAC3B,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,KAAK,KAAK,CAAC;SACjF,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SAClD,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,EAAE,CAAC;IACV,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC;AAC/C,CAAC;AAED,IAAI,UAAU,GAAkD,IAAI,CAAC;AAErE,8DAA8D;AAC9D,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;YAC3B,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACjD,MAAM,MAAM,GAAmB;gBAC7B,oEAAoE;gBACpE,OAAO,EAAE,UAAU,EAAE,OAAO,IAAI,EAAE;gBAClC,OAAO,EAAE,UAAU,EAAE,OAAO,IAAI,EAAE;gBAClC,SAAS,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC;gBAC5C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,WAAW,EAAE,UAAU;aACxB,CAAC;YACF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;YACjD,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACzE,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,4DAA4D;QAC9D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -4,8 +4,7 @@
4
4
  * src/commands/deploy.ts for how the minted credential is cached/reused and
5
5
  * wired into the normal deploy flow. */
6
6
  import { createHash } from 'node:crypto';
7
- import { API_BASE_URL } from './client.js';
8
- import { fetchWithProxy } from './http.js';
7
+ import { ApiClient, CliApiError } from './client.js';
9
8
  /** Count LEADING ZERO BITS (not hex chars — the server's difficulty unit is
10
9
  * bits) in a digest. Walks bytes most-significant-first and stops counting
11
10
  * at the first 1 bit, whether that's mid-byte or in a later byte. */
@@ -41,33 +40,26 @@ export function solvePow(nonce, difficulty) {
41
40
  }
42
41
  }
43
42
  /** Mint a temporary, no-login developer credential: GET the PoW challenge,
44
- * solve it locally, POST the solution for a bearer key. `fetchImpl` is
45
- * injectable so tests never touch
46
- * the network. Throws a clear Error — including the server's own message
47
- * where available — on any failure at either step. */
48
- export async function mintTempAccount(fetchImpl = fetchWithProxy) {
49
- const challengeRes = await fetchImpl(`${API_BASE_URL}/auth/pow/challenge`);
50
- const challengeBody = (await challengeRes.json());
51
- if (!challengeRes.ok || challengeBody.ok !== true || !challengeBody.data) {
52
- throw new Error(`Could not fetch a proof-of-work challenge: ${challengeBody.message ?? challengeBody.error ?? challengeRes.statusText}`);
43
+ * solve it locally, POST the solution for a bearer key.
44
+ *
45
+ * Both routes are public: the request carries no credential, never runs the
46
+ * stored login's refresh, and is never resent. Failures are the platform's
47
+ * typed errors (pfb_011a9fd3f5f3): CliApiError with the documented `code`
48
+ * (RATE_LIMITED, INVALID_POW, TEMP_DEPLOYS_DISABLED, ...), HTTP status,
49
+ * retry / retry_after_ms and request/trace ids, and INVALID_RESPONSE with
50
+ * the status for a body that is not JSON. */
51
+ export async function mintTempAccount(client = new ApiClient(null)) {
52
+ const challenge = await client.call('GET', '/auth/pow/challenge', undefined, undefined, { refresh: false });
53
+ if (!challenge || typeof challenge.nonce !== 'string' || typeof challenge.difficulty !== 'number') {
54
+ throw new CliApiError('INVALID_RESPONSE', 'The proof-of-work challenge response had no nonce or difficulty.', 200);
53
55
  }
54
- const challenge = challengeBody.data;
55
56
  const { suffix } = solvePow(challenge.nonce, challenge.difficulty);
56
- const createRes = await fetchImpl(`${API_BASE_URL}/auth/temp-create`, {
57
- method: 'POST',
58
- headers: { 'Content-Type': 'application/json' },
59
- body: JSON.stringify({ nonce: challenge.nonce, suffix }),
60
- });
61
- const createBody = (await createRes.json());
62
- if (!createRes.ok || createBody.ok !== true || !createBody.data) {
63
- throw new Error(`Could not create a temporary session: ${createBody.message ?? createBody.error ?? createRes.statusText}`);
64
- }
65
- const data = createBody.data;
57
+ const data = await client.call('POST', '/auth/temp-create', { nonce: challenge.nonce, suffix }, undefined, { refresh: false });
66
58
  // Prefer `key` (the field name every other stored CLI credential uses);
67
59
  // fall back to `access_token` — the contract names both.
68
- const key = data.key ?? data.access_token;
60
+ const key = data?.key ?? data?.access_token;
69
61
  if (!key) {
70
- throw new Error('Temp-create response had neither `key` nor `access_token`.');
62
+ throw new CliApiError('INVALID_RESPONSE', 'The temporary account response had neither `key` nor `access_token`.', 200);
71
63
  }
72
64
  return {
73
65
  key,
@@ -1 +1 @@
1
- {"version":3,"file":"temp-auth.js","sourceRoot":"","sources":["../../src/lib/temp-auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"temp-auth.js","sourceRoot":"","sources":["../../src/lib/temp-auth.ts"],"names":[],"mappings":"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"}
@@ -108,24 +108,13 @@ export function planDeclaredTypePackages(projectDir) {
108
108
  }
109
109
  return { specs, missing };
110
110
  }
111
- function npmInstallTypePackages(specs, projectDir) {
112
- const result = spawnSync(process.platform === 'win32' ? 'npm.cmd' : 'npm', ['install', '--no-save', '--no-audit', '--no-fund', '--loglevel', 'error', ...specs], {
113
- cwd: projectDir,
114
- stdio: 'ignore',
115
- shell: process.platform === 'win32',
116
- });
117
- if (result.error)
118
- throw result.error;
119
- if (result.status !== 0)
120
- throw new Error(`npm install exited ${result.status}`);
121
- }
122
111
  /**
123
- * Resolve declared-but-missing type packages. Fail-OPEN by contract: if the
124
- * install cannot run (offline, no npm, a private registry) the typecheck still
125
- * proceeds and reports whatever tsc finds. This step may never be the reason a
126
- * check does not happen.
112
+ * Resolve declared-but-missing type packages with a caller-supplied installer.
113
+ * The CLI's own commands never install into a project (tsk_97979518,
114
+ * pfb_8f0f7cdd04a1): they refuse with missingTypePackagesMessage instead.
115
+ * Fail-open: an installer that throws never blocks the check.
127
116
  */
128
- export function ensureDeclaredTypePackages(projectDir, install = npmInstallTypePackages) {
117
+ export function ensureDeclaredTypePackages(projectDir, install) {
129
118
  const plan = planDeclaredTypePackages(projectDir);
130
119
  if (plan.specs.length === 0)
131
120
  return { ...plan, installed: false };
@@ -137,6 +126,169 @@ export function ensureDeclaredTypePackages(projectDir, install = npmInstallTypeP
137
126
  return { ...plan, installed: false };
138
127
  }
139
128
  }
129
+ /** Why a check did not run: declared type packages are not installed. The
130
+ * typecheck never installs them itself (it would change the project tree and
131
+ * run package scripts). */
132
+ export function missingTypePackagesMessage(missing, projectDir) {
133
+ return `Not checked: this project's declared type packages are not installed (${missing.join(', ')}). `
134
+ + `somewhere typecheck does not install the project's dependencies. Install them (npm install in ${projectDir}), then run it again.`;
135
+ }
136
+ /** Longest a typecheck child may run before it and its children are stopped.
137
+ * SOMEWHERE_TYPECHECK_TIMEOUT_MS overrides it. */
138
+ export function typecheckTimeoutMs() {
139
+ const parsed = Number(process.env.SOMEWHERE_TYPECHECK_TIMEOUT_MS);
140
+ return Number.isFinite(parsed) && parsed > 0 ? Math.floor(parsed) : 300_000;
141
+ }
142
+ /** How long a stopped child tree gets after TERM before KILL, and after KILL
143
+ * before the run is reported. */
144
+ const STOP_GRACE_MS = 2_000;
145
+ /**
146
+ * Run a typecheck child (tsc, or npx fetching it) with a deadline.
147
+ *
148
+ * POSIX: the child leads its own process group. A timeout, Ctrl-C or TERM
149
+ * sends TERM to that group, waits (bounded) for it to empty, sends KILL to
150
+ * what remains, and waits (bounded) again. This reaches descendants that stay
151
+ * in the group; one that moved to another group or session is not reached.
152
+ * If the group still has members after the final wait, the run reports that
153
+ * some processes may still be running instead of claiming they stopped.
154
+ * The group is signalled only after a membership check and no timer outlives
155
+ * the run, which narrows (does not eliminate) the chance of signalling a
156
+ * recycled group id. Windows: `taskkill /T /F` (not exercised by this CLI's
157
+ * tests). `onAbort` runs before the CLI exits on Ctrl-C/TERM, for the
158
+ * caller's temporary files.
159
+ */
160
+ export function runBounded(command, args, cwd, options = {}) {
161
+ const timeoutMs = options.timeoutMs ?? typecheckTimeoutMs();
162
+ return new Promise((resolve) => {
163
+ const posixGroup = process.platform !== 'win32';
164
+ let child;
165
+ try {
166
+ child = spawn(command, args, {
167
+ cwd, env: process.env, stdio: ['ignore', 'pipe', 'pipe'], detached: posixGroup,
168
+ // Windows: tsc.cmd / npx.cmd are batch shims, and since Node 18.20/20.12
169
+ // (CVE-2024-27980) spawning a .cmd/.bat without a shell throws EINVAL.
170
+ // The bundled path runs node directly (process.execPath) and must NOT
171
+ // shell — its arg is a resolved file path that a shell could mis-split.
172
+ shell: /\.(cmd|bat)$/i.test(command),
173
+ });
174
+ }
175
+ catch (err) {
176
+ resolve({ code: null, out: '', stdout: '', error: err instanceof Error ? err : new Error(String(err)), timedOut: false });
177
+ return;
178
+ }
179
+ let out = '', stdout = '', timedOut = false, closed = false, settled = false, aborting = false, stopping = null, stopIncomplete = false;
180
+ let closeCode = null, spawnError;
181
+ const pid = child.pid;
182
+ const treeAlive = () => {
183
+ if (!pid)
184
+ return false;
185
+ if (!posixGroup)
186
+ return !closed;
187
+ try {
188
+ process.kill(-pid, 0);
189
+ return true;
190
+ }
191
+ catch (err) {
192
+ return err.code === 'EPERM';
193
+ }
194
+ };
195
+ const signalTree = (signal) => {
196
+ if (!pid || !treeAlive())
197
+ return;
198
+ if (posixGroup) {
199
+ try {
200
+ process.kill(-pid, signal);
201
+ }
202
+ catch { /* emptied meanwhile */ }
203
+ }
204
+ else {
205
+ spawnSync('taskkill', ['/pid', String(pid), '/T', '/F'], { stdio: 'ignore', windowsHide: true });
206
+ }
207
+ };
208
+ const waitEmpty = async (ms) => {
209
+ const until = Date.now() + ms;
210
+ while (treeAlive() && Date.now() < until)
211
+ await new Promise((r) => setTimeout(r, 50));
212
+ return !treeAlive();
213
+ };
214
+ /** Resolves false when the group still had members after the final wait. */
215
+ const stopTree = () => {
216
+ stopping ??= (async () => {
217
+ signalTree('SIGTERM');
218
+ if (await waitEmpty(STOP_GRACE_MS))
219
+ return true;
220
+ signalTree('SIGKILL');
221
+ return waitEmpty(STOP_GRACE_MS);
222
+ })();
223
+ return stopping;
224
+ };
225
+ const finish = () => {
226
+ // An interrupted run never reports: the CLI exits from onSignal once the
227
+ // tree is stopped and temporary files are removed.
228
+ if (settled || aborting)
229
+ return;
230
+ settled = true;
231
+ clearTimeout(timer);
232
+ process.off('SIGINT', onInt);
233
+ process.off('SIGTERM', onTerm);
234
+ resolve({ code: closeCode, out, stdout, timedOut, ...(spawnError ? { error: spawnError } : {}),
235
+ ...(stopIncomplete && pid ? { stopIncomplete: { pid } } : {}) });
236
+ };
237
+ const onSignal = (exitCode) => {
238
+ if (aborting)
239
+ return;
240
+ aborting = true;
241
+ clearTimeout(timer);
242
+ void stopTree().then((gone) => {
243
+ if (!gone && pid)
244
+ process.stderr.write(`${stopIncompleteMessage(pid)}\n`);
245
+ try {
246
+ options.onAbort?.();
247
+ }
248
+ finally {
249
+ process.exit(exitCode);
250
+ }
251
+ });
252
+ };
253
+ const onInt = () => onSignal(130);
254
+ const onTerm = () => onSignal(143);
255
+ process.on('SIGINT', onInt);
256
+ process.on('SIGTERM', onTerm);
257
+ const timer = setTimeout(() => {
258
+ timedOut = true;
259
+ void stopTree().then(async (gone) => {
260
+ stopIncomplete = !gone;
261
+ // A descendant holding the output pipes can delay 'close'; the tree is
262
+ // gone, so report after a bounded wait either way.
263
+ const until = Date.now() + STOP_GRACE_MS;
264
+ while (!closed && Date.now() < until)
265
+ await new Promise((r) => setTimeout(r, 50));
266
+ finish();
267
+ });
268
+ }, timeoutMs);
269
+ child.stdout?.on('data', (d) => { out += d.toString(); stdout += d.toString(); });
270
+ child.stderr?.on('data', (d) => (out += d.toString()));
271
+ child.on('error', (error) => { spawnError = error; closed = true; if (!timedOut)
272
+ finish(); });
273
+ child.on('close', (code) => {
274
+ closed = true;
275
+ closeCode = code;
276
+ // A timed-out run reports once its tree is stopped (above).
277
+ if (!timedOut)
278
+ finish();
279
+ });
280
+ });
281
+ }
282
+ /** Said instead of "stopped" when processes may have survived the stop. */
283
+ export function stopIncompleteMessage(pid) {
284
+ return `Some typecheck processes did not stop and may still be running (process group ${pid}); check with \`ps -g ${pid}\` and stop them if they are.`;
285
+ }
286
+ export function timedOutMessage(via, run) {
287
+ const seconds = Math.round(typecheckTimeoutMs() / 1000);
288
+ const stopped = run?.stopIncomplete ? `was stopped, but ${stopIncompleteMessage(run.stopIncomplete.pid).replace(/^Some/, 'some')}` : 'was stopped.';
289
+ return `The typecheck did not finish within ${seconds}s and ${stopped}${via === 'npx' ? ' (Fetching TypeScript with npx needs the npm registry.)' : ''} `
290
+ + 'Set SOMEWHERE_TYPECHECK_TIMEOUT_MS to allow longer.';
291
+ }
140
292
  /**
141
293
  * Parse tsc's default (non-pretty) diagnostic lines:
142
294
  * path/to/file.ts(12,5): error TS2304: Cannot find name 'sanitizeForSpeech'.
@@ -171,24 +323,38 @@ export function runTypecheck(projectDir, options = {}) {
171
323
  const message = error instanceof Error ? error.message : String(error);
172
324
  return Promise.resolve({ ok: false, errors: [{ file: 'db/schema.ts', line: 1, column: 1, code: 'SCHEMA_DECLARATION_INVALID', message }], via: 'bundled', raw: message });
173
325
  }
174
- // Declared type packages first, so the FIRST check is a real verdict rather
175
- // than a report that the tree is not installed yet.
176
- if (options.installTypePackages !== false) {
326
+ // Only a caller-supplied installer resolves declared type packages; the
327
+ // default never installs into the project.
328
+ if (options.installTypePackages) {
177
329
  ensureDeclaredTypePackages(projectDir, options.installTypePackages);
178
330
  }
179
331
  const { command, args, via } = resolveTsc(projectDir);
332
+ return runTypecheckWith(projectDir, command, args, via, declaredData);
333
+ }
334
+ /** Announce, on stderr so JSON on stdout is untouched, that TypeScript is
335
+ * about to be fetched with npx: a network step that also writes npm's cache.
336
+ * The project's own dependencies are never installed. */
337
+ export function announceNpxTypeScriptFetch(version) {
338
+ process.stderr.write(`TypeScript is not installed in this project; fetching typescript@${version} with npx (needs the npm registry; npm keeps it in its cache). Nothing is installed into the project.\n`);
339
+ }
340
+ /** How this project's typecheck will get its compiler: 'npx' means a
341
+ * network fetch of TypeScript, which commands announce before running. */
342
+ export function typecheckCompilerSource(projectDir) {
343
+ return resolveTsc(projectDir).via;
344
+ }
345
+ async function runTypecheckWith(projectDir, command, args, via, declaredData) {
180
346
  // --pretty false → stable, parseable one-line diagnostics regardless of TTY.
181
347
  const fullArgs = typecheckArgs(args);
182
348
  let overlay;
183
349
  if (declaredData) {
184
350
  // TypeScript resolves JSONC, inherited configs and explicit files itself.
185
351
  // Preserve that complete file set, adding only our declaration and schema.
186
- const config = spawnSync(command, [...args, '--project', SCAFFOLD_TSCONFIG_FILENAME, '--showConfig'], {
187
- cwd: projectDir, encoding: 'utf8', shell: /\.(cmd|bat)$/i.test(command),
188
- });
189
- if (config.error || config.status !== 0) {
190
- return Promise.resolve({ ok: false, errors: [], via, raw: config.stdout + config.stderr,
191
- ...(config.error ? { spawnError: config.error.message } : {}) });
352
+ const config = await runBounded(command, [...args, '--project', SCAFFOLD_TSCONFIG_FILENAME, '--showConfig'], projectDir);
353
+ if (config.timedOut)
354
+ return { ok: false, errors: [], via, raw: config.out, spawnError: timedOutMessage(via, config) };
355
+ if (config.error || config.code !== 0) {
356
+ return { ok: false, errors: [], via, raw: config.out,
357
+ ...(config.error ? { spawnError: config.error.message } : {}) };
192
358
  }
193
359
  try {
194
360
  const parsed = JSON.parse(config.stdout);
@@ -211,63 +377,28 @@ export function runTypecheck(projectDir, options = {}) {
211
377
  catch (error) {
212
378
  if (overlay)
213
379
  rmSync(overlay, { force: true });
214
- return Promise.resolve({ ok: false, errors: [], via, raw: error instanceof Error ? error.message : String(error) });
380
+ return { ok: false, errors: [], via, raw: error instanceof Error ? error.message : String(error) };
215
381
  }
216
382
  }
217
383
  const cleanup = () => { if (overlay)
218
384
  rmSync(overlay, { force: true }); };
219
- return new Promise((resolve) => {
220
- let child;
221
- try {
222
- child = spawn(command, fullArgs, {
223
- cwd: projectDir,
224
- env: process.env,
225
- stdio: ['ignore', 'pipe', 'pipe'],
226
- // Windows: tsc.cmd / npx.cmd are batch shims, and since Node 18.20/20.12
227
- // (CVE-2024-27980) spawning a .cmd/.bat without a shell throws EINVAL.
228
- // The bundled path runs node directly (process.execPath) and must NOT
229
- // shell — its arg is a resolved file path that a shell could mis-split.
230
- shell: /\.(cmd|bat)$/i.test(command),
231
- });
232
- }
233
- catch (err) {
234
- cleanup();
235
- resolve({
236
- ok: false,
237
- errors: [],
238
- via,
239
- raw: '',
240
- spawnError: err instanceof Error ? err.message : String(err),
241
- });
242
- return;
243
- }
244
- let out = '';
245
- child.stdout?.on('data', (d) => (out += d.toString()));
246
- child.stderr?.on('data', (d) => (out += d.toString()));
247
- child.on('error', (err) => {
248
- cleanup();
249
- resolve({ ok: false, errors: [], via, raw: out, spawnError: err.message });
250
- });
251
- child.on('close', (code) => {
252
- cleanup();
253
- const allErrors = parseTscOutput(out);
254
- // Drop locally-unresolvable bare-import diagnostics (they resolve on
255
- // deploy via esm.sh) so they don't bury the real bugs. Undefined symbols
256
- // (TS2304) survive the filter.
257
- const errors = allErrors.filter((e) => !UNRESOLVED_DEP_CODES.has(e.code)
258
- || /['"]somewhere(?::data|:files|\/db)['"]/.test(e.message));
259
- // tsc exits non-zero whenever it emits diagnostics. If it failed but we
260
- // parsed NONE (a config/crash failure, not type errors), don't claim
261
- // "clean" — surface it via raw output so the user sees something's wrong.
262
- const unexplainedFailure = code !== 0 && allErrors.length === 0;
263
- resolve({
264
- ok: errors.length === 0 && !unexplainedFailure,
265
- errors,
266
- via,
267
- raw: out,
268
- });
269
- });
270
- });
385
+ const run = await runBounded(command, fullArgs, projectDir, { onAbort: cleanup });
386
+ cleanup();
387
+ if (run.timedOut)
388
+ return { ok: false, errors: [], via, raw: run.out, spawnError: timedOutMessage(via, run) };
389
+ if (run.error)
390
+ return { ok: false, errors: [], via, raw: run.out, spawnError: run.error.message };
391
+ const allErrors = parseTscOutput(run.out);
392
+ // Drop locally-unresolvable bare-import diagnostics (they resolve on
393
+ // deploy via esm.sh) so they don't bury the real bugs. Undefined symbols
394
+ // (TS2304) survive the filter.
395
+ const errors = allErrors.filter((e) => !UNRESOLVED_DEP_CODES.has(e.code)
396
+ || /['"]somewhere(?::data|:files|\/db)['"]/.test(e.message));
397
+ // tsc exits non-zero whenever it emits diagnostics. If it failed but we
398
+ // parsed NONE (a config/crash failure, not type errors), don't claim
399
+ // "clean" — surface it via raw output so the user sees something's wrong.
400
+ const unexplainedFailure = run.code !== 0 && allErrors.length === 0;
401
+ return { ok: errors.length === 0 && !unexplainedFailure, errors, via, raw: run.out };
271
402
  }
272
403
  /** Where this module lives — used by tests that need the CLI package root. */
273
404
  export function cliPackageRoot() {
@@ -1 +1 @@
1
- {"version":3,"file":"typecheck.js","sourceRoot":"","sources":["../../src/lib/typecheck.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typecheck.js","sourceRoot":"","sources":["../../src/lib/typecheck.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@somewhere-cloud/cli",
3
- "version": "0.38.5",
3
+ "version": "0.38.6",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@somewhere-cloud/cli",
9
- "version": "0.38.5",
9
+ "version": "0.38.6",
10
10
  "bundleDependencies": [
11
11
  "@modelcontextprotocol/sdk",
12
12
  "chokidar",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@somewhere-cloud/cli",
3
- "version": "0.38.5",
3
+ "version": "0.38.6",
4
4
  "description": "CLI for somewhere.cloud — auth, projects, deploy, pull, promote, db, logs, env, MCP bridge.",
5
5
  "keywords": [
6
6
  "somewhere",