mirror of
https://github.com/block/goose.git
synced 2026-07-17 12:56:20 +02:00
65 lines
2.3 KiB
Swift
65 lines
2.3 KiB
Swift
//
|
|
// ProviderMetadata.swift
|
|
//
|
|
// Generated by openapi-generator
|
|
// https://openapi-generator.tech
|
|
//
|
|
|
|
import Foundation
|
|
#if canImport(AnyCodable)
|
|
import AnyCodable
|
|
#endif
|
|
|
|
/** Metadata about a provider's configuration requirements and capabilities */
|
|
public struct ProviderMetadata: Codable, JSONEncodable, Hashable {
|
|
|
|
/** Required configuration keys */
|
|
public var configKeys: [ConfigKey]
|
|
/** The default/recommended model for this provider */
|
|
public var defaultModel: String
|
|
/** Description of the provider's capabilities */
|
|
public var description: String
|
|
/** Display name for the provider in UIs */
|
|
public var displayName: String
|
|
/** A list of currently known models with their capabilities TODO: eventually query the apis directly */
|
|
public var knownModels: [ModelInfo]
|
|
/** Link to the docs where models can be found */
|
|
public var modelDocLink: String
|
|
/** The unique identifier for this provider */
|
|
public var name: String
|
|
|
|
public init(configKeys: [ConfigKey], defaultModel: String, description: String, displayName: String, knownModels: [ModelInfo], modelDocLink: String, name: String) {
|
|
self.configKeys = configKeys
|
|
self.defaultModel = defaultModel
|
|
self.description = description
|
|
self.displayName = displayName
|
|
self.knownModels = knownModels
|
|
self.modelDocLink = modelDocLink
|
|
self.name = name
|
|
}
|
|
|
|
public enum CodingKeys: String, CodingKey, CaseIterable {
|
|
case configKeys = "config_keys"
|
|
case defaultModel = "default_model"
|
|
case description
|
|
case displayName = "display_name"
|
|
case knownModels = "known_models"
|
|
case modelDocLink = "model_doc_link"
|
|
case name
|
|
}
|
|
|
|
// Encodable protocol methods
|
|
|
|
public func encode(to encoder: Encoder) throws {
|
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
|
try container.encode(configKeys, forKey: .configKeys)
|
|
try container.encode(defaultModel, forKey: .defaultModel)
|
|
try container.encode(description, forKey: .description)
|
|
try container.encode(displayName, forKey: .displayName)
|
|
try container.encode(knownModels, forKey: .knownModels)
|
|
try container.encode(modelDocLink, forKey: .modelDocLink)
|
|
try container.encode(name, forKey: .name)
|
|
}
|
|
}
|
|
|