sigildocs

(sigil irc capability)

(sigil irc capability) - IRCv3 capability descriptors

Capability negotiation in IRCv3 lets clients and servers agree on which optional features both sides support. Each capability is named (e.g. sasl, server-time, chathistory) and may carry a value specification (e.g. sasl=PLAIN,EXTERNAL,SCRAM-SHA-256).

This module provides:

  • Constant names for every Tier 1 + Tier 2 capability sigil-irc knows about
  • A cap record for representing a capability with optional value
  • Parsers for CAP LS / CAP LIST / CAP REQ argument bodies

The state machines that drive negotiation live in (sigil irc cap-negotiation).

Exports

capprocedure

A single capability with an optional value spec.

The name is a string like "sasl" or "draft/read-marker". The value is #f if no value is specified, otherwise a string (e.g. "PLAIN,EXTERNAL"). Values are parsed lazily by feature modules — for SASL, splitting on commas yields the mechanism list.

cap?procedure

Test if a value is a cap struct.

cap-nameprocedure

Get the name field of a cap struct.

cap-valueprocedure

Get the value field of a cap struct.

make-capvariable

Construct a cap record.

cap->stringprocedure

Render a cap as name or name=value.

(cap->string (make-cap "sasl"))                       ; => "sasl"
(cap->string (make-cap "sasl" value: "PLAIN,EXTERNAL"))
; => "sasl=PLAIN,EXTERNAL"
string->capprocedure

Parse a single capability spec (name or name=value) into a cap record.

(string->cap "sasl=PLAIN")
; => #<cap name: "sasl" value: "PLAIN">
(string->cap "echo-message")
; => #<cap name: "echo-message" value: #f>

Parse a CAP argument body — a space-separated list of capability specs — into a list of cap records.

(parse-cap-list "sasl=PLAIN message-tags server-time")
; => (#<cap "sasl"=PLAIN> #<cap "message-tags"> #<cap "server-time">)
tier-1-capsprocedure

The Tier 1 ratified IRCv3 capabilities (the must-have set).

tier-2-capsprocedure

The Tier 2 high-value drafts/extensions sigil-irc supports.

standard-capsprocedure

The full set of caps sigil-irc knows about. Servers built on sigil-irc can advertise a subset by filtering this list against what the server actually implements.

CAP-SASLvariable

(No description)

(No description)

(No description)

(No description)

(No description)

(No description)

(No description)

(No description)

(No description)

CAP-CHGHOSTvariable

(No description)

(No description)

CAP-SETNAMEvariable

(No description)

CAP-BATCHvariable

(No description)

(No description)

(No description)

(No description)

(No description)

(No description)

CAP-MONITORvariable

(No description)