Skip to content

Commit

Permalink
Agent state property (#495)
Browse files Browse the repository at this point in the history
  • Loading branch information
hiroshihorie authored Oct 24, 2024
1 parent 62a70ea commit 5869cea
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
8 changes: 8 additions & 0 deletions Sources/LiveKit/Participant/Participant.swift
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,14 @@ public class Participant: NSObject, ObservableObject, Loggable {
_state.trackPublications.values.filter { $0.kind == .video }
}

@objc
public var agentState: AgentState {
guard case .agent = kind else { return .unknown }
guard let attrString = _state.attributes[agentStateAttributeKey] else { return .connecting }
guard let state = AgentState.fromString(attrString) else { return .connecting }
return state
}

var info: Livekit_ParticipantInfo?

// Reference to the Room this Participant belongs to
Expand Down
54 changes: 54 additions & 0 deletions Sources/LiveKit/Types/AgentState.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
* Copyright 2024 LiveKit
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

let agentStateAttributeKey = "lk.agent.state"

@objc
public enum AgentState: Int {
case unknown
case disconnected
case connecting
case initializing
case listening
case thinking
case speaking
}

extension AgentState {
static func fromString(_ rawString: String?) -> AgentState? {
switch rawString {
case "initializing": return .initializing
case "listening": return .listening
case "thinking": return .thinking
case "speaking": return .speaking
default: return unknown
}
}
}

extension AgentState: CustomStringConvertible {
public var description: String {
switch self {
case .unknown: return "Unknown"
case .disconnected: return "Disconnected"
case .connecting: return "Connecting"
case .initializing: return "Initializing"
case .listening: return "Listening"
case .thinking: return "Thinking"
case .speaking: return "Speaking"
}
}
}

0 comments on commit 5869cea

Please sign in to comment.