{
  "name": "ForgeAgent",
  "language": "swift",
  "version": "Swift package source snapshot",
  "description": "Swift ForgeAgent library product.",
  "manifest": "forge-swift/Package.swift",
  "manifestSha256": "8579cd038904d9101db7b7714fa006f94144a6f951c0535512114bb00d4a3128",
  "status": "source-reference",
  "registryPublicationVerified": false,
  "route": "/libraries/swift/ForgeAgent",
  "features": {},
  "files": [
    {
      "path": "forge-swift/Sources/ForgeAgent/Agent.swift",
      "sha256": "a79107d6df9f886d47808a1f37f5c398ec7052b76bad9a89fb9a3a17e3f265f3",
      "artifactSha256": "bad46fdfb90cec2ebe9989223d96aa9bd02c5173927de5ab2ecd5253213713e5",
      "url": "/reference/source/forge-swift/Sources/ForgeAgent/Agent.swift.txt",
      "declarations": [
        {
          "name": "public struct AgentConfig: Sendable",
          "line": 19,
          "signature": "public struct AgentConfig: Sendable",
          "documentation": ""
        },
        {
          "name": "public let providerRef: String",
          "line": 21,
          "signature": "public let providerRef: String\n/// System instruction for the agent.\npublic let systemPrompt: String?\n/// Maximum number of tool loop steps before stopping.\npublic let maxSteps: Int\n/// Maximum total tokens before stopping.\npublic let maxTokens: UInt64\n/// Generation options for inference calls.\npublic let options: GenerateOptions\n/// Agent name for logging and telemetry.\npublic let name: String?\n\npublic init(\nproviderRef: String,\nsystemPrompt: String?;",
          "documentation": ""
        },
        {
          "name": "public let systemPrompt: String?",
          "line": 23,
          "signature": "public let systemPrompt: String?\n/// Maximum number of tool loop steps before stopping.\npublic let maxSteps: Int\n/// Maximum total tokens before stopping.\npublic let maxTokens: UInt64\n/// Generation options for inference calls.\npublic let options: GenerateOptions\n/// Agent name for logging and telemetry.\npublic let name: String?\n\npublic init(\nproviderRef: String,\nsystemPrompt: String?;",
          "documentation": ""
        },
        {
          "name": "public let maxSteps: Int",
          "line": 25,
          "signature": "public let maxSteps: Int\n/// Maximum total tokens before stopping.\npublic let maxTokens: UInt64\n/// Generation options for inference calls.\npublic let options: GenerateOptions\n/// Agent name for logging and telemetry.\npublic let name: String?\n\npublic init(\nproviderRef: String,\nsystemPrompt: String?;",
          "documentation": ""
        },
        {
          "name": "public let maxTokens: UInt64",
          "line": 27,
          "signature": "public let maxTokens: UInt64\n/// Generation options for inference calls.\npublic let options: GenerateOptions\n/// Agent name for logging and telemetry.\npublic let name: String?\n\npublic init(\nproviderRef: String,\nsystemPrompt: String?;",
          "documentation": ""
        },
        {
          "name": "public let options: GenerateOptions",
          "line": 29,
          "signature": "public let options: GenerateOptions\n/// Agent name for logging and telemetry.\npublic let name: String?\n\npublic init(\nproviderRef: String,\nsystemPrompt: String?;",
          "documentation": ""
        },
        {
          "name": "public let name: String?",
          "line": 31,
          "signature": "public let name: String?\n\npublic init(\nproviderRef: String,\nsystemPrompt: String?;",
          "documentation": ""
        },
        {
          "name": "public init(",
          "line": 33,
          "signature": "public init(\nproviderRef: String,\nsystemPrompt: String?;",
          "documentation": ""
        },
        {
          "name": "public struct AgentOutput: Sendable",
          "line": 53,
          "signature": "public struct AgentOutput: Sendable",
          "documentation": ""
        },
        {
          "name": "public let text: String",
          "line": 55,
          "signature": "public let text: String\n/// All messages in the conversation (including tool calls and results).\npublic let messages: [ModelMessage]\n/// Total usage across all inference calls.\npublic let usage: Usage\n/// Number of tool loop steps executed.\npublic let steps: Int\n/// The finish reason of the final inference call.\npublic let finishReason: FinishReason\n\npublic init(\ntext: String,\nmessages: [ModelMessage],\nusage: Usage,\nsteps: Int,\nfinishReason: FinishReason\n)",
          "documentation": ""
        },
        {
          "name": "public let messages: [ModelMessage]",
          "line": 57,
          "signature": "public let messages: [ModelMessage]\n/// Total usage across all inference calls.\npublic let usage: Usage\n/// Number of tool loop steps executed.\npublic let steps: Int\n/// The finish reason of the final inference call.\npublic let finishReason: FinishReason\n\npublic init(\ntext: String,\nmessages: [ModelMessage],\nusage: Usage,\nsteps: Int,\nfinishReason: FinishReason\n)",
          "documentation": ""
        },
        {
          "name": "public let usage: Usage",
          "line": 59,
          "signature": "public let usage: Usage\n/// Number of tool loop steps executed.\npublic let steps: Int\n/// The finish reason of the final inference call.\npublic let finishReason: FinishReason\n\npublic init(\ntext: String,\nmessages: [ModelMessage],\nusage: Usage,\nsteps: Int,\nfinishReason: FinishReason\n)",
          "documentation": ""
        },
        {
          "name": "public let steps: Int",
          "line": 61,
          "signature": "public let steps: Int\n/// The finish reason of the final inference call.\npublic let finishReason: FinishReason\n\npublic init(\ntext: String,\nmessages: [ModelMessage],\nusage: Usage,\nsteps: Int,\nfinishReason: FinishReason\n)",
          "documentation": ""
        },
        {
          "name": "public let finishReason: FinishReason",
          "line": 63,
          "signature": "public let finishReason: FinishReason\n\npublic init(\ntext: String,\nmessages: [ModelMessage],\nusage: Usage,\nsteps: Int,\nfinishReason: FinishReason\n)",
          "documentation": ""
        },
        {
          "name": "public init(",
          "line": 65,
          "signature": "public init(\ntext: String,\nmessages: [ModelMessage],\nusage: Usage,\nsteps: Int,\nfinishReason: FinishReason\n)",
          "documentation": ""
        },
        {
          "name": "public protocol ForgeAgent: Sendable",
          "line": 88,
          "signature": "public protocol ForgeAgent: Sendable",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-swift/Sources/ForgeAgent/LoopControl.swift",
      "sha256": "d2c9559b6ee9ca05a1a3bc0b3b2b9846582cd0a7afd332acce5fc7d1be155e93",
      "artifactSha256": "e65c153abe1785b9f9e47c85d5d5db1a85019050b12e482d86fd17b9e93be38d",
      "url": "/reference/source/forge-swift/Sources/ForgeAgent/LoopControl.swift.txt",
      "declarations": [
        {
          "name": "public enum StopCondition: Sendable",
          "line": 14,
          "signature": "public enum StopCondition: Sendable",
          "documentation": ""
        },
        {
          "name": "public struct LoopState: Sendable",
          "line": 26,
          "signature": "public struct LoopState: Sendable",
          "documentation": ""
        },
        {
          "name": "public let step: Int",
          "line": 28,
          "signature": "public let step: Int\n/// Total tokens consumed so far.\npublic let totalTokens: UInt64\n/// The finish reason from the last inference call.\npublic let lastFinishReason: FinishReason?\n/// The messages accumulated so far.\npublic let messageCount: Int\n\npublic init(step: Int, totalTokens: UInt64, lastFinishReason: FinishReason?, messageCount: Int)",
          "documentation": ""
        },
        {
          "name": "public let totalTokens: UInt64",
          "line": 30,
          "signature": "public let totalTokens: UInt64\n/// The finish reason from the last inference call.\npublic let lastFinishReason: FinishReason?\n/// The messages accumulated so far.\npublic let messageCount: Int\n\npublic init(step: Int, totalTokens: UInt64, lastFinishReason: FinishReason?, messageCount: Int)",
          "documentation": ""
        },
        {
          "name": "public let lastFinishReason: FinishReason?",
          "line": 32,
          "signature": "public let lastFinishReason: FinishReason?\n/// The messages accumulated so far.\npublic let messageCount: Int\n\npublic init(step: Int, totalTokens: UInt64, lastFinishReason: FinishReason?, messageCount: Int)",
          "documentation": ""
        },
        {
          "name": "public let messageCount: Int",
          "line": 34,
          "signature": "public let messageCount: Int\n\npublic init(step: Int, totalTokens: UInt64, lastFinishReason: FinishReason?, messageCount: Int)",
          "documentation": ""
        },
        {
          "name": "public init(step: Int, totalTokens: UInt64, lastFinishReason: FinishReason?, messageCount: Int)",
          "line": 36,
          "signature": "public init(step: Int, totalTokens: UInt64, lastFinishReason: FinishReason?, messageCount: Int)",
          "documentation": ""
        },
        {
          "name": "public func evaluateStopConditions(",
          "line": 50,
          "signature": "public func evaluateStopConditions(\n_ conditions: [StopCondition],\nstate: LoopState\n) -> StopCondition?",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-swift/Sources/ForgeAgent/Messaging.swift",
      "sha256": "5e57139cfd39d546b5f6c04d8677c9d5d7e7eea162e512c854cc6fb16c5794c6",
      "artifactSha256": "28fd4297653553432861604ea177f274e8b6a3e99e396530144417cd2ae1815f",
      "url": "/reference/source/forge-swift/Sources/ForgeAgent/Messaging.swift.txt",
      "declarations": [
        {
          "name": "public struct AgentMessage: Codable, Sendable",
          "line": 14,
          "signature": "public struct AgentMessage: Codable, Sendable",
          "documentation": ""
        },
        {
          "name": "public let senderDid: String?",
          "line": 16,
          "signature": "public let senderDid: String?\n/// The recipient agent identifier.\npublic let recipientDid: String?\n/// The message type.\npublic let messageType: String\n/// The message payload.\npublic let payload: JSONValue\n/// When the message was created.\npublic let timestamp: Timestamp\n\npublic init(\nsenderDid: String?;",
          "documentation": ""
        },
        {
          "name": "public let recipientDid: String?",
          "line": 18,
          "signature": "public let recipientDid: String?\n/// The message type.\npublic let messageType: String\n/// The message payload.\npublic let payload: JSONValue\n/// When the message was created.\npublic let timestamp: Timestamp\n\npublic init(\nsenderDid: String?;",
          "documentation": ""
        },
        {
          "name": "public let messageType: String",
          "line": 20,
          "signature": "public let messageType: String\n/// The message payload.\npublic let payload: JSONValue\n/// When the message was created.\npublic let timestamp: Timestamp\n\npublic init(\nsenderDid: String?;",
          "documentation": ""
        },
        {
          "name": "public let payload: JSONValue",
          "line": 22,
          "signature": "public let payload: JSONValue\n/// When the message was created.\npublic let timestamp: Timestamp\n\npublic init(\nsenderDid: String?;",
          "documentation": ""
        },
        {
          "name": "public let timestamp: Timestamp",
          "line": 24,
          "signature": "public let timestamp: Timestamp\n\npublic init(\nsenderDid: String?;",
          "documentation": ""
        },
        {
          "name": "public init(",
          "line": 26,
          "signature": "public init(\nsenderDid: String?;",
          "documentation": ""
        },
        {
          "name": "public final class AgentMessageChannel: @unchecked Sendable",
          "line": 44,
          "signature": "public final class AgentMessageChannel: @unchecked Sendable",
          "documentation": ""
        },
        {
          "name": "public init()",
          "line": 48,
          "signature": "public init()",
          "documentation": ""
        },
        {
          "name": "public func send(_ message: AgentMessage)",
          "line": 53,
          "signature": "public func send(_ message: AgentMessage)",
          "documentation": ""
        },
        {
          "name": "public func receiveAll() -> [AgentMessage]",
          "line": 62,
          "signature": "public func receiveAll() -> [AgentMessage]",
          "documentation": ""
        },
        {
          "name": "public var count: Int",
          "line": 71,
          "signature": "public var count: Int",
          "documentation": ""
        },
        {
          "name": "public var isEmpty: Bool",
          "line": 78,
          "signature": "public var isEmpty: Bool",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-swift/Sources/ForgeAgent/SubAgent.swift",
      "sha256": "32ef351e68016317a606cd8ff5fcd40507a3b967873b99b9602ad3a8f45ac3a3",
      "artifactSha256": "277bc24afbd8447d05044c5666c34f117579836c1f56456d86ff362dc5ca2868",
      "url": "/reference/source/forge-swift/Sources/ForgeAgent/SubAgent.swift.txt",
      "declarations": [
        {
          "name": "public struct SubAgentConfig: Sendable",
          "line": 17,
          "signature": "public struct SubAgentConfig: Sendable",
          "documentation": ""
        },
        {
          "name": "public let name: String",
          "line": 19,
          "signature": "public let name: String\n/// The system prompt for the sub-agent.\npublic let systemPrompt: String?\n/// Maximum tool loop steps for the sub-agent.\npublic let maxSteps: Int\n/// Tools available to the sub-agent (subset of parent's tools).\npublic let allowedTools: [String]?\n\npublic init(\nname: String,\nsystemPrompt: String?;",
          "documentation": ""
        },
        {
          "name": "public let systemPrompt: String?",
          "line": 21,
          "signature": "public let systemPrompt: String?\n/// Maximum tool loop steps for the sub-agent.\npublic let maxSteps: Int\n/// Tools available to the sub-agent (subset of parent's tools).\npublic let allowedTools: [String]?\n\npublic init(\nname: String,\nsystemPrompt: String?;",
          "documentation": ""
        },
        {
          "name": "public let maxSteps: Int",
          "line": 23,
          "signature": "public let maxSteps: Int\n/// Tools available to the sub-agent (subset of parent's tools).\npublic let allowedTools: [String]?\n\npublic init(\nname: String,\nsystemPrompt: String?;",
          "documentation": ""
        },
        {
          "name": "public let allowedTools: [String]?",
          "line": 25,
          "signature": "public let allowedTools: [String]?\n\npublic init(\nname: String,\nsystemPrompt: String?;",
          "documentation": ""
        },
        {
          "name": "public init(",
          "line": 27,
          "signature": "public init(\nname: String,\nsystemPrompt: String?;",
          "documentation": ""
        },
        {
          "name": "public func createSubAgent(",
          "line": 54,
          "signature": "public func createSubAgent(\nmodel: any LanguageModel,\nconfig: SubAgentConfig,\nparentRegistry: ToolRegistry,\napprovalHandler: any ToolApprovalHandler;",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-swift/Sources/ForgeAgent/ToolLoop.swift",
      "sha256": "0c98802f307a6b24c7f09aedf47eac43afff2313a66ddd8d4195c06f2d8fcb62",
      "artifactSha256": "cb5cb554e9c44a8f5c07b789f17b176bfbabae4b88c19ce455ed4ead02932c07",
      "url": "/reference/source/forge-swift/Sources/ForgeAgent/ToolLoop.swift.txt",
      "declarations": [
        {
          "name": "public final class ToolLoopAgent: ForgeAgent, @unchecked Sendable",
          "line": 36,
          "signature": "public final class ToolLoopAgent: ForgeAgent, @unchecked Sendable",
          "documentation": ""
        },
        {
          "name": "public let config: AgentConfig",
          "line": 37,
          "signature": "public let config: AgentConfig\n\nprivate let model: any LanguageModel\nprivate let toolRegistry: ToolRegistry\nprivate let approvalHandler: any ToolApprovalHandler\nprivate let telemetry: any TelemetryEmitter\nprivate let lifecycleManager: LifecycleManager\nprivate let healthMonitor: HealthMonitor\n\n/// Creates a new tool loop agent.\n///\n/// - Parameters:\n///   - model: The language model to use.\n///   - config: The agent configuration.\n///   - toolRegistry: The registry of available tools.\n///   - approvalHandler: The tool approval handler. Defaults to auto-approve.\n///   - telemetry: The telemetry emitter. Defaults to no-op.\npublic init(\nmodel: any LanguageModel,\nconfig: AgentConfig,\ntoolRegistry: ToolRegistry;",
          "documentation": ""
        },
        {
          "name": "public init(",
          "line": 54,
          "signature": "public init(\nmodel: any LanguageModel,\nconfig: AgentConfig,\ntoolRegistry: ToolRegistry;",
          "documentation": ""
        },
        {
          "name": "public func health() -> HealthProfile",
          "line": 71,
          "signature": "public func health() -> HealthProfile",
          "documentation": ""
        },
        {
          "name": "public func lifecycle() -> LifecycleState",
          "line": 76,
          "signature": "public func lifecycle() -> LifecycleState",
          "documentation": ""
        },
        {
          "name": "public func start() throws",
          "line": 87,
          "signature": "public func start() throws",
          "documentation": ""
        },
        {
          "name": "public func run(input: String) async throws -> AgentOutput",
          "line": 99,
          "signature": "public func run(input: String) async throws -> AgentOutput",
          "documentation": ""
        },
        {
          "name": "public func stop() throws",
          "line": 210,
          "signature": "public func stop() throws",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-swift/Sources/ForgeAgent/Workflow.swift",
      "sha256": "9a204d8d98615b3e604d7c6514698eb7c480514225efe6b2a2cccd893b952317",
      "artifactSha256": "31f5c5ca70519b1fd3e27142a46a568ae1ea0e44341d8e58a652039af92351c5",
      "url": "/reference/source/forge-swift/Sources/ForgeAgent/Workflow.swift.txt",
      "declarations": [
        {
          "name": "public struct WorkflowStep: Sendable",
          "line": 15,
          "signature": "public struct WorkflowStep: Sendable",
          "documentation": ""
        },
        {
          "name": "public let name: String",
          "line": 17,
          "signature": "public let name: String\n/// The step execution function.\npublic let execute: @Sendable (String) async throws -> String\n\npublic init(name: String, execute: @escaping @Sendable (String) async throws -> String)",
          "documentation": ""
        },
        {
          "name": "public let execute: @Sendable (String) async throws -> String",
          "line": 19,
          "signature": "public let execute: @Sendable (String) async throws -> String\n\npublic init(name: String, execute: @escaping @Sendable (String) async throws -> String)",
          "documentation": ""
        },
        {
          "name": "public init(name: String, execute: @escaping @Sendable (String) async throws -> String)",
          "line": 21,
          "signature": "public init(name: String, execute: @escaping @Sendable (String) async throws -> String)",
          "documentation": ""
        },
        {
          "name": "public func executeSequentialWorkflow(",
          "line": 37,
          "signature": "public func executeSequentialWorkflow(\nsteps: [WorkflowStep],\ninput: String\n) async throws -> String",
          "documentation": ""
        },
        {
          "name": "public func executeParallelWorkflow(",
          "line": 57,
          "signature": "public func executeParallelWorkflow(\nsteps: [WorkflowStep],\ninput: String\n) async throws -> [String]",
          "documentation": ""
        }
      ]
    }
  ]
}
