Skip to content

Commit

Permalink
fix: sdkserver: credentials: ensure credential helpers exist (#848)
Browse files Browse the repository at this point in the history
Signed-off-by: Grant Linville <[email protected]>
  • Loading branch information
g-linville authored Sep 13, 2024
1 parent 90e7868 commit 45d444f
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 8 deletions.
22 changes: 14 additions & 8 deletions pkg/sdkserver/credentials.go
Original file line number Diff line number Diff line change
@@ -1,24 +1,30 @@
package sdkserver

import (
"context"
"encoding/json"
"fmt"
"net/http"

"github.com/gptscript-ai/gptscript/pkg/config"
gcontext "github.com/gptscript-ai/gptscript/pkg/context"
"github.com/gptscript-ai/gptscript/pkg/credentials"
"github.com/gptscript-ai/gptscript/pkg/repos/runtimes"
)

func (s *server) initializeCredentialStore(ctx string) (credentials.CredentialStore, error) {
func (s *server) initializeCredentialStore(ctx context.Context, credCtx string) (credentials.CredentialStore, error) {
cfg, err := config.ReadCLIConfig(s.gptscriptOpts.OpenAI.ConfigFile)
if err != nil {
return nil, fmt.Errorf("failed to read CLI config: %w", err)
}

// TODO - are we sure we want to always use runtimes.Default here?
store, err := credentials.NewStore(cfg, runtimes.Default(s.gptscriptOpts.Cache.CacheDir), ctx, s.gptscriptOpts.Cache.CacheDir)
if err := s.runtimeManager.SetUpCredentialHelpers(ctx, cfg); err != nil {
return nil, fmt.Errorf("failed to set up credential helpers: %w", err)
}
if err := s.runtimeManager.EnsureCredentialHelpers(ctx); err != nil {
return nil, fmt.Errorf("failed to ensure credential helpers: %w", err)
}

store, err := credentials.NewStore(cfg, s.runtimeManager, credCtx, s.gptscriptOpts.Cache.CacheDir)
if err != nil {
return nil, fmt.Errorf("failed to initialize credential store: %w", err)
}
Expand All @@ -40,7 +46,7 @@ func (s *server) listCredentials(w http.ResponseWriter, r *http.Request) {
req.Context = credentials.DefaultCredentialContext
}

store, err := s.initializeCredentialStore(req.Context)
store, err := s.initializeCredentialStore(r.Context(), req.Context)
if err != nil {
writeError(logger, w, http.StatusInternalServerError, err)
return
Expand Down Expand Up @@ -81,7 +87,7 @@ func (s *server) createCredential(w http.ResponseWriter, r *http.Request) {
cred.Context = credentials.DefaultCredentialContext
}

store, err := s.initializeCredentialStore(cred.Context)
store, err := s.initializeCredentialStore(r.Context(), cred.Context)
if err != nil {
writeError(logger, w, http.StatusInternalServerError, err)
return
Expand Down Expand Up @@ -115,7 +121,7 @@ func (s *server) revealCredential(w http.ResponseWriter, r *http.Request) {
req.Context = credentials.DefaultCredentialContext
}

store, err := s.initializeCredentialStore(req.Context)
store, err := s.initializeCredentialStore(r.Context(), req.Context)
if err != nil {
writeError(logger, w, http.StatusInternalServerError, err)
return
Expand Down Expand Up @@ -152,7 +158,7 @@ func (s *server) deleteCredential(w http.ResponseWriter, r *http.Request) {
req.Context = credentials.DefaultCredentialContext
}

store, err := s.initializeCredentialStore(req.Context)
store, err := s.initializeCredentialStore(r.Context(), req.Context)
if err != nil {
writeError(logger, w, http.StatusInternalServerError, err)
return
Expand Down
3 changes: 3 additions & 0 deletions pkg/sdkserver/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/gptscript-ai/broadcaster"
"github.com/gptscript-ai/gptscript/pkg/cache"
gcontext "github.com/gptscript-ai/gptscript/pkg/context"
"github.com/gptscript-ai/gptscript/pkg/engine"
"github.com/gptscript-ai/gptscript/pkg/gptscript"
"github.com/gptscript-ai/gptscript/pkg/input"
"github.com/gptscript-ai/gptscript/pkg/loader"
Expand All @@ -30,6 +31,8 @@ type server struct {
client *gptscript.GPTScript
events *broadcaster.Broadcaster[event]

runtimeManager engine.RuntimeManager

lock sync.RWMutex
waitingToConfirm map[string]chan runner.AuthorizerResponse
waitingToPrompt map[string]chan map[string]string
Expand Down
2 changes: 2 additions & 0 deletions pkg/sdkserver/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"github.com/gptscript-ai/broadcaster"
"github.com/gptscript-ai/gptscript/pkg/gptscript"
"github.com/gptscript-ai/gptscript/pkg/mvl"
"github.com/gptscript-ai/gptscript/pkg/repos/runtimes"
"github.com/gptscript-ai/gptscript/pkg/runner"
"github.com/gptscript-ai/gptscript/pkg/types"
"github.com/rs/cors"
Expand Down Expand Up @@ -108,6 +109,7 @@ func run(ctx context.Context, listener net.Listener, opts Options) error {
token: token,
client: g,
events: events,
runtimeManager: runtimes.Default(opts.Options.Cache.CacheDir), // TODO - do we always want to use runtimes.Default here?
waitingToConfirm: make(map[string]chan runner.AuthorizerResponse),
waitingToPrompt: make(map[string]chan map[string]string),
}
Expand Down

0 comments on commit 45d444f

Please sign in to comment.