1
1
package sdkserver
2
2
3
3
import (
4
+ "context"
4
5
"encoding/json"
5
6
"fmt"
6
7
"net/http"
7
8
8
9
"github.com/gptscript-ai/gptscript/pkg/config"
9
10
gcontext "github.com/gptscript-ai/gptscript/pkg/context"
10
11
"github.com/gptscript-ai/gptscript/pkg/credentials"
11
- "github.com/gptscript-ai/gptscript/pkg/repos/runtimes"
12
12
)
13
13
14
- func (s * server ) initializeCredentialStore (ctx string ) (credentials.CredentialStore , error ) {
14
+ func (s * server ) initializeCredentialStore (ctx context. Context , credCtx string ) (credentials.CredentialStore , error ) {
15
15
cfg , err := config .ReadCLIConfig (s .gptscriptOpts .OpenAI .ConfigFile )
16
16
if err != nil {
17
17
return nil , fmt .Errorf ("failed to read CLI config: %w" , err )
18
18
}
19
19
20
- // 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 )
20
+ if err := s .runtimeManager .SetUpCredentialHelpers (ctx , cfg ); err != nil {
21
+ return nil , fmt .Errorf ("failed to set up credential helpers: %w" , err )
22
+ }
23
+ if err := s .runtimeManager .EnsureCredentialHelpers (ctx ); err != nil {
24
+ return nil , fmt .Errorf ("failed to ensure credential helpers: %w" , err )
25
+ }
26
+
27
+ store , err := credentials .NewStore (cfg , s .runtimeManager , credCtx , s .gptscriptOpts .Cache .CacheDir )
22
28
if err != nil {
23
29
return nil , fmt .Errorf ("failed to initialize credential store: %w" , err )
24
30
}
@@ -40,7 +46,7 @@ func (s *server) listCredentials(w http.ResponseWriter, r *http.Request) {
40
46
req .Context = credentials .DefaultCredentialContext
41
47
}
42
48
43
- store , err := s .initializeCredentialStore (req .Context )
49
+ store , err := s .initializeCredentialStore (r . Context (), req .Context )
44
50
if err != nil {
45
51
writeError (logger , w , http .StatusInternalServerError , err )
46
52
return
@@ -81,7 +87,7 @@ func (s *server) createCredential(w http.ResponseWriter, r *http.Request) {
81
87
cred .Context = credentials .DefaultCredentialContext
82
88
}
83
89
84
- store , err := s .initializeCredentialStore (cred .Context )
90
+ store , err := s .initializeCredentialStore (r . Context (), cred .Context )
85
91
if err != nil {
86
92
writeError (logger , w , http .StatusInternalServerError , err )
87
93
return
@@ -115,7 +121,7 @@ func (s *server) revealCredential(w http.ResponseWriter, r *http.Request) {
115
121
req .Context = credentials .DefaultCredentialContext
116
122
}
117
123
118
- store , err := s .initializeCredentialStore (req .Context )
124
+ store , err := s .initializeCredentialStore (r . Context (), req .Context )
119
125
if err != nil {
120
126
writeError (logger , w , http .StatusInternalServerError , err )
121
127
return
@@ -152,7 +158,7 @@ func (s *server) deleteCredential(w http.ResponseWriter, r *http.Request) {
152
158
req .Context = credentials .DefaultCredentialContext
153
159
}
154
160
155
- store , err := s .initializeCredentialStore (req .Context )
161
+ store , err := s .initializeCredentialStore (r . Context (), req .Context )
156
162
if err != nil {
157
163
writeError (logger , w , http .StatusInternalServerError , err )
158
164
return
0 commit comments