@gen3/workspaces 0.12.72 → 0.12.74

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.
@@ -1 +1 @@
1
- {"version":3,"file":"workspaceAssetsApi.d.ts","sourceRoot":"","sources":["../../../src/api/workspaceAssetsApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AA+J5D,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,wBAExE"}
1
+ {"version":3,"file":"workspaceAssetsApi.d.ts","sourceRoot":"","sources":["../../../src/api/workspaceAssetsApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAoK5D,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,wBAExE"}
@@ -18,6 +18,7 @@
18
18
  import fs from 'fs';
19
19
  import nodePath from 'path';
20
20
  import { GEN3_COMMONS_NAME } from '@gen3/core';
21
+ import { getAccessToken } from '@gen3/frontend/server';
21
22
  import { createWorkspaceAssetsHandler, } from '../server/workspaceAssetsHandler';
22
23
  const CONFIG_ROOT = process.env.GEN3_FRONTEND_CONFIGURATION_ROOT || './config/';
23
24
  const CONFIG_FILENAME = 'workspaceAssets.json';
@@ -40,8 +41,12 @@ const DEFAULT_OPTIONS = {
40
41
  // Optional internal k8s service base URL for the extension proxy. When set,
41
42
  // proxy requests target this address directly instead of routing through the
42
43
  // ingress (avoiding self-signed-cert issues). Readable from the JSON config
43
- // file or the WORKSPACE_EXTENSION_PROXY_BASE_URL env var.
44
- serverExtensionProxyBaseUrl: 'http://workspace-proxy-service:8080',
44
+ // file or the WORKSPACE_PROXY_URL env var.
45
+ serverExtensionProxyBaseUrl: process.env.WORKSPACE_PROXY_URL || undefined,
46
+ // Direct calls to serverExtensionProxyBaseUrl bypass nginx, which normally
47
+ // injects the X-Gen3-User-ID/REMOTE_USER headers workspace-proxy requires —
48
+ // reuse this app's cookie extraction to inject them explicitly instead.
49
+ getToken: (req) => getAccessToken(req.headers['cookie'] ?? '') ?? null,
45
50
  // in-browser Pyodide kernel must not be offered alongside it.
46
51
  additionalDisabledExtensions: [
47
52
  '@jupyterlite/pyodide-kernel-extension:kernel',
@@ -1 +1 @@
1
- {"version":3,"file":"workspaceAssetsApi.js","sourceRoot":"","sources":["../../../src/api/workspaceAssetsApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspaceAssetsApi.js","sourceRoot":"","sources":["../../../src/api/workspaceAssetsApi.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"workspaceAssetsHandler.d.ts","sourceRoot":"","sources":["../../../src/server/workspaceAssetsHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAY5D,MAAM,WAAW,6BAA6B;IAC5C,6HAA6H;IAC7H,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,4BAA4B,CAAC,EAAE,MAAM,EAAE,CAAC;IACxC,6GAA6G;IAC7G,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,MAAM,GAAG,IAAI,CAAC;IAClD;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uHAAuH;IACvH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;OAWG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;;;;;;;;;OAaG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC;AAiWD,wBAAgB,4BAA4B,CAC1C,OAAO,CAAC,EAAE,6BAA6B,SA+DhC,cAAc,OACd,eAAe,KACnB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAkKxB;AAYD,QAAA,MAAM,cAAc,QACb,cAAc,OACd,eAAe,KACnB,OAAO,CAAC,IAAI,CAAC,GAAG,IAKlB,CAAC;eAEa,cAAc"}
1
+ {"version":3,"file":"workspaceAssetsHandler.d.ts","sourceRoot":"","sources":["../../../src/server/workspaceAssetsHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAY5D,MAAM,WAAW,6BAA6B;IAC5C,6HAA6H;IAC7H,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,4BAA4B,CAAC,EAAE,MAAM,EAAE,CAAC;IACxC,6GAA6G;IAC7G,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,MAAM,GAAG,IAAI,CAAC;IAClD;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uHAAuH;IACvH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;OAWG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;;;;;;;;;OAaG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC;AA2aD,wBAAgB,4BAA4B,CAC1C,OAAO,CAAC,EAAE,6BAA6B,SA+DhC,cAAc,OACd,eAAe,KACnB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAiKxB;AAYD,QAAA,MAAM,cAAc,QACb,cAAc,OACd,eAAe,KACnB,OAAO,CAAC,IAAI,CAAC,GAAG,IAKlB,CAAC;eAEa,cAAc"}
@@ -233,29 +233,62 @@ async function proxyServerExtension(req, res, targetUrl, getToken) {
233
233
  // Inject identity headers so workspace-proxy auth passes.
234
234
  // Direct server-side calls bypass nginx (which normally injects X-Gen3-User-ID /
235
235
  // REMOTE_USER from the validated access_token), so we must add them explicitly.
236
- // only add in production mode
237
- // TODO: refactor this to handle development mode better
238
- if (process.env.NODE_ENV === 'production') {
239
- const jwt = getToken ? getToken(req) : extractTokenFallback(req);
240
- if (jwt) {
241
- const claims = decodeJwtClaims(jwt);
242
- const rawUsername = claims?.sub ?? claims?.preferred_username ?? claims?.username;
243
- if (typeof rawUsername === 'string') {
244
- const safeUsername = rawUsername.replace(/[\r\n]/g, '');
245
- const safeJwt = jwt.replace(/[\r\n]/g, '');
246
- forwardHeaders['Authorization'] = `Bearer ${safeJwt}`;
247
- forwardHeaders['REMOTE_USER'] = safeUsername;
248
- forwardHeaders['X-Gen3-User-ID'] = safeUsername;
249
- }
236
+ // SECURITY: decodeJwtClaims below does not verify the JWT signature — it relies on
237
+ // Ambassador/revproxy having already done so before this code path is reached. When
238
+ // serverExtensionProxyBaseUrl (WORKSPACE_PROXY_URL) targets workspace-proxy directly,
239
+ // that verification is skipped entirely, so a caller could supply a correctly-shaped
240
+ // but unsigned/forged JWT to impersonate another user via REMOTE_USER/X-Gen3-User-ID.
241
+ // Only point serverExtensionProxyBaseUrl at a network path a user's own request cannot
242
+ // otherwise forge, or add real signature verification (e.g. against Fence's JWKS)
243
+ // here before trusting these claims.
244
+ // --- auth header injection with diagnostic logging ---
245
+ const tokenSource = getToken ? 'getToken(injected)' : 'extractTokenFallback';
246
+ const jwt = getToken ? getToken(req) : extractTokenFallback(req);
247
+ // Log incoming auth signals so we can diagnose missing REMOTE_USER / 502s.
248
+ const hasBearerHeader = typeof req.headers['authorization'] === 'string' &&
249
+ req.headers['authorization'].startsWith('Bearer ');
250
+ const cookieHeader = req.headers['cookie'] ?? '';
251
+ const hasAccessTokenCookie = /(?:^|;\s*)access_token=/.test(cookieHeader);
252
+ const cookieNames = cookieHeader
253
+ .split(';')
254
+ .map((p) => p.trim().split('=')[0])
255
+ .filter(Boolean);
256
+ console.warn(`[workspace-assets] proxy auth-diag: tokenSource=${tokenSource} jwtFound=${!!jwt}` +
257
+ ` hasBearerHeader=${hasBearerHeader} hasAccessTokenCookie=${hasAccessTokenCookie}` +
258
+ ` cookieNames=[${cookieNames.join(',')}]`);
259
+ if (jwt) {
260
+ const claims = decodeJwtClaims(jwt);
261
+ const rawUsername = claims?.sub ?? claims?.preferred_username ?? claims?.username;
262
+ if (typeof rawUsername === 'string') {
263
+ const safeUsername = rawUsername.replace(/[\r\n]/g, '');
264
+ const safeJwt = jwt.replace(/[\r\n]/g, '');
265
+ forwardHeaders['Authorization'] = `Bearer ${safeJwt}`;
266
+ forwardHeaders['REMOTE_USER'] = safeUsername;
267
+ forwardHeaders['X-Gen3-User-ID'] = safeUsername;
268
+ console.warn(`[workspace-assets] proxy auth-diag: injected REMOTE_USER/X-Gen3-User-ID for sub="${safeUsername}"` +
269
+ ` claimsKeys=[${Object.keys(claims ?? {}).join(',')}]`);
270
+ }
271
+ else {
272
+ console.warn(`[workspace-assets] proxy auth-diag: JWT decoded but no sub/preferred_username/username claim found` +
273
+ ` claimsKeys=[${Object.keys(claims ?? {}).join(',')}]` +
274
+ ` (REMOTE_USER NOT injected — workspace-proxy will likely reject)`);
250
275
  }
251
276
  }
277
+ else {
278
+ console.warn(`[workspace-assets] proxy auth-diag: no JWT found via ${tokenSource}` +
279
+ ` — REMOTE_USER/X-Gen3-User-ID NOT injected — workspace-proxy will likely 502`);
280
+ }
281
+ // Log the set of header keys being forwarded (no values — headers can contain tokens).
282
+ console.warn(`[workspace-assets] proxy forwarding headers: [${Object.keys(forwardHeaders).join(',')}]`);
252
283
  const method = (req.method || 'GET').toUpperCase();
253
284
  let body;
254
285
  if (!['GET', 'HEAD'].includes(method)) {
255
286
  try {
256
287
  body = await readBody(req);
257
288
  }
258
- catch {
289
+ catch (error) {
290
+ const message = error instanceof Error ? error.message : String(error);
291
+ console.error(`[workspace-assets] failed to read request body for ${method} ${targetUrl}: ${message}`);
259
292
  res.status(500).end('Failed to read request body');
260
293
  return;
261
294
  }
@@ -263,7 +296,8 @@ async function proxyServerExtension(req, res, targetUrl, getToken) {
263
296
  forwardHeaders['content-length'] = String(body.length);
264
297
  }
265
298
  }
266
- console.log('[workspace-assets] proxying extension API to', targetUrl);
299
+ const startedAt = Date.now();
300
+ console.warn(`[workspace-assets] proxying ${method} ${targetUrl}${body?.length ? ` (body: ${body.length} bytes)` : ''}`);
267
301
  await new Promise((resolve) => {
268
302
  const parsed = new URL(targetUrl);
269
303
  const transport = parsed.protocol === 'https:' ? https : http;
@@ -273,25 +307,43 @@ async function proxyServerExtension(req, res, targetUrl, getToken) {
273
307
  port: parsed.port || (parsed.protocol === 'https:' ? 443 : 80),
274
308
  path: parsed.pathname + parsed.search,
275
309
  headers: forwardHeaders,
310
+ // 30-second socket timeout — without this, a stalled upstream holds the
311
+ // connection open indefinitely and the client sees no response.
312
+ timeout: 30_000,
276
313
  };
277
314
  const proxyReq = transport.request(reqOptions, (proxyRes) => {
278
- res.status(proxyRes.statusCode ?? 502);
315
+ const statusCode = proxyRes.statusCode ?? 502;
316
+ res.status(statusCode);
279
317
  const skip = new Set(['transfer-encoding', 'content-length']);
280
318
  for (const [key, value] of Object.entries(proxyRes.headers)) {
281
319
  if (!skip.has(key.toLowerCase()) && value !== undefined) {
282
320
  res.setHeader(key, value);
283
321
  }
284
322
  }
323
+ const log = statusCode >= 400 ? console.error : console.warn;
324
+ log(`[workspace-assets] ${method} ${targetUrl} -> ${statusCode} (${Date.now() - startedAt}ms)`);
325
+ if (statusCode >= 400) {
326
+ // Log upstream response headers for non-2xx to surface auth/routing rejections.
327
+ const upstreamHeaders = Object.entries(proxyRes.headers)
328
+ .filter(([k]) => !k.toLowerCase().includes('cookie'))
329
+ .map(([k, v]) => `${k}:${Array.isArray(v) ? v.join(',') : v}`)
330
+ .join(' | ');
331
+ console.error(`[workspace-assets] upstream response headers: ${upstreamHeaders}`);
332
+ }
285
333
  proxyRes.pipe(res, { end: true });
286
334
  proxyRes.on('end', resolve);
287
335
  });
288
336
  proxyReq.on('error', (err) => {
289
- console.error('[workspace-assets] extension proxy failed for', targetUrl, err.message);
337
+ console.error(`[workspace-assets] extension proxy failed for ${method} ${targetUrl} after ${Date.now() - startedAt}ms: ${err.code ?? 'UNKNOWN'} ${err.message}`);
290
338
  if (!res.headersSent) {
291
339
  res.status(502).end('Extension proxy unreachable');
292
340
  }
293
341
  resolve();
294
342
  });
343
+ proxyReq.on('timeout', () => {
344
+ console.error(`[workspace-assets] extension proxy timed out for ${method} ${targetUrl} after ${Date.now() - startedAt}ms`);
345
+ proxyReq.destroy();
346
+ });
295
347
  if (body?.length) {
296
348
  proxyReq.write(body);
297
349
  }
@@ -400,7 +452,6 @@ export function createWorkspaceAssetsHandler(options) {
400
452
  return `${proto}://${host}`;
401
453
  })();
402
454
  const targetUrl = `${proxyBase}${serverExtensionProxyPath}/${extensionPath}${qs}`;
403
- console.log('[workspace-assets] proxying extension API to', targetUrl);
404
455
  return proxyServerExtension(req, res, targetUrl, getToken);
405
456
  }
406
457
  const allowedFiles = allowedFilesByTier[tier];
@@ -490,7 +541,7 @@ export function createWorkspaceAssetsHandler(options) {
490
541
  /**
491
542
  * Default handler — for one-liner re-exports.
492
543
  *
493
- * Built lazily on first request: `createWorkspaceAssetsHandler` walks both tier
544
+ * Built lazily on the first request: `createWorkspaceAssetsHandler` walks both tier
494
545
  * asset trees at factory time, and this module is imported transitively by
495
546
  * `next.config.js` (via `@gen3/workspaces/server`), where that I/O is wasted.
496
547
  */
@@ -1 +1 @@
1
- {"version":3,"file":"workspaceAssetsHandler.js","sourceRoot":"","sources":["../../../src/server/workspaceAssetsHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspaceAssetsHandler.js","sourceRoot":"","sources":["../../../src/server/workspaceAssetsHandler.ts"],"names":[],"mappings":"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"}
@@ -336,22 +336,41 @@ async function proxyServerExtension(req, res, targetUrl, getToken) {
336
336
  // Inject identity headers so workspace-proxy auth passes.
337
337
  // Direct server-side calls bypass nginx (which normally injects X-Gen3-User-ID /
338
338
  // REMOTE_USER from the validated access_token), so we must add them explicitly.
339
- // only add in production mode
340
- // TODO: refactor this to handle development mode better
341
- if (process.env.NODE_ENV === 'production') {
342
- const jwt = getToken ? getToken(req) : extractTokenFallback(req);
343
- if (jwt) {
344
- const claims = decodeJwtClaims(jwt);
345
- const rawUsername = claims?.sub ?? claims?.preferred_username ?? claims?.username;
346
- if (typeof rawUsername === 'string') {
347
- const safeUsername = rawUsername.replace(/[\r\n]/g, '');
348
- const safeJwt = jwt.replace(/[\r\n]/g, '');
349
- forwardHeaders['Authorization'] = `Bearer ${safeJwt}`;
350
- forwardHeaders['REMOTE_USER'] = safeUsername;
351
- forwardHeaders['X-Gen3-User-ID'] = safeUsername;
352
- }
339
+ // SECURITY: decodeJwtClaims below does not verify the JWT signature — it relies on
340
+ // Ambassador/revproxy having already done so before this code path is reached. When
341
+ // serverExtensionProxyBaseUrl (WORKSPACE_PROXY_URL) targets workspace-proxy directly,
342
+ // that verification is skipped entirely, so a caller could supply a correctly-shaped
343
+ // but unsigned/forged JWT to impersonate another user via REMOTE_USER/X-Gen3-User-ID.
344
+ // Only point serverExtensionProxyBaseUrl at a network path a user's own request cannot
345
+ // otherwise forge, or add real signature verification (e.g. against Fence's JWKS)
346
+ // here before trusting these claims.
347
+ // --- auth header injection with diagnostic logging ---
348
+ const tokenSource = getToken ? 'getToken(injected)' : 'extractTokenFallback';
349
+ const jwt = getToken ? getToken(req) : extractTokenFallback(req);
350
+ // Log incoming auth signals so we can diagnose missing REMOTE_USER / 502s.
351
+ const hasBearerHeader = typeof req.headers['authorization'] === 'string' && req.headers['authorization'].startsWith('Bearer ');
352
+ const cookieHeader = req.headers['cookie'] ?? '';
353
+ const hasAccessTokenCookie = /(?:^|;\s*)access_token=/.test(cookieHeader);
354
+ const cookieNames = cookieHeader.split(';').map((p)=>p.trim().split('=')[0]).filter(Boolean);
355
+ console.warn(`[workspace-assets] proxy auth-diag: tokenSource=${tokenSource} jwtFound=${!!jwt}` + ` hasBearerHeader=${hasBearerHeader} hasAccessTokenCookie=${hasAccessTokenCookie}` + ` cookieNames=[${cookieNames.join(',')}]`);
356
+ if (jwt) {
357
+ const claims = decodeJwtClaims(jwt);
358
+ const rawUsername = claims?.sub ?? claims?.preferred_username ?? claims?.username;
359
+ if (typeof rawUsername === 'string') {
360
+ const safeUsername = rawUsername.replace(/[\r\n]/g, '');
361
+ const safeJwt = jwt.replace(/[\r\n]/g, '');
362
+ forwardHeaders['Authorization'] = `Bearer ${safeJwt}`;
363
+ forwardHeaders['REMOTE_USER'] = safeUsername;
364
+ forwardHeaders['X-Gen3-User-ID'] = safeUsername;
365
+ console.warn(`[workspace-assets] proxy auth-diag: injected REMOTE_USER/X-Gen3-User-ID for sub="${safeUsername}"` + ` claimsKeys=[${Object.keys(claims ?? {}).join(',')}]`);
366
+ } else {
367
+ console.warn(`[workspace-assets] proxy auth-diag: JWT decoded but no sub/preferred_username/username claim found` + ` claimsKeys=[${Object.keys(claims ?? {}).join(',')}]` + ` (REMOTE_USER NOT injected — workspace-proxy will likely reject)`);
353
368
  }
369
+ } else {
370
+ console.warn(`[workspace-assets] proxy auth-diag: no JWT found via ${tokenSource}` + ` — REMOTE_USER/X-Gen3-User-ID NOT injected — workspace-proxy will likely 502`);
354
371
  }
372
+ // Log the set of header keys being forwarded (no values — headers can contain tokens).
373
+ console.warn(`[workspace-assets] proxy forwarding headers: [${Object.keys(forwardHeaders).join(',')}]`);
355
374
  const method = (req.method || 'GET').toUpperCase();
356
375
  let body;
357
376
  if (![
@@ -360,7 +379,9 @@ async function proxyServerExtension(req, res, targetUrl, getToken) {
360
379
  ].includes(method)) {
361
380
  try {
362
381
  body = await readBody$2(req);
363
- } catch {
382
+ } catch (error) {
383
+ const message = error instanceof Error ? error.message : String(error);
384
+ console.error(`[workspace-assets] failed to read request body for ${method} ${targetUrl}: ${message}`);
364
385
  res.status(500).end('Failed to read request body');
365
386
  return;
366
387
  }
@@ -368,7 +389,8 @@ async function proxyServerExtension(req, res, targetUrl, getToken) {
368
389
  forwardHeaders['content-length'] = String(body.length);
369
390
  }
370
391
  }
371
- console.log('[workspace-assets] proxying extension API to', targetUrl);
392
+ const startedAt = Date.now();
393
+ console.warn(`[workspace-assets] proxying ${method} ${targetUrl}${body?.length ? ` (body: ${body.length} bytes)` : ''}`);
372
394
  await new Promise((resolve)=>{
373
395
  const parsed = new URL(targetUrl);
374
396
  const transport = parsed.protocol === 'https:' ? https : http;
@@ -377,10 +399,14 @@ async function proxyServerExtension(req, res, targetUrl, getToken) {
377
399
  hostname: parsed.hostname,
378
400
  port: parsed.port || (parsed.protocol === 'https:' ? 443 : 80),
379
401
  path: parsed.pathname + parsed.search,
380
- headers: forwardHeaders
402
+ headers: forwardHeaders,
403
+ // 30-second socket timeout — without this, a stalled upstream holds the
404
+ // connection open indefinitely and the client sees no response.
405
+ timeout: 30_000
381
406
  };
382
407
  const proxyReq = transport.request(reqOptions, (proxyRes)=>{
383
- res.status(proxyRes.statusCode ?? 502);
408
+ const statusCode = proxyRes.statusCode ?? 502;
409
+ res.status(statusCode);
384
410
  const skip = new Set([
385
411
  'transfer-encoding',
386
412
  'content-length'
@@ -390,18 +416,29 @@ async function proxyServerExtension(req, res, targetUrl, getToken) {
390
416
  res.setHeader(key, value);
391
417
  }
392
418
  }
419
+ const log = statusCode >= 400 ? console.error : console.warn;
420
+ log(`[workspace-assets] ${method} ${targetUrl} -> ${statusCode} (${Date.now() - startedAt}ms)`);
421
+ if (statusCode >= 400) {
422
+ // Log upstream response headers for non-2xx to surface auth/routing rejections.
423
+ const upstreamHeaders = Object.entries(proxyRes.headers).filter(([k])=>!k.toLowerCase().includes('cookie')).map(([k, v])=>`${k}:${Array.isArray(v) ? v.join(',') : v}`).join(' | ');
424
+ console.error(`[workspace-assets] upstream response headers: ${upstreamHeaders}`);
425
+ }
393
426
  proxyRes.pipe(res, {
394
427
  end: true
395
428
  });
396
429
  proxyRes.on('end', resolve);
397
430
  });
398
431
  proxyReq.on('error', (err)=>{
399
- console.error('[workspace-assets] extension proxy failed for', targetUrl, err.message);
432
+ console.error(`[workspace-assets] extension proxy failed for ${method} ${targetUrl} after ${Date.now() - startedAt}ms: ${err.code ?? 'UNKNOWN'} ${err.message}`);
400
433
  if (!res.headersSent) {
401
434
  res.status(502).end('Extension proxy unreachable');
402
435
  }
403
436
  resolve();
404
437
  });
438
+ proxyReq.on('timeout', ()=>{
439
+ console.error(`[workspace-assets] extension proxy timed out for ${method} ${targetUrl} after ${Date.now() - startedAt}ms`);
440
+ proxyReq.destroy();
441
+ });
405
442
  if (body?.length) {
406
443
  proxyReq.write(body);
407
444
  }
@@ -496,7 +533,6 @@ function createWorkspaceAssetsHandler(options) {
496
533
  return `${proto}://${host}`;
497
534
  })();
498
535
  const targetUrl = `${proxyBase}${serverExtensionProxyPath}/${extensionPath}${qs}`;
499
- console.log('[workspace-assets] proxying extension API to', targetUrl);
500
536
  return proxyServerExtension(req, res, targetUrl, getToken);
501
537
  }
502
538
  const allowedFiles = allowedFilesByTier[tier];
@@ -1187,8 +1223,12 @@ const DEFAULT_OPTIONS = {
1187
1223
  // Optional internal k8s service base URL for the extension proxy. When set,
1188
1224
  // proxy requests target this address directly instead of routing through the
1189
1225
  // ingress (avoiding self-signed-cert issues). Readable from the JSON config
1190
- // file or the WORKSPACE_EXTENSION_PROXY_BASE_URL env var.
1191
- serverExtensionProxyBaseUrl: 'http://workspace-proxy-service:8080',
1226
+ // file or the WORKSPACE_PROXY_URL env var.
1227
+ serverExtensionProxyBaseUrl: process.env.WORKSPACE_PROXY_URL || undefined,
1228
+ // Direct calls to serverExtensionProxyBaseUrl bypass nginx, which normally
1229
+ // injects the X-Gen3-User-ID/REMOTE_USER headers workspace-proxy requires —
1230
+ // reuse this app's cookie extraction to inject them explicitly instead.
1231
+ getToken: (req)=>server$1.getAccessToken(req.headers['cookie'] ?? '') ?? null,
1192
1232
  // in-browser Pyodide kernel must not be offered alongside it.
1193
1233
  additionalDisabledExtensions: [
1194
1234
  '@jupyterlite/pyodide-kernel-extension:kernel'