{
  "name": "ForgeAuth",
  "language": "swift",
  "version": "Swift package source snapshot",
  "description": "Swift ForgeAuth library product.",
  "manifest": "forge-swift/Package.swift",
  "manifestSha256": "8579cd038904d9101db7b7714fa006f94144a6f951c0535512114bb00d4a3128",
  "status": "source-reference",
  "registryPublicationVerified": false,
  "route": "/libraries/swift/ForgeAuth",
  "features": {},
  "files": [
    {
      "path": "forge-swift/Sources/ForgeAuth/AuthError.swift",
      "sha256": "06b5ed2c3721ac0b5204871ffe18a025f94d722eaeca089b665bc371cb862e12",
      "artifactSha256": "c7eca73cb4ae5a68bd146337a4f84dbb14ce6ed52aa026e7262eb2dcca168584",
      "url": "/reference/source/forge-swift/Sources/ForgeAuth/AuthError.swift.txt",
      "declarations": [
        {
          "name": "public enum ForgeAuthError: Error, Sendable, Equatable",
          "line": 21,
          "signature": "public enum ForgeAuthError: Error, Sendable, Equatable",
          "documentation": ""
        },
        {
          "name": "public var errorDescription: String?",
          "line": 65,
          "signature": "public var errorDescription: String?",
          "documentation": ""
        },
        {
          "name": "public var isExpired: Bool",
          "line": 83,
          "signature": "public var isExpired: Bool",
          "documentation": ""
        },
        {
          "name": "public var isInsufficientScope: Bool",
          "line": 89,
          "signature": "public var isInsufficientScope: Bool",
          "documentation": ""
        },
        {
          "name": "public var isCapabilityEscalation: Bool",
          "line": 95,
          "signature": "public var isCapabilityEscalation: Bool",
          "documentation": ""
        },
        {
          "name": "public var isDelegationDenied: Bool",
          "line": 101,
          "signature": "public var isDelegationDenied: Bool",
          "documentation": ""
        },
        {
          "name": "public var isInvalidToken: Bool",
          "line": 107,
          "signature": "public var isInvalidToken: Bool",
          "documentation": ""
        },
        {
          "name": "public var errorCode: String",
          "line": 115,
          "signature": "public var errorCode: String",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-swift/Sources/ForgeAuth/Capability.swift",
      "sha256": "11fa455cdb39630cec545788c50e004aade3029d998b58fa4daec2e61e8ddcb1",
      "artifactSha256": "35b9f082d846c224b93ca246fcb1b6efc8b8fada46cad46d6497c58679f8884c",
      "url": "/reference/source/forge-swift/Sources/ForgeAuth/Capability.swift.txt",
      "declarations": [
        {
          "name": "public struct ToolPattern: Codable, Sendable, Equatable, Hashable",
          "line": 23,
          "signature": "public struct ToolPattern: Codable, Sendable, Equatable, Hashable",
          "documentation": ""
        },
        {
          "name": "public let pattern: String",
          "line": 25,
          "signature": "public let pattern: String\n\n/// Creates a new tool pattern.\n///\n/// - Parameter pattern: The pattern string. Use `*` for wildcard matching.\npublic init(_ pattern: String)",
          "documentation": ""
        },
        {
          "name": "public init(_ pattern: String)",
          "line": 30,
          "signature": "public init(_ pattern: String)",
          "documentation": ""
        },
        {
          "name": "public func matches(_ toolName: String) -> Bool",
          "line": 43,
          "signature": "public func matches(_ toolName: String) -> Bool",
          "documentation": ""
        },
        {
          "name": "public init(from decoder: Decoder) throws",
          "line": 54,
          "signature": "public init(from decoder: Decoder) throws",
          "documentation": ""
        },
        {
          "name": "public func encode(to encoder: Encoder) throws",
          "line": 59,
          "signature": "public func encode(to encoder: Encoder) throws",
          "documentation": ""
        },
        {
          "name": "public struct Capability: Codable, Sendable, Equatable",
          "line": 73,
          "signature": "public struct Capability: Codable, Sendable, Equatable",
          "documentation": ""
        },
        {
          "name": "public let toolPattern: ToolPattern",
          "line": 75,
          "signature": "public let toolPattern: ToolPattern\n\n/// An optional human-readable label for this capability.\npublic let label: String?\n\n/// Optional scope string in `service:resource:action` format.\n///\n/// When present, this is the canonical scope string used for ACT scope\n/// matching. When absent, the scope is derived from the tool pattern\n/// as `forge:tool.<pattern>:execute`.\npublic let scope: String?\n\n/// Creates a new capability.\n///\n/// - Parameters:\n///   - toolPattern: The tool name pattern.\n///   - label: An optional human-readable label.\n///   - scope: An optional scope string in `service:resource:action` format.\npublic init(toolPattern: ToolPattern, label: String?;",
          "documentation": ""
        },
        {
          "name": "public let label: String?",
          "line": 78,
          "signature": "public let label: String?\n\n/// Optional scope string in `service:resource:action` format.\n///\n/// When present, this is the canonical scope string used for ACT scope\n/// matching. When absent, the scope is derived from the tool pattern\n/// as `forge:tool.<pattern>:execute`.\npublic let scope: String?\n\n/// Creates a new capability.\n///\n/// - Parameters:\n///   - toolPattern: The tool name pattern.\n///   - label: An optional human-readable label.\n///   - scope: An optional scope string in `service:resource:action` format.\npublic init(toolPattern: ToolPattern, label: String?;",
          "documentation": ""
        },
        {
          "name": "public let scope: String?",
          "line": 85,
          "signature": "public let scope: String?\n\n/// Creates a new capability.\n///\n/// - Parameters:\n///   - toolPattern: The tool name pattern.\n///   - label: An optional human-readable label.\n///   - scope: An optional scope string in `service:resource:action` format.\npublic init(toolPattern: ToolPattern, label: String?;",
          "documentation": ""
        },
        {
          "name": "public init(toolPattern: ToolPattern, label: String?;",
          "line": 93,
          "signature": "public init(toolPattern: ToolPattern, label: String?;",
          "documentation": ""
        },
        {
          "name": "public static func tool(_ toolName: String) -> Capability",
          "line": 103,
          "signature": "public static func tool(_ toolName: String) -> Capability",
          "documentation": ""
        },
        {
          "name": "public static func wildcard() -> Capability",
          "line": 113,
          "signature": "public static func wildcard() -> Capability",
          "documentation": ""
        },
        {
          "name": "public struct ArsenalACT: Codable, Sendable, Equatable",
          "line": 129,
          "signature": "public struct ArsenalACT: Codable, Sendable, Equatable",
          "documentation": ""
        },
        {
          "name": "public let id: String",
          "line": 131,
          "signature": "public let id: String\n\n/// The OAS DID of the agent this token is issued to.\npublic let agentDid: String\n\n/// The issuer identifier.\npublic let issuer: String\n\n/// The audience identifier.\npublic let audience: String\n\n/// The capabilities granted by this token.\npublic let capabilities: [Capability]\n\n/// The scope strings granted by this token (in `service:resource:action` format).\n///\n/// These are the canonical scopes used for scope matching. If a capability has\n/// an explicit scope, it is included here. Otherwise, the scope is derived from\n/// the tool pattern.\npublic let scopes: [String]\n\n/// When the token was issued.\npublic let issuedAt: Timestamp\n\n/// When the token becomes valid (not-before).\npublic let notBefore: Timestamp",
          "documentation": ""
        },
        {
          "name": "public let agentDid: String",
          "line": 134,
          "signature": "public let agentDid: String\n\n/// The issuer identifier.\npublic let issuer: String\n\n/// The audience identifier.\npublic let audience: String\n\n/// The capabilities granted by this token.\npublic let capabilities: [Capability]\n\n/// The scope strings granted by this token (in `service:resource:action` format).\n///\n/// These are the canonical scopes used for scope matching. If a capability has\n/// an explicit scope, it is included here. Otherwise, the scope is derived from\n/// the tool pattern.\npublic let scopes: [String]\n\n/// When the token was issued.\npublic let issuedAt: Timestamp\n\n/// When the token becomes valid (not-before).\npublic let notBefore: Timestamp\n\n/// When the token expires, or `nil` for non-expiring tokens.\npublic let expiresAt: Timestamp?",
          "documentation": ""
        },
        {
          "name": "public let issuer: String",
          "line": 137,
          "signature": "public let issuer: String\n\n/// The audience identifier.\npublic let audience: String\n\n/// The capabilities granted by this token.\npublic let capabilities: [Capability]\n\n/// The scope strings granted by this token (in `service:resource:action` format).\n///\n/// These are the canonical scopes used for scope matching. If a capability has\n/// an explicit scope, it is included here. Otherwise, the scope is derived from\n/// the tool pattern.\npublic let scopes: [String]\n\n/// When the token was issued.\npublic let issuedAt: Timestamp\n\n/// When the token becomes valid (not-before).\npublic let notBefore: Timestamp\n\n/// When the token expires, or `nil` for non-expiring tokens.\npublic let expiresAt: Timestamp?\n\n/// The parent token ID if this token was delegated.\npublic let parentTokenId: String?",
          "documentation": ""
        },
        {
          "name": "public let audience: String",
          "line": 140,
          "signature": "public let audience: String\n\n/// The capabilities granted by this token.\npublic let capabilities: [Capability]\n\n/// The scope strings granted by this token (in `service:resource:action` format).\n///\n/// These are the canonical scopes used for scope matching. If a capability has\n/// an explicit scope, it is included here. Otherwise, the scope is derived from\n/// the tool pattern.\npublic let scopes: [String]\n\n/// When the token was issued.\npublic let issuedAt: Timestamp\n\n/// When the token becomes valid (not-before).\npublic let notBefore: Timestamp\n\n/// When the token expires, or `nil` for non-expiring tokens.\npublic let expiresAt: Timestamp?\n\n/// The parent token ID if this token was delegated.\npublic let parentTokenId: String?\n\n/// Whether delegation is allowed from this token.\npublic let allowDelegation: Bool",
          "documentation": ""
        },
        {
          "name": "public let capabilities: [Capability]",
          "line": 143,
          "signature": "public let capabilities: [Capability]\n\n/// The scope strings granted by this token (in `service:resource:action` format).\n///\n/// These are the canonical scopes used for scope matching. If a capability has\n/// an explicit scope, it is included here. Otherwise, the scope is derived from\n/// the tool pattern.\npublic let scopes: [String]\n\n/// When the token was issued.\npublic let issuedAt: Timestamp\n\n/// When the token becomes valid (not-before).\npublic let notBefore: Timestamp\n\n/// When the token expires, or `nil` for non-expiring tokens.\npublic let expiresAt: Timestamp?\n\n/// The parent token ID if this token was delegated.\npublic let parentTokenId: String?\n\n/// Whether delegation is allowed from this token.\npublic let allowDelegation: Bool\n\n/// Maximum delegation depth permitted from this token.\npublic let maxDelegationDepth: UInt32",
          "documentation": ""
        },
        {
          "name": "public let scopes: [String]",
          "line": 150,
          "signature": "public let scopes: [String]\n\n/// When the token was issued.\npublic let issuedAt: Timestamp\n\n/// When the token becomes valid (not-before).\npublic let notBefore: Timestamp\n\n/// When the token expires, or `nil` for non-expiring tokens.\npublic let expiresAt: Timestamp?\n\n/// The parent token ID if this token was delegated.\npublic let parentTokenId: String?\n\n/// Whether delegation is allowed from this token.\npublic let allowDelegation: Bool\n\n/// Maximum delegation depth permitted from this token.\npublic let maxDelegationDepth: UInt32\n\n/// Minimum TTL reduction (in seconds) when delegating to child tokens.\npublic let minTtlReduction: Int64\n\n/// Creates a new Arsenal ACT.\n///\n/// - Parameters:",
          "documentation": ""
        },
        {
          "name": "public let issuedAt: Timestamp",
          "line": 153,
          "signature": "public let issuedAt: Timestamp\n\n/// When the token becomes valid (not-before).\npublic let notBefore: Timestamp\n\n/// When the token expires, or `nil` for non-expiring tokens.\npublic let expiresAt: Timestamp?\n\n/// The parent token ID if this token was delegated.\npublic let parentTokenId: String?\n\n/// Whether delegation is allowed from this token.\npublic let allowDelegation: Bool\n\n/// Maximum delegation depth permitted from this token.\npublic let maxDelegationDepth: UInt32\n\n/// Minimum TTL reduction (in seconds) when delegating to child tokens.\npublic let minTtlReduction: Int64\n\n/// Creates a new Arsenal ACT.\n///\n/// - Parameters:\n///   - id: Unique token identifier.\n///   - agentDid: The agent's OAS DID.\n///   - issuer: The issuer identifier.",
          "documentation": ""
        },
        {
          "name": "public let notBefore: Timestamp",
          "line": 156,
          "signature": "public let notBefore: Timestamp\n\n/// When the token expires, or `nil` for non-expiring tokens.\npublic let expiresAt: Timestamp?\n\n/// The parent token ID if this token was delegated.\npublic let parentTokenId: String?\n\n/// Whether delegation is allowed from this token.\npublic let allowDelegation: Bool\n\n/// Maximum delegation depth permitted from this token.\npublic let maxDelegationDepth: UInt32\n\n/// Minimum TTL reduction (in seconds) when delegating to child tokens.\npublic let minTtlReduction: Int64\n\n/// Creates a new Arsenal ACT.\n///\n/// - Parameters:\n///   - id: Unique token identifier.\n///   - agentDid: The agent's OAS DID.\n///   - issuer: The issuer identifier.\n///   - audience: The audience identifier.\n///   - capabilities: The capabilities granted.\n///   - scopes: The scope strings granted.",
          "documentation": ""
        },
        {
          "name": "public let expiresAt: Timestamp?",
          "line": 159,
          "signature": "public let expiresAt: Timestamp?\n\n/// The parent token ID if this token was delegated.\npublic let parentTokenId: String?\n\n/// Whether delegation is allowed from this token.\npublic let allowDelegation: Bool\n\n/// Maximum delegation depth permitted from this token.\npublic let maxDelegationDepth: UInt32\n\n/// Minimum TTL reduction (in seconds) when delegating to child tokens.\npublic let minTtlReduction: Int64\n\n/// Creates a new Arsenal ACT.\n///\n/// - Parameters:\n///   - id: Unique token identifier.\n///   - agentDid: The agent's OAS DID.\n///   - issuer: The issuer identifier.\n///   - audience: The audience identifier.\n///   - capabilities: The capabilities granted.\n///   - scopes: The scope strings granted.\n///   - issuedAt: When the token was issued.\n///   - notBefore: When the token becomes valid.\n///   - expiresAt: When the token expires, or nil.",
          "documentation": ""
        },
        {
          "name": "public let parentTokenId: String?",
          "line": 162,
          "signature": "public let parentTokenId: String?\n\n/// Whether delegation is allowed from this token.\npublic let allowDelegation: Bool\n\n/// Maximum delegation depth permitted from this token.\npublic let maxDelegationDepth: UInt32\n\n/// Minimum TTL reduction (in seconds) when delegating to child tokens.\npublic let minTtlReduction: Int64\n\n/// Creates a new Arsenal ACT.\n///\n/// - Parameters:\n///   - id: Unique token identifier.\n///   - agentDid: The agent's OAS DID.\n///   - issuer: The issuer identifier.\n///   - audience: The audience identifier.\n///   - capabilities: The capabilities granted.\n///   - scopes: The scope strings granted.\n///   - issuedAt: When the token was issued.\n///   - notBefore: When the token becomes valid.\n///   - expiresAt: When the token expires, or nil.\n///   - parentTokenId: The parent token ID for delegated tokens.\n///   - allowDelegation: Whether delegation is allowed.\n///   - maxDelegationDepth: Maximum delegation depth.",
          "documentation": ""
        },
        {
          "name": "public let allowDelegation: Bool",
          "line": 165,
          "signature": "public let allowDelegation: Bool\n\n/// Maximum delegation depth permitted from this token.\npublic let maxDelegationDepth: UInt32\n\n/// Minimum TTL reduction (in seconds) when delegating to child tokens.\npublic let minTtlReduction: Int64\n\n/// Creates a new Arsenal ACT.\n///\n/// - Parameters:\n///   - id: Unique token identifier.\n///   - agentDid: The agent's OAS DID.\n///   - issuer: The issuer identifier.\n///   - audience: The audience identifier.\n///   - capabilities: The capabilities granted.\n///   - scopes: The scope strings granted.\n///   - issuedAt: When the token was issued.\n///   - notBefore: When the token becomes valid.\n///   - expiresAt: When the token expires, or nil.\n///   - parentTokenId: The parent token ID for delegated tokens.\n///   - allowDelegation: Whether delegation is allowed.\n///   - maxDelegationDepth: Maximum delegation depth.\n///   - minTtlReduction: Minimum TTL reduction for delegation (seconds).\npublic init(\nid: String,",
          "documentation": ""
        },
        {
          "name": "public let maxDelegationDepth: UInt32",
          "line": 168,
          "signature": "public let maxDelegationDepth: UInt32\n\n/// Minimum TTL reduction (in seconds) when delegating to child tokens.\npublic let minTtlReduction: Int64\n\n/// Creates a new Arsenal ACT.\n///\n/// - Parameters:\n///   - id: Unique token identifier.\n///   - agentDid: The agent's OAS DID.\n///   - issuer: The issuer identifier.\n///   - audience: The audience identifier.\n///   - capabilities: The capabilities granted.\n///   - scopes: The scope strings granted.\n///   - issuedAt: When the token was issued.\n///   - notBefore: When the token becomes valid.\n///   - expiresAt: When the token expires, or nil.\n///   - parentTokenId: The parent token ID for delegated tokens.\n///   - allowDelegation: Whether delegation is allowed.\n///   - maxDelegationDepth: Maximum delegation depth.\n///   - minTtlReduction: Minimum TTL reduction for delegation (seconds).\npublic init(\nid: String,\nagentDid: String,\nissuer: String,\naudience: String,",
          "documentation": ""
        },
        {
          "name": "public let minTtlReduction: Int64",
          "line": 171,
          "signature": "public let minTtlReduction: Int64\n\n/// Creates a new Arsenal ACT.\n///\n/// - Parameters:\n///   - id: Unique token identifier.\n///   - agentDid: The agent's OAS DID.\n///   - issuer: The issuer identifier.\n///   - audience: The audience identifier.\n///   - capabilities: The capabilities granted.\n///   - scopes: The scope strings granted.\n///   - issuedAt: When the token was issued.\n///   - notBefore: When the token becomes valid.\n///   - expiresAt: When the token expires, or nil.\n///   - parentTokenId: The parent token ID for delegated tokens.\n///   - allowDelegation: Whether delegation is allowed.\n///   - maxDelegationDepth: Maximum delegation depth.\n///   - minTtlReduction: Minimum TTL reduction for delegation (seconds).\npublic init(\nid: String,\nagentDid: String,\nissuer: String,\naudience: String,\ncapabilities: [Capability],\nscopes: [String],\nissuedAt: Timestamp;",
          "documentation": ""
        },
        {
          "name": "public init(",
          "line": 189,
          "signature": "public init(\nid: String,\nagentDid: String,\nissuer: String,\naudience: String,\ncapabilities: [Capability],\nscopes: [String],\nissuedAt: Timestamp;",
          "documentation": ""
        },
        {
          "name": "public var isExpired: Bool",
          "line": 220,
          "signature": "public var isExpired: Bool",
          "documentation": ""
        },
        {
          "name": "public var remainingTtlSeconds: Int64?",
          "line": 226,
          "signature": "public var remainingTtlSeconds: Int64?",
          "documentation": ""
        },
        {
          "name": "public func verifyACT(_ act: ArsenalACT) throws",
          "line": 252,
          "signature": "public func verifyACT(_ act: ArsenalACT) throws",
          "documentation": ""
        },
        {
          "name": "public func extractScopes(_ act: ArsenalACT) -> [String]",
          "line": 298,
          "signature": "public func extractScopes(_ act: ArsenalACT) -> [String]",
          "documentation": ""
        },
        {
          "name": "public func actAllowsScope(_ act: ArsenalACT, scope: String) throws -> Bool",
          "line": 329,
          "signature": "public func actAllowsScope(_ act: ArsenalACT, scope: String) throws -> Bool",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-swift/Sources/ForgeAuth/Delegation.swift",
      "sha256": "e90f59cc0cea58b3bc69fb6aa8e4da0144927c6c6c129b5852f5245721b9e917",
      "artifactSha256": "470e753683e3dce67174c9ac043f98e7a90dbb1703f9c0ad7591ae1fb4942b75",
      "url": "/reference/source/forge-swift/Sources/ForgeAuth/Delegation.swift.txt",
      "declarations": [
        {
          "name": "public struct DelegationRequest: Sendable",
          "line": 30,
          "signature": "public struct DelegationRequest: Sendable",
          "documentation": ""
        },
        {
          "name": "public let parentACT: ArsenalACT",
          "line": 32,
          "signature": "public let parentACT: ArsenalACT\n/// The parent agent's OAS DID.\npublic let parentDid: String\n/// The child agent's OAS DID.\npublic let childDid: String\n/// The capabilities requested for the child agent.\n///\n/// Must be a subset of the parent's capabilities.\npublic let requestedCapabilities: [Capability]\n/// The scope strings requested for the child agent.\n///\n/// Must be a subset of the parent's scopes.\npublic let requestedScopes: [String]\n\n/// Creates a new delegation request.\n///\n/// - Parameters:\n///   - parentACT: The parent agent's Arsenal ACT.\n///   - parentDid: The parent agent's OAS DID.\n///   - childDid: The child agent's OAS DID.\n///   - requestedCapabilities: The capabilities requested for the child.\n///   - requestedScopes: The scope strings requested for the child.\npublic init(\nparentACT: ArsenalACT,\nparentDid: String,\nchildDid: String,",
          "documentation": ""
        },
        {
          "name": "public let parentDid: String",
          "line": 34,
          "signature": "public let parentDid: String\n/// The child agent's OAS DID.\npublic let childDid: String\n/// The capabilities requested for the child agent.\n///\n/// Must be a subset of the parent's capabilities.\npublic let requestedCapabilities: [Capability]\n/// The scope strings requested for the child agent.\n///\n/// Must be a subset of the parent's scopes.\npublic let requestedScopes: [String]\n\n/// Creates a new delegation request.\n///\n/// - Parameters:\n///   - parentACT: The parent agent's Arsenal ACT.\n///   - parentDid: The parent agent's OAS DID.\n///   - childDid: The child agent's OAS DID.\n///   - requestedCapabilities: The capabilities requested for the child.\n///   - requestedScopes: The scope strings requested for the child.\npublic init(\nparentACT: ArsenalACT,\nparentDid: String,\nchildDid: String,\nrequestedCapabilities: [Capability],\nrequestedScopes: [String]",
          "documentation": ""
        },
        {
          "name": "public let childDid: String",
          "line": 36,
          "signature": "public let childDid: String\n/// The capabilities requested for the child agent.\n///\n/// Must be a subset of the parent's capabilities.\npublic let requestedCapabilities: [Capability]\n/// The scope strings requested for the child agent.\n///\n/// Must be a subset of the parent's scopes.\npublic let requestedScopes: [String]\n\n/// Creates a new delegation request.\n///\n/// - Parameters:\n///   - parentACT: The parent agent's Arsenal ACT.\n///   - parentDid: The parent agent's OAS DID.\n///   - childDid: The child agent's OAS DID.\n///   - requestedCapabilities: The capabilities requested for the child.\n///   - requestedScopes: The scope strings requested for the child.\npublic init(\nparentACT: ArsenalACT,\nparentDid: String,\nchildDid: String,\nrequestedCapabilities: [Capability],\nrequestedScopes: [String]\n)",
          "documentation": ""
        },
        {
          "name": "public let requestedCapabilities: [Capability]",
          "line": 40,
          "signature": "public let requestedCapabilities: [Capability]\n/// The scope strings requested for the child agent.\n///\n/// Must be a subset of the parent's scopes.\npublic let requestedScopes: [String]\n\n/// Creates a new delegation request.\n///\n/// - Parameters:\n///   - parentACT: The parent agent's Arsenal ACT.\n///   - parentDid: The parent agent's OAS DID.\n///   - childDid: The child agent's OAS DID.\n///   - requestedCapabilities: The capabilities requested for the child.\n///   - requestedScopes: The scope strings requested for the child.\npublic init(\nparentACT: ArsenalACT,\nparentDid: String,\nchildDid: String,\nrequestedCapabilities: [Capability],\nrequestedScopes: [String]\n)",
          "documentation": ""
        },
        {
          "name": "public let requestedScopes: [String]",
          "line": 44,
          "signature": "public let requestedScopes: [String]\n\n/// Creates a new delegation request.\n///\n/// - Parameters:\n///   - parentACT: The parent agent's Arsenal ACT.\n///   - parentDid: The parent agent's OAS DID.\n///   - childDid: The child agent's OAS DID.\n///   - requestedCapabilities: The capabilities requested for the child.\n///   - requestedScopes: The scope strings requested for the child.\npublic init(\nparentACT: ArsenalACT,\nparentDid: String,\nchildDid: String,\nrequestedCapabilities: [Capability],\nrequestedScopes: [String]\n)",
          "documentation": ""
        },
        {
          "name": "public init(",
          "line": 54,
          "signature": "public init(\nparentACT: ArsenalACT,\nparentDid: String,\nchildDid: String,\nrequestedCapabilities: [Capability],\nrequestedScopes: [String]\n)",
          "documentation": ""
        },
        {
          "name": "public struct DelegationManager: Sendable",
          "line": 81,
          "signature": "public struct DelegationManager: Sendable",
          "documentation": ""
        },
        {
          "name": "public init()",
          "line": 84,
          "signature": "public init()",
          "documentation": ""
        },
        {
          "name": "public func delegateCapabilities(_ request: DelegationRequest) throws -> ArsenalACT",
          "line": 108,
          "signature": "public func delegateCapabilities(_ request: DelegationRequest) throws -> ArsenalACT",
          "documentation": ""
        },
        {
          "name": "public func delegateCapabilities(_ request: DelegationRequest) throws -> ArsenalACT",
          "line": 216,
          "signature": "public func delegateCapabilities(_ request: DelegationRequest) throws -> ArsenalACT",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-swift/Sources/ForgeAuth/ToolAuth.swift",
      "sha256": "44effceea9c7c8abfc08ebedcbe18a98b6b69cb992cca5fd66e443a95a916161",
      "artifactSha256": "e7e1c21dc6fd357fe1c3999cdd1568fa49f28fb9e6ebb6d74fc320f7e1a85cc5",
      "url": "/reference/source/forge-swift/Sources/ForgeAuth/ToolAuth.swift.txt",
      "declarations": [
        {
          "name": "public struct ToolAuthorizationRequest: Sendable",
          "line": 32,
          "signature": "public struct ToolAuthorizationRequest: Sendable",
          "documentation": ""
        },
        {
          "name": "public let agentDid: AgentDid",
          "line": 34,
          "signature": "public let agentDid: AgentDid\n/// The tool being invoked.\npublic let toolName: String\n/// The tool tier.\npublic let toolTier: ToolTier\n/// The ACT to check against, or `nil` for legacy mode.\npublic let act: ArsenalACT?\n\n/// Creates a new tool authorization request.\n///\n/// - Parameters:\n///   - agentDid: The agent's OAS DID.\n///   - toolName: The tool being invoked.\n///   - toolTier: The tool tier classification.\n///   - act: The Arsenal ACT to check, or `nil` for legacy mode.\npublic init(agentDid: AgentDid, toolName: String, toolTier: ToolTier, act: ArsenalACT?)",
          "documentation": ""
        },
        {
          "name": "public let toolName: String",
          "line": 36,
          "signature": "public let toolName: String\n/// The tool tier.\npublic let toolTier: ToolTier\n/// The ACT to check against, or `nil` for legacy mode.\npublic let act: ArsenalACT?\n\n/// Creates a new tool authorization request.\n///\n/// - Parameters:\n///   - agentDid: The agent's OAS DID.\n///   - toolName: The tool being invoked.\n///   - toolTier: The tool tier classification.\n///   - act: The Arsenal ACT to check, or `nil` for legacy mode.\npublic init(agentDid: AgentDid, toolName: String, toolTier: ToolTier, act: ArsenalACT?)",
          "documentation": ""
        },
        {
          "name": "public let toolTier: ToolTier",
          "line": 38,
          "signature": "public let toolTier: ToolTier\n/// The ACT to check against, or `nil` for legacy mode.\npublic let act: ArsenalACT?\n\n/// Creates a new tool authorization request.\n///\n/// - Parameters:\n///   - agentDid: The agent's OAS DID.\n///   - toolName: The tool being invoked.\n///   - toolTier: The tool tier classification.\n///   - act: The Arsenal ACT to check, or `nil` for legacy mode.\npublic init(agentDid: AgentDid, toolName: String, toolTier: ToolTier, act: ArsenalACT?)",
          "documentation": ""
        },
        {
          "name": "public let act: ArsenalACT?",
          "line": 40,
          "signature": "public let act: ArsenalACT?\n\n/// Creates a new tool authorization request.\n///\n/// - Parameters:\n///   - agentDid: The agent's OAS DID.\n///   - toolName: The tool being invoked.\n///   - toolTier: The tool tier classification.\n///   - act: The Arsenal ACT to check, or `nil` for legacy mode.\npublic init(agentDid: AgentDid, toolName: String, toolTier: ToolTier, act: ArsenalACT?)",
          "documentation": ""
        },
        {
          "name": "public init(agentDid: AgentDid, toolName: String, toolTier: ToolTier, act: ArsenalACT?)",
          "line": 49,
          "signature": "public init(agentDid: AgentDid, toolName: String, toolTier: ToolTier, act: ArsenalACT?)",
          "documentation": ""
        },
        {
          "name": "public enum ToolAuthorizationDecision: Sendable, Equatable",
          "line": 68,
          "signature": "public enum ToolAuthorizationDecision: Sendable, Equatable",
          "documentation": ""
        },
        {
          "name": "public var isAllowed: Bool",
          "line": 97,
          "signature": "public var isAllowed: Bool",
          "documentation": ""
        },
        {
          "name": "public var isDenied: Bool",
          "line": 107,
          "signature": "public var isDenied: Bool",
          "documentation": ""
        },
        {
          "name": "public var isLegacyMode: Bool",
          "line": 113,
          "signature": "public var isLegacyMode: Bool",
          "documentation": ""
        },
        {
          "name": "public struct ToolAuthorizer: Sendable",
          "line": 128,
          "signature": "public struct ToolAuthorizer: Sendable",
          "documentation": ""
        },
        {
          "name": "public init()",
          "line": 131,
          "signature": "public init()",
          "documentation": ""
        },
        {
          "name": "public func authorize(_ request: ToolAuthorizationRequest) throws -> ToolAuthorizationDecision",
          "line": 153,
          "signature": "public func authorize(_ request: ToolAuthorizationRequest) throws -> ToolAuthorizationDecision",
          "documentation": ""
        },
        {
          "name": "public func authorizeToolInvocation(_ request: ToolAuthorizationRequest) throws -> ToolAuthorizationDecision",
          "line": 228,
          "signature": "public func authorizeToolInvocation(_ request: ToolAuthorizationRequest) throws -> ToolAuthorizationDecision",
          "documentation": ""
        }
      ]
    }
  ]
}
