export type WorkbenchActor = { id: string; role?: string | null; }; export type WorkbenchMode = "native-test" | "agentrun-native" | "temporal"; export type WorkbenchCommand = | { operation: "health" } | { operation: "session.create"; actor: WorkbenchActor; params: Record } | { operation: "turn.submit"; actor: WorkbenchActor; params: Record; traceId?: string } | { operation: "turn.cancel"; actor: WorkbenchActor; traceId: string; params?: Record }; export type WorkbenchCommandResult = { ok: boolean; operation: WorkbenchCommand["operation"]; mode: WorkbenchMode; data?: Record; error?: { code: string; message: string; details?: unknown }; }; export type WorkbenchTurnInput = { actor: WorkbenchActor; traceId: string; sessionId: string; params: Record; }; export type WorkbenchActivityConfig = { startToCloseTimeoutMs: number; retryInitialIntervalMs: number; retryMaximumIntervalMs: number; retryMaximumAttempts: number; }; export interface WorkbenchEventPublisher { publish(input: { traceId: string; sessionId: string; event: Record; }): Promise>; close?(): Promise; } export interface WorkbenchApplication { health(): Promise>; createSession(input: { actor: WorkbenchActor; params: Record }): Promise>; admitTurn(input: WorkbenchTurnInput): Promise; dispatchTurn(input: WorkbenchTurnInput): Promise>; cancelTurn(input: { actor: WorkbenchActor; traceId: string; params: Record }): Promise>; snapshot?(): Promise<{ sessions: Record>; turns: Record> }>; close?(): Promise; } export interface WorkbenchTemporalGateway { submit(input: WorkbenchTurnInput): Promise<{ workflowId: string; workflowRunId: string; reused: boolean }>; cancel(input: { actor: WorkbenchActor; traceId: string; params: Record }): Promise<{ workflowId: string; workflowRunId: string; reused: boolean }>; close(): Promise; }