Skip to content

Commit f1616a0

Browse files
authored
chore: switch to huma v2 for OpenAPI schema (#99)
Signed-off-by: Donnie Adams <[email protected]>
1 parent af45398 commit f1616a0

File tree

4 files changed

+32
-57
lines changed

4 files changed

+32
-57
lines changed

go.mod

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,15 @@ module github.com/gptscript-ai/go-gptscript
33
go 1.23.0
44

55
require (
6-
github.com/getkin/kin-openapi v0.129.0
6+
github.com/danielgtaylor/huma/v2 v2.32.0
77
github.com/stretchr/testify v1.10.0
88
)
99

1010
require (
1111
github.com/davecgh/go-spew v1.1.1 // indirect
12-
github.com/go-openapi/jsonpointer v0.21.0 // indirect
13-
github.com/go-openapi/swag v0.23.0 // indirect
14-
github.com/josharian/intern v1.0.0 // indirect
15-
github.com/mailru/easyjson v0.9.0 // indirect
16-
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
17-
github.com/oasdiff/yaml v0.0.0-20241210131133-6b86fb107d80 // indirect
18-
github.com/oasdiff/yaml3 v0.0.0-20241210130736-a94c01f36349 // indirect
19-
github.com/perimeterx/marshmallow v1.1.5 // indirect
12+
github.com/kr/text v0.2.0 // indirect
2013
github.com/pmezard/go-difflib v1.0.0 // indirect
14+
github.com/rogpeppe/go-internal v1.12.0 // indirect
15+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
2116
gopkg.in/yaml.v3 v3.0.1 // indirect
2217
)

go.sum

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,23 @@
1+
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
2+
github.com/danielgtaylor/huma/v2 v2.32.0 h1:ytU9ExG/axC434+soXxwNzv0uaxOb3cyCgjj8y3PmBE=
3+
github.com/danielgtaylor/huma/v2 v2.32.0/go.mod h1:9BxJwkeoPPDEJ2Bg4yPwL1mM1rYpAwCAWFKoo723spk=
14
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
25
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3-
github.com/getkin/kin-openapi v0.129.0 h1:QGYTNcmyP5X0AtFQ2Dkou9DGBJsUETeLH9rFrJXZh30=
4-
github.com/getkin/kin-openapi v0.129.0/go.mod h1:gmWI+b/J45xqpyK5wJmRRZse5wefA5H0RDMK46kLUtI=
5-
github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
6-
github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
7-
github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
8-
github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
9-
github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM=
10-
github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
11-
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
12-
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
6+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
7+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
8+
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
139
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
1410
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
11+
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
12+
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
1513
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
1614
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
17-
github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4=
18-
github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU=
19-
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
20-
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
21-
github.com/oasdiff/yaml v0.0.0-20241210131133-6b86fb107d80 h1:nZspmSkneBbtxU9TopEAE0CY+SBJLxO8LPUlw2vG4pU=
22-
github.com/oasdiff/yaml v0.0.0-20241210131133-6b86fb107d80/go.mod h1:7tFDb+Y51LcDpn26GccuUgQXUk6t0CXZsivKjyimYX8=
23-
github.com/oasdiff/yaml3 v0.0.0-20241210130736-a94c01f36349 h1:t05Ww3DxZutOqbMN+7OIuqDwXbhl32HiZGpLy26BAPc=
24-
github.com/oasdiff/yaml3 v0.0.0-20241210130736-a94c01f36349/go.mod h1:y5+oSEHCPT/DGrS++Wc/479ERge0zTFxaF8PbGKcg2o=
25-
github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s=
26-
github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw=
2715
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
2816
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
2917
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
3018
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
3119
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
3220
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
33-
github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
34-
github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
3521
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
3622
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
3723
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=

gptscript_test.go

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
"testing"
1414
"time"
1515

16-
"github.com/getkin/kin-openapi/openapi3"
16+
humav2 "github.com/danielgtaylor/huma/v2"
1717
"github.com/stretchr/testify/require"
1818
)
1919

@@ -768,14 +768,12 @@ func TestFmt(t *testing.T) {
768768
ToolDef: ToolDef{
769769
Name: "echo",
770770
Instructions: "#!/bin/bash\necho hello there",
771-
Arguments: &openapi3.Schema{
772-
Type: &openapi3.Types{"object"},
773-
Properties: map[string]*openapi3.SchemaRef{
771+
Arguments: &humav2.Schema{
772+
Type: humav2.TypeObject,
773+
Properties: map[string]*humav2.Schema{
774774
"input": {
775-
Value: &openapi3.Schema{
776-
Description: "The string input to echo",
777-
Type: &openapi3.Types{"string"},
778-
},
775+
Description: "The string input to echo",
776+
Type: humav2.TypeString,
779777
},
780778
},
781779
},
@@ -829,14 +827,12 @@ func TestFmtWithTextNode(t *testing.T) {
829827
ToolDef: ToolDef{
830828
Instructions: "#!/bin/bash\necho hello there",
831829
Name: "echo",
832-
Arguments: &openapi3.Schema{
833-
Type: &openapi3.Types{"object"},
834-
Properties: map[string]*openapi3.SchemaRef{
830+
Arguments: &humav2.Schema{
831+
Type: humav2.TypeObject,
832+
Properties: map[string]*humav2.Schema{
835833
"input": {
836-
Value: &openapi3.Schema{
837-
Description: "The string input to echo",
838-
Type: &openapi3.Types{"string"},
839-
},
834+
Description: "The string input to echo",
835+
Type: humav2.TypeString,
840836
},
841837
},
842838
},

tool.go

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"fmt"
55
"strings"
66

7-
"github.com/getkin/kin-openapi/openapi3"
7+
humav2 "github.com/danielgtaylor/huma/v2"
88
)
99

1010
// ToolDef struct represents a tool with various configurations.
@@ -19,7 +19,7 @@ type ToolDef struct {
1919
Temperature *float32 `json:"temperature,omitempty"`
2020
Cache *bool `json:"cache,omitempty"`
2121
InternalPrompt *bool `json:"internalPrompt"`
22-
Arguments *openapi3.Schema `json:"arguments,omitempty"`
22+
Arguments *humav2.Schema `json:"arguments,omitempty"`
2323
Tools []string `json:"tools,omitempty"`
2424
GlobalTools []string `json:"globalTools,omitempty"`
2525
GlobalModelName string `json:"globalModelName,omitempty"`
@@ -52,18 +52,16 @@ func ToolDefsToNodes(tools []ToolDef) []Node {
5252
return nodes
5353
}
5454

55-
func ObjectSchema(kv ...string) *openapi3.Schema {
56-
s := &openapi3.Schema{
57-
Type: &openapi3.Types{"object"},
58-
Properties: openapi3.Schemas{},
55+
func ObjectSchema(kv ...string) *humav2.Schema {
56+
s := &humav2.Schema{
57+
Type: humav2.TypeObject,
58+
Properties: make(map[string]*humav2.Schema, len(kv)/2),
5959
}
6060
for i, v := range kv {
6161
if i%2 == 1 {
62-
s.Properties[kv[i-1]] = &openapi3.SchemaRef{
63-
Value: &openapi3.Schema{
64-
Description: v,
65-
Type: &openapi3.Types{"string"},
66-
},
62+
s.Properties[kv[i-1]] = &humav2.Schema{
63+
Description: v,
64+
Type: humav2.TypeString,
6765
}
6866
}
6967
}

0 commit comments

Comments
 (0)