1import { ProviderDriverKind, ProviderInstanceId } from "@t3tools/contracts";
2import * as Schema from "effect/Schema";
3
4/**
5 * ProviderDriverError - A driver `create` call failed before producing an
6 * instance. Surfaced to the registry, which marks the offending entry as
7 * an "unavailable" shadow snapshot rather than crashing the server.
8 */
9export class ProviderDriverError extends Schema.TaggedError<ProviderDriverError>()(
10 "ProviderDriverError",
11 {
12 driver: ProviderDriverKind,
13 instanceId: ProviderInstanceId,
14 detail: Schema.String,
15 cause: Schema.optional(Schema.Defect()),
16 },
17) {
18 override get message(): string {
19 return `Provider driver '${this.driver}' failed to create instance '${this.instanceId}': ${this.detail}`;
20 }
21}
22
23/** Reading or writing a provider's stored credentials failed. */
24export class ProviderCredentialError extends Schema.TaggedError<ProviderCredentialError>()(
25 "ProviderCredentialError",
26 {
27 operation: Schema.Literals(["get", "set", "remove"]),
28 cause: Schema.Defect(),
29 },
30) {
31 override get message(): string {
32 return `Could not ${this.operation} stored provider credentials.`;
33 }
34}