Skip to content

Chat and UI messages

Symbol kindCount
Case10
Class1
Enumeration3
Function13
Initializer12
Instance Method23
Instance Property78
Protocol1
Structure10
Type Alias1
Type Method2
KindSymbolDeclarationSource
CaseSwiftAISDK.AIChatSessionStatus.errorcase errorSources/SwiftAISDK/AIChatSession.swift
CaseSwiftAISDK.AIChatSessionStatus.readycase readySources/SwiftAISDK/AIChatSession.swift
CaseSwiftAISDK.AIChatSessionStatus.streamingcase streamingSources/SwiftAISDK/AIChatSession.swift
CaseSwiftAISDK.AIChatSessionStatus.submittedcase submittedSources/SwiftAISDK/AIChatSession.swift
CaseSwiftAISDK.AIChatTransportTrigger.regenerateMessagecase regenerateMessageSources/SwiftAISDK/AIChatTransport.swift
CaseSwiftAISDK.AIChatTransportTrigger.submitMessagecase submitMessageSources/SwiftAISDK/AIChatTransport.swift
CaseSwiftAISDK.AIUIMessageStreamOutcome.abortedcase abortedSources/SwiftAISDK/AIUIMessageStreamReducer.swift
CaseSwiftAISDK.AIUIMessageStreamOutcome.completedcase completedSources/SwiftAISDK/AIUIMessageStreamReducer.swift
CaseSwiftAISDK.AIUIMessageStreamOutcome.failedcase failedSources/SwiftAISDK/AIUIMessageStreamReducer.swift
CaseSwiftAISDK.AIUIMessageStreamOutcome.unknowncase unknownSources/SwiftAISDK/AIUIMessageStreamReducer.swift
ClassSwiftAISDK.AIChatSession@MainActor final class AIChatSessionSources/SwiftAISDK/AIChatSession.swift
EnumerationSwiftAISDK.AIChatSessionStatusenum AIChatSessionStatusSources/SwiftAISDK/AIChatSession.swift
EnumerationSwiftAISDK.AIChatTransportTriggerenum AIChatTransportTriggerSources/SwiftAISDK/AIChatTransport.swift
EnumerationSwiftAISDK.AIUIMessageStreamOutcomeenum AIUIMessageStreamOutcomeSources/SwiftAISDK/AIUIMessageStreamReducer.swift
FunctionSwiftAISDK.convertToModelMessage(_:)func convertToModelMessage(_ message: AIUIMessage) throws -> AIMessageSources/SwiftAISDK/AIUIMessageConversion.swift
FunctionSwiftAISDK.convertToModelMessages(_:)func convertToModelMessages(_ messages: [AIUIMessage]) throws -> [AIMessage]Sources/SwiftAISDK/AIUIMessageConversion.swift
FunctionSwiftAISDK.convertToModelMessages(_:ignoreIncompleteToolCalls:)func convertToModelMessages(_ messages: [AIUIMessage], ignoreIncompleteToolCalls: Bool) throws -> [AIMessage]Sources/SwiftAISDK/AIUIMessageConversion.swift
FunctionSwiftAISDK.convertToModelMessages(_:ignoreIncompleteToolCalls:convertDataPart:)func convertToModelMessages(_ messages: [AIUIMessage], ignoreIncompleteToolCalls: Bool = false, convertDataPart: AIUIDataPartConverter?) throws -> [AIMessage]Sources/SwiftAISDK/AIUIMessageConversion.swift
FunctionSwiftAISDK.convertToModelMessages(_:tools:ignoreIncompleteToolCalls:convertDataPart:)func convertToModelMessages(_ messages: [AIUIMessage], tools: [String : AITool], ignoreIncompleteToolCalls: Bool = false, convertDataPart: AIUIDataPartConverter? = nil) async throws -> [AIMessage]Sources/SwiftAISDK/AIUIMessageConversion.swift
FunctionSwiftAISDK.safeValidateUIMessages(_:)func safeValidateUIMessages(_ messages: [AIUIMessage]) -> AIUIMessageValidationResultSources/SwiftAISDK/AIUIMessageValidation.swift
FunctionSwiftAISDK.safeValidateUIMessages(_:toolSchemas:)func safeValidateUIMessages(_ messages: [AIUIMessage], toolSchemas: [String : AIUIMessageToolSchema]) -> AIUIMessageValidationResultSources/SwiftAISDK/AIUIMessageValidation.swift
FunctionSwiftAISDK.safeValidateUIMessages(_:toolSchemas:refineToolInput:)func safeValidateUIMessages(_ messages: [AIUIMessage], toolSchemas: [String : AIUIMessageToolSchema], refineToolInput: [String : AIUIMessageToolInputRefiner]) async -> AIUIMessageValidationResultSources/SwiftAISDK/AIUIMessageValidation.swift
FunctionSwiftAISDK.validateUIMessages(_:)@discardableResult func validateUIMessages(_ messages: [AIUIMessage]) throws -> [AIUIMessage]Sources/SwiftAISDK/AIUIMessageValidation.swift
FunctionSwiftAISDK.validateUIMessages(_:toolSchemas:)@discardableResult func validateUIMessages(_ messages: [AIUIMessage], toolSchemas: [String : AIUIMessageToolSchema]) throws -> [AIUIMessage]Sources/SwiftAISDK/AIUIMessageValidation.swift
FunctionSwiftAISDK.validateUIMessages(_:toolSchemas:refineToolInput:)@discardableResult func validateUIMessages(_ messages: [AIUIMessage], toolSchemas: [String : AIUIMessageToolSchema], refineToolInput: [String : AIUIMessageToolInputRefiner]) async throws -> [AIUIMessage]Sources/SwiftAISDK/AIUIMessageValidation.swift
FunctionSwiftAISDK.validateUIMessagesForAgent(_:toolSchemas:)@discardableResult func validateUIMessagesForAgent(_ messages: [AIUIMessage], toolSchemas: [String : AIUIMessageToolSchema] = [:]) throws -> [AIUIMessage]Sources/SwiftAISDK/AIUIMessageValidation.swift
FunctionSwiftAISDK.validateUIMessagesForAgent(_:toolSchemas:refineToolInput:)@discardableResult func validateUIMessagesForAgent(_ messages: [AIUIMessage], toolSchemas: [String : AIUIMessageToolSchema] = [:], refineToolInput: [String : AIUIMessageToolInputRefiner]) async throws -> [AIUIMessage]Sources/SwiftAISDK/AIUIMessageValidation.swift
InitializerSwiftAI.init(temperature:topP:topK:presencePenalty:frequencyPenalty:seed:maxOutputTokens:stopSequences:responseFormat:reasoning:tools:toolContexts:toolChoice:includeRawChunks:providerOptions:extraBody:headers:)init(temperature: Double? = nil, topP: Double? = nil, topK: Int? = nil, presencePenalty: Double? = nil, frequencyPenalty: Double? = nil, seed: Int? = nil, maxOutputTokens: Int? = nil, stopSequences: [String] = [], responseFormat: AIResponseFormat? = nil, reasoning: String? = nil, tools: [String : JSONValue] = [:], toolContexts: [String : JSONValue] = [:], toolChoice: JSONValue? = nil, includeRawChunks: Bool = false, providerOptions: [String : JSONValue] = [:], extraBody: [String : JSONValue] = [:], headers: [String : String] = [:])Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
InitializerSwiftAISDK.init(chatID:abortSignal:headers:body:metadata:)init(chatID: String, abortSignal: AIAbortSignal? = nil, headers: [String : String] = [:], body: [String : JSONValue] = [:], metadata: JSONValue? = nil)Sources/SwiftAISDK/AIChatTransport.swift
InitializerSwiftAISDK.init(chatID:transport:messages:generateMessageID:onError:onFinish:sendAutomaticallyWhen:)@MainActor init(chatID: String = UUID().uuidString, transport: any AIChatTransport, messages: [AIUIMessage] = [], generateMessageID: @escaping @Sendable () -> String = { UUID().uuidString }, onError: (@MainActor @Sendable (any Error) -> Void)? = nil, onFinish: (@MainActor @Sendable (AIChatSessionFinishEvent) -> Void)? = nil, sendAutomaticallyWhen: (@MainActor @Sendable ([AIUIMessage]) -> Bool)? = nil)Sources/SwiftAISDK/AIChatSession.swift
InitializerSwiftAISDK.init(chatID:trigger:messageID:responseMessageID:messages:abortSignal:headers:body:metadata:)init(chatID: String, trigger: AIChatTransportTrigger = .submitMessage, messageID: String? = nil, responseMessageID: String? = nil, messages: [AIUIMessage], abortSignal: AIAbortSignal? = nil, headers: [String : String] = [:], body: [String : JSONValue] = [:], metadata: JSONValue? = nil)Sources/SwiftAISDK/AIChatTransport.swift
InitializerSwiftAISDK.init(headers:body:metadata:)init(headers: [String : String] = [:], body: [String : JSONValue] = [:], metadata: JSONValue? = nil)Sources/SwiftAISDK/AIChatSession.swift
InitializerSwiftAISDK.init(message:)init(message: AIUIMessage = .assistant())Sources/SwiftAISDK/AIUIMessageStreamReducer.swift
InitializerSwiftAISDK.init(message:isAborted:isCancelled:outcome:errorDescription:)init(message: AIUIMessage, isAborted: Bool, isCancelled: Bool, outcome: AIUIMessageStreamOutcome, errorDescription: String? = nil)Sources/SwiftAISDK/AIUIMessageStreamReducer.swift
InitializerSwiftAISDK.init(message:messages:isAbort:isDisconnect:isError:finishReason:)init(message: AIUIMessage?, messages: [AIUIMessage], isAbort: Bool, isDisconnect: Bool, isError: Bool, finishReason: String? = nil)Sources/SwiftAISDK/AIChatSession.swift
InitializerSwiftAISDK.init(messages:issues:)init(messages: [AIUIMessage], issues: [AIUIMessageValidationIssue])Sources/SwiftAISDK/AIUIMessageValidation.swift
InitializerSwiftAISDK.init(model:executableTools:maxSteps:stopWhen:prepareStep:toolApproval:requestOptions:timeoutNanoseconds:retryPolicy:telemetry:sendReasoning:sendSources:sendFinish:generateMessageID:)init(model: any LanguageModel, executableTools: [AITool] = [], maxSteps: Int = 5, stopWhen: [AIStopCondition] = [], prepareStep: AIPrepareStep? = nil, toolApproval: AIToolApproval? = nil, requestOptions: AIChatRequestOptions = AIChatRequestOptions(), timeoutNanoseconds: UInt64? = nil, retryPolicy: AIRetryPolicy = .default, telemetry: Telemetry.Options? = nil, sendReasoning: Bool = true, sendSources: Bool = false, sendFinish: Bool = true, generateMessageID: @escaping @Sendable () -> String = { UUID().uuidString })Sources/SwiftAISDK/AIChatTransport.swift
InitializerSwiftAISDK.init(model:executableTools:maxSteps:toolCallers:stopWhen:prepareStep:toolApproval:requestOptions:timeoutNanoseconds:retryPolicy:telemetry:sendReasoning:sendSources:sendFinish:generateMessageID:)init(model: any LanguageModel, executableTools: [AITool] = [], maxSteps: Int = 5, toolCallers: AIToolCallerRouting = [:], stopWhen: [AIStopCondition] = [], prepareStep: AIPrepareStep? = nil, toolApproval: AIToolApproval? = nil, requestOptions: AIChatRequestOptions = AIChatRequestOptions(), timeoutNanoseconds: UInt64? = nil, retryPolicy: AIRetryPolicy = .default, telemetry: Telemetry.Options? = nil, sendReasoning: Bool = true, sendSources: Bool = false, sendFinish: Bool = true, generateMessageID: @escaping @Sendable () -> String = { UUID().uuidString })Sources/SwiftAISDK/AIChatTransport.swift
InitializerSwiftAISDK.init(path:message:)init(path: String, message: String)Sources/SwiftAISDK/AIUIMessageValidation.swift
Instance MethodSwiftAI.languageModelRequest(messages:abortSignal:headers:)func languageModelRequest(messages: [AIMessage], abortSignal: AIAbortSignal? = nil, headers additionalHeaders: [String : String] = [:]) -> LanguageModelRequestPackages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance MethodSwiftAISDK.addToolApprovalResponse(_:id:metadata:options:)@MainActor func addToolApprovalResponse(_ response: AIToolApprovalResponse, id: String? = nil, metadata: [String : JSONValue] = [:], options: AIChatSessionRequestOptions = AIChatSessionRequestOptions())Sources/SwiftAISDK/AIChatSession.swift
Instance MethodSwiftAISDK.addToolOutput(_:id:metadata:options:)@MainActor func addToolOutput(_ result: AIToolResult, id: String? = nil, metadata: [String : JSONValue] = [:], options: AIChatSessionRequestOptions = AIChatSessionRequestOptions())Sources/SwiftAISDK/AIChatSession.swift
Instance MethodSwiftAISDK.addToolResult(_:id:metadata:options:)@MainActor func addToolResult(_ result: AIToolResult, id: String? = nil, metadata: [String : JSONValue] = [:], options: AIChatSessionRequestOptions = AIChatSessionRequestOptions())Sources/SwiftAISDK/AIChatSession.swift
Instance MethodSwiftAISDK.clearError()@MainActor func clearError()Sources/SwiftAISDK/AIChatSession.swift
Instance MethodSwiftAISDK.close()func close() asyncSources/SwiftAISDK/AIChatTransport.swift
Instance MethodSwiftAISDK.close()func close() asyncSources/SwiftAISDK/AIChatTransport.swift
Instance MethodSwiftAISDK.consume(_:)@discardableResult mutating func consume(_ part: LanguageStreamPart) throws -> AIUIMessageSources/SwiftAISDK/AIUIMessageStreamReducer.swift
Instance MethodSwiftAISDK.consume(contentsOf:)@discardableResult mutating func consume<S>(contentsOf parts: S) throws -> AIUIMessage where S : Sequence, S.Element == LanguageStreamPartSources/SwiftAISDK/AIUIMessageStreamReducer.swift
Instance MethodSwiftAISDK.dispose()@MainActor func dispose() asyncSources/SwiftAISDK/AIChatSession.swift
Instance MethodSwiftAISDK.reconnectToStream(_:)func reconnectToStream(_ request: AIChatReconnectRequest) async throws -> AsyncThrowingStream<AIUIMessage, any Error>?Sources/SwiftAISDK/AIChatTransport.swift
Instance MethodSwiftAISDK.reconnectToStream(_:)func reconnectToStream(_ request: AIChatReconnectRequest) async throws -> AsyncThrowingStream<AIUIMessage, any Error>?Sources/SwiftAISDK/AIChatTransport.swift
Instance MethodSwiftAISDK.reconnectToStream(_:)func reconnectToStream(_ request: AIChatReconnectRequest) async throws -> AsyncThrowingStream<AIUIMessage, any Error>?Sources/SwiftAISDK/AIChatTransport.swift
Instance MethodSwiftAISDK.regenerate(messageID:options:)@discardableResult @MainActor func regenerate(messageID: String? = nil, options: AIChatSessionRequestOptions = AIChatSessionRequestOptions()) -> Task<Void, Never>Sources/SwiftAISDK/AIChatSession.swift
Instance MethodSwiftAISDK.resumeStream(options:)@discardableResult @MainActor func resumeStream(options: AIChatSessionRequestOptions = AIChatSessionRequestOptions()) -> Task<Void, Never>Sources/SwiftAISDK/AIChatSession.swift
Instance MethodSwiftAISDK.sendMessage(_:id:metadata:replacingMessageID:options:)@discardableResult @MainActor func sendMessage(_ text: String, id: String? = nil, metadata: [String : JSONValue] = [:], replacingMessageID: String? = nil, options: AIChatSessionRequestOptions = AIChatSessionRequestOptions()) -> Task<Void, Never>Sources/SwiftAISDK/AIChatSession.swift
Instance MethodSwiftAISDK.sendMessage(_:replacingMessageID:options:)@discardableResult @MainActor func sendMessage(_ message: AIUIMessage, replacingMessageID: String? = nil, options: AIChatSessionRequestOptions = AIChatSessionRequestOptions()) -> Task<Void, Never>Sources/SwiftAISDK/AIChatSession.swift
Instance MethodSwiftAISDK.sendMessage(options:)@discardableResult @MainActor func sendMessage(options: AIChatSessionRequestOptions = AIChatSessionRequestOptions()) -> Task<Void, Never>Sources/SwiftAISDK/AIChatSession.swift
Instance MethodSwiftAISDK.sendMessages(_:)func sendMessages(_ request: AIChatTransportRequest) throws -> AsyncThrowingStream<AIUIMessage, any Error>Sources/SwiftAISDK/AIChatTransport.swift
Instance MethodSwiftAISDK.sendMessages(_:)func sendMessages(_ request: AIChatTransportRequest) throws -> AsyncThrowingStream<AIUIMessage, any Error>Sources/SwiftAISDK/AIChatTransport.swift
Instance MethodSwiftAISDK.setMessages(_:)@MainActor func setMessages(_ messages: [AIUIMessage])Sources/SwiftAISDK/AIChatSession.swift
Instance MethodSwiftAISDK.stop(reason:)@MainActor func stop(reason: String? = "stopped")Sources/SwiftAISDK/AIChatSession.swift
Instance MethodSwiftAISDK.stopAndWait(reason:)@MainActor func stopAndWait(reason: String? = "stopped") asyncSources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAI.extraBodyvar extraBody: [String : JSONValue]Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAI.frequencyPenaltyvar frequencyPenalty: Double?Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAI.headersvar headers: [String : String]Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAI.includeRawChunksvar includeRawChunks: BoolPackages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAI.maxOutputTokensvar maxOutputTokens: Int?Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAI.presencePenaltyvar presencePenalty: Double?Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAI.providerOptionsvar providerOptions: [String : JSONValue]Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAI.reasoningvar reasoning: String?Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAI.responseFormatvar responseFormat: AIResponseFormat?Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAI.seedvar seed: Int?Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAI.stopSequencesvar stopSequences: [String]Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAI.temperaturevar temperature: Double?Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAI.toolCallConcurrencyvar toolCallConcurrency: Int?Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAI.toolChoicevar toolChoice: JSONValue?Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAI.toolContextsvar toolContexts: [String : JSONValue]Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAI.toolsvar tools: [String : JSONValue]Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAI.topKvar topK: Int?Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAI.topPvar topP: Double?Packages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
Instance PropertySwiftAISDK.abortSignalvar abortSignal: AIAbortSignal?Sources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.abortSignalvar abortSignal: AIAbortSignal?Sources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.bodyvar body: [String : JSONValue]Sources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.bodyvar body: [String : JSONValue]Sources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.bodyvar body: [String : JSONValue]Sources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.chatID@MainActor let chatID: StringSources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.chatIDvar chatID: StringSources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.chatIDvar chatID: StringSources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.descriptionvar description: String { get }Sources/SwiftAISDK/AIUIMessageValidation.swift
Instance PropertySwiftAISDK.error@Published @MainActor var error: (any Error)? { get set }Sources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.errorDescriptionvar errorDescription: String?Sources/SwiftAISDK/AIUIMessageStreamReducer.swift
Instance PropertySwiftAISDK.executableToolsvar executableTools: [AITool]Sources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.finishReasonvar finishReason: String?Sources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.generateMessageID@MainActor var generateMessageID: @Sendable () -> StringSources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.generateMessageIDvar generateMessageID: @Sendable () -> StringSources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.headersvar headers: [String : String]Sources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.headersvar headers: [String : String]Sources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.headersvar headers: [String : String]Sources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.isAbortvar isAbort: BoolSources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.isAbortedvar isAborted: BoolSources/SwiftAISDK/AIUIMessageStreamReducer.swift
Instance PropertySwiftAISDK.isCancelledvar isCancelled: BoolSources/SwiftAISDK/AIUIMessageStreamReducer.swift
Instance PropertySwiftAISDK.isDisconnectvar isDisconnect: BoolSources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.isErrorvar isError: BoolSources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.isRunning@MainActor var isRunning: Bool { get }Sources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.issuesvar issues: [AIUIMessageValidationIssue]Sources/SwiftAISDK/AIUIMessageValidation.swift
Instance PropertySwiftAISDK.isValidvar isValid: Bool { get }Sources/SwiftAISDK/AIUIMessageValidation.swift
Instance PropertySwiftAISDK.maxStepsvar maxSteps: IntSources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.messagevar message: AIUIMessage?Sources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.messagevar message: AIUIMessageSources/SwiftAISDK/AIUIMessageStreamReducer.swift
Instance PropertySwiftAISDK.messagevar message: AIUIMessage { get }Sources/SwiftAISDK/AIUIMessageStreamReducer.swift
Instance PropertySwiftAISDK.messagevar message: StringSources/SwiftAISDK/AIUIMessageValidation.swift
Instance PropertySwiftAISDK.messageIDvar messageID: String?Sources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.messagesvar messages: [AIUIMessage]Sources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.messages@Published @MainActor var messages: [AIUIMessage] { get set }Sources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.messagesvar messages: [AIUIMessage]Sources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.messagesvar messages: [AIUIMessage]Sources/SwiftAISDK/AIUIMessageValidation.swift
Instance PropertySwiftAISDK.metadatavar metadata: JSONValue?Sources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.metadatavar metadata: JSONValue?Sources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.metadatavar metadata: JSONValue?Sources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.modelvar model: any LanguageModelSources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.onError@MainActor var onError: (@MainActor @Sendable (any Error) -> Void)?Sources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.onFinish@MainActor var onFinish: (@MainActor @Sendable (AIChatSessionFinishEvent) -> Void)?Sources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.outcomevar outcome: AIUIMessageStreamOutcomeSources/SwiftAISDK/AIUIMessageStreamReducer.swift
Instance PropertySwiftAISDK.pathvar path: StringSources/SwiftAISDK/AIUIMessageValidation.swift
Instance PropertySwiftAISDK.prepareStepvar prepareStep: AIPrepareStep?Sources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.requestOptionsvar requestOptions: AIChatRequestOptionsSources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.responseMessageIDvar responseMessageID: String?Sources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.retryPolicyvar retryPolicy: AIRetryPolicySources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.sendAutomaticallyWhen@MainActor var sendAutomaticallyWhen: (@MainActor @Sendable ([AIUIMessage]) -> Bool)?Sources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.sendFinishvar sendFinish: BoolSources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.sendReasoningvar sendReasoning: BoolSources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.sendSourcesvar sendSources: BoolSources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.status@Published @MainActor var status: AIChatSessionStatus { get set }Sources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.stopWhenvar stopWhen: [AIStopCondition]Sources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.telemetryvar telemetry: Telemetry.Options?Sources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.timeoutNanosecondsvar timeoutNanoseconds: UInt64?Sources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.toolApprovalvar toolApproval: AIToolApproval?Sources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.toolCallersvar toolCallers: AIToolCallerRoutingSources/SwiftAISDK/AIChatTransport.swift
Instance PropertySwiftAISDK.transport@MainActor var transport: any AIChatTransportSources/SwiftAISDK/AIChatSession.swift
Instance PropertySwiftAISDK.triggervar trigger: AIChatTransportTriggerSources/SwiftAISDK/AIChatTransport.swift
ProtocolSwiftAISDK.AIChatTransportprotocol AIChatTransport : SendableSources/SwiftAISDK/AIChatTransport.swift
StructureSwiftAI.AIChatRequestOptionsstruct AIChatRequestOptionsPackages/swift-ai-core/Sources/SwiftAI/AIChatTransport.swift
StructureSwiftAISDK.AIChatReconnectRequeststruct AIChatReconnectRequestSources/SwiftAISDK/AIChatTransport.swift
StructureSwiftAISDK.AIChatSessionFinishEventstruct AIChatSessionFinishEventSources/SwiftAISDK/AIChatSession.swift
StructureSwiftAISDK.AIChatSessionRequestOptionsstruct AIChatSessionRequestOptionsSources/SwiftAISDK/AIChatSession.swift
StructureSwiftAISDK.AIChatTransportRequeststruct AIChatTransportRequestSources/SwiftAISDK/AIChatTransport.swift
StructureSwiftAISDK.AIUIMessageStreamEndEventstruct AIUIMessageStreamEndEventSources/SwiftAISDK/AIUIMessageStreamReducer.swift
StructureSwiftAISDK.AIUIMessageStreamReducerstruct AIUIMessageStreamReducerSources/SwiftAISDK/AIUIMessageStreamReducer.swift
StructureSwiftAISDK.AIUIMessageValidationIssuestruct AIUIMessageValidationIssueSources/SwiftAISDK/AIUIMessageValidation.swift
StructureSwiftAISDK.AIUIMessageValidationResultstruct AIUIMessageValidationResultSources/SwiftAISDK/AIUIMessageValidation.swift
StructureSwiftAISDK.DirectAIChatTransportstruct DirectAIChatTransportSources/SwiftAISDK/AIChatTransport.swift
Type AliasSwiftAISDK.AIUIDataPartConvertertypealias AIUIDataPartConverter = @Sendable (AIUIDataPart) throws -> AIContentPart?Sources/SwiftAISDK/AIUIMessageConversion.swift
Type MethodSwiftAISDK.snapshots(from:messageID:terminateOnError:)static func snapshots(from stream: AsyncThrowingStream<LanguageStreamPart, any Error>, messageID: String = UUID().uuidString, terminateOnError: Bool = false) -> AsyncThrowingStream<AIUIMessage, any Error>Sources/SwiftAISDK/AIUIMessageStreamReducer.swift
Type MethodSwiftAISDK.snapshots(from:messageID:terminateOnError:originalMessage:onEnd:)static func snapshots(from stream: AsyncThrowingStream<LanguageStreamPart, any Error>, messageID: String = UUID().uuidString, terminateOnError: Bool = false, originalMessage: AIUIMessage? = nil, onEnd: (@Sendable (AIUIMessageStreamEndEvent) async -> Void)? = nil) -> AsyncThrowingStream<AIUIMessage, any Error>Sources/SwiftAISDK/AIUIMessageStreamReducer.swift

await session.stopAndWait() waits for active send/reconnect consumer tasks to settle; await session.dispose() also calls the transport’s defaultable close(). Existing synchronous stop() remains available. Cancellation suppresses an automatic follow-up even when a restored or superseded stream settles later. Custom transports own the completion of asynchronous producers that ignore cancellation: the public stream contract has no producer-completion handle.

Use AIUIMessageToolSchema with schema-aware validateUIMessages or validateUIMessagesForAgent. Async overloads accept refineToolInput callbacks and check the preserved pre-refinement approval input before refinement. DirectAIChatTransport bridges current tool refiners and output converters.

Agent normalization records unavailableStaticToolCallIDs for removed static tools. Successful missing-tool outputs become an omission message; dynamic outputs, errors and tools restored with a current converter keep their intended model representation. Browser HTTP/WebSocket framing and explicit UI stream step boundaries remain separate deferred surfaces.

When a streamed tool call reuses an ID, its latest nonempty name replaces the previous name during input and completion. pruneMessages removes a reasoning group when all following content before the next reasoning group was pruned; reasoning attached to retained text/tools and trailing reasoning survive.