{
  "name": "com.l1fe.forge:forge-comm",
  "language": "kotlin",
  "version": "0.1.0",
  "description": "Kotlin/JVM forge-comm module.",
  "manifest": "forge-kt/forge-comm/build.gradle.kts",
  "manifestSha256": "e6d0556e1515a0e14a8ee8c96801900ee439f7e02078557f85ad6e719dd973ba",
  "status": "source-reference",
  "registryPublicationVerified": false,
  "route": "/libraries/kotlin/forge-comm",
  "features": {},
  "files": [
    {
      "path": "forge-kt/forge-comm/src/main/kotlin/com/l1fe/forge/comm/AgentMessage.kt",
      "sha256": "489779daeb46d9f9d740ccd9f7c1f339cae3a1454fe6743f66481ba22e02fd41",
      "artifactSha256": "23624c9364f213c02f94e429999feb34f3ef99d95a5cc6988aaa1a248e605694",
      "url": "/reference/source/forge-kt/forge-comm/src/main/kotlin/com/l1fe/forge/comm/AgentMessage.kt.txt",
      "declarations": [
        {
          "name": "public enum class MessagePriority",
          "line": 22,
          "signature": "public enum class MessagePriority",
          "documentation": ""
        },
        {
          "name": "public sealed class MessageContent",
          "line": 46,
          "signature": "public sealed class MessageContent",
          "documentation": ""
        },
        {
          "name": "public data class Text(val text: String) : MessageContent()",
          "line": 55,
          "signature": "public data class Text(val text: String) : MessageContent()\n\n/**\n* A structured request from one agent to another.\n*\n* @property action The requested action identifier.\n* @property payload The JSON-encoded payload for the action.\n*/\n@Serializable\n@SerialName(\"request\")\npublic data class Request(\nval action: String,\nval payload: String,\n) : MessageContent()\n\n/**\n* A response to a prior request.\n*\n* @property requestId The ID of the original request message.\n* @property payload The JSON-encoded response payload.\n* @property success Whether the request was fulfilled successfully.\n*/\n@Serializable\n@SerialName(\"response\")\npublic data class Response(\n@SerialName(\"request_id\")",
          "documentation": ""
        },
        {
          "name": "public data class Request(",
          "line": 65,
          "signature": "public data class Request(\nval action: String,\nval payload: String,\n) : MessageContent()\n\n/**\n* A response to a prior request.\n*\n* @property requestId The ID of the original request message.\n* @property payload The JSON-encoded response payload.\n* @property success Whether the request was fulfilled successfully.\n*/\n@Serializable\n@SerialName(\"response\")\npublic data class Response(\n@SerialName(\"request_id\")\nval requestId: String,\nval payload: String,\nval success: Boolean,\n) : MessageContent()\n\n/**\n* A broadcast notification to all agents on a channel.\n*\n* @property topic The notification topic.\n* @property payload The JSON-encoded notification payload.",
          "documentation": ""
        },
        {
          "name": "public data class Response(",
          "line": 79,
          "signature": "public data class Response(\n@SerialName(\"request_id\")\nval requestId: String,\nval payload: String,\nval success: Boolean,\n) : MessageContent()\n\n/**\n* A broadcast notification to all agents on a channel.\n*\n* @property topic The notification topic.\n* @property payload The JSON-encoded notification payload.\n*/\n@Serializable\n@SerialName(\"broadcast\")\npublic data class Broadcast(\nval topic: String,\nval payload: String,\n) : MessageContent()\n}\n\n/**\n* An agent-to-agent message envelope.\n*\n* Carries sender and recipient identity, routing metadata, priority,\n* and a typed content payload. Every message has a unique ID and",
          "documentation": ""
        },
        {
          "name": "public data class Broadcast(",
          "line": 94,
          "signature": "public data class Broadcast(\nval topic: String,\nval payload: String,\n) : MessageContent()\n}\n\n/**\n* An agent-to-agent message envelope.\n*\n* Carries sender and recipient identity, routing metadata, priority,\n* and a typed content payload. Every message has a unique ID and\n* timestamp for audit trail purposes.\n*\n* ANVIL Spec Section 15.1\n*\n* @property id Unique message identifier.\n* @property senderDid The sender agent's OAS DID.\n* @property recipientDid The recipient agent's OAS DID (empty for broadcasts).\n* @property channelId The communication channel identifier.\n* @property content The typed message content.\n* @property priority The message priority level.\n* @property correlationId Optional correlation ID for request/response threading.\n* @property timestamp When the message was created.\n* @property metadata Optional key-value metadata.\n*/\n@Serializable",
          "documentation": ""
        },
        {
          "name": "public data class AgentMessage(",
          "line": 120,
          "signature": "public data class AgentMessage(\nval id: String,\n@SerialName(\"sender_did\")\nval senderDid: String,\n@SerialName(\"recipient_did\")\nval recipientDid: String;",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-comm/src/main/kotlin/com/l1fe/forge/comm/ChannelTransport.kt",
      "sha256": "e333d3ae2387674d0988f4c895481ba8346dee88908cba39534bc50a451d7a0b",
      "artifactSha256": "6f6cce41dbe6c691037a57a6954199d079c89dbccdf880d843ffd9c05440b3b8",
      "url": "/reference/source/forge-kt/forge-comm/src/main/kotlin/com/l1fe/forge/comm/ChannelTransport.kt.txt",
      "declarations": [
        {
          "name": "public class ChannelTransport(",
          "line": 33,
          "signature": "public class ChannelTransport(\nprivate val bufferSize: Int;",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-comm/src/main/kotlin/com/l1fe/forge/comm/CommError.kt",
      "sha256": "94ed1356975e3eb8a5219c5cc2d0f72290e02a4c8fb379c675fded0adb6c70da",
      "artifactSha256": "73f6340ac8461dfac2fb40e310d89a9d62e42c29dc373b84fa0e6412a5ab268e",
      "url": "/reference/source/forge-kt/forge-comm/src/main/kotlin/com/l1fe/forge/comm/CommError.kt.txt",
      "declarations": [
        {
          "name": "public sealed class ForgeCommError(",
          "line": 17,
          "signature": "public sealed class ForgeCommError(\nmessage: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class DeliveryFailed(",
          "line": 31,
          "signature": "public class DeliveryFailed(\npublic val messageId: String,\npublic val recipientDid: String,\npublic val reason: String,\n) : ForgeCommError(\n\"message '$messageId' delivery to '$recipientDid' failed: $reason \" +\n\"(see ANVIL Spec SS15.1)\"\n)\n\n/**\n* Transport connection failed.\n*\n* @property transportType The type of transport that failed.\n* @property reason The failure reason.\n*/\npublic class TransportError(\npublic val transportType: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val messageId: String,",
          "line": 32,
          "signature": "public val messageId: String,\npublic val recipientDid: String,\npublic val reason: String,\n) : ForgeCommError(\n\"message '$messageId' delivery to '$recipientDid' failed: $reason \" +\n\"(see ANVIL Spec SS15.1)\"\n)\n\n/**\n* Transport connection failed.\n*\n* @property transportType The type of transport that failed.\n* @property reason The failure reason.\n*/\npublic class TransportError(\npublic val transportType: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val recipientDid: String,",
          "line": 33,
          "signature": "public val recipientDid: String,\npublic val reason: String,\n) : ForgeCommError(\n\"message '$messageId' delivery to '$recipientDid' failed: $reason \" +\n\"(see ANVIL Spec SS15.1)\"\n)\n\n/**\n* Transport connection failed.\n*\n* @property transportType The type of transport that failed.\n* @property reason The failure reason.\n*/\npublic class TransportError(\npublic val transportType: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 34,
          "signature": "public val reason: String,\n) : ForgeCommError(\n\"message '$messageId' delivery to '$recipientDid' failed: $reason \" +\n\"(see ANVIL Spec SS15.1)\"\n)\n\n/**\n* Transport connection failed.\n*\n* @property transportType The type of transport that failed.\n* @property reason The failure reason.\n*/\npublic class TransportError(\npublic val transportType: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class TransportError(",
          "line": 46,
          "signature": "public class TransportError(\npublic val transportType: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val transportType: String,",
          "line": 47,
          "signature": "public val transportType: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 48,
          "signature": "public val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class NegotiationFailed(",
          "line": 65,
          "signature": "public class NegotiationFailed(\npublic val senderDid: String,\npublic val recipientDid: String,\npublic val offeredProtocols: List<String>,\npublic val reason: String,\n) : ForgeCommError(\n\"protocol negotiation between '$senderDid' and '$recipientDid' failed: $reason; \" +",
          "documentation": ""
        },
        {
          "name": "public val senderDid: String,",
          "line": 66,
          "signature": "public val senderDid: String,\npublic val recipientDid: String,\npublic val offeredProtocols: List<String>,\npublic val reason: String,\n) : ForgeCommError(\n\"protocol negotiation between '$senderDid' and '$recipientDid' failed: $reason; \" +",
          "documentation": ""
        },
        {
          "name": "public val recipientDid: String,",
          "line": 67,
          "signature": "public val recipientDid: String,\npublic val offeredProtocols: List<String>,\npublic val reason: String,\n) : ForgeCommError(\n\"protocol negotiation between '$senderDid' and '$recipientDid' failed: $reason; \" +",
          "documentation": ""
        },
        {
          "name": "public val offeredProtocols: List<String>,",
          "line": 68,
          "signature": "public val offeredProtocols: List<String>,\npublic val reason: String,\n) : ForgeCommError(\n\"protocol negotiation between '$senderDid' and '$recipientDid' failed: $reason; \" +",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 69,
          "signature": "public val reason: String,\n) : ForgeCommError(\n\"protocol negotiation between '$senderDid' and '$recipientDid' failed: $reason; \" +",
          "documentation": ""
        },
        {
          "name": "public class ChannelNotFound(",
          "line": 81,
          "signature": "public class ChannelNotFound(\npublic val channelId: String,\n) : ForgeCommError(\"communication channel '$channelId' not found\")\n\n/**\n* Message serialization or deserialization failed.\n*\n* @property context A description of what was being serialized.\n* @property reason The failure detail.\n*/\npublic class SerializationError(\npublic val context: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val channelId: String,",
          "line": 82,
          "signature": "public val channelId: String,\n) : ForgeCommError(\"communication channel '$channelId' not found\")\n\n/**\n* Message serialization or deserialization failed.\n*\n* @property context A description of what was being serialized.\n* @property reason The failure detail.\n*/\npublic class SerializationError(\npublic val context: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class SerializationError(",
          "line": 91,
          "signature": "public class SerializationError(\npublic val context: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val context: String,",
          "line": 92,
          "signature": "public val context: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 93,
          "signature": "public val reason: String,\ncause: Throwable?;",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-comm/src/main/kotlin/com/l1fe/forge/comm/MessageTransport.kt",
      "sha256": "b4b608ee306f5e3e293c58088fa5c7ac6e3a0554292dfc1081bafa0955c70979",
      "artifactSha256": "bbf4780f2bbed889eab6097911577fca3c112fbe374aaec208d498f98100c4b9",
      "url": "/reference/source/forge-kt/forge-comm/src/main/kotlin/com/l1fe/forge/comm/MessageTransport.kt.txt",
      "declarations": [
        {
          "name": "public fun interface MessageHandler",
          "line": 17,
          "signature": "public fun interface MessageHandler",
          "documentation": ""
        },
        {
          "name": "public suspend fun onMessage(message: AgentMessage)",
          "line": 23,
          "signature": "public suspend fun onMessage(message: AgentMessage)\n}\n\n/**\n* Transport interface for agent-to-agent communication.\n*\n* Implementations handle the mechanics of message delivery:\n* serialization, routing, acknowledgment, and error handling.\n*\n* ANVIL Spec Section 15.3\n*/\npublic interface MessageTransport",
          "documentation": ""
        },
        {
          "name": "public interface MessageTransport",
          "line": 34,
          "signature": "public interface MessageTransport",
          "documentation": ""
        },
        {
          "name": "public suspend fun send(message: AgentMessage)",
          "line": 45,
          "signature": "public suspend fun send(message: AgentMessage)\n\n/**\n* Subscribe to messages on a specific channel.\n*\n* The handler will be invoked for each message received on the channel.\n*\n* @param channelId The channel to subscribe to.\n* @param handler The handler to invoke for received messages.\n* @throws ForgeCommError.ChannelNotFound if the channel does not exist.\n*/\npublic suspend fun subscribe(channelId: String, handler: MessageHandler)\n\n/**\n* Unsubscribe from messages on a specific channel.\n*\n* @param channelId The channel to unsubscribe from.\n*/\npublic suspend fun unsubscribe(channelId: String)\n\n/**\n* Close the transport and release all resources.\n*\n* After closing, no further send or subscribe operations are valid.\n*/\npublic suspend fun close()",
          "documentation": ""
        },
        {
          "name": "public suspend fun subscribe(channelId: String, handler: MessageHandler)",
          "line": 56,
          "signature": "public suspend fun subscribe(channelId: String, handler: MessageHandler)\n\n/**\n* Unsubscribe from messages on a specific channel.\n*\n* @param channelId The channel to unsubscribe from.\n*/\npublic suspend fun unsubscribe(channelId: String)\n\n/**\n* Close the transport and release all resources.\n*\n* After closing, no further send or subscribe operations are valid.\n*/\npublic suspend fun close()\n}",
          "documentation": ""
        },
        {
          "name": "public suspend fun unsubscribe(channelId: String)",
          "line": 63,
          "signature": "public suspend fun unsubscribe(channelId: String)\n\n/**\n* Close the transport and release all resources.\n*\n* After closing, no further send or subscribe operations are valid.\n*/\npublic suspend fun close()\n}",
          "documentation": ""
        },
        {
          "name": "public suspend fun close()",
          "line": 70,
          "signature": "public suspend fun close()\n}",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-comm/src/main/kotlin/com/l1fe/forge/comm/NoopTransport.kt",
      "sha256": "b0f04046c32482538c924105a8c1b9d9d66b0566076840f61a6cbcb1ab9ef3f4",
      "artifactSha256": "5f90b173c5e454c84a29c9233569658623cff44e938c45248fb7db82cfe7c650",
      "url": "/reference/source/forge-kt/forge-comm/src/main/kotlin/com/l1fe/forge/comm/NoopTransport.kt.txt",
      "declarations": [
        {
          "name": "public object NoopTransport : MessageTransport",
          "line": 20,
          "signature": "public object NoopTransport : MessageTransport",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-comm/src/main/kotlin/com/l1fe/forge/comm/ProtocolNegotiation.kt",
      "sha256": "72f50f6fef3225a3a491db90500d744d4512b271dbc144da38c05e22adfa4f81",
      "artifactSha256": "33e3002cd05163a539764687ac4dd2a580fc2945d9d7f05acd4fefca57f5378e",
      "url": "/reference/source/forge-kt/forge-comm/src/main/kotlin/com/l1fe/forge/comm/ProtocolNegotiation.kt.txt",
      "declarations": [
        {
          "name": "public data class ProtocolCapability(",
          "line": 25,
          "signature": "public data class ProtocolCapability(\nval name: String,\nval version: String,\nval features: Set<String>;",
          "documentation": ""
        },
        {
          "name": "public fun qualifiedName(): String;",
          "line": 35,
          "signature": "public fun qualifiedName(): String;",
          "documentation": ""
        },
        {
          "name": "public data class NegotiationOffer(",
          "line": 47,
          "signature": "public data class NegotiationOffer(\n@SerialName(\"sender_did\")\nval senderDid: String,\nval protocols: List<ProtocolCapability>,\n)\n\n/**\n* A negotiation response from the responder.\n*\n* ANVIL Spec Section 15.2\n*\n* @property responderDid The responding agent's OAS DID.\n* @property selectedProtocol The protocol selected by the responder, or `null` if none matched.\n* @property reason A reason for the selection or rejection.\n*/\n@Serializable\npublic data class NegotiationResponse(\n@SerialName(\"responder_did\")\nval responderDid: String,\n@SerialName(\"selected_protocol\")\nval selectedProtocol: ProtocolCapability?;",
          "documentation": ""
        },
        {
          "name": "public data class NegotiationResponse(",
          "line": 63,
          "signature": "public data class NegotiationResponse(\n@SerialName(\"responder_did\")\nval responderDid: String,\n@SerialName(\"selected_protocol\")\nval selectedProtocol: ProtocolCapability?;",
          "documentation": ""
        },
        {
          "name": "public sealed class NegotiationResult",
          "line": 77,
          "signature": "public sealed class NegotiationResult",
          "documentation": ""
        },
        {
          "name": "public data class Agreed(val protocol: ProtocolCapability) : NegotiationResult()",
          "line": 86,
          "signature": "public data class Agreed(val protocol: ProtocolCapability) : NegotiationResult()\n\n/**\n* Negotiation failed. No common protocol was found.\n*\n* @property reason The failure reason.\n*/\n@Serializable\n@SerialName(\"failed\")\npublic data class Failed(val reason: String) : NegotiationResult()\n}\n\n/**\n* Negotiates a common protocol between an offer and a set of supported protocols.\n*\n* Selects the first protocol from the offer that the responder supports,\n* matching on name and version. Feature sets must be compatible (the\n* responder must support all features required by the offer).\n*\n* ANVIL Spec Section 15.2\n*\n* @param offer The negotiation offer from the initiator.\n* @param supported The protocols supported by the responder.\n* @param responderDid The responder's OAS DID (for the response envelope).\n* @return A [NegotiationResponse] with the selected protocol or rejection.\n*/",
          "documentation": ""
        },
        {
          "name": "public data class Failed(val reason: String) : NegotiationResult()",
          "line": 95,
          "signature": "public data class Failed(val reason: String) : NegotiationResult()\n}\n\n/**\n* Negotiates a common protocol between an offer and a set of supported protocols.\n*\n* Selects the first protocol from the offer that the responder supports,\n* matching on name and version. Feature sets must be compatible (the\n* responder must support all features required by the offer).\n*\n* ANVIL Spec Section 15.2\n*\n* @param offer The negotiation offer from the initiator.\n* @param supported The protocols supported by the responder.\n* @param responderDid The responder's OAS DID (for the response envelope).\n* @return A [NegotiationResponse] with the selected protocol or rejection.\n*/\npublic fun negotiate(\noffer: NegotiationOffer,\nsupported: List<ProtocolCapability>,\nresponderDid: String,\n): NegotiationResponse",
          "documentation": ""
        },
        {
          "name": "public fun negotiate(",
          "line": 112,
          "signature": "public fun negotiate(\noffer: NegotiationOffer,\nsupported: List<ProtocolCapability>,\nresponderDid: String,\n): NegotiationResponse",
          "documentation": ""
        }
      ]
    }
  ]
}
