@@ -3,14 +3,22 @@ import * as prompts from "@clack/prompts"
3
3
import { UI } from "../ui"
4
4
import { Global } from "../../global"
5
5
import { Agent } from "../../agent/agent"
6
+ import { Provider } from "../../provider/provider"
6
7
import path from "path"
7
8
import matter from "gray-matter"
8
9
import { App } from "../../app/app"
9
10
10
11
const AgentCreateCommand = cmd ( {
11
12
command : "create" ,
12
13
describe : "create a new agent" ,
13
- async handler ( ) {
14
+ builder : ( yargs ) => {
15
+ return yargs . option ( "model" , {
16
+ type : "string" ,
17
+ alias : [ "m" ] ,
18
+ describe : "model to use in the format of provider/model" ,
19
+ } )
20
+ } ,
21
+ async handler ( args ) {
14
22
await App . provide ( { cwd : process . cwd ( ) } , async ( app ) => {
15
23
UI . empty ( )
16
24
prompts . intro ( "Create agent" )
@@ -43,10 +51,33 @@ const AgentCreateCommand = cmd({
43
51
} )
44
52
if ( prompts . isCancel ( query ) ) throw new UI . CancelledError ( )
45
53
54
+ let modelConfig : { providerID : string ; modelID : string } | undefined
55
+ if ( args . model ) {
56
+ try {
57
+ const parsed = Provider . parseModel ( args . model )
58
+ const provider = await Provider . getProvider ( parsed . providerID )
59
+ if ( ! provider ) {
60
+ throw new Error ( `Provider '${ parsed . providerID } ' not found` )
61
+ }
62
+ await Provider . getModel ( parsed . providerID , parsed . modelID )
63
+ modelConfig = parsed
64
+ } catch ( error ) {
65
+ prompts . log . error ( `Invalid model: ${ args . model } ` )
66
+ prompts . log . error ( error instanceof Error ? error . message : String ( error ) )
67
+ throw new UI . CancelledError ( )
68
+ }
69
+ }
70
+
46
71
const spinner = prompts . spinner ( )
47
72
48
- spinner . start ( "Generating agent configuration..." )
49
- const generated = await Agent . generate ( { description : query } )
73
+ const spinnerMessage = modelConfig
74
+ ? `Generating agent configuration using ${ modelConfig . providerID } /${ modelConfig . modelID } ...`
75
+ : "Generating agent configuration..."
76
+ spinner . start ( spinnerMessage )
77
+ const generated = await Agent . generate ( {
78
+ description : query ,
79
+ model : modelConfig ,
80
+ } )
50
81
spinner . stop ( `Agent ${ generated . identifier } generated` )
51
82
52
83
const availableTools = [
0 commit comments