File size: 2,481 Bytes
f0634fb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | import { createDecorator, type ServiceIdentifier } from '#/_base/di/instantiation';
import type { ISessionScopeHandle } from '#/_base/di/scope';
import type { Event, IWaitUntil } from '#/_base/event';
import type { SessionSummary } from '#/app/sessionIndex/sessionIndex';
import type { SessionMeta } from '#/session/sessionMetadata/sessionMetadata';
import type {
CreateChildSessionOptions,
CreateSessionOptions,
ForkSessionOptions,
ResumeSessionOptions,
SessionArchivedEvent,
SessionClosedEvent,
SessionCreatedEvent,
SessionForkedEvent,
SessionWillCloseEvent,
SessionWillCreateEvent,
} from '#/workspace/sessionLifecycle/sessionLifecycle';
export interface CreateManagedSessionOptions extends CreateSessionOptions {
readonly workspaceId?: string;
}
export interface UnguardedSessionLifecycle {
archive(): Promise<void>;
restore(): Promise<ISessionScopeHandle | undefined>;
}
export interface ISessionManager {
readonly _serviceBrand: undefined;
readonly onWillCreateSession?: Event<SessionWillCreateEvent>;
readonly onDidCreateSession?: Event<SessionCreatedEvent & IWaitUntil>;
readonly onWillCloseSession?: Event<SessionWillCloseEvent & IWaitUntil>;
readonly onDidCloseSession?: Event<SessionClosedEvent>;
readonly onWillDeleteSession?: Event<{ readonly sessionId: string } & IWaitUntil>;
readonly onDidArchiveSession?: Event<SessionArchivedEvent>;
readonly onDidForkSession?: Event<SessionForkedEvent>;
create(options: CreateManagedSessionOptions): Promise<ISessionScopeHandle>;
resume(sessionId: string, options?: ResumeSessionOptions): Promise<ISessionScopeHandle | undefined>;
get(sessionId: string): ISessionScopeHandle | undefined;
status(sessionId: string): Promise<SessionSummary | undefined>;
whenResumeSettled(sessionId: string): Promise<void>;
withLifecycleSerialization<T>(
sessionId: string,
work: (unguarded: UnguardedSessionLifecycle) => Promise<T>,
): Promise<T>;
list(): readonly ISessionScopeHandle[];
close(sessionId: string): Promise<void>;
archive(sessionId: string): Promise<void>;
restore(sessionId: string, options?: ResumeSessionOptions): Promise<ISessionScopeHandle | undefined>;
delete(sessionId: string): Promise<void>;
fork(options: ForkSessionOptions): Promise<SessionMeta>;
createChild(options: CreateChildSessionOptions): Promise<SessionMeta>;
}
export const ISessionManager: ServiceIdentifier<ISessionManager> = createDecorator<ISessionManager>('sessionManager');
|