mirror of
https://github.com/CopilotKit/CopilotKit.git
synced 2026-09-14 16:26:20 +08:00
4d74bdc5c3
Creating a Node listener or an Express handler now STARTS activation of the runtime's declared managed Channels, so `channels.ready()` becomes await-and-observe instead of the thing you must remember to call. A declared Channel connects because it was declared. The failure mode this removes: forget `ready()` and you get a process that serves HTTP, looks healthy, and is silently disconnected with zero output. Auto-start's worst case is an activation error in the logs. The generic Fetch handler stays LAZY — it is the serverless/edge entry point, where isolates freeze and recycle per request and separate cold starts would mint competing listeners for the same Channel. `createCopilotHonoHandler` stays lazy for the same reason: it is our Next.js App Router surface in practice (every `examples/showcases/*` route handler builds one at module scope), and its TSDoc now says so loudly. `activateChannels: false` remains the opt-out that opens no socket. Consequence for host code: the shutdown-handler boundary moves earlier. Signal handlers must be registered before the listener is CREATED, not merely before `ready()` — otherwise a Ctrl-C during the connect window hits Node's default handler and leaks a live gateway session. The slack and teams examples and the docs snippets are restructured accordingly. Also migrates the seven channel-package README quickstarts off the generic handler (a request handler a socket-mode bot constructs and never serves) onto the Node listener, so they inherit auto-start and agree with the docs site. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>