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"; }}
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";
}
}