Skip to content

v0.8.11

Choose a tag to compare

@panyam panyam released this 25 Oct 03:07
· 59 commits to main since this release

v0.8.11

The TS page can now limit itself to the host's bridges, the way a Go page can. It also stays under
the relay's message rate, and both it and the dialled Go transport send again whatever the relay
drops for going over it. Before, a dropped reply left the agent waiting out its timeout.

Added (room bridge)

  • trustBridges on the TS page. joinToolRoom({ trustBridges: ["bridge"] }) answers only
    peers whose relay subject is one of the host's bridges, as rooms.TrustBridges does for a Go
    page. Without it, any holder of a relay token for the room can call the page's tools directly,
    past the bridge's agreement, and ctx.caller says whatever that peer claims. It reads the
    subject the relay validated through CollabClient.getPeer, which massrelay v0.3.1 made possible.
    Off by default. (PR 1632)
  • The TS page paces its sends. At most sendRate messages a second, 25 by default (exported
    as DEFAULT_SEND_RATE), in order, under the relay's per-connection limit of 30. sendRate: 0
    turns it off. A burst of replies takes a bit longer and arrives whole. (PR 1632)

Fixed (room bridge)

  • A message the relay drops for the rate is sent again. The relay answers one with
    RATE_LIMITED, naming the action's id, but neither client set an id, so the error named "" and
    nothing read it after the join. The TS page and the dialled Go transport (massrelay.Dial) now
    stamp an id on each message and send a dropped one again after one, two and four seconds, then
    log and give up. The embedded transport never sees RATE_LIMITED, which the relay sends only on
    its WebSocket stream. (PR 1632)

Upgrading downstream

  • agni:
    • Go: experimental/ext/rooms, …/rooms/massrelay and …/integrations/roomsevents at
      v0.8.11.
    • Browser: @panyam/mcpkit-rooms@0.8.11. Pass trustBridges with the relay subjects agni's
      bridges join as, before relying on ctx.caller.
    • Nothing breaks. The pacing is on by default and changes only how fast a burst goes out.