11package sdkserver
22
33import (
4+ "context"
45 "encoding/json"
56 "fmt"
67 "net/http"
78
89 "github.com/gptscript-ai/gptscript/pkg/config"
910 gcontext "github.com/gptscript-ai/gptscript/pkg/context"
1011 "github.com/gptscript-ai/gptscript/pkg/credentials"
11- "github.com/gptscript-ai/gptscript/pkg/repos/runtimes"
1212)
1313
14- func (s * server ) initializeCredentialStore (ctx string ) (credentials.CredentialStore , error ) {
14+ func (s * server ) initializeCredentialStore (ctx context. Context , credCtx string ) (credentials.CredentialStore , error ) {
1515 cfg , err := config .ReadCLIConfig (s .gptscriptOpts .OpenAI .ConfigFile )
1616 if err != nil {
1717 return nil , fmt .Errorf ("failed to read CLI config: %w" , err )
1818 }
1919
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 )
2228 if err != nil {
2329 return nil , fmt .Errorf ("failed to initialize credential store: %w" , err )
2430 }
@@ -40,7 +46,7 @@ func (s *server) listCredentials(w http.ResponseWriter, r *http.Request) {
4046 req .Context = credentials .DefaultCredentialContext
4147 }
4248
43- store , err := s .initializeCredentialStore (req .Context )
49+ store , err := s .initializeCredentialStore (r . Context (), req .Context )
4450 if err != nil {
4551 writeError (logger , w , http .StatusInternalServerError , err )
4652 return
@@ -81,7 +87,7 @@ func (s *server) createCredential(w http.ResponseWriter, r *http.Request) {
8187 cred .Context = credentials .DefaultCredentialContext
8288 }
8389
84- store , err := s .initializeCredentialStore (cred .Context )
90+ store , err := s .initializeCredentialStore (r . Context (), cred .Context )
8591 if err != nil {
8692 writeError (logger , w , http .StatusInternalServerError , err )
8793 return
@@ -115,7 +121,7 @@ func (s *server) revealCredential(w http.ResponseWriter, r *http.Request) {
115121 req .Context = credentials .DefaultCredentialContext
116122 }
117123
118- store , err := s .initializeCredentialStore (req .Context )
124+ store , err := s .initializeCredentialStore (r . Context (), req .Context )
119125 if err != nil {
120126 writeError (logger , w , http .StatusInternalServerError , err )
121127 return
@@ -152,7 +158,7 @@ func (s *server) deleteCredential(w http.ResponseWriter, r *http.Request) {
152158 req .Context = credentials .DefaultCredentialContext
153159 }
154160
155- store , err := s .initializeCredentialStore (req .Context )
161+ store , err := s .initializeCredentialStore (r . Context (), req .Context )
156162 if err != nil {
157163 writeError (logger , w , http .StatusInternalServerError , err )
158164 return
0 commit comments