Use when implementing a ServiceHandler and registering it with the napplet runtime — covers ServiceDescriptor, handleMessage(windowId, message, send), onWindowDestroyed cleanup, parsing INTER_PANE topic events, sending responses via send(), and wiring into RuntimeHooks.services or runtime.registerService()
Use when hosting napplets using @kehto/shell — covers createShellBridge(hooks) wiring, minimum viable ShellAdapter implementation, iframe registration via originRegistry, NIP-42 AUTH challenge, consent handling for destructive signing kinds, and optional service registration