Skip to content

Commit e2e4b11

Browse files
feat: add prompt callback URL
1 parent e65513e commit e2e4b11

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

pkg/builtin/builtin.go

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -774,7 +774,28 @@ func SysDownload(ctx context.Context, env []string, input string) (_ string, err
774774
return params.Location, nil
775775
}
776776

777-
func SysPrompt(_ context.Context, _ []string, input string) (_ string, err error) {
777+
func sysPromptHTTP(ctx context.Context, url, input string) (_ string, err error) {
778+
req, err := http.NewRequestWithContext(ctx, http.MethodPost, url, strings.NewReader(input))
779+
if err != nil {
780+
return "", err
781+
}
782+
req.Header.Set("Content-Type", "application/json")
783+
784+
resp, err := http.DefaultClient.Do(req)
785+
if err != nil {
786+
return "", err
787+
}
788+
resp.Body.Close()
789+
790+
if resp.StatusCode != 200 {
791+
return "", fmt.Errorf("invalid status code [%d], expected 200", resp.StatusCode)
792+
}
793+
794+
data, err := io.ReadAll(resp.Body)
795+
return string(data), err
796+
}
797+
798+
func SysPrompt(ctx context.Context, envs []string, input string) (_ string, err error) {
778799
var params struct {
779800
Message string `json:"message,omitempty"`
780801
Fields string `json:"fields,omitempty"`
@@ -784,6 +805,12 @@ func SysPrompt(_ context.Context, _ []string, input string) (_ string, err error
784805
return "", err
785806
}
786807

808+
for _, env := range envs {
809+
if url, ok := strings.CutPrefix(env, "GPTSCRIPT_PROMPT_URL="); ok {
810+
return sysPromptHTTP(ctx, url, input)
811+
}
812+
}
813+
787814
if params.Message != "" {
788815
_, _ = fmt.Fprintln(os.Stderr, params.Message)
789816
}

0 commit comments

Comments
 (0)