import type { ProviderKind, ProviderSessionRuntimeStatus, RuntimeMode, ThreadId,} from "@t3tools/contracts";import { Option, ServiceMap } from "effect";import type { Effect } from "effect"; import type { ProviderSessionDirectoryPersistenceError, ProviderValidationError,} from "../Errors.ts"; export interface ProviderRuntimeBinding { readonly threadId: ThreadId; readonly provider: ProviderKind; readonly adapterKey?: string; readonly status?: ProviderSessionRuntimeStatus; readonly resumeCursor?: unknown | null; readonly runtimePayload?: unknown | null; readonly runtimeMode?: RuntimeMode;} export type ProviderSessionDirectoryReadError = ProviderSessionDirectoryPersistenceError; export type ProviderSessionDirectoryWriteError = | ProviderValidationError | ProviderSessionDirectoryPersistenceError; export interface ProviderSessionDirectoryShape { readonly upsert: ( binding: ProviderRuntimeBinding, ) => Effect.Effect<void, ProviderSessionDirectoryWriteError>; readonly getProvider: ( threadId: ThreadId, ) => Effect.Effect<ProviderKind, ProviderSessionDirectoryReadError>; readonly getBinding: ( threadId: ThreadId, ) => Effect.Effect<Option.Option<ProviderRuntimeBinding>, ProviderSessionDirectoryReadError>; readonly remove: ( threadId: ThreadId, ) => Effect.Effect<void, ProviderSessionDirectoryPersistenceError>; readonly listThreadIds: () => Effect.Effect< ReadonlyArray<ThreadId>, ProviderSessionDirectoryPersistenceError >;} export class ProviderSessionDirectory extends ServiceMap.Service< ProviderSessionDirectory, ProviderSessionDirectoryShape>()("t3/provider/Services/ProviderSessionDirectory") {}
import type {
ProviderKind,
ProviderSessionRuntimeStatus,
RuntimeMode,
ThreadId,
} from "@t3tools/contracts";
import { Option, ServiceMap } from "effect";
import type { Effect } from "effect";
import type {
ProviderSessionDirectoryPersistenceError,
ProviderValidationError,
} from "../Errors.ts";
export interface ProviderRuntimeBinding {
readonly threadId: ThreadId;
readonly provider: ProviderKind;
readonly adapterKey?: string;
readonly status?: ProviderSessionRuntimeStatus;
readonly resumeCursor?: unknown | null;
readonly runtimePayload?: unknown | null;
readonly runtimeMode?: RuntimeMode;
}
export type ProviderSessionDirectoryReadError = ProviderSessionDirectoryPersistenceError;
export type ProviderSessionDirectoryWriteError =
| ProviderValidationError
| ProviderSessionDirectoryPersistenceError;
export interface ProviderSessionDirectoryShape {
readonly upsert: (
binding: ProviderRuntimeBinding,
) => Effect.Effect<void, ProviderSessionDirectoryWriteError>;
readonly getProvider: (
threadId: ThreadId,
) => Effect.Effect<ProviderKind, ProviderSessionDirectoryReadError>;
readonly getBinding: (
threadId: ThreadId,
) => Effect.Effect<Option.Option<ProviderRuntimeBinding>, ProviderSessionDirectoryReadError>;
readonly remove: (
threadId: ThreadId,
) => Effect.Effect<void, ProviderSessionDirectoryPersistenceError>;
readonly listThreadIds: () => Effect.Effect<
ReadonlyArray<ThreadId>,
ProviderSessionDirectoryPersistenceError
>;
}
export class ProviderSessionDirectory extends ServiceMap.Service<
ProviderSessionDirectory,
ProviderSessionDirectoryShape
>()("t3/provider/Services/ProviderSessionDirectory") {}