25 lines
1006 B
Swift
25 lines
1006 B
Swift
// SPDX-FileCopyrightText: 2026 Kaede Akino
|
|
// SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
import Foundation
|
|
|
|
/// Draft and attachment state owned by the composer rather than the runtime or
|
|
/// transcript. A conversation exposes compatibility accessors while views move
|
|
/// toward observing this focused state directly.
|
|
@Observable
|
|
public final class ConversationComposerState {
|
|
public init() {}
|
|
|
|
public var attachments: [ContextChip] = []
|
|
public var pendingAttachments: [PendingContextAttachment] = []
|
|
public var attachmentImportError: String?
|
|
public var draft = ""
|
|
/// A skill `/skill` named for the next message, by name.
|
|
///
|
|
/// Beside the attachments rather than on the conversation, and consumed the
|
|
/// same way: it belongs to the message being written, and the chip going
|
|
/// away is how the user sees it was sent. Unlike plan mode — a posture that
|
|
/// outlives the turn — this is one instruction for one message.
|
|
public var armedSkillName: String?
|
|
}
|