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

Method requestSkillShellPermission

agent/query_engine.go:292–326  ·  view source on GitHub ↗
(ctx context.Context, out chan<- StreamEvent, req skills.SkillShellPermissionRequest)

Source from the content-addressed store, hash-verified

290 extraContext := coretools.ExecutionContext{
291 "_session_id": sid,
292 "_agent_id": q.CoreEngine.sessionMemoryAgentID(),
293 "runtime_dir": q.Config.ProjectRuntimeDir,
294 "_skill_persistence": q.CoreEngine.skillPersistence,
295 "_skill_agent_scope": "main",
296 "_turn_count": state.TurnCount,
297 "_permission_runtime": q.CoreEngine,
298 }
299 return executor.Execute(ctx, skill, args, sid, func(req skills.SkillShellPermissionRequest) bool {
300 return q.requestSkillShellPermission(ctx, out, req)
301 }, q.CoreEngine.Registry, state, extraContext)
302}
303
304func (q *QueryEngine) requestSkillShellPermission(ctx context.Context, out chan<- StreamEvent, req skills.SkillShellPermissionRequest) bool {
305 if q != nil && q.Config.Yolo {
306 return true
307 }
308 ch := make(chan bool, 1)
309 q.skillPermissionMu.Lock()
310 if q.skillPermissionCh != nil {
311 q.skillPermissionMu.Unlock()
312 return false
313 }
314 q.skillPermissionCh = ch
315 q.skillPermissionMu.Unlock()
316 defer func() {
317 q.skillPermissionMu.Lock()
318 if q.skillPermissionCh == ch {
319 q.skillPermissionCh = nil
320 }
321 q.skillPermissionMu.Unlock()
322 }()
323
324 event := NewStreamEvent("permission_needed", "", map[string]any{
325 "skill_shell_request": req,
326 "dangerous": true,
327 "risk": "high",
328 })
329 if !sendStream(ctx, out, event) {

Callers 1

executeSlashSkillMethod · 0.95

Calls 2

NewStreamEventFunction · 0.85
sendStreamFunction · 0.85

Tested by

no test coverage detected