56 lines · 1.4 KB · TypeScript
RawDownload
import {  type ProviderApprovalDecision,  type ProviderDriverKind,  type ThreadId,} from "@t3tools/contracts";import * as Schema from "effect/Schema";import * as EffectAcpErrors from "effect-acp/errors"; import {  ProviderAdapterRequestError,  ProviderAdapterSessionClosedError,  type ProviderAdapterError,} from "../Errors.ts";const isAcpProcessExitedError = Schema.is(EffectAcpErrors.AcpProcessExitedError);const isAcpRequestError = Schema.is(EffectAcpErrors.AcpRequestError); export function mapAcpToAdapterError(  provider: ProviderDriverKind,  threadId: ThreadId,  method: string,  error: EffectAcpErrors.AcpError,): ProviderAdapterError {  if (isAcpProcessExitedError(error)) {    return new ProviderAdapterSessionClosedError({      provider,      threadId,      cause: error,    });  }  if (isAcpRequestError(error)) {    return new ProviderAdapterRequestError({      provider,      method,      detail: error.message,      cause: error,    });  }  return new ProviderAdapterRequestError({    provider,    method,    detail: error.message,    cause: error,  });} export function acpPermissionOutcome(decision: ProviderApprovalDecision): string {  switch (decision) {    case "acceptForSession":      return "allow-always";    case "accept":      return "allow-once";    case "decline":    default:      return "reject-once";  }}