@@ -1348,9 +1348,15 @@ async fn run_generate(args: CreateArgs) -> Result<()> {
13481348 }
13491349 }
13501350
1351- println ! ( "Cortex AI Agent Generator" ) ;
1352- println ! ( "{}" , "=" . repeat( 40 ) ) ;
1353- println ! ( ) ;
1351+ // Determine if we should run in fully automated mode
1352+ // When description is provided via --generate, run non-interactively
1353+ let fully_automated = args. generate . is_some ( ) || args. non_interactive ;
1354+
1355+ if !fully_automated {
1356+ println ! ( "Cortex AI Agent Generator" ) ;
1357+ println ! ( "{}" , "=" . repeat( 40 ) ) ;
1358+ println ! ( ) ;
1359+ }
13541360
13551361 // Get description - either from args or interactively
13561362 let description = if let Some ( ref desc) = args. generate {
@@ -1374,10 +1380,12 @@ async fn run_generate(args: CreateArgs) -> Result<()> {
13741380 bail ! ( "Error: Model name cannot be empty" ) ;
13751381 }
13761382
1377- println ! ( ) ;
1378- println ! ( "Generating agent configuration..." ) ;
1379- println ! ( " Using model: {}" , args. model) ;
1380- println ! ( ) ;
1383+ if !fully_automated {
1384+ println ! ( ) ;
1385+ println ! ( "Generating agent configuration..." ) ;
1386+ println ! ( " Using model: {}" , args. model) ;
1387+ println ! ( ) ;
1388+ }
13811389
13821390 // Create generator and generate
13831391 let generator = AgentGenerator :: new ( ) . with_model ( & args. model ) ;
@@ -1387,48 +1395,48 @@ async fn run_generate(args: CreateArgs) -> Result<()> {
13871395 . await
13881396 . with_context ( || "Failed to generate agent configuration" ) ?;
13891397
1390- // Display the generated configuration
1391- println ! ( "Generated Agent Configuration:" ) ;
1392- println ! ( "{}" , "-" . repeat( 40 ) ) ;
1393- println ! ( ) ;
1394- println ! ( " Name: {}" , generated. identifier) ;
1395- println ! ( " Display: {}" , generated. display_name) ;
1396- println ! ( " Mode: {}" , generated. mode) ;
1397- if let Some ( temp) = generated. temperature {
1398- println ! ( " Temperature: {}" , temp) ;
1399- }
1400- println ! ( " Tools: {}" , generated. tools. join( ", " ) ) ;
1401- if !generated. tags . is_empty ( ) {
1402- println ! ( " Tags: {}" , generated. tags. join( ", " ) ) ;
1403- }
1404- println ! (
1405- " Delegate: {}" ,
1406- if generated. can_delegate { "yes" } else { "no" }
1407- ) ;
1408- println ! ( ) ;
1409- println ! ( " When to use:" ) ;
1410- println ! ( " {}" , generated. when_to_use) ;
1411- println ! ( ) ;
1412- println ! ( " System Prompt:" ) ;
1413- println ! ( " {}" , "-" . repeat( 36 ) ) ;
1414-
1415- // Show truncated prompt
1416- let prompt_preview = if generated. system_prompt . len ( ) > 500 {
1417- format ! (
1418- "{}...\n \n (truncated, {} chars total)" ,
1419- & generated. system_prompt[ ..500 ] ,
1420- generated. system_prompt. len( )
1421- )
1422- } else {
1423- generated. system_prompt . clone ( )
1424- } ;
1425- for line in prompt_preview. lines ( ) {
1426- println ! ( " {}" , line) ;
1427- }
1428- println ! ( ) ;
1398+ // Display the generated configuration (only in interactive mode)
1399+ if !fully_automated {
1400+ println ! ( "Generated Agent Configuration:" ) ;
1401+ println ! ( "{}" , "-" . repeat( 40 ) ) ;
1402+ println ! ( ) ;
1403+ println ! ( " Name: {}" , generated. identifier) ;
1404+ println ! ( " Display: {}" , generated. display_name) ;
1405+ println ! ( " Mode: {}" , generated. mode) ;
1406+ if let Some ( temp) = generated. temperature {
1407+ println ! ( " Temperature: {}" , temp) ;
1408+ }
1409+ println ! ( " Tools: {}" , generated. tools. join( ", " ) ) ;
1410+ if !generated. tags . is_empty ( ) {
1411+ println ! ( " Tags: {}" , generated. tags. join( ", " ) ) ;
1412+ }
1413+ println ! (
1414+ " Delegate: {}" ,
1415+ if generated. can_delegate { "yes" } else { "no" }
1416+ ) ;
1417+ println ! ( ) ;
1418+ println ! ( " When to use:" ) ;
1419+ println ! ( " {}" , generated. when_to_use) ;
1420+ println ! ( ) ;
1421+ println ! ( " System Prompt:" ) ;
1422+ println ! ( " {}" , "-" . repeat( 36 ) ) ;
14291423
1430- // Confirm or allow edits
1431- if !args. non_interactive {
1424+ // Show truncated prompt
1425+ let prompt_preview = if generated. system_prompt . len ( ) > 500 {
1426+ format ! (
1427+ "{}...\n \n (truncated, {} chars total)" ,
1428+ & generated. system_prompt[ ..500 ] ,
1429+ generated. system_prompt. len( )
1430+ )
1431+ } else {
1432+ generated. system_prompt . clone ( )
1433+ } ;
1434+ for line in prompt_preview. lines ( ) {
1435+ println ! ( " {}" , line) ;
1436+ }
1437+ println ! ( ) ;
1438+
1439+ // Confirm or allow edits (only in interactive mode)
14321440 let confirm = prompt_input (
14331441 & stdin,
14341442 & mut stdout,
@@ -1464,22 +1472,28 @@ async fn run_generate(args: CreateArgs) -> Result<()> {
14641472 generated
14651473 } ;
14661474
1467- save_generated_agent ( & final_agent) ?;
1475+ save_generated_agent ( & final_agent, false ) ?;
14681476 return Ok ( ( ) ) ;
14691477 }
14701478 _ => {
14711479 // Save as-is
14721480 }
14731481 }
1482+ save_generated_agent ( & generated, false ) ?;
1483+ } else {
1484+ // Fully automated mode: save directly without prompts
1485+ save_generated_agent ( & generated, true ) ?;
14741486 }
14751487
1476- save_generated_agent ( & generated) ?;
1477-
14781488 Ok ( ( ) )
14791489}
14801490
14811491/// Save a generated agent to disk.
1482- fn save_generated_agent ( agent : & cortex_engine:: agent:: GeneratedAgent ) -> Result < ( ) > {
1492+ ///
1493+ /// # Arguments
1494+ /// * `agent` - The generated agent configuration to save
1495+ /// * `force` - If true, overwrite existing agent without confirmation prompt
1496+ fn save_generated_agent ( agent : & cortex_engine:: agent:: GeneratedAgent , force : bool ) -> Result < ( ) > {
14831497 // Validate agent identifier is not empty
14841498 if agent. identifier . trim ( ) . is_empty ( ) {
14851499 bail ! ( "Error: Agent name cannot be empty" ) ;
@@ -1490,8 +1504,8 @@ fn save_generated_agent(agent: &cortex_engine::agent::GeneratedAgent) -> Result<
14901504
14911505 let agent_file = agents_dir. join ( agent. filename ( ) ) ;
14921506
1493- // Check if file already exists
1494- if agent_file. exists ( ) {
1507+ // Check if file already exists (only prompt if not in force mode)
1508+ if agent_file. exists ( ) && !force {
14951509 print ! (
14961510 "Agent '{}' already exists. Overwrite? [y/N]: " ,
14971511 agent. identifier
0 commit comments