Skip to content

Commit 61c3d18

Browse files
committed
style: cargo fmt --all
1 parent 541cd51 commit 61c3d18

11 files changed

Lines changed: 236 additions & 175 deletions

File tree

core/examples/agentic_loop_demo.rs

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,9 @@ async fn demo_2_streaming_events(agent: &Agent) -> anyhow::Result<()> {
184184
tool_count += 1;
185185
print!(" │ 🔧 {}...", name);
186186
}
187-
AgentEvent::ToolEnd { name, exit_code, .. } => {
187+
AgentEvent::ToolEnd {
188+
name, exit_code, ..
189+
} => {
188190
let status = if exit_code == 0 { "✓" } else { "✗" };
189191
println!(" {} (exit={})", status, exit_code);
190192
let _ = name; // suppress unused warning
@@ -193,10 +195,7 @@ async fn demo_2_streaming_events(agent: &Agent) -> anyhow::Result<()> {
193195
text_len += text.len();
194196
}
195197
AgentEvent::TurnEnd { turn, usage } => {
196-
println!(
197-
" └─ Turn {} done ({} tokens)",
198-
turn, usage.total_tokens
199-
);
198+
println!(" └─ Turn {} done ({} tokens)", turn, usage.total_tokens);
200199
}
201200
AgentEvent::End { usage, .. } => {
202201
println!("\n ■ Agent finished");
@@ -303,7 +302,10 @@ async fn demo_4_multi_turn(agent: &Agent) -> anyhow::Result<()> {
303302
None,
304303
)
305304
.await?;
306-
println!(" Tools: {}, Tokens: {}", r1.tool_calls_count, r1.usage.total_tokens);
305+
println!(
306+
" Tools: {}, Tokens: {}",
307+
r1.tool_calls_count, r1.usage.total_tokens
308+
);
307309

308310
// Turn 2 — LLM should remember the file from Turn 1
309311
println!("\n [Turn 2] Ask about the file (tests context memory)");
@@ -313,7 +315,10 @@ async fn demo_4_multi_turn(agent: &Agent) -> anyhow::Result<()> {
313315
None,
314316
)
315317
.await?;
316-
println!(" Tools: {}, Tokens: {}", r2.tool_calls_count, r2.usage.total_tokens);
318+
println!(
319+
" Tools: {}, Tokens: {}",
320+
r2.tool_calls_count, r2.usage.total_tokens
321+
);
317322
println!(" Answer: {}", truncate(&r2.text, 120));
318323

319324
// Turn 3 — modify based on context
@@ -324,7 +329,10 @@ async fn demo_4_multi_turn(agent: &Agent) -> anyhow::Result<()> {
324329
None,
325330
)
326331
.await?;
327-
println!(" Tools: {}, Tokens: {}", r3.tool_calls_count, r3.usage.total_tokens);
332+
println!(
333+
" Tools: {}, Tokens: {}",
334+
r3.tool_calls_count, r3.usage.total_tokens
335+
);
328336

329337
// Verify final state
330338
let history = session.history();
@@ -334,7 +342,10 @@ async fn demo_4_multi_turn(agent: &Agent) -> anyhow::Result<()> {
334342
let content = std::fs::read_to_string(tmp.path().join("config.toml"))?;
335343
let has_3000 = content.contains("3000");
336344
let has_10 = content.contains("10");
337-
println!(" ✓ config.toml: port=3000? {} pool=10? {}", has_3000, has_10);
345+
println!(
346+
" ✓ config.toml: port=3000? {} pool=10? {}",
347+
has_3000, has_10
348+
);
338349
}
339350

340351
Ok(())
@@ -372,10 +383,7 @@ API_KEY = "sk-1234567890abcdef"
372383
"#,
373384
)?;
374385

375-
let session = agent.session(
376-
&workspace,
377-
Some(permissive_options().with_builtin_skills()),
378-
)?;
386+
let session = agent.session(&workspace, Some(permissive_options().with_builtin_skills()))?;
379387

380388
println!(" Workspace: {}", workspace);
381389
println!(" Skills: built-in (7 skills active)\n");

core/examples/test_external_task_handler.rs

Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@
1111
1212
use a3s_code_core::agent::AgentEvent;
1313
use a3s_code_core::permissions::PermissionPolicy;
14-
use a3s_code_core::queue::{
15-
ExternalTaskResult, LaneHandlerConfig, SessionLane, TaskHandlerMode,
16-
};
14+
use a3s_code_core::queue::{ExternalTaskResult, LaneHandlerConfig, SessionLane, TaskHandlerMode};
1715
use a3s_code_core::{Agent, SessionOptions, SessionQueueConfig};
1816
use anyhow::Result;
1917
use std::path::PathBuf;
@@ -126,28 +124,54 @@ async fn main() -> Result<()> {
126124

127125
while let Some(event) = rx.recv().await {
128126
match event {
129-
AgentEvent::ExternalTaskPending { task_id, command_type, .. } => {
130-
println!(" 📥 ExternalTaskPending: {} ({})", &task_id[..8], command_type);
127+
AgentEvent::ExternalTaskPending {
128+
task_id,
129+
command_type,
130+
..
131+
} => {
132+
println!(
133+
" 📥 ExternalTaskPending: {} ({})",
134+
&task_id[..8],
135+
command_type
136+
);
131137

132138
// Poll all pending tasks
133139
let tasks = session.pending_external_tasks().await;
134140
for task in tasks {
135-
println!(" 🔧 Worker processing: {} → {}", task.command_type, &task.task_id[..8]);
141+
println!(
142+
" 🔧 Worker processing: {} → {}",
143+
task.command_type,
144+
&task.task_id[..8]
145+
);
136146

137147
// Execute the task (simulating a remote worker)
138148
let (success, output, exit_code, error) = if task.command_type == "bash" {
139-
let cmd = task.payload["command"].as_str().unwrap_or("echo 'no command'");
149+
let cmd = task.payload["command"]
150+
.as_str()
151+
.unwrap_or("echo 'no command'");
140152
let dir = task.payload["working_dir"].as_str().unwrap_or(".");
141153
worker_execute_bash(cmd, dir)
142154
} else {
143155
// For non-bash tasks, return a placeholder
144-
(true, format!("External handler processed: {}", task.command_type), 0, None)
156+
(
157+
true,
158+
format!("External handler processed: {}", task.command_type),
159+
0,
160+
None,
161+
)
145162
};
146163

147-
println!(" ✅ Worker result: success={}, exit_code={}", success, exit_code);
164+
println!(
165+
" ✅ Worker result: success={}, exit_code={}",
166+
success, exit_code
167+
);
148168
if !output.is_empty() {
149169
let preview = output.trim();
150-
let preview = if preview.len() > 60 { &preview[..60] } else { preview };
170+
let preview = if preview.len() > 60 {
171+
&preview[..60]
172+
} else {
173+
preview
174+
};
151175
println!(" Output: {}", preview);
152176
}
153177

@@ -168,7 +192,10 @@ async fn main() -> Result<()> {
168192

169193
if completed {
170194
external_tasks_processed += 1;
171-
println!(" 📤 Task {} completed and returned to agent", &task.task_id[..8]);
195+
println!(
196+
" 📤 Task {} completed and returned to agent",
197+
&task.task_id[..8]
198+
);
172199
}
173200
}
174201
}
@@ -221,9 +248,7 @@ async fn main() -> Result<()> {
221248
println!();
222249

223250
let start = Instant::now();
224-
let result = session
225-
.send("Run: echo 'hybrid mode test'", None)
226-
.await?;
251+
let result = session.send("Run: echo 'hybrid mode test'", None).await?;
227252

228253
let duration = start.elapsed();
229254
println!("✓ Completed in {:.2}s", duration.as_secs_f64());

core/examples/test_task_priority.rs

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,11 @@ fn spawn_send(
9191
completions: Arc<Mutex<Vec<CompletionRecord>>>,
9292
) -> tokio::task::JoinHandle<Result<()>> {
9393
let submitted_at = start.elapsed();
94-
let marker = if lane_label.contains("P1") { "🚨" } else { "📤" };
94+
let marker = if lane_label.contains("P1") {
95+
"🚨"
96+
} else {
97+
"📤"
98+
};
9599
println!(
96100
" [{:>6.2}s] {} Submitting: {} ({})",
97101
submitted_at.as_secs_f64(),
@@ -113,7 +117,11 @@ fn spawn_send(
113117
});
114118

115119
let chars = result.as_ref().map(|r| r.text.len()).unwrap_or(0);
116-
let done_marker = if lane_label.contains("P1") { "🚨" } else { "✅" };
120+
let done_marker = if lane_label.contains("P1") {
121+
"🚨"
122+
} else {
123+
"✅"
124+
};
117125
println!(
118126
" [{:>6.2}s] {} Completed: {} ({} chars)",
119127
completed_at.as_secs_f64(),
@@ -131,7 +139,11 @@ fn print_completion_order(records: &[CompletionRecord]) {
131139
sorted.sort_by(|a, b| a.completed_at.cmp(&b.completed_at));
132140
println!("\n --- Completion Order ---");
133141
for (i, record) in sorted.iter().enumerate() {
134-
let marker = if record.lane.contains("P1") { "🚨" } else { " " };
142+
let marker = if record.lane.contains("P1") {
143+
"🚨"
144+
} else {
145+
" "
146+
};
135147
println!(
136148
" {} {}. {} [{}] — submitted {:.2}s, completed {:.2}s",
137149
marker,
@@ -339,7 +351,10 @@ async fn test_late_urgent_insertion(agent: &Agent) -> Result<()> {
339351
sorted.sort_by(|a, b| a.completed_at.cmp(&b.completed_at));
340352
print_completion_order(&records);
341353

342-
let urgent_completed = sorted.iter().find(|r| r.name == "UrgentQuery").map(|r| r.completed_at);
354+
let urgent_completed = sorted
355+
.iter()
356+
.find(|r| r.name == "UrgentQuery")
357+
.map(|r| r.completed_at);
343358
let last_exec_completed = sorted
344359
.iter()
345360
.filter(|r| r.lane.contains("P2"))

core/src/agent.rs

Lines changed: 42 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -906,9 +906,7 @@ impl AgentLoop {
906906
);
907907

908908
// Pass empty prompt so execute_loop skips adding a user message
909-
let result = self
910-
.execute_loop(&messages, "", session_id, event_tx)
911-
.await;
909+
let result = self.execute_loop(&messages, "", session_id, event_tx).await;
912910

913911
match &result {
914912
Ok(r) => tracing::info!(
@@ -1106,8 +1104,7 @@ impl AgentLoop {
11061104
error = %e,
11071105
"LLM call failed, will retry"
11081106
);
1109-
tokio::time::sleep(Duration::from_millis(100 * attempt as u64))
1110-
.await;
1107+
tokio::time::sleep(Duration::from_millis(100 * attempt as u64)).await;
11111108
}
11121109
// Threshold exceeded or streaming mode: bail
11131110
Err(e) => {
@@ -1365,8 +1362,20 @@ impl AgentLoop {
13651362
.await;
13661363

13671364
match result {
1368-
Ok(r) => (r.output, r.exit_code, r.exit_code != 0, r.metadata, r.images),
1369-
Err(e) => (format!("Tool execution error: {}", e), 1, true, None, Vec::new()),
1365+
Ok(r) => (
1366+
r.output,
1367+
r.exit_code,
1368+
r.exit_code != 0,
1369+
r.metadata,
1370+
r.images,
1371+
),
1372+
Err(e) => (
1373+
format!("Tool execution error: {}", e),
1374+
1,
1375+
true,
1376+
None,
1377+
Vec::new(),
1378+
),
13701379
}
13711380
}
13721381
PermissionDecision::Ask => {
@@ -1392,11 +1401,22 @@ impl AgentLoop {
13921401
)
13931402
.await;
13941403

1395-
let (output, exit_code, is_error, _metadata, images) = match result {
1396-
Ok(r) => (r.output, r.exit_code, r.exit_code != 0, r.metadata, r.images),
1397-
Err(e) => {
1398-
(format!("Tool execution error: {}", e), 1, true, None, Vec::new())
1399-
}
1404+
let (output, exit_code, is_error, _metadata, images) = match result
1405+
{
1406+
Ok(r) => (
1407+
r.output,
1408+
r.exit_code,
1409+
r.exit_code != 0,
1410+
r.metadata,
1411+
r.images,
1412+
),
1413+
Err(e) => (
1414+
format!("Tool execution error: {}", e),
1415+
1,
1416+
true,
1417+
None,
1418+
Vec::new(),
1419+
),
14001420
};
14011421

14021422
// Add tool result to messages
@@ -4662,12 +4682,7 @@ mod extra_agent_tests {
46624682
max_parse_retries: 2,
46634683
..AgentConfig::default()
46644684
};
4665-
let agent = AgentLoop::new(
4666-
mock_client,
4667-
tool_executor,
4668-
test_tool_context(),
4669-
config,
4670-
);
4685+
let agent = AgentLoop::new(mock_client, tool_executor, test_tool_context(), config);
46714686
let result = agent.execute(&[], "Do something", None).await;
46724687
assert!(result.is_err(), "should bail after parse error threshold");
46734688
let err = result.unwrap_err().to_string();
@@ -4709,12 +4724,7 @@ mod extra_agent_tests {
47094724
max_parse_retries: 2,
47104725
..AgentConfig::default()
47114726
};
4712-
let agent = AgentLoop::new(
4713-
mock_client,
4714-
tool_executor,
4715-
test_tool_context(),
4716-
config,
4717-
);
4727+
let agent = AgentLoop::new(mock_client, tool_executor, test_tool_context(), config);
47184728
let result = agent.execute(&[], "Do something", None).await;
47194729
assert!(
47204730
result.is_ok(),
@@ -4776,14 +4786,13 @@ mod extra_agent_tests {
47764786
tool_timeout_ms: Some(5_000), // 5 s — echo completes in <100ms
47774787
..AgentConfig::default()
47784788
};
4779-
let agent = AgentLoop::new(
4780-
mock_client,
4781-
tool_executor,
4782-
test_tool_context(),
4783-
config,
4784-
);
4789+
let agent = AgentLoop::new(mock_client, tool_executor, test_tool_context(), config);
47854790
let result = agent.execute(&[], "Run something fast", None).await;
4786-
assert!(result.is_ok(), "fast tool should succeed: {:?}", result.err());
4791+
assert!(
4792+
result.is_ok(),
4793+
"fast tool should succeed: {:?}",
4794+
result.err()
4795+
);
47874796
assert_eq!(result.unwrap().text, "Command succeeded.");
47884797
}
47894798

@@ -4879,9 +4888,7 @@ mod extra_agent_tests {
48794888
system: Option<&str>,
48804889
tools: &[ToolDefinition],
48814890
) -> Result<tokio::sync::mpsc::Receiver<crate::llm::StreamEvent>> {
4882-
self.inner
4883-
.complete_streaming(messages, system, tools)
4884-
.await
4891+
self.inner.complete_streaming(messages, system, tools).await
48854892
}
48864893
}
48874894

@@ -4896,12 +4903,7 @@ mod extra_agent_tests {
48964903
circuit_breaker_threshold: 3,
48974904
..AgentConfig::default()
48984905
};
4899-
let agent = AgentLoop::new(
4900-
mock.clone(),
4901-
tool_executor,
4902-
test_tool_context(),
4903-
config,
4904-
);
4906+
let agent = AgentLoop::new(mock.clone(), tool_executor, test_tool_context(), config);
49054907
let result = agent.execute(&[], "Hello", None).await;
49064908
assert!(
49074909
result.is_ok(),

0 commit comments

Comments
 (0)