Current section
Files
Jump to
Current section
Files
lib/cmdc/gateway/local.ex
defmodule CMDC.Gateway.Local do
@moduledoc """
本地内存 Gateway 实现(嵌入式部署模式)。
通过 `CMDC.EventBus` PubSub 广播,订阅者可调用 `CMDC.EventBus.subscribe/1` 接收。
适合嵌入式部署和开发/测试场景,无需外部消息系统。
## 用法
# 订阅来自某会话的出站事件
CMDC.EventBus.subscribe("session:s-001:gateway")
# 配置 Agent 时使用 Local Gateway
CMDC.SessionServer.start_link(
session_id: "s-001",
model: "anthropic:claude-sonnet-4-5"
)
## 广播的事件格式
- `"session:{id}:gateway"` — `{:cmdc_gateway_event, event}` 消息
- `"session:{id}:state"` — `{:cmdc_agent_state, state_info}` 消息
"""
@behaviour CMDC.Gateway
# ==========================================================================
# CMDC.Gateway Callbacks
# ==========================================================================
@impl CMDC.Gateway
def report_event(session_id, event) do
CMDC.EventBus.broadcast("session:#{session_id}:gateway", {:cmdc_gateway_event, event})
end
@impl CMDC.Gateway
def report_agent_state(session_id, state_info) do
CMDC.EventBus.broadcast("session:#{session_id}:state", {:cmdc_agent_state, state_info})
end
end