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

Function connectionValidate

packages/core/sdk/src/executor.ts:5209–5266  ·  view source on GitHub ↗
(
      input: ValidateConnectionInput,
    )

Source from the content-addressed store, hash-verified

5207 );
5208
5209 const connectionValidate = (
5210 input: ValidateConnectionInput,
5211 ): Effect.Effect<HealthCheckResult, IntegrationNotFoundError | StorageFailure> =>
5212 Effect.gen(function* () {
5213 const integrationRow = yield* findIntegrationRow(input.integration);
5214 if (!integrationRow) {
5215 return yield* new IntegrationNotFoundError({
5216 slug: input.integration,
5217 });
5218 }
5219 const runtime = runtimes.get(integrationRow.plugin_id);
5220 const check = runtime?.plugin.checkHealth;
5221 if (!runtime || !check) return unknownHealth();
5222
5223 const values = yield* resolveInFlightValues(input);
5224 const record = rowToIntegrationRecord(
5225 integrationRow,
5226 yield* describeAuthMethodsForRow(integrationRow),
5227 );
5228 const credential: ToolInvocationCredential = {
5229 owner: input.owner,
5230 integration: input.integration,
5231 // No connection exists yet (key-first); a synthetic name keeps the
5232 // credential shape whole. The probe authenticates on values+template,
5233 // not on this name (it only appears in upstream-error messages).
5234 connection: ConnectionName.make("(unsaved)"),
5235 template: input.template,
5236 value: values[PRIMARY_INPUT_VARIABLE] ?? null,
5237 values,
5238 config: record.config,
5239 };
5240 // Caller override (editor preview) wins; otherwise the declared spec
5241 // from the integration row. Nothing persists here: validate is the
5242 // key-first flow's dry run.
5243 const spec = input.spec ?? describeHealthCheckForRow(integrationRow) ?? undefined;
5244 const result = yield* foldPluginFailure(
5245 check({ ctx: runtime.ctx, integration: record, credential, spec }),
5246 `Validating credential for "${input.integration}" failed.`,
5247 );
5248 // Nothing persists here BY DESIGN, which makes this span the only
5249 // possible record of "what fraction of pasted credentials are rejected
5250 // at the door" — a signal the DB can never carry.
5251 yield* Effect.annotateCurrentSpan({
5252 "executor.health.status": result.status,
5253 ...(result.httpStatus !== undefined
5254 ? { "executor.health.http_status": result.httpStatus }
5255 : {}),
5256 });
5257 return result;
5258 }).pipe(
5259 Effect.withSpan("executor.connection.validate", {
5260 attributes: {
5261 "executor.tenant": tenant,
5262 ...(subject != null ? { "executor.subject": subject } : {}),
5263 "executor.integration": String(input.integration),
5264 },
5265 }),
5266 );

Callers

nothing calls this directly

Calls 9

findIntegrationRowFunction · 0.85
unknownHealthFunction · 0.85
resolveInFlightValuesFunction · 0.85
rowToIntegrationRecordFunction · 0.85
foldPluginFailureFunction · 0.85
getMethod · 0.65
checkFunction · 0.50

Tested by

no test coverage detected