CEP-6 Announcement Lifecycle Orchestrator
Overview
Currently, the ContextVM Rust SDK requires manual calls to announce(), publish_tools(), etc., lacking a unified lifecycle orchestrator. This epic implements the AnnouncementManager module for the server side, fully automating capability discovery, payload synthesis, and structured publishing to Nostr relays.
PR 1: Core Data Structures & Helpers
Goal: Establish the correct data shapes and helper functions required for CEP-6, ensuring strict schema compliance before touching the transport lifecycle.
PR 2: AnnouncementManager Engine
Goal: Build the standalone orchestrator that manages the announcement lifecycle, fetching capabilities automatically.
PR 3: Transport Integration & Cleanup
Goal: Wire the AnnouncementManager into the NostrServerTransport, enable it via configuration, and remove deprecated legacy code.
CEP-6 Announcement Lifecycle Orchestrator
Overview
Currently, the ContextVM Rust SDK requires manual calls to
announce(),publish_tools(), etc., lacking a unified lifecycle orchestrator. This epic implements theAnnouncementManagermodule for the server side, fully automating capability discovery, payload synthesis, and structured publishing to Nostr relays.PR 1: Core Data Structures & Helpers
Goal: Establish the correct data shapes and helper functions required for CEP-6, ensuring strict schema compliance before touching the transport lifecycle.
ServerAnnouncementContentstruct insrc/core/types.rsmatching the CEP-6 schema (nestedprotocolVersion,capabilities,serverInfo,instructions).get_common_tags(),set_extra_tags(),set_pricing_tags()).src/discovery/mod.rsto handle the newServerAnnouncementContentsafely.PR 2:
AnnouncementManagerEngineGoal: Build the standalone orchestrator that manages the announcement lifecycle, fetching capabilities automatically.
src/transport/server/announcement_manager.rs.publish_public_announcement(): Acts as the bootstrap point. Triggers synthetic initialize requests to the local MCP handler to fetchtools/list,resources/list,resourceTemplates/list, andprompts/list.publish_relay_list()(CEP-17 integration, will be hard coded for now at the required places and will be updated once cep 17 is done).publish_to_relay()to handle structured Nostr serialization.PR 3: Transport Integration & Cleanup
Goal: Wire the
AnnouncementManagerinto theNostrServerTransport, enable it via configuration, and remove deprecated legacy code.announce: booltoNostrServerTransportConfig.NostrServerTransport::start()to spawn theAnnouncementManagerbackground task ifconfig.announce == true.NostrServerTransport.announce: trueis set.