MCPcopy Create free account
hub / github.com/github/gh-aw / NewTools

Function NewTools

pkg/workflow/tools_parser.go:90–186  ·  view source on GitHub ↗

NewTools creates a new Tools instance from a map

(toolsMap map[string]any)

Source from the content-addressed store, hash-verified

88
89// NewTools creates a new Tools instance from a map
90func NewTools(toolsMap map[string]any) *Tools {
91 toolsParserLog.Printf("Creating tools configuration from map with %d entries", len(toolsMap))
92 if toolsMap == nil {
93 return &Tools{
94 Custom: make(map[string]MCPServerConfig),
95 raw: make(map[string]any),
96 }
97 }
98
99 tools := &Tools{
100 Custom: make(map[string]MCPServerConfig),
101 raw: make(map[string]any),
102 }
103
104 // Copy raw map
105 maps.Copy(tools.raw, toolsMap)
106
107 // Extract and parse known tools
108 if val, exists := toolsMap["github"]; exists {
109 tools.GitHub = parseGitHubTool(val)
110 }
111 if val, exists := toolsMap["bash"]; exists {
112 tools.Bash = parseBashTool(val)
113 // Check if parsing returned nil - this indicates invalid configuration
114 if tools.Bash == nil {
115 toolsParserLog.Print("Warning: bash tool configuration is invalid (nil/anonymous syntax not supported)")
116 }
117 }
118 if val, exists := toolsMap["web-fetch"]; exists {
119 tools.WebFetch = parseWebFetchTool(val)
120 }
121 if val, exists := toolsMap["web-search"]; exists {
122 tools.WebSearch = parseWebSearchTool(val)
123 }
124 if val, exists := toolsMap["edit"]; exists {
125 tools.Edit = parseEditTool(val)
126 }
127 if val, exists := toolsMap["playwright"]; exists {
128 tools.Playwright = parsePlaywrightTool(val)
129 }
130 if val, exists := toolsMap["agentic-workflows"]; exists {
131 tools.AgenticWorkflows = parseAgenticWorkflowsTool(val)
132 }
133 if val, exists := toolsMap["cache-memory"]; exists {
134 tools.CacheMemory = parseCacheMemoryTool(val)
135 }
136 if val, exists := toolsMap["comment-memory"]; exists {
137 tools.CommentMemory = parseCommentMemoryTool(val)
138 }
139 if val, exists := toolsMap["repo-memory"]; exists {
140 tools.RepoMemory = parseRepoMemoryTool(val)
141 }
142 if val, exists := toolsMap["timeout"]; exists {
143 tools.Timeout = parseTimeoutTool(val)
144 }
145 if val, exists := toolsMap["startup-timeout"]; exists {
146 tools.StartupTimeout = parseStartupTimeoutTool(val)
147 }

Calls 15

ContainsFunction · 0.92
parseGitHubToolFunction · 0.85
parseBashToolFunction · 0.85
parseWebFetchToolFunction · 0.85
parseWebSearchToolFunction · 0.85
parseEditToolFunction · 0.85
parsePlaywrightToolFunction · 0.85
parseCacheMemoryToolFunction · 0.85
parseCommentMemoryToolFunction · 0.85
parseRepoMemoryToolFunction · 0.85
parseTimeoutToolFunction · 0.85