@kadoa/mcp 0.3.6-rc.1 → 0.3.6-rc.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.
Files changed (2) hide show
  1. package/dist/index.js +29 -3
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -53948,6 +53948,14 @@ function generatePKCE() {
53948
53948
  const challenge = createHash2("sha256").update(verifier).digest("base64url");
53949
53949
  return { verifier, challenge };
53950
53950
  }
53951
+ function jwtClaims(jwt2) {
53952
+ try {
53953
+ const payload = JSON.parse(Buffer.from(jwt2.split(".")[1], "base64url").toString());
53954
+ return { email: payload.email, sub: payload.sub };
53955
+ } catch {
53956
+ return {};
53957
+ }
53958
+ }
53951
53959
  async function exchangeSupabaseCode(code, codeVerifier) {
53952
53960
  const supabaseUrl = process.env.SUPABASE_URL;
53953
53961
  if (!supabaseUrl)
@@ -54203,6 +54211,8 @@ class KadoaOAuthProvider {
54203
54211
  clientId: entry.clientId
54204
54212
  });
54205
54213
  authCodes.delete(authorizationCode);
54214
+ const claims = jwtClaims(entry.supabaseJwt);
54215
+ console.log(`[AUTH] LOGIN: tokens issued (email=${claims.email}, team=${entry.teamId}, token=${accessToken.slice(0, 12)}..., ttl=${ACCESS_TOKEN_TTL}s, active_sessions=${accessTokens.size})`);
54206
54216
  return {
54207
54217
  access_token: accessToken,
54208
54218
  token_type: "bearer",
@@ -54212,8 +54222,10 @@ class KadoaOAuthProvider {
54212
54222
  }
54213
54223
  async exchangeRefreshToken(_client, refreshToken) {
54214
54224
  const entry = refreshTokens.get(refreshToken);
54215
- if (!entry)
54225
+ if (!entry) {
54226
+ console.error(`[AUTH] REFRESH_FAIL: unknown refresh token (token=${refreshToken.slice(0, 12)}..., active_sessions=${refreshTokens.size})`);
54216
54227
  throw new Error("Unknown refresh token");
54228
+ }
54217
54229
  refreshTokens.delete(refreshToken);
54218
54230
  let { supabaseJwt, supabaseRefreshToken } = entry;
54219
54231
  try {
@@ -54231,9 +54243,18 @@ class KadoaOAuthProvider {
54231
54243
  const data = await res.json();
54232
54244
  supabaseJwt = data.access_token;
54233
54245
  supabaseRefreshToken = data.refresh_token;
54246
+ const newClaims = jwtClaims(supabaseJwt);
54247
+ console.log(`[AUTH] REFRESH_OK: Supabase JWT refreshed (email=${newClaims.email}, team=${entry.teamId})`);
54248
+ } else {
54249
+ const body = await res.text().catch(() => "");
54250
+ const claims = jwtClaims(entry.supabaseJwt);
54251
+ console.error(`[AUTH] REFRESH_WARN: Supabase refresh failed HTTP ${res.status} (email=${claims.email}, team=${entry.teamId}): ${body.slice(0, 200)}`);
54234
54252
  }
54235
54253
  }
54236
- } catch {}
54254
+ } catch (err) {
54255
+ const claims = jwtClaims(entry.supabaseJwt);
54256
+ console.error(`[AUTH] REFRESH_WARN: Supabase refresh threw (email=${claims.email}, team=${entry.teamId}):`, err);
54257
+ }
54237
54258
  const newAccessToken = randomToken();
54238
54259
  const newRefreshToken = randomToken();
54239
54260
  const expiresAt = Date.now() + ACCESS_TOKEN_TTL * 1000;
@@ -54268,9 +54289,14 @@ class KadoaOAuthProvider {
54268
54289
  };
54269
54290
  }
54270
54291
  const entry = accessTokens.get(token);
54271
- if (!entry)
54292
+ if (!entry) {
54293
+ console.error(`[AUTH] VERIFY_FAIL: unknown token (token=${token.slice(0, 12)}..., active_sessions=${accessTokens.size})`);
54272
54294
  throw new Error("Unknown access token");
54295
+ }
54273
54296
  if (entry.expiresAt < Date.now()) {
54297
+ const expiredAgo = Math.round((Date.now() - entry.expiresAt) / 1000);
54298
+ const claims = jwtClaims(entry.supabaseJwt);
54299
+ console.error(`[AUTH] VERIFY_FAIL: token expired ${expiredAgo}s ago (email=${claims.email}, team=${entry.teamId}, token=${token.slice(0, 12)}...)`);
54274
54300
  accessTokens.delete(token);
54275
54301
  throw new Error("Access token expired");
54276
54302
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kadoa/mcp",
3
- "version": "0.3.6-rc.1",
3
+ "version": "0.3.6-rc.2",
4
4
  "description": "Kadoa MCP Server — manage workflows from Claude Desktop, Cursor, and other MCP clients",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",