@@ -68,23 +68,10 @@ func CreateGoogleADKAgentWithSubagentSessionIDs(ctx context.Context, agentConfig
6868 log .Info ("Wired remote A2A agent tool" , "name" , remoteAgent .Name , "url" , remoteAgent .Url )
6969 }
7070
71- // Add memory tools if memory is configured
72- var memoryTools []tool.Tool
73- if agentConfig .Memory != nil {
74- log .Info ("Memory configuration detected, adding memory tools" )
75- memoryTools = []tool.Tool {
76- preloadmemorytool .New (),
77- loadmemorytool .New (),
78- }
79- }
80- memoryTools = append (memoryTools , remoteAgentTools ... )
81- memoryTools = append (memoryTools , extraTools ... )
82-
83- askUserTool , err := tools .NewAskUserTool ()
71+ localTools , err := buildAgentTools (agentConfig , remoteAgentTools , extraTools , log )
8472 if err != nil {
85- return nil , nil , fmt . Errorf ( "failed to create ask_user tool: %w" , err )
73+ return nil , nil , err
8674 }
87- memoryTools = append (memoryTools , askUserTool )
8875
8976 if agentConfig .Model == nil {
9077 return nil , nil , fmt .Errorf ("model configuration is required" )
@@ -126,7 +113,7 @@ func CreateGoogleADKAgentWithSubagentSessionIDs(ctx context.Context, agentConfig
126113 Instruction : agentConfig .Instruction ,
127114 Model : llmModel ,
128115 IncludeContents : llmagent .IncludeContentsDefault ,
129- Tools : memoryTools ,
116+ Tools : localTools ,
130117 Toolsets : toolsets ,
131118 BeforeToolCallbacks : beforeToolCallbacks ,
132119 AfterToolCallbacks : []llmagent.AfterToolCallback {
@@ -156,6 +143,36 @@ func CreateGoogleADKAgentWithSubagentSessionIDs(ctx context.Context, agentConfig
156143 return llmAgent , subagentSessionIDs , nil
157144}
158145
146+ func buildAgentTools (agentConfig * adk.AgentConfig , remoteAgentTools , extraTools []tool.Tool , log logr.Logger ) ([]tool.Tool , error ) {
147+ var localTools []tool.Tool
148+ if agentConfig .Memory != nil {
149+ log .Info ("Memory configuration detected, adding memory tools" )
150+ localTools = []tool.Tool {
151+ preloadmemorytool .New (),
152+ loadmemorytool .New (),
153+ }
154+ }
155+ localTools = append (localTools , remoteAgentTools ... )
156+ localTools = append (localTools , extraTools ... )
157+
158+ skillsDirectory := strings .TrimSpace (os .Getenv ("KAGENT_SKILLS_FOLDER" ))
159+ if skillsDirectory != "" {
160+ skillsTools , err := tools .NewSkillsTools (skillsDirectory )
161+ if err != nil {
162+ return nil , fmt .Errorf ("failed to create skills tools: %w" , err )
163+ }
164+ localTools = append (localTools , skillsTools ... )
165+ log .Info ("Wired local skills tools" , "skillsDirectory" , skillsDirectory , "toolCount" , len (skillsTools ))
166+ }
167+
168+ askUserTool , err := tools .NewAskUserTool ()
169+ if err != nil {
170+ return nil , fmt .Errorf ("failed to create ask_user tool: %w" , err )
171+ }
172+ localTools = append (localTools , askUserTool )
173+ return localTools , nil
174+ }
175+
159176// CreateLLM creates an adkmodel.LLM from the model configuration.
160177// This is exported to allow reuse of model creation logic (e.g., for memory summarization).
161178func CreateLLM (ctx context.Context , m adk.Model , log logr.Logger ) (adkmodel.LLM , error ) {
0 commit comments