@@ -11,8 +11,9 @@ import (
11
11
)
12
12
13
13
type 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"`
16
17
}
17
18
18
19
func (w workspaceCommonRequest ) getToolRepo () string {
@@ -50,7 +51,7 @@ func (s *server) createWorkspace(w http.ResponseWriter, r *http.Request) {
50
51
out , err := s .client .Run (
51
52
r .Context (),
52
53
prg ,
53
- s . gptscriptOpts .Env ,
54
+ reqObject .Env ,
54
55
fmt .Sprintf (
55
56
`{"provider": "%s", "data_home": "%s", "workspace_ids": "%s"}` ,
56
57
reqObject .ProviderType , reqObject .DirectoryDataHome , strings .Join (reqObject .FromWorkspaceIDs , "," ),
@@ -85,7 +86,7 @@ func (s *server) deleteWorkspace(w http.ResponseWriter, r *http.Request) {
85
86
out , err := s .client .Run (
86
87
r .Context (),
87
88
prg ,
88
- s . gptscriptOpts .Env ,
89
+ reqObject .Env ,
89
90
fmt .Sprintf (
90
91
`{"workspace_id": "%s"}` ,
91
92
reqObject .ID ,
@@ -102,10 +103,7 @@ func (s *server) deleteWorkspace(w http.ResponseWriter, r *http.Request) {
102
103
type listWorkspaceContentsRequest struct {
103
104
workspaceCommonRequest `json:",inline"`
104
105
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"`
109
107
}
110
108
111
109
func (s * server ) listWorkspaceContents (w http.ResponseWriter , r * http.Request ) {
@@ -125,10 +123,10 @@ func (s *server) listWorkspaceContents(w http.ResponseWriter, r *http.Request) {
125
123
out , err := s .client .Run (
126
124
r .Context (),
127
125
prg ,
128
- s . gptscriptOpts .Env ,
126
+ reqObject .Env ,
129
127
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 ,
132
130
),
133
131
)
134
132
if err != nil {
@@ -139,22 +137,20 @@ func (s *server) listWorkspaceContents(w http.ResponseWriter, r *http.Request) {
139
137
writeResponse (logger , w , map [string ]any {"stdout" : out })
140
138
}
141
139
142
- type mkDirRequest struct {
140
+ type removeAllWithPrefixInWorkspaceRequest struct {
143
141
workspaceCommonRequest `json:",inline"`
144
- DirectoryName string `json:"directoryName"`
145
- IgnoreExists bool `json:"ignoreExists"`
146
- CreateDirs bool `json:"createDirs"`
142
+ Prefix string `json:"prefix"`
147
143
}
148
144
149
- func (s * server ) mkDirInWorkspace (w http.ResponseWriter , r * http.Request ) {
145
+ func (s * server ) removeAllWithPrefixInWorkspace (w http.ResponseWriter , r * http.Request ) {
150
146
logger := gcontext .GetLogger (r .Context ())
151
- var reqObject mkDirRequest
147
+ var reqObject removeAllWithPrefixInWorkspaceRequest
152
148
if err := json .NewDecoder (r .Body ).Decode (& reqObject ); err != nil {
153
149
writeError (logger , w , http .StatusBadRequest , fmt .Errorf ("invalid request body: %w" , err ))
154
150
return
155
151
}
156
152
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 })
158
154
if err != nil {
159
155
writeError (logger , w , http .StatusInternalServerError , fmt .Errorf ("failed to load program: %w" , err ))
160
156
return
@@ -163,48 +159,10 @@ func (s *server) mkDirInWorkspace(w http.ResponseWriter, r *http.Request) {
163
159
out , err := s .client .Run (
164
160
r .Context (),
165
161
prg ,
166
- s . gptscriptOpts .Env ,
162
+ reqObject .Env ,
167
163
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 ,
208
166
),
209
167
)
210
168
if err != nil {
@@ -220,9 +178,6 @@ type writeFileInWorkspaceRequest struct {
220
178
FilePath string `json:"filePath"`
221
179
Contents string `json:"contents"`
222
180
Base64EncodedInput bool `json:"base64EncodedInput"`
223
- MustNotExist bool `json:"mustNotExist"`
224
- CreateDirs bool `json:"createDirs"`
225
- WithoutCreate bool `json:"withoutCreate"`
226
181
}
227
182
228
183
func (s * server ) writeFileInWorkspace (w http.ResponseWriter , r * http.Request ) {
@@ -242,10 +197,10 @@ func (s *server) writeFileInWorkspace(w http.ResponseWriter, r *http.Request) {
242
197
out , err := s .client .Run (
243
198
r .Context (),
244
199
prg ,
245
- s . gptscriptOpts .Env ,
200
+ reqObject .Env ,
246
201
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 ,
249
204
),
250
205
)
251
206
if err != nil {
@@ -259,7 +214,6 @@ func (s *server) writeFileInWorkspace(w http.ResponseWriter, r *http.Request) {
259
214
type rmFileInWorkspaceRequest struct {
260
215
workspaceCommonRequest `json:",inline"`
261
216
FilePath string `json:"filePath"`
262
- IgnoreNotFound bool `json:"ignoreNotFound"`
263
217
}
264
218
265
219
func (s * server ) removeFileInWorkspace (w http.ResponseWriter , r * http.Request ) {
@@ -279,10 +233,10 @@ func (s *server) removeFileInWorkspace(w http.ResponseWriter, r *http.Request) {
279
233
out , err := s .client .Run (
280
234
r .Context (),
281
235
prg ,
282
- s . gptscriptOpts .Env ,
236
+ reqObject .Env ,
283
237
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 ,
286
240
),
287
241
)
288
242
if err != nil {
@@ -316,7 +270,7 @@ func (s *server) readFileInWorkspace(w http.ResponseWriter, r *http.Request) {
316
270
out , err := s .client .Run (
317
271
r .Context (),
318
272
prg ,
319
- s . gptscriptOpts .Env ,
273
+ reqObject .Env ,
320
274
fmt .Sprintf (
321
275
`{"workspace_id": "%s", "file_path": "%s", "read_file_base64_encode_output": %t}` ,
322
276
reqObject .ID , reqObject .FilePath , reqObject .Base64EncodeOutput ,
0 commit comments