MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / resolveConnectionValues

Function resolveConnectionValues

packages/core/sdk/src/executor.ts:2445–2478  ·  view source on GitHub ↗
(
      row: ConnectionRow,
    )

Source from the content-addressed store, hash-verified

2443 // two distinct inputs yields one entry per variable. OAuth connections refresh
2444 // first (always single-input → `{ token: <access> }`).
2445 const resolveConnectionValues = (
2446 row: ConnectionRow,
2447 ): Effect.Effect<Record<string, string | null>, StorageFailure | CredentialResolutionError> =>
2448 Effect.gen(function* () {
2449 const provider = credentialProviders.get(row.provider);
2450 if (!provider) {
2451 return yield* new CredentialProviderNotRegisteredError({
2452 provider: ProviderKey.make(row.provider),
2453 });
2454 }
2455 // OAuth connections refresh their access token before resolving when
2456 // it has expired (or is within the skew window).
2457 const expiresAt = row.expires_at == null ? null : Number(row.expires_at);
2458 if (row.oauth_client != null && shouldRefreshToken({ expiresAt })) {
2459 const access = yield* refreshConnectionToken(row, provider);
2460 return { [PRIMARY_INPUT_VARIABLE]: access };
2461 }
2462 const out: Record<string, string | null> = {};
2463 for (const [variable, itemId] of Object.entries(connectionItemIds(row))) {
2464 out[variable] = yield* provider.get(ProviderItemId.make(itemId));
2465 }
2466 return out;
2467 }).pipe(
2468 // CredentialProviderNotRegisteredError is part of CredentialResolution
2469 // for ctx.connections.resolveValue's StorageFailure channel — fold it.
2470 Effect.catchTag("CredentialProviderNotRegisteredError", (err) =>
2471 Effect.fail(
2472 new StorageError({
2473 message: `Credential provider "${err.provider}" is not registered.`,
2474 cause: err,
2475 }),
2476 ),
2477 ),
2478 );
2479
2480 /** Re-mint an OAuth connection's access token unconditionally, ignoring the
2481 * stored expiry. Drives the reactive path: the upstream just rejected the

Callers 5

resolveConnectionValueFunction · 0.85
connectionCheckHealthFunction · 0.85
executeFunction · 0.85

Calls 4

shouldRefreshTokenFunction · 0.90
refreshConnectionTokenFunction · 0.85
connectionItemIdsFunction · 0.85
getMethod · 0.65

Tested by

no test coverage detected