Skip to content

Commit 4017d5d

Browse files
committed
check for openapi better
Signed-off-by: Grant Linville <[email protected]>
1 parent 79ffa1c commit 4017d5d

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

pkg/loader/loader.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"github.com/gptscript-ai/gptscript/pkg/engine"
2121
"github.com/gptscript-ai/gptscript/pkg/parser"
2222
"github.com/gptscript-ai/gptscript/pkg/types"
23+
"gopkg.in/yaml.v3"
2324
)
2425

2526
type source struct {
@@ -128,9 +129,7 @@ func readTool(ctx context.Context, prg *types.Program, base *source, targetToolN
128129
}
129130

130131
var tools []types.Tool
131-
if strings.HasSuffix(base.Name, ".json") ||
132-
strings.HasSuffix(base.Name, ".yaml") ||
133-
strings.HasSuffix(base.Name, ".yml") {
132+
if isOpenAPI(data) {
134133
if t, err := openapi3.NewLoader().LoadFromData(data); err == nil {
135134
tools, err = getOpenAPITools(t)
136135
if err != nil {
@@ -317,3 +316,16 @@ func SplitToolRef(targetToolName string) (toolName, subTool string) {
317316
}
318317
return
319318
}
319+
320+
func isOpenAPI(data []byte) bool {
321+
var version struct {
322+
OpenAPI string `json:"openapi" yaml:"openapi"`
323+
}
324+
325+
if err := json.Unmarshal(data, &version); err != nil {
326+
if err := yaml.Unmarshal(data, &version); err != nil {
327+
return false
328+
}
329+
}
330+
return strings.HasPrefix(version.OpenAPI, "3.")
331+
}

0 commit comments

Comments
 (0)