Skip to content

Swift SDK: deliveries (ack/fail/defer) (TS participant SDK parity) #1152

Description

@willwashburn

What the TS participant SDK provides

AgentRelay.deliveries (packages/sdk/src/agent-relay.ts) exposes RelayMessaging['deliveries'] (packages/sdk/src/messaging/types.ts, readonly deliveries):

  • ack(messageId): Promise<RelayDeliveryResult>
  • fail(messageId, reason?): Promise<RelayDeliveryResult>
  • defer(messageId, deferUntil?): Promise<RelayDeliveryResult>

These let a participant acknowledge, reject, or defer a delivered message so the relay can track delivery state and stop redelivering.

What the Swift AgentRelaySDK lacks

AgentClient receives messages via the events / inboundMessages streams but has no way to ack/fail/defer a delivery by messageId. Without this, delivered messages cannot be marked handled from the Swift side.

Proposed Swift API sketch

public struct RelayDeliveryResult: Decodable, Sendable {}

extension AgentClient {
    public func ackDelivery(_ messageId: String) async throws -> RelayDeliveryResult
    public func failDelivery(_ messageId: String, reason: String? = nil) async throws -> RelayDeliveryResult
    public func deferDelivery(_ messageId: String, until: Date? = nil) async throws -> RelayDeliveryResult
}

Part of bringing the Swift AgentRelaySDK to parity with the TS participant SDK (follow-up to #1143 / #1147).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions