import contextvm_ffi as cvm
def main() -> None:
print(f"contextvm-ffi version: {cvm.version()}")
keys = cvm.Keys.generate()
pubkey = keys.public_key() secret = keys.secret_key() npub = cvm.pubkey_hex_to_npub(pubkey)
print(f"public key (hex): {pubkey}")
print(f"public key (npub): {npub}")
print(f"secret key (hex): {secret[:16]}...")
restored = cvm.Keys.from_secret_key(secret)
assert restored.public_key() == pubkey, "key reconstruction failed"
print("key reconstruction from secret: OK")
print("\nbuilt request: ", cvm.make_request("1", "tools/list", None))
print("built tool call: ", cvm.make_request("2", "tools/call", '{"name": "echo"}'))
print("built notification: ", cvm.make_notification("notifications/initialized", None))
print("built response: ", cvm.make_response("1", '{"tools": []}'))
client_config = cvm.ClientConfig(
relay_urls=["wss://relay.damus.io"],
server_pubkey=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=[],
)
print(
"\nclient config: server=%s... encryption=%s"
% (client_config.server_pubkey[:16], client_config.encryption_mode)
)
print("\nAll offline checks passed. The binding is installed correctly.")
if __name__ == "__main__":
main()