| import Foundation |
|
|
| public enum OpenClawChatTransportEvent: Sendable { |
| case health(ok: Bool) |
| case tick |
| case chat(OpenClawChatEventPayload) |
| case agent(OpenClawAgentEventPayload) |
| case seqGap |
| } |
|
|
| public protocol OpenClawChatTransport: Sendable { |
| func requestHistory(sessionKey: String) async throws -> OpenClawChatHistoryPayload |
| func listModels() async throws -> [OpenClawChatModelChoice] |
| func sendMessage( |
| sessionKey: String, |
| message: String, |
| thinking: String, |
| idempotencyKey: String, |
| attachments: [OpenClawChatAttachmentPayload]) async throws -> OpenClawChatSendResponse |
|
|
| func abortRun(sessionKey: String, runId: String) async throws |
| func listSessions(limit: Int?) async throws -> OpenClawChatSessionsListResponse |
| func setSessionModel(sessionKey: String, model: String?) async throws |
| func setSessionThinking(sessionKey: String, thinkingLevel: String) async throws |
|
|
| func requestHealth(timeoutMs: Int) async throws -> Bool |
| func events() -> AsyncStream<OpenClawChatTransportEvent> |
|
|
| func setActiveSessionKey(_ sessionKey: String) async throws |
| func resetSession(sessionKey: String) async throws |
| } |
|
|
| extension OpenClawChatTransport { |
| public func setActiveSessionKey(_: String) async throws {} |
|
|
| public func resetSession(sessionKey _: String) async throws { |
| throw NSError( |
| domain: "OpenClawChatTransport", |
| code: 0, |
| userInfo: [NSLocalizedDescriptionKey: "sessions.reset not supported by this transport"]) |
| } |
|
|
| public func abortRun(sessionKey _: String, runId _: String) async throws { |
| throw NSError( |
| domain: "OpenClawChatTransport", |
| code: 0, |
| userInfo: [NSLocalizedDescriptionKey: "chat.abort not supported by this transport"]) |
| } |
|
|
| public func listSessions(limit _: Int?) async throws -> OpenClawChatSessionsListResponse { |
| throw NSError( |
| domain: "OpenClawChatTransport", |
| code: 0, |
| userInfo: [NSLocalizedDescriptionKey: "sessions.list not supported by this transport"]) |
| } |
|
|
| public func listModels() async throws -> [OpenClawChatModelChoice] { |
| throw NSError( |
| domain: "OpenClawChatTransport", |
| code: 0, |
| userInfo: [NSLocalizedDescriptionKey: "models.list not supported by this transport"]) |
| } |
|
|
| public func setSessionModel(sessionKey _: String, model _: String?) async throws { |
| throw NSError( |
| domain: "OpenClawChatTransport", |
| code: 0, |
| userInfo: [NSLocalizedDescriptionKey: "sessions.patch(model) not supported by this transport"]) |
| } |
|
|
| public func setSessionThinking(sessionKey _: String, thinkingLevel _: String) async throws { |
| throw NSError( |
| domain: "OpenClawChatTransport", |
| code: 0, |
| userInfo: [NSLocalizedDescriptionKey: "sessions.patch(thinkingLevel) not supported by this transport"]) |
| } |
| } |
|
|