feat(chat): Swift chat parity (abort/sessions/stream)
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import Foundation
|
||||
|
||||
public struct ClawdisChatSessionsDefaults: Codable, Sendable {
|
||||
public let model: String?
|
||||
public let contextTokens: Int?
|
||||
}
|
||||
|
||||
public enum ClawdisChatSessionSyncing: Codable, Hashable, Sendable {
|
||||
case bool(Bool)
|
||||
case string(String)
|
||||
|
||||
public init(from decoder: Decoder) throws {
|
||||
let container = try decoder.singleValueContainer()
|
||||
if let b = try? container.decode(Bool.self) {
|
||||
self = .bool(b)
|
||||
return
|
||||
}
|
||||
if let s = try? container.decode(String.self) {
|
||||
self = .string(s)
|
||||
return
|
||||
}
|
||||
throw DecodingError.typeMismatch(
|
||||
ClawdisChatSessionSyncing.self,
|
||||
DecodingError.Context(
|
||||
codingPath: decoder.codingPath,
|
||||
debugDescription: "Expected Bool or String"))
|
||||
}
|
||||
|
||||
public func encode(to encoder: Encoder) throws {
|
||||
var container = encoder.singleValueContainer()
|
||||
switch self {
|
||||
case let .bool(b):
|
||||
try container.encode(b)
|
||||
case let .string(s):
|
||||
try container.encode(s)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public struct ClawdisChatSessionEntry: Codable, Identifiable, Sendable, Hashable {
|
||||
public var id: String { self.key }
|
||||
|
||||
public let key: String
|
||||
public let kind: String?
|
||||
public let updatedAt: Double?
|
||||
public let sessionId: String?
|
||||
|
||||
public let systemSent: Bool?
|
||||
public let abortedLastRun: Bool?
|
||||
public let thinkingLevel: String?
|
||||
public let verboseLevel: String?
|
||||
|
||||
public let inputTokens: Int?
|
||||
public let outputTokens: Int?
|
||||
public let totalTokens: Int?
|
||||
|
||||
public let model: String?
|
||||
public let contextTokens: Int?
|
||||
public let syncing: ClawdisChatSessionSyncing?
|
||||
}
|
||||
|
||||
public struct ClawdisChatSessionsListResponse: Codable, Sendable {
|
||||
public let ts: Double?
|
||||
public let path: String?
|
||||
public let count: Int?
|
||||
public let defaults: ClawdisChatSessionsDefaults?
|
||||
public let sessions: [ClawdisChatSessionEntry]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user