Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import type { McpObservation } from "../shared/mcp";import type { ExtensionDiagnosticInput, ExtensionDiagnosticSink,} from "../shared/extension-diagnostics";import { emitExtensionDiagnostic } from "./extension-diagnostics";import * as Cause from "effect/Cause";
export type McpDiagnostic = { operation: Extract<ExtensionDiagnosticInput["operation"], `mcp-${string}`>; startedAt: number;};
export function mcpCauseOutcome( cause: Cause.Cause<unknown>, failure: "authentication" | "connection",) { return Cause.hasInterrupts(cause) ? { status: "aborted" as const, failure: "cancelled" as const } : { status: "error" as const, failure };}
export function recordMcpDiagnostic( sink: ExtensionDiagnosticSink | undefined, id: string, diagnostic: McpDiagnostic, outcome: Pick<ExtensionDiagnosticInput, "status" | "failure">,) { emitExtensionDiagnostic(sink, { ...diagnostic, source: { kind: "mcp", id }, ...outcome, });}
export function mcpDiagnosticOutcome( observation: McpObservation,): Pick<ExtensionDiagnosticInput, "status" | "failure"> { if (observation.state === "ready") return { status: "completed" }; const error = observation.lastError; const failure = error === "authentication_required" || error === "authentication_failed" ? "authentication" : error === "credentials_unreadable" ? "storage" : error === "discovery_failed" ? "discovery" : "connection"; return { status: "error", failure };}