import { SourceProjectRef } from "./sourceProjects.js"; import { AgentOperationProvenance, CommandReceipt, CompositionSnapshot, DemoRun } from "./contracts.js"; //#region src/ai-editor/workspace.d.ts type WorkspaceTurnStatus = "running" | "completed" | "failed" | "cancelled" | "interrupted"; type WorkspaceMessage = { id: string; type: "text"; role: "user" | "assistant"; text: string; createdAt: string; turnId?: string; }; type WorkspaceActivity = { id: string; type: "revision"; createdAt: string; receipt: CommandReceipt; label: string; reviewTimeMs?: number; } | { id: string; type: "tool"; createdAt: string; name: string; status: "running" | "completed" | "failed" | "cancelled"; summary?: string; data?: unknown; } | { id: string; type: "extension"; createdAt: string; kind: string; data: unknown; }; type WorkspaceSession = { id: string; title: string; compositionId: string; messages: WorkspaceMessage[]; activities: WorkspaceActivity[]; metadata: Record; createdAt: string; updatedAt: string; }; type WorkspaceComposition = { id: string; headSnapshotId: string; revisions: CompositionSnapshot[]; }; type WorkspaceTurn = { id: string; sessionId: string; compositionId: string; request: string; requestDigest: string; baseSnapshotId: string; status: WorkspaceTurnStatus; activities: WorkspaceActivity[]; createdAt: string; updatedAt: string; result?: { message: string; snapshotId: string; changed: boolean; reviewTimeMs: number; }; }; type WorkspaceDocument = { schemaVersion: 1; version: number; sessions: Record; compositions: Record; turns: Record; operations: Record; }; /** Implement this transaction with a database CAS when using multiple server processes. */ interface WorkspaceStorage { read(): Promise; /** Authorize immediately before the atomic commit, after any asynchronous preparation. */ compareAndSwap(expectedVersion: number | null, next: WorkspaceDocument, authorize?: () => void): Promise; } type WorkspaceSessionView = { session: WorkspaceSession; composition: WorkspaceComposition; snapshot: CompositionSnapshot; turns: WorkspaceTurn[]; }; type WorkspaceSessionInput = { sessionId?: string; title: string; html?: string; sourceProject?: SourceProjectRef; snapshot?: CompositionSnapshot; revisions?: CompositionSnapshot[]; metadata?: Record; authorize?: () => void; messages?: { id: string; role: "user" | "assistant"; text: string; createdAt?: string; }[]; }; type WorkspaceCommand = { provenance?: AgentOperationProvenance; compositionId: string; sessionId?: string; turnId?: string; taskId?: string; operationId: string; digest?: string; snapshotId: string; actor: "operator" | "agent"; label: string; check: (snapshot: CompositionSnapshot) => string | { html: string; sourceProject?: SourceProjectRef; }; authorize?: () => void; run?: DemoRun; sourceChecks?: { rule: string; passed: boolean; }[]; reviewTimeMs?: number; }; type CommandResult = { snapshot: CompositionSnapshot; receipt: CommandReceipt; }; type UndoInput = { provenance?: AgentOperationProvenance; actor?: "operator" | "agent"; sessionId?: string; compositionId?: string; snapshotId: string; operationId: string; authorize?: () => void; }; interface Workspace { createSession(input: WorkspaceSessionInput): Promise; importSession(input: WorkspaceSessionInput & { sessionId: string; }): Promise; listSessions(): Promise; readSession(sessionId: string): Promise; renameSession(sessionId: string, title: string, authorize?: () => void): Promise; readComposition(compositionId: string): Promise; readRevision(compositionId: string, snapshotId: string): Promise; revisions(compositionId: string): Promise<{ revisions: Omit[]; currentSnapshotId: string; canUndo: boolean; }>; beginTurn(input: { sessionId: string; turnId: string; request: string; snapshotId: string; authorize?: () => void; }): Promise<{ turn: WorkspaceTurn; replayed: boolean; snapshot: CompositionSnapshot; }>; commitEdit(input: { turnId: string; operationId: string; snapshotId: string; html: string; sourceProject?: SourceProjectRef; label: string; reviewTimeMs?: number; authorize?: () => void; }): Promise; command(input: WorkspaceCommand): Promise; finishTurn(input: { turnId: string; status: Exclude; message?: string; reviewTimeMs?: number; }): Promise; recordActivity(input: { turnId: string; activity: WorkspaceActivity; }): Promise; recordSessionActivity(input: { sessionId: string; activity: WorkspaceActivity; authorize?: () => void; }): Promise; recoverInterruptedTurns(): Promise; undo(input: UndoInput): Promise; restore(input: UndoInput & { targetId: string; }): Promise; } /** Atomic file replacement with CAS serialized across adapters in this server process. */ declare function createFileWorkspaceStorage(root: string): WorkspaceStorage; /** Conversation data and composition changes share one storage transaction boundary. */ declare function createWorkspace({ storage }: { storage: WorkspaceStorage; }): Workspace; //#endregion export { Workspace, WorkspaceActivity, WorkspaceCommand, WorkspaceComposition, WorkspaceDocument, WorkspaceMessage, WorkspaceSession, WorkspaceSessionInput, WorkspaceSessionView, WorkspaceStorage, WorkspaceTurn, WorkspaceTurnStatus, createFileWorkspaceStorage, createWorkspace }; //# sourceMappingURL=workspace.d.ts.map