Skip to content

Commit 14b06a6

Browse files
committed
chore: switch from huma to go-sdk JSON Schema
Signed-off-by: Donnie Adams <[email protected]>
1 parent d845bab commit 14b06a6

File tree

10 files changed

+107
-105
lines changed

10 files changed

+107
-105
lines changed

go.mod

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,11 @@ go 1.24.2
44

55
toolchain go1.24.4
66

7-
replace github.com/danielgtaylor/huma/v2 => github.com/gptscript-ai/huma v0.0.0-20250617131016-b2081da6c65b
8-
97
require (
108
github.com/AlecAivazis/survey/v2 v2.3.7
119
github.com/BurntSushi/locker v0.0.0-20171006230638-a6e239ea1c69
1210
github.com/adrg/xdg v0.4.0
1311
github.com/chzyer/readline v1.5.1
14-
github.com/danielgtaylor/huma/v2 v2.32.1-0.20250509235652-c7ead6f3c67f
1512
github.com/docker/cli v26.0.0+incompatible
1613
github.com/docker/docker-credential-helpers v0.8.1
1714
github.com/fatih/color v1.17.0
@@ -22,12 +19,13 @@ require (
2219
github.com/gptscript-ai/broadcaster v0.0.0-20240625175512-c43682019b86
2320
github.com/gptscript-ai/chat-completion-client v0.0.0-20250224164718-139cb4507b1d
2421
github.com/gptscript-ai/cmd v0.0.0-20250530150401-bc71fddf8070
25-
github.com/gptscript-ai/go-gptscript v0.9.6-0.20250617131750-9129819aea51
22+
github.com/gptscript-ai/go-gptscript v0.9.6-0.20250714170123-17ad44ae8c54
2623
github.com/gptscript-ai/tui v0.0.0-20250419050840-5e79e16786c9
2724
github.com/hexops/autogold/v2 v2.2.1
2825
github.com/hexops/valast v1.4.4
2926
github.com/jaytaylor/html2text v0.0.0-20230321000545-74c2419ad056
3027
github.com/mholt/archives v0.1.0
28+
github.com/modelcontextprotocol/go-sdk v0.2.0
3129
github.com/nanobot-ai/nanobot v0.0.6-0.20250623174223-c75713af7a09
3230
github.com/pkoukk/tiktoken-go v0.1.7
3331
github.com/pkoukk/tiktoken-go-loader v0.0.2-0.20240522064338-c17e8bc0f699
@@ -40,7 +38,7 @@ require (
4038
github.com/tidwall/gjson v1.17.1
4139
github.com/xeipuuv/gojsonschema v1.2.0
4240
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56
43-
golang.org/x/sync v0.14.0
41+
golang.org/x/sync v0.15.0
4442
golang.org/x/term v0.32.0
4543
gopkg.in/yaml.v3 v3.0.1
4644
gotest.tools/v3 v3.5.1
@@ -139,12 +137,12 @@ require (
139137
github.com/yuin/goldmark v1.5.4 // indirect
140138
github.com/yuin/goldmark-emoji v1.0.2 // indirect
141139
go4.org v0.0.0-20230225012048-214862532bf5 // indirect
142-
golang.org/x/crypto v0.38.0 // indirect
143-
golang.org/x/mod v0.19.0 // indirect
144-
golang.org/x/net v0.40.0 // indirect
140+
golang.org/x/crypto v0.39.0 // indirect
141+
golang.org/x/mod v0.25.0 // indirect
142+
golang.org/x/net v0.41.0 // indirect
145143
golang.org/x/sys v0.33.0 // indirect
146-
golang.org/x/text v0.25.0 // indirect
147-
golang.org/x/tools v0.23.0 // indirect
144+
golang.org/x/text v0.26.0 // indirect
145+
golang.org/x/tools v0.34.0 // indirect
148146
gopkg.in/warnings.v0 v0.1.2 // indirect
149147
mvdan.cc/gofumpt v0.6.0 // indirect
150148
)

go.sum

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -214,10 +214,8 @@ github.com/gptscript-ai/chat-completion-client v0.0.0-20250224164718-139cb4507b1
214214
github.com/gptscript-ai/chat-completion-client v0.0.0-20250224164718-139cb4507b1d/go.mod h1:7P/o6/IWa1KqsntVf68hSnLKuu3+xuqm6lYhch1w4jo=
215215
github.com/gptscript-ai/cmd v0.0.0-20250530150401-bc71fddf8070 h1:xm5ZZFraWFwxyE7TBEncCXArubCDZTwG6s5bpMzqhSY=
216216
github.com/gptscript-ai/cmd v0.0.0-20250530150401-bc71fddf8070/go.mod h1:DJAo1xTht1LDkNYFNydVjTHd576TC7MlpsVRl3oloVw=
217-
github.com/gptscript-ai/go-gptscript v0.9.6-0.20250617131750-9129819aea51 h1:9s53UDNVXF+ujMwhg/7LiZlIMYOpn2Ap8WBc1i4Pi/Y=
218-
github.com/gptscript-ai/go-gptscript v0.9.6-0.20250617131750-9129819aea51/go.mod h1:LQ4E2g+t+L/it13Le5m9Hfgn4huS8bO4hcTawFlUzSY=
219-
github.com/gptscript-ai/huma v0.0.0-20250617131016-b2081da6c65b h1:QReUetqY+ep2sj6g83oqldPHzwH2T2TG1sv0IWE2hL0=
220-
github.com/gptscript-ai/huma v0.0.0-20250617131016-b2081da6c65b/go.mod h1:y2Eq35Y5Xy6+MZRPgn81/bjNBiEHqEQba+vY+fLigjU=
217+
github.com/gptscript-ai/go-gptscript v0.9.6-0.20250714170123-17ad44ae8c54 h1:9OAiDBdOQUHVL89wmb38+/XOuewboMhgnk6NqoJiC00=
218+
github.com/gptscript-ai/go-gptscript v0.9.6-0.20250714170123-17ad44ae8c54/go.mod h1:HLPvKBhDtsEkyyUWefJVhPpl98R3tZG6ps7+mQ+EKVI=
221219
github.com/gptscript-ai/tui v0.0.0-20250419050840-5e79e16786c9 h1:wQC8sKyeGA50WnCEG+Jo5FNRIkuX3HX8d3ubyWCCoI8=
222220
github.com/gptscript-ai/tui v0.0.0-20250419050840-5e79e16786c9/go.mod h1:iwHxuueg2paOak7zIg0ESBWx7A0wIHGopAratbgaPNY=
223221
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
@@ -265,8 +263,8 @@ github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgo
265263
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
266264
github.com/klauspost/cpuid/v2 v2.0.10/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c=
267265
github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c=
268-
github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE=
269-
github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
266+
github.com/klauspost/cpuid/v2 v2.2.3 h1:sxCkb+qR91z4vsqw4vGGZlDgPz3G7gjaLyK3V8y70BU=
267+
github.com/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
270268
github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=
271269
github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
272270
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
@@ -307,6 +305,8 @@ github.com/mholt/archives v0.1.0 h1:FacgJyrjiuyomTuNA92X5GyRBRZjE43Y/lrzKIlF35Q=
307305
github.com/mholt/archives v0.1.0/go.mod h1:j/Ire/jm42GN7h90F5kzj6hf6ZFzEH66de+hmjEKu+I=
308306
github.com/microcosm-cc/bluemonday v1.0.26 h1:xbqSvqzQMeEHCqMi64VAs4d8uy6Mequs3rQ0k/Khz58=
309307
github.com/microcosm-cc/bluemonday v1.0.26/go.mod h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs=
308+
github.com/modelcontextprotocol/go-sdk v0.2.0 h1:PESNYOmyM1c369tRkzXLY5hHrazj8x9CY1Xu0fLCryM=
309+
github.com/modelcontextprotocol/go-sdk v0.2.0/go.mod h1:0sL9zUKKs2FTTkeCCVnKqbLJTw5TScefPAzojjU459E=
310310
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
311311
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
312312
github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
@@ -408,8 +408,8 @@ github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
408408
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
409409
github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
410410
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
411-
github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE=
412-
github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
411+
github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
412+
github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
413413
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
414414
github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
415415
github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
@@ -445,8 +445,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
445445
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
446446
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
447447
golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
448-
golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8=
449-
golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw=
448+
golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM=
449+
golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U=
450450
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
451451
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
452452
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -479,8 +479,8 @@ golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
479479
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
480480
golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
481481
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
482-
golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8=
483-
golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
482+
golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w=
483+
golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
484484
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
485485
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
486486
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -503,8 +503,8 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
503503
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
504504
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
505505
golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
506-
golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY=
507-
golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds=
506+
golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw=
507+
golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA=
508508
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
509509
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
510510
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -520,8 +520,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ
520520
golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
521521
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
522522
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
523-
golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ=
524-
golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
523+
golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8=
524+
golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
525525
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
526526
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
527527
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -585,8 +585,8 @@ golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
585585
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
586586
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
587587
golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
588-
golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4=
589-
golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA=
588+
golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M=
589+
golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA=
590590
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
591591
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
592592
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -618,8 +618,8 @@ golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ=
618618
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
619619
golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4=
620620
golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM=
621-
golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg=
622-
golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI=
621+
golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo=
622+
golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg=
623623
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
624624
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
625625
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

pkg/loader/openapi.go

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ import (
1111
"strings"
1212
"time"
1313

14-
humav2 "github.com/danielgtaylor/huma/v2"
1514
"github.com/getkin/kin-openapi/openapi3"
1615
"github.com/gptscript-ai/gptscript/pkg/openapi"
1716
"github.com/gptscript-ai/gptscript/pkg/types"
17+
"github.com/modelcontextprotocol/go-sdk/jsonschema"
1818
)
1919

2020
var toolNameRegex = regexp.MustCompile(`[^a-zA-Z0-9_-]+`)
@@ -151,9 +151,9 @@ func getOpenAPITools(t *openapi3.T, defaultHost, source, targetToolName string)
151151
Parameters: types.Parameters{
152152
Name: toolName,
153153
Description: toolDesc,
154-
Arguments: &humav2.Schema{
155-
Type: humav2.TypeObject,
156-
Properties: make(map[string]*humav2.Schema),
154+
Arguments: &jsonschema.Schema{
155+
Type: "object",
156+
Properties: make(map[string]*jsonschema.Schema),
157157
},
158158
},
159159
},
@@ -373,22 +373,27 @@ func parseServer(server *openapi3.Server) (string, error) {
373373
return s, nil
374374
}
375375

376-
// openAPI3SchemaToHumaV2Schema converts an openapi3.Schema to a humav2.Schema
377-
func openAPI3SchemaToHumaV2Schema(schema *openapi3.Schema) *humav2.Schema {
376+
// openAPI3SchemaToHumaV2Schema converts an openapi3.Schema to a jsonschema.Schema
377+
func openAPI3SchemaToHumaV2Schema(schema *openapi3.Schema) *jsonschema.Schema {
378378
if schema == nil {
379379
return nil
380380
}
381381

382-
result := &humav2.Schema{
382+
result := &jsonschema.Schema{
383383
Title: schema.Title,
384384
Description: schema.Description,
385385
Format: schema.Format,
386-
Nullable: schema.Nullable,
387386
}
388387

389388
// Convert type
390389
if schema.Type != nil && len(*schema.Type) > 0 {
391-
result.Type = (*schema.Type)[0]
390+
result.Types = *schema.Type
391+
}
392+
393+
// In OpenAPI v3.0, there is a nullable field.
394+
// In OpenAPI v3.1, nullable is specified by providing a separate type.
395+
if schema.Nullable && !slices.Contains(result.Types, "null") {
396+
result.Types = append(result.Types, "null")
392397
}
393398

394399
// Convert enum
@@ -463,7 +468,7 @@ func openAPI3SchemaToHumaV2Schema(schema *openapi3.Schema) *humav2.Schema {
463468

464469
// Convert properties
465470
if schema.Properties != nil {
466-
result.Properties = make(map[string]*humav2.Schema, len(schema.Properties))
471+
result.Properties = make(map[string]*jsonschema.Schema, len(schema.Properties))
467472
for name, propRef := range schema.Properties {
468473
if propRef != nil && propRef.Value != nil {
469474
result.Properties[name] = openAPI3SchemaToHumaV2Schema(propRef.Value)
@@ -478,7 +483,7 @@ func openAPI3SchemaToHumaV2Schema(schema *openapi3.Schema) *humav2.Schema {
478483

479484
// Convert oneOf
480485
if schema.OneOf != nil {
481-
result.OneOf = make([]*humav2.Schema, len(schema.OneOf))
486+
result.OneOf = make([]*jsonschema.Schema, len(schema.OneOf))
482487
for i, oneOfRef := range schema.OneOf {
483488
if oneOfRef != nil && oneOfRef.Value != nil {
484489
result.OneOf[i] = openAPI3SchemaToHumaV2Schema(oneOfRef.Value)
@@ -488,7 +493,7 @@ func openAPI3SchemaToHumaV2Schema(schema *openapi3.Schema) *humav2.Schema {
488493

489494
// Convert anyOf
490495
if schema.AnyOf != nil {
491-
result.AnyOf = make([]*humav2.Schema, len(schema.AnyOf))
496+
result.AnyOf = make([]*jsonschema.Schema, len(schema.AnyOf))
492497
for i, anyOfRef := range schema.AnyOf {
493498
if anyOfRef != nil && anyOfRef.Value != nil {
494499
result.AnyOf[i] = openAPI3SchemaToHumaV2Schema(anyOfRef.Value)
@@ -498,7 +503,7 @@ func openAPI3SchemaToHumaV2Schema(schema *openapi3.Schema) *humav2.Schema {
498503

499504
// Convert allOf
500505
if schema.AllOf != nil {
501-
result.AllOf = make([]*humav2.Schema, len(schema.AllOf))
506+
result.AllOf = make([]*jsonschema.Schema, len(schema.AllOf))
502507
for i, allOfRef := range schema.AllOf {
503508
if allOfRef != nil && allOfRef.Value != nil {
504509
result.AllOf[i] = openAPI3SchemaToHumaV2Schema(allOfRef.Value)
@@ -543,11 +548,11 @@ func getOpenAPIToolsRevamp(t *openapi3.T, source, targetToolName string) ([]type
543548
Parameters: types.Parameters{
544549
Name: types.ToolNormalizer("get-schema-" + t.Info.Title),
545550
Description: fmt.Sprintf("Get the JSONSchema for the arguments for an operation for %s. You must do this before you run the operation.", t.Info.Title),
546-
Arguments: &humav2.Schema{
547-
Type: humav2.TypeObject,
548-
Properties: map[string]*humav2.Schema{
551+
Arguments: &jsonschema.Schema{
552+
Type: "object",
553+
Properties: map[string]*jsonschema.Schema{
549554
"operation": {
550-
Type: humav2.TypeString,
555+
Type: "string",
551556
Title: "operation",
552557
Description: "the name of the operation to get the schema for",
553558
Required: []string{"operation"},
@@ -567,17 +572,17 @@ func getOpenAPIToolsRevamp(t *openapi3.T, source, targetToolName string) ([]type
567572
Parameters: types.Parameters{
568573
Name: types.ToolNormalizer("run-operation-" + t.Info.Title),
569574
Description: fmt.Sprintf("Run an operation for %s. You MUST call %s for the operation before you use this tool.", t.Info.Title, openapi.GetSchemaTool),
570-
Arguments: &humav2.Schema{
571-
Type: humav2.TypeObject,
572-
Properties: map[string]*humav2.Schema{
575+
Arguments: &jsonschema.Schema{
576+
Type: "object",
577+
Properties: map[string]*jsonschema.Schema{
573578
"operation": {
574-
Type: humav2.TypeString,
579+
Type: "string",
575580
Title: "operation",
576581
Description: "the name of the operation to run",
577582
Required: []string{"operation"},
578583
},
579584
"args": {
580-
Type: humav2.TypeString,
585+
Type: "string",
581586
Title: "args",
582587
Description: "the JSON string containing arguments; must match the JSONSchema for the operation",
583588
Required: []string{"args"},

pkg/mcp/loader.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ import (
1010
"strings"
1111
"sync"
1212

13-
humav2 "github.com/danielgtaylor/huma/v2"
1413
"github.com/gptscript-ai/gptscript/pkg/hash"
1514
"github.com/gptscript-ai/gptscript/pkg/mvl"
1615
"github.com/gptscript-ai/gptscript/pkg/types"
16+
"github.com/modelcontextprotocol/go-sdk/jsonschema"
1717
nmcp "github.com/nanobot-ai/nanobot/pkg/mcp"
1818
)
1919

@@ -196,7 +196,7 @@ func (l *Local) sessionToTools(ctx context.Context, session *Session, toolName s
196196
continue
197197
}
198198

199-
var schema humav2.Schema
199+
var schema jsonschema.Schema
200200

201201
schemaData, err := json.Marshal(tool.InputSchema)
202202
if err != nil {

pkg/openai/client.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"strings"
1212
"time"
1313

14-
humav2 "github.com/danielgtaylor/huma/v2"
1514
openai "github.com/gptscript-ai/chat-completion-client"
1615
"github.com/gptscript-ai/gptscript/pkg/cache"
1716
"github.com/gptscript-ai/gptscript/pkg/counter"
@@ -406,7 +405,7 @@ func (c *Client) Call(ctx context.Context, messageRequest types.CompletionReques
406405
var params any = tool.Function.Parameters
407406
if tool.Function.Parameters == nil || len(tool.Function.Parameters.Properties) == 0 {
408407
params = map[string]any{
409-
"type": humav2.TypeObject,
408+
"type": "object",
410409
"properties": map[string]any{},
411410
}
412411
}

0 commit comments

Comments
 (0)