MCPcopy Create free account
hub / github.com/1Panel-dev/1Panel / BatchInstallSkill

Method BatchInstallSkill

agent/app/service/agents.go:355–419  ·  view source on GitHub ↗
(req dto.AgentBatchSkillInstallReq)

Source from the content-addressed store, hash-verified

353}
354
355func (a AgentService) BatchInstallSkill(req dto.AgentBatchSkillInstallReq) ([]dto.AgentBatchSkillInstallResult, error) {
356 if req.AgentType != constant.AppOpenclaw && req.AgentType != constant.AppHermesAgent {
357 return nil, fmt.Errorf("%s does not support skill batch install", req.AgentType)
358 }
359 packagePath, err := validateLocalSkillPackagePath(req.PackagePath)
360 if err != nil {
361 return nil, err
362 }
363 if format, err := localSkillPackageFormat(packagePath); err != nil {
364 return nil, err
365 } else if format != "zip" {
366 return nil, fmt.Errorf("only .zip skill packages can be installed")
367 }
368 skillName := sanitizeLocalSkillDirName(req.SkillName, packagePath, req.SkillName)
369 agents, err := listBatchAgents(req.AgentType)
370 if err != nil {
371 return nil, err
372 }
373 results := make([]dto.AgentBatchSkillInstallResult, 0, len(agents))
374 for _, agent := range agents {
375 result := dto.AgentBatchSkillInstallResult{
376 AgentID: agent.ID,
377 AgentName: agent.Name,
378 AppInstallID: agent.AppInstallID,
379 }
380 ctx, message := loadBatchAgentInstall(agent, req.AgentType)
381 if message != "" {
382 result.Message = message
383 results = append(results, result)
384 continue
385 }
386 install := ctx.install
387 result.AppInstallID = install.ID
388 if install.Status == constant.StatusInstalling || install.Status == constant.StatusUpgrading {
389 result.Message = fmt.Sprintf("agent status is %s", install.Status)
390 results = append(results, result)
391 continue
392 }
393 if err := ensureContainerRunning(install.ContainerName); err != nil {
394 result.Message = err.Error()
395 results = append(results, result)
396 continue
397 }
398 installTask, err := task.NewTaskWithOps(skillName, task.TaskInstall, task.TaskScopeAI, buildBatchSkillInstallTaskID(req.TaskID, agent.ID), agent.ID)
399 if err != nil {
400 result.Message = err.Error()
401 results = append(results, result)
402 continue
403 }
404 currentAgent := ctx.agent
405 currentInstall := ctx.install
406 installTask.AddSubTask("Install local skill", func(t *task.Task) error {
407 mgr := cmd.NewCommandMgr(cmd.WithTask(*t), cmd.WithContext(t.TaskCtx), cmd.WithTimeout(20*time.Minute))
408 return installLocalSkillPackage(mgr, currentInstall.ContainerName, currentAgent.AgentType, currentAgent.ConfigPath, packagePath, skillName)
409 }, nil)
410 go func() {
411 if err := installTask.Execute(); err != nil {
412 global.LOG.Errorf("batch install local skill failed: %v", err)

Callers

nothing calls this directly

Calls 11

localSkillPackageFormatFunction · 0.85
listBatchAgentsFunction · 0.85
loadBatchAgentInstallFunction · 0.85
ensureContainerRunningFunction · 0.85
installLocalSkillPackageFunction · 0.85
ErrorMethod · 0.45
AddSubTaskMethod · 0.45
ExecuteMethod · 0.45

Tested by

no test coverage detected