MCPcopy
hub / github.com/docker/docker-agent / Tools

Method Tools

pkg/tools/codemode/codemode.go:61–109  ·  view source on GitHub ↗
(ctx context.Context)

Source from the content-addressed store, hash-verified

59}
60
61func (c *codeModeTool) Tools(ctx context.Context) ([]tools.Tool, error) {
62 var (
63 functionsDoc []string
64 excludedTools []tools.Tool
65 )
66
67 for _, toolset := range c.toolsets {
68 allTools, err := toolset.Tools(ctx)
69 if err != nil {
70 return nil, err
71 }
72
73 for _, tool := range allTools {
74 if isExcludedTool(tool) {
75 excludedTools = append(excludedTools, tool)
76 } else {
77 functionsDoc = append(functionsDoc, toolToJsDoc(tool))
78 }
79 }
80 }
81
82 allTools := []tools.Tool{{
83 Name: "run_tools_with_javascript",
84 Category: "code mode",
85 Description: prompt + strings.Join(functionsDoc, "\n"),
86 Parameters: tools.MustSchemaFor[RunToolsWithJavascriptArgs](),
87 Handler: tools.NewHandler(func(ctx context.Context, args RunToolsWithJavascriptArgs) (*tools.ToolCallResult, error) {
88 result, err := c.runJavascript(ctx, args.Script)
89 if err != nil {
90 return nil, err
91 }
92
93 buf, err := json.Marshal(result)
94 if err != nil {
95 return nil, fmt.Errorf("marshaling script's result: %w", err)
96 }
97
98 return tools.ResultSuccess(string(buf)), nil
99 }),
100 OutputSchema: tools.MustSchemaFor[ScriptResult](),
101 Annotations: tools.ToolAnnotations{
102 Title: "Run tools with Javascript",
103 },
104 }}
105
106 allTools = append(allTools, excludedTools...)
107
108 return allTools, nil
109}
110
111func (c *codeModeTool) Start(ctx context.Context) error {
112 var started []tools.Startable

Callers 1

TestCodeModeTool_ToolsFunction · 0.95

Calls 6

runJavascriptMethod · 0.95
NewHandlerFunction · 0.92
ResultSuccessFunction · 0.92
isExcludedToolFunction · 0.85
toolToJsDocFunction · 0.85
ToolsMethod · 0.65

Tested by 1

TestCodeModeTool_ToolsFunction · 0.76