refactor(crates): kernel/generation module split + DeerFlow optimizations + middleware + dead code cleanup
- Split zclaw-kernel/kernel.rs (1486 lines) into 9 domain modules - Split zclaw-kernel/generation.rs (1080 lines) into 3 modules - Add DeerFlow-inspired middleware: DanglingTool, SubagentLimit, ToolError, ToolOutputGuard - Add PromptBuilder for structured system prompt assembly - Add FactStore (zclaw-memory) for persistent fact extraction - Add task builtin tool for agent task management - Driver improvements: Anthropic/OpenAI extended thinking, Gemini safety settings - Replace let _ = with proper log::warn! across SaaS handlers - Remove unused dependency (url) from zclaw-hands
This commit is contained in:
@@ -41,6 +41,8 @@ pub enum ToolCallDecision {
|
||||
Block(String),
|
||||
/// Allow the call but replace the tool input with *new_input*.
|
||||
ReplaceInput(Value),
|
||||
/// Terminate the entire agent loop immediately (e.g. circuit breaker).
|
||||
AbortLoop(String),
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -194,6 +196,25 @@ impl MiddlewareChain {
|
||||
Ok(ToolCallDecision::Allow)
|
||||
}
|
||||
|
||||
/// Run all `before_tool_call` hooks with mutable context.
|
||||
pub async fn run_before_tool_call_mut(
|
||||
&self,
|
||||
ctx: &mut MiddlewareContext,
|
||||
tool_name: &str,
|
||||
tool_input: &Value,
|
||||
) -> Result<ToolCallDecision> {
|
||||
for mw in &self.middlewares {
|
||||
match mw.before_tool_call(ctx, tool_name, tool_input).await? {
|
||||
ToolCallDecision::Allow => {}
|
||||
other => {
|
||||
tracing::info!("[MiddlewareChain] '{}' decided {:?} for tool '{}'", mw.name(), other, tool_name);
|
||||
return Ok(other);
|
||||
}
|
||||
}
|
||||
}
|
||||
Ok(ToolCallDecision::Allow)
|
||||
}
|
||||
|
||||
/// Run all `after_tool_call` hooks in order.
|
||||
pub async fn run_after_tool_call(
|
||||
&self,
|
||||
@@ -245,8 +266,13 @@ impl Default for MiddlewareChain {
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
pub mod compaction;
|
||||
pub mod dangling_tool;
|
||||
pub mod guardrail;
|
||||
pub mod loop_guard;
|
||||
pub mod memory;
|
||||
pub mod skill_index;
|
||||
pub mod subagent_limit;
|
||||
pub mod title;
|
||||
pub mod token_calibration;
|
||||
pub mod tool_error;
|
||||
pub mod tool_output_guard;
|
||||
|
||||
Reference in New Issue
Block a user