ImClient.sendSync() called getConfig() which throws when init() hasn't been
called, breaking headless usage (e.g. platform event listeners). Now wraps
the call in a try-catch and skips the sync frame if appKey is unavailable.
Same fix for scheduleReconnect's debug log.
Also: add vite-plugin-dts to generate TypeScript declarations on every build,
fixing the missing dist/index.d.ts that broke IDE type resolution. Bump to 0.2.3.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>