first commit
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
package runtime
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
|
||||
"github.com/smallnest/pigo/internal/agentcore"
|
||||
)
|
||||
|
||||
// execTool is a configurable AgentTool used by the loop/headless tests that
|
||||
// remain in package agent. Its canonical definition moved to
|
||||
// internal/agenttool with tool_executor_test.go (US-003 of the package split);
|
||||
// this copy is re-provided here so the agent-resident tests keep compiling
|
||||
// during the transition.
|
||||
type execTool struct {
|
||||
name string
|
||||
schema string
|
||||
run func(ctx context.Context, id string, args json.RawMessage, onUpdate agentcore.ToolUpdateFunc) (agentcore.AgentToolResult, error)
|
||||
mode agentcore.ToolExecutionMode
|
||||
}
|
||||
|
||||
func (t execTool) Name() string { return t.name }
|
||||
func (t execTool) Description() string { return "exec" }
|
||||
func (t execTool) Schema() json.RawMessage {
|
||||
if t.schema == "" {
|
||||
return nil
|
||||
}
|
||||
return json.RawMessage(t.schema)
|
||||
}
|
||||
func (t execTool) ExecutionMode() agentcore.ToolExecutionMode {
|
||||
if t.mode == "" {
|
||||
return agentcore.ToolExecutionParallel
|
||||
}
|
||||
return t.mode
|
||||
}
|
||||
func (t execTool) Execute(ctx context.Context, id string, args json.RawMessage, onUpdate agentcore.ToolUpdateFunc) (agentcore.AgentToolResult, error) {
|
||||
return t.run(ctx, id, args, onUpdate)
|
||||
}
|
||||
|
||||
// echoTool returns its name as text; optionally terminates. Canonical
|
||||
// definition moved with batch_executor_test.go; re-provided here for the
|
||||
// agent-resident tests.
|
||||
func echoTool(name string, mode agentcore.ToolExecutionMode, terminate bool) execTool {
|
||||
return execTool{
|
||||
name: name,
|
||||
mode: mode,
|
||||
run: func(ctx context.Context, id string, args json.RawMessage, onUpdate agentcore.ToolUpdateFunc) (agentcore.AgentToolResult, error) {
|
||||
term := terminate
|
||||
return agentcore.AgentToolResult{Content: agentcore.ContentList{agentcore.NewTextContent(name)}, Terminate: &term}, nil
|
||||
},
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user