Skip to content

Commit 6a56ded

Browse files
chore: when normalizing the tool name drop /tool.gpt if you can
1 parent bbe7ce0 commit 6a56ded

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

pkg/types/toolname.go

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ func ToolNormalizer(tool string) string {
2323

2424
parts := strings.Split(lastTool, "/")
2525
tool = parts[len(parts)-1]
26+
if parts[len(parts)-1] == "tool.gpt" && len(parts) > 1 && len(parts[len(parts)-2]) > 2 {
27+
tool = parts[len(parts)-2]
28+
}
2629
if strings.HasSuffix(tool, system.Suffix) {
2730
tool = strings.TrimSuffix(tool, filepath.Ext(tool))
2831
}
@@ -38,16 +41,26 @@ func ToolNormalizer(tool string) string {
3841

3942
tool = invalidChars.ReplaceAllString(tool, "_")
4043

41-
var result []string
42-
for i, part := range strings.Split(tool, "_") {
44+
var (
45+
result []string
46+
appended bool
47+
)
48+
for _, part := range strings.Split(tool, "_") {
4349
lower := strings.ToLower(part)
44-
if i != 0 && len(lower) > 0 {
50+
if appended && len(lower) > 0 {
4551
lower = strings.ToTitle(lower[0:1]) + lower[1:]
4652
}
47-
result = append(result, lower)
53+
if lower != "" {
54+
result = append(result, lower)
55+
appended = true
56+
}
4857
}
4958

50-
return strings.Join(result, "")
59+
final := strings.Join(result, "")
60+
if final == "" {
61+
return "tool"
62+
}
63+
return final
5164
}
5265

5366
func SplitToolRef(targetToolName string) (toolName, subTool string) {

pkg/types/toolname_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ func TestToolNormalizer(t *testing.T) {
1414
autogold.Expect("barList").Equal(t, ToolNormalizer("bar_list from ./foo.gpt"))
1515
autogold.Expect("write").Equal(t, ToolNormalizer("sys.write"))
1616
autogold.Expect("gpt4VVision").Equal(t, ToolNormalizer("github.com/gptscript-ai/gpt4-v-vision"))
17+
autogold.Expect("foo").Equal(t, ToolNormalizer("./foo/tool.gpt"))
18+
autogold.Expect("tool").Equal(t, ToolNormalizer("./tool.gpt"))
19+
autogold.Expect("tool").Equal(t, ToolNormalizer(".a/tool.gpt"))
20+
autogold.Expect("ab").Equal(t, ToolNormalizer(".ab/tool.gpt"))
21+
autogold.Expect("tool").Equal(t, ToolNormalizer(".../tool.gpt"))
1722
}
1823

1924
func TestParse(t *testing.T) {

0 commit comments

Comments
 (0)