import * as Schema from "effect/Schema"; import { IsoDateTime, TrimmedNonEmptyString } from "./baseSchemas.ts";import { ProviderDriverKind, ProviderInstanceId } from "./providerInstance.ts"; export const ProviderSetupInput = Schema.Struct({ instanceId: ProviderInstanceId,});export type ProviderSetupInput = typeof ProviderSetupInput.Type; const SetupOperationId = TrimmedNonEmptyString.check(Schema.isMaxLength(128)); export const ProviderAuthState = Schema.Struct({ instanceId: ProviderInstanceId, phase: Schema.Literals([ "idle", "starting", "waiting", "verifying", "succeeded", "failed", "cancelled", ]), flowId: Schema.NullOr(SetupOperationId), authorizationUrl: Schema.NullOr(Schema.String), expiresAt: Schema.NullOr(IsoDateTime), message: Schema.NullOr(Schema.String),});export type ProviderAuthState = typeof ProviderAuthState.Type; export const ProviderAuthCompleteInput = Schema.Struct({ instanceId: ProviderInstanceId, flowId: SetupOperationId, callbackUrl: TrimmedNonEmptyString.check(Schema.isMaxLength(16_384)),});export type ProviderAuthCompleteInput = typeof ProviderAuthCompleteInput.Type; export const ProviderAuthCancelInput = Schema.Struct({ instanceId: ProviderInstanceId, flowId: SetupOperationId,});export type ProviderAuthCancelInput = typeof ProviderAuthCancelInput.Type; const ByteCount = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)); export const ProviderInstallState = Schema.Struct({ driver: ProviderDriverKind, operationId: Schema.NullOr(SetupOperationId), phase: Schema.Literals([ "idle", "downloading", "extracting", "verifying", "succeeded", "failed", "cancelled", ]), downloadedBytes: ByteCount, totalBytes: Schema.NullOr(ByteCount), version: Schema.NullOr(TrimmedNonEmptyString), installedVersion: Schema.NullOr(TrimmedNonEmptyString), canRemove: Schema.Boolean, message: Schema.NullOr(Schema.String),});export type ProviderInstallState = typeof ProviderInstallState.Type; export const ProviderInstallCancelInput = Schema.Struct({ instanceId: ProviderInstanceId, operationId: SetupOperationId,});export type ProviderInstallCancelInput = typeof ProviderInstallCancelInput.Type; /** Safe setup failure text. Never include OAuth codes, URLs, or native token data. */export class ProviderSetupError extends Schema.TaggedError<ProviderSetupError>()( "ProviderSetupError", { instanceId: ProviderInstanceId, operation: Schema.String, detail: Schema.String, cause: Schema.optional(Schema.Defect()), },) { override get message(): string { return this.detail; }}
import * as Schema from "effect/Schema";
import { IsoDateTime, TrimmedNonEmptyString } from "./baseSchemas.ts";
import { ProviderDriverKind, ProviderInstanceId } from "./providerInstance.ts";
export const ProviderSetupInput = Schema.Struct({
instanceId: ProviderInstanceId,
});
export type ProviderSetupInput = typeof ProviderSetupInput.Type;
const SetupOperationId = TrimmedNonEmptyString.check(Schema.isMaxLength(128));
export const ProviderAuthState = Schema.Struct({
instanceId: ProviderInstanceId,
phase: Schema.Literals([
"idle",
"starting",
"waiting",
"verifying",
"succeeded",
"failed",
"cancelled",
]),
flowId: Schema.NullOr(SetupOperationId),
authorizationUrl: Schema.NullOr(Schema.String),
expiresAt: Schema.NullOr(IsoDateTime),
message: Schema.NullOr(Schema.String),
});
export type ProviderAuthState = typeof ProviderAuthState.Type;
export const ProviderAuthCompleteInput = Schema.Struct({
instanceId: ProviderInstanceId,
flowId: SetupOperationId,
callbackUrl: TrimmedNonEmptyString.check(Schema.isMaxLength(16_384)),
});
export type ProviderAuthCompleteInput = typeof ProviderAuthCompleteInput.Type;
export const ProviderAuthCancelInput = Schema.Struct({
instanceId: ProviderInstanceId,
flowId: SetupOperationId,
});
export type ProviderAuthCancelInput = typeof ProviderAuthCancelInput.Type;
const ByteCount = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0));
export const ProviderInstallState = Schema.Struct({
driver: ProviderDriverKind,
operationId: Schema.NullOr(SetupOperationId),
phase: Schema.Literals([
"idle",
"downloading",
"extracting",
"verifying",
"succeeded",
"failed",
"cancelled",
]),
downloadedBytes: ByteCount,
totalBytes: Schema.NullOr(ByteCount),
version: Schema.NullOr(TrimmedNonEmptyString),
installedVersion: Schema.NullOr(TrimmedNonEmptyString),
canRemove: Schema.Boolean,
message: Schema.NullOr(Schema.String),
});
export type ProviderInstallState = typeof ProviderInstallState.Type;
export const ProviderInstallCancelInput = Schema.Struct({
instanceId: ProviderInstanceId,
operationId: SetupOperationId,
});
export type ProviderInstallCancelInput = typeof ProviderInstallCancelInput.Type;
/** Safe setup failure text. Never include OAuth codes, URLs, or native token data. */
export class ProviderSetupError extends Schema.TaggedError<ProviderSetupError>()(
"ProviderSetupError",
{
instanceId: ProviderInstanceId,
operation: Schema.String,
detail: Schema.String,
cause: Schema.optional(Schema.Defect()),
},
) {
override get message(): string {
return this.detail;
}
}