refactor: unify talk session runtime

This commit is contained in:
Peter Steinberger
2026-05-06 00:37:15 +01:00
parent 7431cb8def
commit f1636d5e28
68 changed files with 1561 additions and 6760 deletions

View File

@@ -2740,387 +2740,7 @@ public struct TalkCatalogResult: Codable, Sendable {
}
}
public struct TalkConfigParams: Codable, Sendable {
public let includesecrets: Bool?
public init(
includesecrets: Bool?)
{
self.includesecrets = includesecrets
}
private enum CodingKeys: String, CodingKey {
case includesecrets = "includeSecrets"
}
}
public struct TalkConfigResult: Codable, Sendable {
public let config: [String: AnyCodable]
public init(
config: [String: AnyCodable])
{
self.config = config
}
private enum CodingKeys: String, CodingKey {
case config
}
}
public struct TalkHandoffCreateParams: Codable, Sendable {
public let sessionkey: String
public let sessionid: String?
public let channel: String?
public let target: String?
public let provider: String?
public let model: String?
public let voice: String?
public let mode: AnyCodable?
public let transport: AnyCodable?
public let brain: AnyCodable?
public let ttlms: Int?
public init(
sessionkey: String,
sessionid: String?,
channel: String?,
target: String?,
provider: String?,
model: String?,
voice: String?,
mode: AnyCodable?,
transport: AnyCodable?,
brain: AnyCodable?,
ttlms: Int?)
{
self.sessionkey = sessionkey
self.sessionid = sessionid
self.channel = channel
self.target = target
self.provider = provider
self.model = model
self.voice = voice
self.mode = mode
self.transport = transport
self.brain = brain
self.ttlms = ttlms
}
private enum CodingKeys: String, CodingKey {
case sessionkey = "sessionKey"
case sessionid = "sessionId"
case channel
case target
case provider
case model
case voice
case mode
case transport
case brain
case ttlms = "ttlMs"
}
}
public struct TalkHandoffCreateResult: Codable, Sendable {
public let id: String
public let roomid: String
public let roomurl: String
public let token: String
public let sessionkey: String
public let sessionid: String?
public let channel: String?
public let target: String?
public let provider: String?
public let model: String?
public let voice: String?
public let mode: AnyCodable
public let transport: AnyCodable
public let brain: AnyCodable
public let createdat: Double
public let expiresat: Double
public let room: [String: AnyCodable]
public init(
id: String,
roomid: String,
roomurl: String,
token: String,
sessionkey: String,
sessionid: String?,
channel: String?,
target: String?,
provider: String?,
model: String?,
voice: String?,
mode: AnyCodable,
transport: AnyCodable,
brain: AnyCodable,
createdat: Double,
expiresat: Double,
room: [String: AnyCodable])
{
self.id = id
self.roomid = roomid
self.roomurl = roomurl
self.token = token
self.sessionkey = sessionkey
self.sessionid = sessionid
self.channel = channel
self.target = target
self.provider = provider
self.model = model
self.voice = voice
self.mode = mode
self.transport = transport
self.brain = brain
self.createdat = createdat
self.expiresat = expiresat
self.room = room
}
private enum CodingKeys: String, CodingKey {
case id
case roomid = "roomId"
case roomurl = "roomUrl"
case token
case sessionkey = "sessionKey"
case sessionid = "sessionId"
case channel
case target
case provider
case model
case voice
case mode
case transport
case brain
case createdat = "createdAt"
case expiresat = "expiresAt"
case room
}
}
public struct TalkHandoffJoinParams: Codable, Sendable {
public let id: String
public let token: String
public init(
id: String,
token: String)
{
self.id = id
self.token = token
}
private enum CodingKeys: String, CodingKey {
case id
case token
}
}
public struct TalkHandoffJoinResult: Codable, Sendable {
public let id: String
public let roomid: String
public let roomurl: String
public let sessionkey: String
public let sessionid: String?
public let channel: String?
public let target: String?
public let provider: String?
public let model: String?
public let voice: String?
public let mode: AnyCodable
public let transport: AnyCodable
public let brain: AnyCodable
public let createdat: Double
public let expiresat: Double
public let room: [String: AnyCodable]
public init(
id: String,
roomid: String,
roomurl: String,
sessionkey: String,
sessionid: String?,
channel: String?,
target: String?,
provider: String?,
model: String?,
voice: String?,
mode: AnyCodable,
transport: AnyCodable,
brain: AnyCodable,
createdat: Double,
expiresat: Double,
room: [String: AnyCodable])
{
self.id = id
self.roomid = roomid
self.roomurl = roomurl
self.sessionkey = sessionkey
self.sessionid = sessionid
self.channel = channel
self.target = target
self.provider = provider
self.model = model
self.voice = voice
self.mode = mode
self.transport = transport
self.brain = brain
self.createdat = createdat
self.expiresat = expiresat
self.room = room
}
private enum CodingKeys: String, CodingKey {
case id
case roomid = "roomId"
case roomurl = "roomUrl"
case sessionkey = "sessionKey"
case sessionid = "sessionId"
case channel
case target
case provider
case model
case voice
case mode
case transport
case brain
case createdat = "createdAt"
case expiresat = "expiresAt"
case room
}
}
public struct TalkHandoffRevokeParams: Codable, Sendable {
public let id: String
public init(
id: String)
{
self.id = id
}
private enum CodingKeys: String, CodingKey {
case id
}
}
public struct TalkHandoffRevokeResult: Codable, Sendable {
public let ok: Bool
public let revoked: Bool
public init(
ok: Bool,
revoked: Bool)
{
self.ok = ok
self.revoked = revoked
}
private enum CodingKeys: String, CodingKey {
case ok
case revoked
}
}
public struct TalkHandoffTurnStartParams: Codable, Sendable {
public let id: String
public let token: String
public let turnid: String?
public init(
id: String,
token: String,
turnid: String?)
{
self.id = id
self.token = token
self.turnid = turnid
}
private enum CodingKeys: String, CodingKey {
case id
case token
case turnid = "turnId"
}
}
public struct TalkHandoffTurnEndParams: Codable, Sendable {
public let id: String
public let token: String
public let turnid: String?
public init(
id: String,
token: String,
turnid: String?)
{
self.id = id
self.token = token
self.turnid = turnid
}
private enum CodingKeys: String, CodingKey {
case id
case token
case turnid = "turnId"
}
}
public struct TalkHandoffTurnCancelParams: Codable, Sendable {
public let id: String
public let token: String
public let turnid: String?
public let reason: String?
public init(
id: String,
token: String,
turnid: String?,
reason: String?)
{
self.id = id
self.token = token
self.turnid = turnid
self.reason = reason
}
private enum CodingKeys: String, CodingKey {
case id
case token
case turnid = "turnId"
case reason
}
}
public struct TalkHandoffTurnResult: Codable, Sendable {
public let ok: Bool
public let record: TalkHandoffJoinResult
public let turnid: String
public let events: [TalkEvent]
public init(
ok: Bool,
record: TalkHandoffJoinResult,
turnid: String,
events: [TalkEvent])
{
self.ok = ok
self.record = record
self.turnid = turnid
self.events = events
}
private enum CodingKeys: String, CodingKey {
case ok
case record
case turnid = "turnId"
case events
}
}
public struct TalkRealtimeSessionParams: Codable, Sendable {
public struct TalkClientCreateParams: Codable, Sendable {
public let sessionkey: String?
public let provider: String?
public let model: String?
@@ -3158,115 +2778,7 @@ public struct TalkRealtimeSessionParams: Codable, Sendable {
}
}
public struct TalkRealtimeRelayAudioParams: Codable, Sendable {
public let relaysessionid: String
public let audiobase64: String
public let timestamp: Double?
public init(
relaysessionid: String,
audiobase64: String,
timestamp: Double?)
{
self.relaysessionid = relaysessionid
self.audiobase64 = audiobase64
self.timestamp = timestamp
}
private enum CodingKeys: String, CodingKey {
case relaysessionid = "relaySessionId"
case audiobase64 = "audioBase64"
case timestamp
}
}
public struct TalkRealtimeRelayCancelParams: Codable, Sendable {
public let relaysessionid: String
public let reason: String?
public init(
relaysessionid: String,
reason: String?)
{
self.relaysessionid = relaysessionid
self.reason = reason
}
private enum CodingKeys: String, CodingKey {
case relaysessionid = "relaySessionId"
case reason
}
}
public struct TalkRealtimeRelayMarkParams: Codable, Sendable {
public let relaysessionid: String
public let markname: String?
public init(
relaysessionid: String,
markname: String?)
{
self.relaysessionid = relaysessionid
self.markname = markname
}
private enum CodingKeys: String, CodingKey {
case relaysessionid = "relaySessionId"
case markname = "markName"
}
}
public struct TalkRealtimeRelayStopParams: Codable, Sendable {
public let relaysessionid: String
public init(
relaysessionid: String)
{
self.relaysessionid = relaysessionid
}
private enum CodingKeys: String, CodingKey {
case relaysessionid = "relaySessionId"
}
}
public struct TalkRealtimeRelayToolResultParams: Codable, Sendable {
public let relaysessionid: String
public let callid: String
public let result: AnyCodable
public init(
relaysessionid: String,
callid: String,
result: AnyCodable)
{
self.relaysessionid = relaysessionid
self.callid = callid
self.result = result
}
private enum CodingKeys: String, CodingKey {
case relaysessionid = "relaySessionId"
case callid = "callId"
case result
}
}
public struct TalkRealtimeRelayOkResult: Codable, Sendable {
public let ok: Bool
public init(
ok: Bool)
{
self.ok = ok
}
private enum CodingKeys: String, CodingKey {
case ok
}
}
public struct TalkRealtimeToolCallParams: Codable, Sendable {
public struct TalkClientToolCallParams: Codable, Sendable {
public let sessionkey: String
public let callid: String
public let name: String
@@ -3296,7 +2808,7 @@ public struct TalkRealtimeToolCallParams: Codable, Sendable {
}
}
public struct TalkRealtimeToolCallResult: Codable, Sendable {
public struct TalkClientToolCallResult: Codable, Sendable {
public let runid: String
public let idempotencykey: String
@@ -3314,105 +2826,381 @@ public struct TalkRealtimeToolCallResult: Codable, Sendable {
}
}
public struct TalkTranscriptionSessionParams: Codable, Sendable {
public let provider: String?
public struct TalkConfigParams: Codable, Sendable {
public let includesecrets: Bool?
public init(
provider: String?)
includesecrets: Bool?)
{
self.provider = provider
self.includesecrets = includesecrets
}
private enum CodingKeys: String, CodingKey {
case provider
case includesecrets = "includeSecrets"
}
}
public struct TalkTranscriptionSessionResult: Codable, Sendable {
public let provider: String
public let mode: String
public let transport: String
public let transcriptionsessionid: String
public let audio: [String: AnyCodable]
public let expiresat: Double
public struct TalkConfigResult: Codable, Sendable {
public let config: [String: AnyCodable]
public init(
provider: String,
mode: String,
transport: String,
transcriptionsessionid: String,
audio: [String: AnyCodable],
expiresat: Double)
config: [String: AnyCodable])
{
self.provider = provider
self.mode = mode
self.transport = transport
self.transcriptionsessionid = transcriptionsessionid
self.audio = audio
self.expiresat = expiresat
self.config = config
}
private enum CodingKeys: String, CodingKey {
case provider
case mode
case transport
case transcriptionsessionid = "transcriptionSessionId"
case audio
case expiresat = "expiresAt"
case config
}
}
public struct TalkTranscriptionRelayAudioParams: Codable, Sendable {
public let transcriptionsessionid: String
public struct TalkSessionAppendAudioParams: Codable, Sendable {
public let sessionid: String
public let audiobase64: String
public let timestamp: Double?
public init(
transcriptionsessionid: String,
audiobase64: String)
sessionid: String,
audiobase64: String,
timestamp: Double?)
{
self.transcriptionsessionid = transcriptionsessionid
self.sessionid = sessionid
self.audiobase64 = audiobase64
self.timestamp = timestamp
}
private enum CodingKeys: String, CodingKey {
case transcriptionsessionid = "transcriptionSessionId"
case sessionid = "sessionId"
case audiobase64 = "audioBase64"
case timestamp
}
}
public struct TalkTranscriptionRelayCancelParams: Codable, Sendable {
public let transcriptionsessionid: String
public struct TalkSessionCancelOutputParams: Codable, Sendable {
public let sessionid: String
public let turnid: String?
public let reason: String?
public init(
transcriptionsessionid: String,
sessionid: String,
turnid: String?,
reason: String?)
{
self.transcriptionsessionid = transcriptionsessionid
self.sessionid = sessionid
self.turnid = turnid
self.reason = reason
}
private enum CodingKeys: String, CodingKey {
case transcriptionsessionid = "transcriptionSessionId"
case sessionid = "sessionId"
case turnid = "turnId"
case reason
}
}
public struct TalkTranscriptionRelayStopParams: Codable, Sendable {
public let transcriptionsessionid: String
public struct TalkSessionCancelTurnParams: Codable, Sendable {
public let sessionid: String
public let turnid: String?
public let reason: String?
public init(
transcriptionsessionid: String)
sessionid: String,
turnid: String?,
reason: String?)
{
self.transcriptionsessionid = transcriptionsessionid
self.sessionid = sessionid
self.turnid = turnid
self.reason = reason
}
private enum CodingKeys: String, CodingKey {
case transcriptionsessionid = "transcriptionSessionId"
case sessionid = "sessionId"
case turnid = "turnId"
case reason
}
}
public struct TalkTranscriptionRelayOkResult: Codable, Sendable {
public struct TalkSessionCreateParams: Codable, Sendable {
public let sessionkey: String?
public let provider: String?
public let model: String?
public let voice: String?
public let mode: AnyCodable?
public let transport: AnyCodable?
public let brain: AnyCodable?
public let ttlms: Int?
public init(
sessionkey: String?,
provider: String?,
model: String?,
voice: String?,
mode: AnyCodable?,
transport: AnyCodable?,
brain: AnyCodable?,
ttlms: Int?)
{
self.sessionkey = sessionkey
self.provider = provider
self.model = model
self.voice = voice
self.mode = mode
self.transport = transport
self.brain = brain
self.ttlms = ttlms
}
private enum CodingKeys: String, CodingKey {
case sessionkey = "sessionKey"
case provider
case model
case voice
case mode
case transport
case brain
case ttlms = "ttlMs"
}
}
public struct TalkSessionCreateResult: Codable, Sendable {
public let sessionid: String
public let provider: String?
public let mode: AnyCodable
public let transport: AnyCodable
public let brain: AnyCodable
public let relaysessionid: String?
public let transcriptionsessionid: String?
public let handoffid: String?
public let roomid: String?
public let roomurl: String?
public let token: String?
public let audio: AnyCodable?
public let model: String?
public let voice: String?
public let expiresat: Double?
public init(
sessionid: String,
provider: String?,
mode: AnyCodable,
transport: AnyCodable,
brain: AnyCodable,
relaysessionid: String?,
transcriptionsessionid: String?,
handoffid: String?,
roomid: String?,
roomurl: String?,
token: String?,
audio: AnyCodable?,
model: String?,
voice: String?,
expiresat: Double?)
{
self.sessionid = sessionid
self.provider = provider
self.mode = mode
self.transport = transport
self.brain = brain
self.relaysessionid = relaysessionid
self.transcriptionsessionid = transcriptionsessionid
self.handoffid = handoffid
self.roomid = roomid
self.roomurl = roomurl
self.token = token
self.audio = audio
self.model = model
self.voice = voice
self.expiresat = expiresat
}
private enum CodingKeys: String, CodingKey {
case sessionid = "sessionId"
case provider
case mode
case transport
case brain
case relaysessionid = "relaySessionId"
case transcriptionsessionid = "transcriptionSessionId"
case handoffid = "handoffId"
case roomid = "roomId"
case roomurl = "roomUrl"
case token
case audio
case model
case voice
case expiresat = "expiresAt"
}
}
public struct TalkSessionJoinParams: Codable, Sendable {
public let sessionid: String
public let token: String
public init(
sessionid: String,
token: String)
{
self.sessionid = sessionid
self.token = token
}
private enum CodingKeys: String, CodingKey {
case sessionid = "sessionId"
case token
}
}
public struct TalkSessionJoinResult: Codable, Sendable {
public let id: String
public let roomid: String
public let roomurl: String
public let sessionkey: String
public let sessionid: String?
public let channel: String?
public let target: String?
public let provider: String?
public let model: String?
public let voice: String?
public let mode: AnyCodable
public let transport: AnyCodable
public let brain: AnyCodable
public let createdat: Double
public let expiresat: Double
public let room: [String: AnyCodable]
public init(
id: String,
roomid: String,
roomurl: String,
sessionkey: String,
sessionid: String?,
channel: String?,
target: String?,
provider: String?,
model: String?,
voice: String?,
mode: AnyCodable,
transport: AnyCodable,
brain: AnyCodable,
createdat: Double,
expiresat: Double,
room: [String: AnyCodable])
{
self.id = id
self.roomid = roomid
self.roomurl = roomurl
self.sessionkey = sessionkey
self.sessionid = sessionid
self.channel = channel
self.target = target
self.provider = provider
self.model = model
self.voice = voice
self.mode = mode
self.transport = transport
self.brain = brain
self.createdat = createdat
self.expiresat = expiresat
self.room = room
}
private enum CodingKeys: String, CodingKey {
case id
case roomid = "roomId"
case roomurl = "roomUrl"
case sessionkey = "sessionKey"
case sessionid = "sessionId"
case channel
case target
case provider
case model
case voice
case mode
case transport
case brain
case createdat = "createdAt"
case expiresat = "expiresAt"
case room
}
}
public struct TalkSessionTurnParams: Codable, Sendable {
public let sessionid: String
public let turnid: String?
public init(
sessionid: String,
turnid: String?)
{
self.sessionid = sessionid
self.turnid = turnid
}
private enum CodingKeys: String, CodingKey {
case sessionid = "sessionId"
case turnid = "turnId"
}
}
public struct TalkSessionTurnResult: Codable, Sendable {
public let ok: Bool
public let turnid: String?
public let events: [TalkEvent]?
public init(
ok: Bool,
turnid: String?,
events: [TalkEvent]?)
{
self.ok = ok
self.turnid = turnid
self.events = events
}
private enum CodingKeys: String, CodingKey {
case ok
case turnid = "turnId"
case events
}
}
public struct TalkSessionSubmitToolResultParams: Codable, Sendable {
public let sessionid: String
public let callid: String
public let result: AnyCodable
public init(
sessionid: String,
callid: String,
result: AnyCodable)
{
self.sessionid = sessionid
self.callid = callid
self.result = result
}
private enum CodingKeys: String, CodingKey {
case sessionid = "sessionId"
case callid = "callId"
case result
}
}
public struct TalkSessionCloseParams: Codable, Sendable {
public let sessionid: String
public init(
sessionid: String)
{
self.sessionid = sessionid
}
private enum CodingKeys: String, CodingKey {
case sessionid = "sessionId"
}
}
public struct TalkSessionOkResult: Codable, Sendable {
public let ok: Bool
public init(