MCPcopy Create free account
hub / github.com/GongShichen/LuminaCode / SubmitMessage

Method SubmitMessage

agent/query_engine.go:131–211  ·  view source on GitHub ↗
(ctx context.Context, userPrompt string, state *AgentState, sessionID ...string)

Source from the content-addressed store, hash-verified

129 return *state, stats
130}
131
132func (q *QueryEngine) SubmitMessage(ctx context.Context, userPrompt string, state *AgentState, sessionID ...string) <-chan StreamEvent {
133 q.RefreshRuntimeConfig()
134 out := make(chan StreamEvent)
135 go func() {
136 defer close(out)
137 if strings.HasPrefix(userPrompt, "/") {
138 cmd := strings.ToLower(strings.TrimSpace(strings.TrimPrefix(userPrompt, "/")))
139 switch cmd {
140 case "help", "tokens", "skill", "mcp", "compact", "compress":
141 sendStream(ctx, out, NewStreamEvent("text", fmt.Sprintf("[system] The '%s' command is handled by the REPL.\n", userPrompt), nil))
142 sendStream(ctx, out, NewStreamEvent("done", "", nil))
143 return
144 }
145 }
146 if state == nil {
147 s := NewAgentState()
148 state = &s
149 }
150 if q.Config.Yolo && state.PermissionState != nil {
151 state.PermissionState.YoloMode = true
152 }
153 if state.PermissionState != nil && state.PermissionState.YoloMode {
154 q.Config.Yolo = true
155 if q.CoreEngine != nil {
156 q.CoreEngine.Config.Yolo = true
157 }
158 }
159 sid := ""
160 if len(sessionID) > 0 {
161 sid = sessionID[0]
162 }
163 if q.CoreEngine != nil {
164 q.CoreEngine.SessionID = sid
165 agentID := "main"
166 if len(sessionID) > 1 && strings.TrimSpace(sessionID[1]) != "" {
167 agentID = strings.TrimSpace(sessionID[1])
168 }
169 q.CoreEngine.AgentID = agentID
170 if strings.TrimSpace(q.CoreEngine.AgentType) == "" {
171 q.CoreEngine.AgentType = agentID
172 }
173 }
174 state.Messages = StripTransientContextMessages(state.Messages)
175 state.MemoryQueryText = strings.TrimSpace(userPrompt)
176 q.buildOrRefreshSystemPrompt(state)
177 normalizedPrompt := userPrompt
178 if strings.HasPrefix(userPrompt, "/") {
179 skill, args := q.parseSkillInvocation(userPrompt)
180 if skill == nil {
181 sendStream(ctx, out, NewStreamEvent("error", "Unknown command: "+userPrompt, nil))
182 sendStream(ctx, out, NewStreamEvent("done", "", nil))
183 return
184 }
185 execution, err := q.executeSlashSkill(ctx, out, *skill, args, state, sessionID)
186 if err != nil {
187 sendStream(ctx, out, NewStreamEvent("error", err.Error(), nil))
188 sendStream(ctx, out, NewStreamEvent("done", "", nil))

Calls 15

RefreshRuntimeConfigMethod · 0.95
parseSkillInvocationMethod · 0.95
executeSlashSkillMethod · 0.95
commitUserTurnMethod · 0.95
recordSkillInvocationMethod · 0.95
sendStreamFunction · 0.85
NewStreamEventFunction · 0.85
NewAgentStateFunction · 0.85
AddUsageFunction · 0.85