1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| {% import ( "{{{ .Package }}}/app" "{{{ .Package }}}/app/controller/cutil" "{{{ .Package }}}/app/lib/mcpserver" "{{{ .Package }}}/app/util" "{{{ .Package }}}/views/components" "{{{ .Package }}}/views/components/edit" "{{{ .Package }}}/views/layout" ) %}
{% code type ToolDetail struct { layout.Basic Server *mcpserver.Server Tool *mcpserver.Tool Args util.ValueMap Result any } %}
{% func (p *ToolDetail) Body(as *app.State, ps *cutil.PageState) %} <div class="card"> <h3>{%= components.SVGIcon(p.Tool.IconSafe(), ps) %} Tool [{%s p.Tool.Name %}]</h3> <em>{%s p.Tool.Description %}</em> <div class="mt">{%= edit.TableEditor("args", p.Tool.Args, p.Args, "/mcp/tool/" + p.Tool.Name, "post", "Run") %}</div> </div> {%- if p.Result != "" -%} <div class="card"> <h3>{%= components.SVGIcon(`file`, ps) %} Result</h3> <div class="mt">{%= components.JSON([]byte(mcpserver.ResultString(p.Result, ps.Logger))) %}</div> </div> {%- endif -%} {% endfunc %}
{% func listTools(ts mcpserver.Tools, ps *cutil.PageState) %} {%- for idx, t := range ts -%} <a class="link-section" href="/mcp/tool/{%s t.Name %}"> <div class="clear mt"> <div class="left mrs">{%= components.SVGRef(t.IconSafe(), 40, 40, "", ps) %}</div> <strong class="highlight">{%s t.Name %}</strong> <div><em>{%s t.Description %}</em></div> </div> </a> {%- if idx < len(ts) - 1 -%} <hr /> {%- endif -%} {%- endfor -%} {% endfunc %}
|