54 lines · 1.2 KB · TypeScript
RawDownload
import {  type ProviderApprovalDecision,  type ProviderDriverKind,  type ThreadId,} from "@t3tools/contracts";import { Schema } from "effect";import * as EffectAcpErrors from "effect-acp/errors"; import {  ProviderAdapterRequestError,  ProviderAdapterSessionClosedError,  type ProviderAdapterError,} from "../Errors.ts"; export function mapAcpToAdapterError(  provider: ProviderDriverKind,  threadId: ThreadId,  method: string,  error: EffectAcpErrors.AcpError,): ProviderAdapterError {  if (Schema.is(EffectAcpErrors.AcpProcessExitedError)(error)) {    return new ProviderAdapterSessionClosedError({      provider,      threadId,      cause: error,    });  }  if (Schema.is(EffectAcpErrors.AcpRequestError)(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";  }}