- cloud: resolves userId from the authenticated session and builds a [userOrgScope, orgScope] stack via createScopedExecutor(userId, orgId, orgName). userId threaded through execution-stack, mcp-session, and MCP dispatch init. - cloud env refactor: deletes the lazy Proxy apps/cloud/src/env.ts in favor of cloudflare:workers env imported at call sites; adds env-augment.d.ts to type secrets not present in generated wrangler types. - cloud/server.ts: env-guarded OTEL wiring (skips instrument() when AXIOM_TOKEN absent); captures rawFetch before instrument() mutates it so dev requests still land on the Hono app. - cloud/services/db.ts: prefers DATABASE_URL over the hyperdrive proxy so local dev works without the tunnel. - vite.config.ts: devCrashGuard plugin that prints uncaught Worker errors with a stable exit. - hosts/mcp: optional debug flag surfaces verbose session logging, wired up from cloud mcp-session. - local/examples/marketing: migrated to scopes: [scope].
Showing the changes to apps/cloud/src/observability.ts (1 of 25 files). Show all
Unified · Split
| @@ -21,6 +21,9 @@ export const ErrorCaptureLive: Layer.Layer<ErrorCapture> = Layer.succeed( · 20 unmodified lines | ||
| 21 | 21 | captureException: (cause) => |
| 22 | 22 | Effect.sync(() => { |
| 23 | 23 | const squashed = Cause.squash(cause); |
| 24 | + // Mirror to console so dev terminals see the defect; Sentry gets the | |
| 25 | + // full structured cause for production correlation. | |
| 26 | + console.error("[api] unhandled cause:", Cause.pretty(cause)); | |
| 24 | 27 | const eventId = Sentry.captureException(squashed, (scope) => { |
| 25 | 28 | scope.setExtra("cause", Cause.pretty(cause)); |
| 26 | 29 | return scope; |