@@ -11,8 +11,9 @@ import (
1111)
1212
1313type workspaceCommonRequest struct {
14- ID string `json:"id"`
15- WorkspaceTool string `json:"workspaceTool"`
14+ ID string `json:"id"`
15+ WorkspaceTool string `json:"workspaceTool"`
16+ Env []string `json:"env"`
1617}
1718
1819func (w workspaceCommonRequest ) getToolRepo () string {
@@ -50,7 +51,7 @@ func (s *server) createWorkspace(w http.ResponseWriter, r *http.Request) {
5051 out , err := s .client .Run (
5152 r .Context (),
5253 prg ,
53- s . gptscriptOpts .Env ,
54+ reqObject .Env ,
5455 fmt .Sprintf (
5556 `{"provider": "%s", "data_home": "%s", "workspace_ids": "%s"}` ,
5657 reqObject .ProviderType , reqObject .DirectoryDataHome , strings .Join (reqObject .FromWorkspaceIDs , "," ),
@@ -85,7 +86,7 @@ func (s *server) deleteWorkspace(w http.ResponseWriter, r *http.Request) {
8586 out , err := s .client .Run (
8687 r .Context (),
8788 prg ,
88- s . gptscriptOpts .Env ,
89+ reqObject .Env ,
8990 fmt .Sprintf (
9091 `{"workspace_id": "%s"}` ,
9192 reqObject .ID ,
@@ -102,10 +103,7 @@ func (s *server) deleteWorkspace(w http.ResponseWriter, r *http.Request) {
102103type listWorkspaceContentsRequest struct {
103104 workspaceCommonRequest `json:",inline"`
104105 ID string `json:"id"`
105- SubDir string `json:"subDir"`
106- NonRecursive bool `json:"nonRecursive"`
107- ExcludeHidden bool `json:"excludeHidden"`
108- JSON bool `json:"json"`
106+ Prefix string `json:"prefix"`
109107}
110108
111109func (s * server ) listWorkspaceContents (w http.ResponseWriter , r * http.Request ) {
@@ -125,10 +123,10 @@ func (s *server) listWorkspaceContents(w http.ResponseWriter, r *http.Request) {
125123 out , err := s .client .Run (
126124 r .Context (),
127125 prg ,
128- s . gptscriptOpts .Env ,
126+ reqObject .Env ,
129127 fmt .Sprintf (
130- `{"workspace_id": "%s", "ls_sub_dir ": "%s", "ls_non_recursive": %t, "ls_exclude_hidden": %t, "ls_json": %t }` ,
131- reqObject .ID , reqObject .SubDir , reqObject . NonRecursive , reqObject . ExcludeHidden , reqObject . JSON ,
128+ `{"workspace_id": "%s", "ls_prefix ": "%s"}` ,
129+ reqObject .ID , reqObject .Prefix ,
132130 ),
133131 )
134132 if err != nil {
@@ -139,22 +137,20 @@ func (s *server) listWorkspaceContents(w http.ResponseWriter, r *http.Request) {
139137 writeResponse (logger , w , map [string ]any {"stdout" : out })
140138}
141139
142- type mkDirRequest struct {
140+ type removeAllWithPrefixInWorkspaceRequest struct {
143141 workspaceCommonRequest `json:",inline"`
144- DirectoryName string `json:"directoryName"`
145- IgnoreExists bool `json:"ignoreExists"`
146- CreateDirs bool `json:"createDirs"`
142+ Prefix string `json:"prefix"`
147143}
148144
149- func (s * server ) mkDirInWorkspace (w http.ResponseWriter , r * http.Request ) {
145+ func (s * server ) removeAllWithPrefixInWorkspace (w http.ResponseWriter , r * http.Request ) {
150146 logger := gcontext .GetLogger (r .Context ())
151- var reqObject mkDirRequest
147+ var reqObject removeAllWithPrefixInWorkspaceRequest
152148 if err := json .NewDecoder (r .Body ).Decode (& reqObject ); err != nil {
153149 writeError (logger , w , http .StatusBadRequest , fmt .Errorf ("invalid request body: %w" , err ))
154150 return
155151 }
156152
157- prg , err := loader .Program (r .Context (), reqObject .getToolRepo (), "Create Directory In Workspace" , loader.Options {Cache : s .client .Cache })
153+ prg , err := loader .Program (r .Context (), reqObject .getToolRepo (), "Remove All With Prefix In Workspace" , loader.Options {Cache : s .client .Cache })
158154 if err != nil {
159155 writeError (logger , w , http .StatusInternalServerError , fmt .Errorf ("failed to load program: %w" , err ))
160156 return
@@ -163,48 +159,10 @@ func (s *server) mkDirInWorkspace(w http.ResponseWriter, r *http.Request) {
163159 out , err := s .client .Run (
164160 r .Context (),
165161 prg ,
166- s . gptscriptOpts .Env ,
162+ reqObject .Env ,
167163 fmt .Sprintf (
168- `{"workspace_id": "%s", "directory_name": "%s", "mk_dir_ignore_exists": %t, "mk_dir_create_dirs": %t}` ,
169- reqObject .ID , reqObject .DirectoryName , reqObject .IgnoreExists , reqObject .CreateDirs ,
170- ),
171- )
172- if err != nil {
173- writeError (logger , w , http .StatusInternalServerError , fmt .Errorf ("failed to run program: %w" , err ))
174- return
175- }
176-
177- writeResponse (logger , w , map [string ]any {"stdout" : out })
178- }
179-
180- type rmDirRequest struct {
181- workspaceCommonRequest `json:",inline"`
182- DirectoryName string `json:"directoryName"`
183- IgnoreNotFound bool `json:"ignoreNotFound"`
184- MustBeEmpty bool `json:"mustBeEmpty"`
185- }
186-
187- func (s * server ) rmDirInWorkspace (w http.ResponseWriter , r * http.Request ) {
188- logger := gcontext .GetLogger (r .Context ())
189- var reqObject rmDirRequest
190- if err := json .NewDecoder (r .Body ).Decode (& reqObject ); err != nil {
191- writeError (logger , w , http .StatusBadRequest , fmt .Errorf ("invalid request body: %w" , err ))
192- return
193- }
194-
195- prg , err := loader .Program (r .Context (), reqObject .getToolRepo (), "Remove Directory In Workspace" , loader.Options {Cache : s .client .Cache })
196- if err != nil {
197- writeError (logger , w , http .StatusInternalServerError , fmt .Errorf ("failed to load program: %w" , err ))
198- return
199- }
200-
201- out , err := s .client .Run (
202- r .Context (),
203- prg ,
204- s .gptscriptOpts .Env ,
205- fmt .Sprintf (
206- `{"workspace_id": "%s", "directory_name": "%s", "ignore_not_found": %t, "rm_dir_must_be_empty": %t}` ,
207- reqObject .ID , reqObject .DirectoryName , reqObject .IgnoreNotFound , reqObject .MustBeEmpty ,
164+ `{"workspace_id": "%s", "prefix": "%s"}` ,
165+ reqObject .ID , reqObject .Prefix ,
208166 ),
209167 )
210168 if err != nil {
@@ -220,9 +178,6 @@ type writeFileInWorkspaceRequest struct {
220178 FilePath string `json:"filePath"`
221179 Contents string `json:"contents"`
222180 Base64EncodedInput bool `json:"base64EncodedInput"`
223- MustNotExist bool `json:"mustNotExist"`
224- CreateDirs bool `json:"createDirs"`
225- WithoutCreate bool `json:"withoutCreate"`
226181}
227182
228183func (s * server ) writeFileInWorkspace (w http.ResponseWriter , r * http.Request ) {
@@ -242,10 +197,10 @@ func (s *server) writeFileInWorkspace(w http.ResponseWriter, r *http.Request) {
242197 out , err := s .client .Run (
243198 r .Context (),
244199 prg ,
245- s . gptscriptOpts .Env ,
200+ reqObject .Env ,
246201 fmt .Sprintf (
247- `{"workspace_id": "%s", "file_path": "%s", "file_contents": "%s", "write_file_must_not_exist": %t, "write_file_create_dirs": %t, "write_file_without_create": %t, " write_file_base64_encoded_input": %t}` ,
248- reqObject .ID , reqObject .FilePath , reqObject .Contents , reqObject .MustNotExist , reqObject . CreateDirs , reqObject . WithoutCreate , reqObject . Base64EncodedInput ,
202+ `{"workspace_id": "%s", "file_path": "%s", "file_contents": "%s", "write_file_base64_encoded_input": %t}` ,
203+ reqObject .ID , reqObject .FilePath , reqObject .Contents , reqObject .Base64EncodedInput ,
249204 ),
250205 )
251206 if err != nil {
@@ -259,7 +214,6 @@ func (s *server) writeFileInWorkspace(w http.ResponseWriter, r *http.Request) {
259214type rmFileInWorkspaceRequest struct {
260215 workspaceCommonRequest `json:",inline"`
261216 FilePath string `json:"filePath"`
262- IgnoreNotFound bool `json:"ignoreNotFound"`
263217}
264218
265219func (s * server ) removeFileInWorkspace (w http.ResponseWriter , r * http.Request ) {
@@ -279,10 +233,10 @@ func (s *server) removeFileInWorkspace(w http.ResponseWriter, r *http.Request) {
279233 out , err := s .client .Run (
280234 r .Context (),
281235 prg ,
282- s . gptscriptOpts .Env ,
236+ reqObject .Env ,
283237 fmt .Sprintf (
284- `{"workspace_id": "%s", "file_path": "%s", "ignore_not_found": %t }` ,
285- reqObject .ID , reqObject .FilePath , reqObject . IgnoreNotFound ,
238+ `{"workspace_id": "%s", "file_path": "%s"}` ,
239+ reqObject .ID , reqObject .FilePath ,
286240 ),
287241 )
288242 if err != nil {
@@ -316,7 +270,7 @@ func (s *server) readFileInWorkspace(w http.ResponseWriter, r *http.Request) {
316270 out , err := s .client .Run (
317271 r .Context (),
318272 prg ,
319- s . gptscriptOpts .Env ,
273+ reqObject .Env ,
320274 fmt .Sprintf (
321275 `{"workspace_id": "%s", "file_path": "%s", "read_file_base64_encode_output": %t}` ,
322276 reqObject .ID , reqObject .FilePath , reqObject .Base64EncodeOutput ,
0 commit comments