in pkg/tools/tools.go [126:161]
func (t *ToolCall) InvokeTool(ctx context.Context, opt InvokeToolOptions) (any, error) {
recorder := journal.RecorderFromContext(ctx)
callID := uuid.NewString()
recorder.Write(ctx, &journal.Event{
Timestamp: time.Now(),
Action: "tool-request",
Payload: ToolRequestEvent{
CallID: callID,
Name: t.name,
Arguments: t.arguments,
},
})
ctx = context.WithValue(ctx, "kubeconfig", opt.Kubeconfig)
ctx = context.WithValue(ctx, "work_dir", opt.WorkDir)
response, err := t.tool.Run(ctx, t.arguments)
{
ev := ToolResponseEvent{
CallID: callID,
Response: response,
}
if err != nil {
ev.Error = err.Error()
}
recorder.Write(ctx, &journal.Event{
Timestamp: time.Now(),
Action: "tool-response",
Payload: ev,
})
}
return response, nil
}