import sys
import contextvm_ffi as cvm
DEFAULT_RELAYS = ["wss://relay.damus.io"]
def main() -> int:
if len(sys.argv) < 2:
print(__doc__)
return 2
server_pubkey = sys.argv[1]
relays = sys.argv[2:] or DEFAULT_RELAYS
keys = cvm.Keys.generate()
print(f"Client npub: {cvm.pubkey_hex_to_npub(keys.public_key())}")
config = cvm.ClientConfig(
relay_urls=relays,
server_pubkey=server_pubkey,
encryption_mode=cvm.EncryptionMode.OPTIONAL,
gift_wrap_mode=cvm.GiftWrapMode.OPTIONAL,
is_stateless=False,
timeout_secs=30,
discovery_relay_urls=[],
fallback_operational_relay_urls=[],
)
client = cvm.Client(keys, config)
init = cvm.make_request(
"1",
"initialize",
'{"protocolVersion":"2025-06-18","capabilities":{},'
'"clientInfo":{"name":"py-example","version":"0.1.0"}}',
)
print("Sending initialize...")
client.send(init)
init_reply = client.recv_timeout(15)
print(f" -> id={init_reply.id}")
print("Sending tools/list...")
client.send(cvm.make_request("2", "tools/list", None))
reply = client.recv_timeout(15)
print(f" -> id={reply.id}")
print(reply.payload_json)
client.close()
return 0
if __name__ == "__main__":
sys.exit(main())