MCPcopy Create free account
hub / github.com/astercloud/aster / Execute

Method Execute

pkg/tools/builtin/codeexecute.go:129–189  ·  view source on GitHub ↗
(ctx context.Context, input map[string]any, tc *tools.ToolContext)

Source from the content-addressed store, hash-verified

127}
128
129func (t *CodeExecuteTool) Execute(ctx context.Context, input map[string]any, tc *tools.ToolContext) (any, error) {
130 // 确保 HTTP 桥接服务器已启动 (PTC 支持)
131 if err := t.ensureBridgeServer(tc); err != nil {
132 return map[string]any{
133 "success": false,
134 "error": fmt.Sprintf("failed to start bridge server: %v", err),
135 }, nil
136 }
137
138 // 解析参数
139 langStr, ok := input["language"].(string)
140 if !ok {
141 return nil, errors.New("language must be a string")
142 }
143
144 code, ok := input["code"].(string)
145 if !ok || code == "" {
146 return nil, errors.New("code must be a non-empty string")
147 }
148
149 // 转换语言类型
150 var lang bridge.Language
151 switch langStr {
152 case "python":
153 lang = bridge.LangPython
154 case "nodejs":
155 lang = bridge.LangNodeJS
156 case "bash":
157 lang = bridge.LangBash
158 default:
159 return map[string]any{
160 "success": false,
161 "error": "unsupported language: " + langStr,
162 }, nil
163 }
164
165 // 获取输入数据
166 codeInput := make(map[string]any)
167 if inputData, ok := input["input"].(map[string]any); ok {
168 codeInput = inputData
169 }
170
171 // 执行代码
172 result, err := t.runtimeManager.Execute(ctx, lang, code, codeInput)
173 if err != nil {
174 return map[string]any{
175 "success": false,
176 "error": err.Error(),
177 }, nil
178 }
179
180 return map[string]any{
181 "success": result.Success,
182 "output": result.Output,
183 "stdout": result.Stdout,
184 "stderr": result.Stderr,
185 "error": result.Error,
186 "exit_code": result.ExitCode,

Callers

nothing calls this directly

Calls 3

ensureBridgeServerMethod · 0.95
ExecuteMethod · 0.65
ErrorMethod · 0.65

Tested by

no test coverage detected