Skip to content

Commit 04fc99b

Browse files
committed
fix: clear prompt env vars when running the UI
When running the UI all prompts except the first prompt for an OpenAI key should go through the UI. Therefore, the prompt environment variables shouldn't go to the UI tool. Signed-off-by: Donnie Adams <[email protected]>
1 parent 8527fa5 commit 04fc99b

File tree

4 files changed

+19
-7
lines changed

4 files changed

+19
-7
lines changed

pkg/cli/gptscript.go

+6
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,12 @@ func (r *GPTScript) Run(cmd *cobra.Command, args []string) (retErr error) {
467467
}, gptOpt.Env, toolInput, r.SaveChatStateFile)
468468
}
469469

470+
if r.UI {
471+
// If the UI is running, then all prompts should go through the SDK and the UI.
472+
// Not clearing ExtraEnv here would mean that the prompts would go through the terminal.
473+
gptScript.ExtraEnv = nil
474+
}
475+
470476
s, err := gptScript.Run(cmd.Context(), prg, gptOpt.Env, toolInput)
471477
if err != nil {
472478
return err

pkg/gptscript/gptscript.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,9 @@ func New(opts *Options) (*GPTScript, error) {
110110
closeServer()
111111
return nil, err
112112
}
113-
opts.Env = append(opts.Env, extraEnv...)
114-
oaiClient.SetEnvs(opts.Env)
113+
oaiClient.SetEnvs(extraEnv)
115114

116-
remoteClient := remote.New(runner, opts.Env, cacheClient, cliCfg, opts.CredentialContext)
115+
remoteClient := remote.New(runner, extraEnv, cacheClient, cliCfg, opts.CredentialContext)
117116
if err := registry.AddClient(remoteClient); err != nil {
118117
closeServer()
119118
return nil, err

pkg/prompt/server.go

+10-3
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,20 @@ import (
1414
)
1515

1616
func NewServer(ctx context.Context, envs []string) ([]string, error) {
17+
var extraEnvs []string
1718
for _, env := range envs {
18-
_, v, ok := strings.Cut(env, types.PromptTokenEnvVar+"=")
19-
if ok && v != "" {
20-
return nil, nil
19+
for _, prefix := range []string{types.PromptURLEnvVar, types.PromptTokenEnvVar} {
20+
v, ok := strings.CutPrefix(env, prefix+"=")
21+
if ok && v != "" {
22+
extraEnvs = append(extraEnvs, env)
23+
}
2124
}
2225
}
2326

27+
if len(extraEnvs) == 2 {
28+
return extraEnvs, nil
29+
}
30+
2431
l, err := net.Listen("tcp", "127.0.0.1:0")
2532
if err != nil {
2633
return nil, err

pkg/sdkserver/routes.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ func (s *server) execHandler(w http.ResponseWriter, r *http.Request) {
166166
// Don't overwrite the PromptURLEnvVar if it is already set in the environment.
167167
var promptTokenAlreadySet bool
168168
for _, env := range reqObject.Env {
169-
if strings.HasPrefix(env, types.PromptTokenEnvVar+"=") {
169+
if v, ok := strings.CutPrefix(env, types.PromptTokenEnvVar+"="); ok && v != "" {
170170
promptTokenAlreadySet = true
171171
break
172172
}

0 commit comments

Comments
 (0)