1
1
package sdkserver
2
2
3
3
import (
4
+ "context"
4
5
"encoding/json"
5
6
"fmt"
6
7
"net/http"
@@ -11,14 +12,22 @@ import (
11
12
"github.com/gptscript-ai/gptscript/pkg/repos/runtimes"
12
13
)
13
14
14
- func (s * server ) initializeCredentialStore (ctx string ) (credentials.CredentialStore , error ) {
15
+ func (s * server ) initializeCredentialStore (ctx context. Context , credCtx string ) (credentials.CredentialStore , error ) {
15
16
cfg , err := config .ReadCLIConfig (s .gptscriptOpts .OpenAI .ConfigFile )
16
17
if err != nil {
17
18
return nil , fmt .Errorf ("failed to read CLI config: %w" , err )
18
19
}
19
20
20
21
// TODO - are we sure we want to always use runtimes.Default here?
21
- store , err := credentials .NewStore (cfg , runtimes .Default (s .gptscriptOpts .Cache .CacheDir ), ctx , s .gptscriptOpts .Cache .CacheDir )
22
+ runtimeManager := runtimes .Default (s .gptscriptOpts .Cache .CacheDir )
23
+ if err := runtimeManager .SetUpCredentialHelpers (ctx , cfg ); err != nil {
24
+ return nil , fmt .Errorf ("failed to set up credential helpers: %w" , err )
25
+ }
26
+ if err := runtimeManager .EnsureCredentialHelpers (ctx ); err != nil {
27
+ return nil , fmt .Errorf ("failed to ensure credential helpers: %w" , err )
28
+ }
29
+
30
+ store , err := credentials .NewStore (cfg , runtimeManager , credCtx , s .gptscriptOpts .Cache .CacheDir )
22
31
if err != nil {
23
32
return nil , fmt .Errorf ("failed to initialize credential store: %w" , err )
24
33
}
@@ -40,7 +49,7 @@ func (s *server) listCredentials(w http.ResponseWriter, r *http.Request) {
40
49
req .Context = credentials .DefaultCredentialContext
41
50
}
42
51
43
- store , err := s .initializeCredentialStore (req .Context )
52
+ store , err := s .initializeCredentialStore (r . Context (), req .Context )
44
53
if err != nil {
45
54
writeError (logger , w , http .StatusInternalServerError , err )
46
55
return
@@ -81,7 +90,7 @@ func (s *server) createCredential(w http.ResponseWriter, r *http.Request) {
81
90
cred .Context = credentials .DefaultCredentialContext
82
91
}
83
92
84
- store , err := s .initializeCredentialStore (cred .Context )
93
+ store , err := s .initializeCredentialStore (r . Context (), cred .Context )
85
94
if err != nil {
86
95
writeError (logger , w , http .StatusInternalServerError , err )
87
96
return
@@ -115,7 +124,7 @@ func (s *server) revealCredential(w http.ResponseWriter, r *http.Request) {
115
124
req .Context = credentials .DefaultCredentialContext
116
125
}
117
126
118
- store , err := s .initializeCredentialStore (req .Context )
127
+ store , err := s .initializeCredentialStore (r . Context (), req .Context )
119
128
if err != nil {
120
129
writeError (logger , w , http .StatusInternalServerError , err )
121
130
return
@@ -152,7 +161,7 @@ func (s *server) deleteCredential(w http.ResponseWriter, r *http.Request) {
152
161
req .Context = credentials .DefaultCredentialContext
153
162
}
154
163
155
- store , err := s .initializeCredentialStore (req .Context )
164
+ store , err := s .initializeCredentialStore (r . Context (), req .Context )
156
165
if err != nil {
157
166
writeError (logger , w , http .StatusInternalServerError , err )
158
167
return
0 commit comments