44 "encoding/json"
55 "fmt"
66 "net/http"
7+ "strings"
78
89 gcontext "github.com/gptscript-ai/gptscript/pkg/context"
910 "github.com/gptscript-ai/gptscript/pkg/gptscript"
@@ -39,6 +40,12 @@ func (r datasetRequest) opts(o gptscript.Options) gptscript.Options {
3940 Monitor : o .Monitor ,
4041 Runner : o .Runner ,
4142 }
43+ for _ , e := range r .Env {
44+ v , ok := strings .CutPrefix (e , "GPTSCRIPT_WORKSPACE_ID=" )
45+ if ok {
46+ opts .Workspace = v
47+ }
48+ }
4249 return opts
4350}
4451
@@ -61,6 +68,7 @@ func (s *server) listDatasets(w http.ResponseWriter, r *http.Request) {
6168 writeError (logger , w , http .StatusInternalServerError , fmt .Errorf ("failed to initialize gptscript: %w" , err ))
6269 return
6370 }
71+ defer g .Close (false )
6472
6573 prg , err := loader .Program (r .Context (), s .getDatasetTool (req ), "List Datasets" , loader.Options {
6674 Cache : g .Cache ,
@@ -118,6 +126,7 @@ func (s *server) addDatasetElements(w http.ResponseWriter, r *http.Request) {
118126 writeError (logger , w , http .StatusInternalServerError , fmt .Errorf ("failed to initialize gptscript: %w" , err ))
119127 return
120128 }
129+ defer g .Close (false )
121130
122131 var args addDatasetElementsArgs
123132 if err := json .Unmarshal ([]byte (req .Input ), & args ); err != nil {
@@ -177,6 +186,7 @@ func (s *server) listDatasetElements(w http.ResponseWriter, r *http.Request) {
177186 writeError (logger , w , http .StatusInternalServerError , fmt .Errorf ("failed to initialize gptscript: %w" , err ))
178187 return
179188 }
189+ defer g .Close (false )
180190
181191 var args listDatasetElementsArgs
182192 if err := json .Unmarshal ([]byte (req .Input ), & args ); err != nil {
@@ -239,6 +249,7 @@ func (s *server) getDatasetElement(w http.ResponseWriter, r *http.Request) {
239249 writeError (logger , w , http .StatusInternalServerError , fmt .Errorf ("failed to initialize gptscript: %w" , err ))
240250 return
241251 }
252+ defer g .Close (false )
242253
243254 var args getDatasetElementArgs
244255 if err := json .Unmarshal ([]byte (req .Input ), & args ); err != nil {
0 commit comments