import { type Context, defineService, type ReplicatedState } from "@earendil-works/chord"; import type { ServerId } from "@earendil-works/pi-protocol"; export interface SessionAddress { serverId: ServerId; sessionId: string; } export interface SessionSummary extends SessionAddress { createdAt: number; } export interface SessionCreateOptions { id?: string; } export interface SessionDirectoryState { revision: number; sessions: SessionSummary[]; } export interface SessionDirectory { readonly state: ReplicatedState; } export const SessionDirectory = defineService("pi.session-directory"); export interface SessionManagement { create(options: SessionCreateOptions, context: Context): Promise; remove(sessionId: string, context: Context): Promise; attach(sessionId: string, context: Context): Promise; detach(context: Context): Promise; } export const SessionManagement = defineService("pi.session-management");