MCPcopy Create free account
hub / github.com/astercloud/aster / inferChannelFromEventMap

Method inferChannelFromEventMap

pkg/agent/remote_agent.go:136–175  ·  view source on GitHub ↗

inferChannelFromEventMap 从事件 map 中推断通道类型

(eventMap map[string]any)

Source from the content-addressed store, hash-verified

134
135// inferChannelFromEventMap 从事件 map 中推断通道类型
136func (r *RemoteAgent) inferChannelFromEventMap(eventMap map[string]any) string {
137 // 检查是否有 channel 字段
138 if ch, ok := eventMap["channel"].(string); ok {
139 return ch
140 }
141
142 // 根据事件字段推断通道
143 // Progress 事件通常有: delta, text, call (tool events)
144 if _, ok := eventMap["delta"]; ok {
145 return string(types.ChannelProgress)
146 }
147 if _, ok := eventMap["call"]; ok {
148 return string(types.ChannelProgress)
149 }
150 if _, ok := eventMap["text"]; ok {
151 return string(types.ChannelProgress)
152 }
153
154 // Control 事件通常有: request_id, questions, approved
155 if _, ok := eventMap["request_id"]; ok {
156 return string(types.ChannelControl)
157 }
158 if _, ok := eventMap["questions"]; ok {
159 return string(types.ChannelControl)
160 }
161 if _, ok := eventMap["approved"]; ok {
162 return string(types.ChannelControl)
163 }
164
165 // Monitor 事件通常有: state, severity, message (error)
166 if _, ok := eventMap["state"]; ok {
167 return string(types.ChannelMonitor)
168 }
169 if _, ok := eventMap["severity"]; ok {
170 return string(types.ChannelMonitor)
171 }
172
173 // 默认返回 progress
174 return string(types.ChannelProgress)
175}
176
177// updateStateFromEvent 根据事件更新 Agent 状态
178func (r *RemoteAgent) updateStateFromEvent(event any) {

Callers 1

PushEventMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected