( cmd *cobra.Command, deps commandDeps, name string, flags agentCreateFlags, )
| 120 | } |
| 121 | |
| 122 | func createAgentDefinition( |
| 123 | cmd *cobra.Command, |
| 124 | deps commandDeps, |
| 125 | name string, |
| 126 | flags agentCreateFlags, |
| 127 | ) (aghconfig.AgentDef, error) { |
| 128 | agentName := aghconfig.NormalizeAgentName(name) |
| 129 | if err := aghconfig.ValidatePublicAgentName(agentName); err != nil { |
| 130 | return aghconfig.AgentDef{}, err |
| 131 | } |
| 132 | prompt, err := agentCreatePrompt(flags) |
| 133 | if err != nil { |
| 134 | return aghconfig.AgentDef{}, err |
| 135 | } |
| 136 | agentsDir, err := resolveAgentCreateDirectory(cmd, deps, flags.workspace) |
| 137 | if err != nil { |
| 138 | return aghconfig.AgentDef{}, err |
| 139 | } |
| 140 | path := filepath.Join(agentsDir, agentName, aghconfig.AgentDefinitionFileName) |
| 141 | agent, err := aghconfig.CreateAgentDefFile(path, aghconfig.AgentDefinitionDraft{ |
| 142 | Name: agentName, |
| 143 | Provider: flags.provider, |
| 144 | Command: flags.command, |
| 145 | Model: flags.model, |
| 146 | Tools: flags.tools, |
| 147 | Toolsets: flags.toolsets, |
| 148 | DenyTools: flags.denyTools, |
| 149 | Permissions: flags.permissions, |
| 150 | CategoryPath: flags.categoryPath, |
| 151 | Prompt: prompt, |
| 152 | }, flags.force) |
| 153 | if err != nil { |
| 154 | if errors.Is(err, aghconfig.ErrAgentDefinitionExists) { |
| 155 | return aghconfig.AgentDef{}, fmt.Errorf( |
| 156 | "cli: agent definition already exists at %s (use --force to overwrite): %w", |
| 157 | path, |
| 158 | err, |
| 159 | ) |
| 160 | } |
| 161 | return aghconfig.AgentDef{}, err |
| 162 | } |
| 163 | return agent, nil |
| 164 | } |
| 165 | |
| 166 | func agentCreatePrompt(flags agentCreateFlags) (string, error) { |
| 167 | prompt := strings.TrimSpace(flags.prompt) |
no test coverage detected