From afcf4f5214df400a71ad52d4679d70dcceb1ed9b Mon Sep 17 00:00:00 2001 From: Victor Kyriazakos Date: Wed, 19 Aug 2026 14:25:16 +0000 Subject: [PATCH] =?UTF-8?q?docs(relay):=20document=20the=20two=20new=20des?= =?UTF-8?q?criptor=20capability=20bits=20in=20the=20contract=20=C2=A72=20t?= =?UTF-8?q?able?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit test_contract_doc_conformance enforces that every CapabilityDescriptor field appears in docs/relay-connector-contract.md §2 so connector authors mirror the full surface — caught in CI (slice 2/12); the descriptor gained supports_inchannel_continuable and supports_block_formatting without the doc rows. --- docs/relay-connector-contract.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/relay-connector-contract.md b/docs/relay-connector-contract.md index 1d6242cfd4..9ec40732b6 100644 --- a/docs/relay-connector-contract.md +++ b/docs/relay-connector-contract.md @@ -52,6 +52,8 @@ JSON object. Source of truth: `gateway/relay/descriptor.py`. | `platform_hint` | string | no | System-prompt platform hint. | | `pii_safe` | bool | no | Redact PII in session descriptions. | | `supports_context` | bool | no | Whether the connector can supply surrounding channel/group **context** for an addressed turn on this platform (Model A on-demand history fetch — Discord/Slack/Matrix; Model B passive buffer — Telegram/Signal/WhatsApp). Default false ⇒ no `context` is attached to inbound events. See §3. | +| `supports_inchannel_continuable` | bool | no | Whether the platform can host a **flat continuable cron surface** (native Slack's `cron_continuable_surface: in_channel`): the brief posts top-level in the channel/DM and a plain reply continues the job via the flat `(platform, chat_id, None)` session. Default false ⇒ the gateway's scheduler fails safe to thread mode (D6 gate), so an older connector keeps today's thread behavior. | +| `supports_block_formatting` | bool | no | Whether this platform's sender renders **block-level formatting** from raw markdown when the gateway stamps `metadata.format_hints` on `send`/`edit` frames (Slack: native `markdown` block for tables/lists/code, mrkdwn text kept as fallback). Default false ⇒ the gateway never stamps hints, so an older connector never receives the metadata. | | `supported_ops` | string[] | no | Op-level capability discovery: the outbound op names the connector's sender for this platform actually implements (e.g. `["send", "edit", "typing", "follow_up", "get_chat_info"]`). Absent/empty ⇒ the connector predates the field and the gateway assumes the legacy op set (`send`/`edit`/`typing`/`follow_up`); a NEW op is used only when explicitly advertised. | Most fields are a projection of the gateway's existing `PlatformEntry`; the