MCPcopy Index your code
hub / github.com/github/copilot-sdk / _dispatch_event

Method _dispatch_event

python/copilot/session.py:1720–1753  ·  view source on GitHub ↗

Dispatch an event to all registered handlers. Broadcast request events (external_tool.requested, permission.requested) are handled internally before being forwarded to user handlers. Note: This method is internal and should not be called directly.

(self, event: SessionEvent)

Source from the content-addressed store, hash-verified

1718 return unsubscribe
1719
1720 def _dispatch_event(self, event: SessionEvent) -> None:
1721 """
1722 Dispatch an event to all registered handlers.
1723
1724 Broadcast request events (external_tool.requested, permission.requested) are handled
1725 internally before being forwarded to user handlers.
1726
1727 Note:
1728 This method is internal and should not be called directly.
1729
1730 Args:
1731 event: The session event to dispatch to all handlers.
1732 """
1733 dispatch_start = time.perf_counter()
1734 # Handle broadcast request events (protocol v3) before dispatching to user handlers.
1735 # Fire-and-forget: the response is sent asynchronously via RPC.
1736 self._handle_broadcast_event(event)
1737
1738 with self._event_handlers_lock:
1739 handlers = list(self._event_handlers)
1740
1741 for handler in handlers:
1742 try:
1743 handler(event)
1744 except Exception:
1745 logger.error("Unhandled exception in session event handler", exc_info=True)
1746 log_timing(
1747 logger,
1748 logging.DEBUG,
1749 "CopilotSession._dispatch_event dispatch",
1750 dispatch_start,
1751 session_id=self.session_id,
1752 event_type=event.type,
1753 )
1754
1755 def _handle_broadcast_event(self, event: SessionEvent) -> None:
1756 """Handle broadcast request events by executing local handlers and responding via RPC.

Calls 4

handlerFunction · 0.85
log_timingFunction · 0.85
errorMethod · 0.45