//
//  Shortcut.swift
//  Confab
//
//  User-defined slash command templates (prompt shortcuts/macros)
//
// SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
// Copyright (C) 2026 Rune Olsen
//
// This file is part of Confab.
//
// Confab is licensed under the PolyForm Noncommercial License 1.0.0.
// You may use, study, modify, and share it for any noncommercial
// purpose. Commercial use — including selling Confab or any part of
// it, standalone or bundled into another product or service —
// requires a separate commercial license from the copyright holder.
//
// See the LICENSE file or
// <https://polyformproject.org/licenses/noncommercial/1.0.0> for
// the full license text. For commercial licensing, contact Rune
// Olsen via <https://confab.no>.


import Foundation

struct Shortcut: Codable, Identifiable {
    var id: UUID
    var command: String      // e.g. "/summarize" (always starts with /)
    var description: String  // shown in dropdown
    var template: String     // prompt text, may contain {{input}}
    var createdAt: Date
    var updatedAt: Date

    init(id: UUID = UUID(), command: String, description: String, template: String,
         createdAt: Date = Date(), updatedAt: Date = Date()) {
        self.id = id
        self.command = command
        self.description = description
        self.template = template
        self.createdAt = createdAt
        self.updatedAt = updatedAt
    }

    /// True when the template uses {{input}} and needs the user to provide text
    var needsInput: Bool {
        template.contains("{{input}}")
    }
}
