MCPcopy Create free account
hub / github.com/diillson/chatcli / DescribeCall

Method DescribeCall

cli/plugins/builtin_knowledge_caps.go:31–61  ·  view source on GitHub ↗

DescribeCall surfaces what is being looked up so the spinner reads "Searching knowledge base: \"gateway env vars\"" instead of the static (long) description or the raw JSON envelope — both of which overflow a terminal row and break the spinner's single-line repaint.

(args []string)

Source from the content-addressed store, hash-verified

29// (long) description or the raw JSON envelope — both of which overflow a
30// terminal row and break the spinner's single-line repaint.
31func (p *BuiltinKnowledgePlugin) DescribeCall(args []string) string {
32 cmd, inner, err := parseKnowledgeInvocation(args)
33 if err != nil {
34 return i18n.T("plugins.knowledge.describe_generic")
35 }
36 switch cmd {
37 case "search":
38 var in struct {
39 Query string `json:"query"`
40 }
41 _ = json.Unmarshal([]byte(inner), &in)
42 if in.Query == "" {
43 return i18n.T("plugins.knowledge.describe_generic")
44 }
45 return i18n.T("plugins.knowledge.describe_search", describeTrim(in.Query))
46 case "get":
47 var in struct {
48 Source string `json:"source"`
49 }
50 _ = json.Unmarshal([]byte(inner), &in)
51 if in.Source == "" {
52 return i18n.T("plugins.knowledge.describe_generic")
53 }
54 return i18n.T("plugins.knowledge.describe_get", describeTrim(in.Source))
55 case "toc":
56 return i18n.T("plugins.knowledge.describe_toc")
57 case "list":
58 return i18n.T("plugins.knowledge.describe_list")
59 }
60 return i18n.T("plugins.knowledge.describe_generic")
61}
62
63// describeTrim bounds one user-supplied value inside a spinner label;
64// rune-aware so multibyte queries truncate cleanly.

Callers 1

Calls 3

TFunction · 0.92
parseKnowledgeInvocationFunction · 0.85
describeTrimFunction · 0.85

Tested by 1