Skip to content

Commit a42c9e3

Browse files
authored
fix: use GH token for VCS lookups (#578)
Signed-off-by: Grant Linville <[email protected]>
1 parent 8a38e0e commit a42c9e3

File tree

7 files changed

+273
-227
lines changed

7 files changed

+273
-227
lines changed

Diff for: .github/workflows/smoke.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,9 @@ jobs:
139139
go-version: "1.21"
140140
- env:
141141
OPENAI_API_KEY: ${{ secrets.SMOKE_OPENAI_API_KEY }}
142-
GPTSCRIPT_DEFAULT_MODEL: claude-3-opus-20240229 from github.com/gptscript-ai/claude3-anthropic-provider@tool-beta
142+
GPTSCRIPT_DEFAULT_MODEL: claude-3-opus-20240229 from github.com/gptscript-ai/claude3-anthropic-provider
143143
ANTHROPIC_API_KEY: ${{ secrets.SMOKE_ANTHROPIC_API_KEY }}
144+
GPTSCRIPT_CREDENTIAL_OVERRIDE: "github.com/gptscript-ai/claude3-anthropic-provider/credential:ANTHROPIC_API_KEY"
144145
name: Run smoke test for claude-3-opus-20240229
145146
run: |
146147
echo "Running smoke test for model claude-3-opus-20240229"

Diff for: pkg/loader/github/github.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,9 @@ func getCommit(ctx context.Context, account, repo, ref string) (string, error) {
8888
return commit.SHA, nil
8989
}
9090

91-
func Load(ctx context.Context, _ *cache.Client, urlName string) (string, *types.Repo, bool, error) {
91+
func Load(ctx context.Context, _ *cache.Client, urlName string) (string, string, *types.Repo, bool, error) {
9292
if !strings.HasPrefix(urlName, GithubPrefix) {
93-
return "", nil, false, nil
93+
return "", "", nil, false, nil
9494
}
9595

9696
url, ref, _ := strings.Cut(urlName, "@")
@@ -101,15 +101,15 @@ func Load(ctx context.Context, _ *cache.Client, urlName string) (string, *types.
101101
parts := strings.Split(url, "/")
102102
// Must be at least 3 parts github.com/ACCOUNT/REPO[/FILE]
103103
if len(parts) < 3 {
104-
return "", nil, false, nil
104+
return "", "", nil, false, nil
105105
}
106106

107107
account, repo := parts[1], parts[2]
108108
path := strings.Join(parts[3:], "/")
109109

110110
ref, err := getCommit(ctx, account, repo, ref)
111111
if err != nil {
112-
return "", nil, false, err
112+
return "", "", nil, false, err
113113
}
114114

115115
downloadURL := fmt.Sprintf(githubDownloadURL, account, repo, ref, path)
@@ -141,7 +141,7 @@ func Load(ctx context.Context, _ *cache.Client, urlName string) (string, *types.
141141
path = testPath
142142
}
143143

144-
return downloadURL, &types.Repo{
144+
return downloadURL, githubAuthToken, &types.Repo{
145145
VCS: "git",
146146
Root: fmt.Sprintf(githubRepoURL, account, repo),
147147
Path: gpath.Dir(path),

Diff for: pkg/loader/github/github_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
)
1212

1313
func TestLoad(t *testing.T) {
14-
url, repo, ok, err := Load(context.Background(), nil, "github.com/gptscript-ai/gptscript/pkg/loader/testdata/tool@172dfb0")
14+
url, _, repo, ok, err := Load(context.Background(), nil, "github.com/gptscript-ai/gptscript/pkg/loader/testdata/tool@172dfb0")
1515
require.NoError(t, err)
1616
assert.True(t, ok)
1717
autogold.Expect("https://raw.githubusercontent.com/gptscript-ai/gptscript/172dfb00b48c6adbbaa7e99270933f95887d1b91/pkg/loader/testdata/tool/tool.gpt").Equal(t, url)
@@ -22,7 +22,7 @@ func TestLoad(t *testing.T) {
2222
Revision: "172dfb00b48c6adbbaa7e99270933f95887d1b91",
2323
}).Equal(t, repo)
2424

25-
url, repo, ok, err = Load(context.Background(), nil, "github.com/gptscript-ai/gptscript/pkg/loader/testdata/agent@172dfb0")
25+
url, _, repo, ok, err = Load(context.Background(), nil, "github.com/gptscript-ai/gptscript/pkg/loader/testdata/agent@172dfb0")
2626
require.NoError(t, err)
2727
assert.True(t, ok)
2828
autogold.Expect("https://raw.githubusercontent.com/gptscript-ai/gptscript/172dfb00b48c6adbbaa7e99270933f95887d1b91/pkg/loader/testdata/agent/agent.gpt").Equal(t, url)
@@ -33,7 +33,7 @@ func TestLoad(t *testing.T) {
3333
Revision: "172dfb00b48c6adbbaa7e99270933f95887d1b91",
3434
}).Equal(t, repo)
3535

36-
url, repo, ok, err = Load(context.Background(), nil, "github.com/gptscript-ai/gptscript/pkg/loader/testdata/bothtoolagent@172dfb0")
36+
url, _, repo, ok, err = Load(context.Background(), nil, "github.com/gptscript-ai/gptscript/pkg/loader/testdata/bothtoolagent@172dfb0")
3737
require.NoError(t, err)
3838
assert.True(t, ok)
3939
autogold.Expect("https://raw.githubusercontent.com/gptscript-ai/gptscript/172dfb00b48c6adbbaa7e99270933f95887d1b91/pkg/loader/testdata/bothtoolagent/agent.gpt").Equal(t, url)

Diff for: pkg/loader/url.go

+12-6
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
"github.com/gptscript-ai/gptscript/pkg/types"
1515
)
1616

17-
type VCSLookup func(context.Context, *cache.Client, string) (string, *types.Repo, bool, error)
17+
type VCSLookup func(context.Context, *cache.Client, string) (string, string, *types.Repo, bool, error)
1818

1919
var vcsLookups []VCSLookup
2020

@@ -35,10 +35,11 @@ type cacheValue struct {
3535

3636
func loadURL(ctx context.Context, cache *cache.Client, base *source, name string) (*source, bool, error) {
3737
var (
38-
repo *types.Repo
39-
url = name
40-
relative = strings.HasPrefix(name, ".") || !strings.Contains(name, "/")
41-
cachedKey = cacheKey{
38+
repo *types.Repo
39+
url = name
40+
bearerToken = ""
41+
relative = strings.HasPrefix(name, ".") || !strings.Contains(name, "/")
42+
cachedKey = cacheKey{
4243
Name: name,
4344
Path: base.Path,
4445
Repo: base.Repo,
@@ -67,12 +68,13 @@ func loadURL(ctx context.Context, cache *cache.Client, base *source, name string
6768

6869
if repo == nil || !relative {
6970
for _, vcs := range vcsLookups {
70-
newURL, newRepo, ok, err := vcs(ctx, cache, name)
71+
newURL, newBearer, newRepo, ok, err := vcs(ctx, cache, name)
7172
if err != nil {
7273
return nil, false, err
7374
} else if ok {
7475
repo = newRepo
7576
url = newURL
77+
bearerToken = newBearer
7678
break
7779
}
7880
}
@@ -105,6 +107,10 @@ func loadURL(ctx context.Context, cache *cache.Client, base *source, name string
105107
return nil, false, err
106108
}
107109

110+
if bearerToken != "" {
111+
req.Header.Set("Authorization", "Bearer "+bearerToken)
112+
}
113+
108114
data, err := getWithDefaults(req)
109115
if err != nil {
110116
return nil, false, fmt.Errorf("error loading %s: %v", url, err)

Diff for: pkg/repos/get.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func (m *Manager) deferredSetUpCredentialHelpers(ctx context.Context, cliCfg *co
128128
}
129129

130130
// Load the credential helpers repo information.
131-
_, repo, _, err := github.Load(ctx, nil, credentialHelpersRepo)
131+
_, _, repo, _, err := github.Load(ctx, nil, credentialHelpersRepo)
132132
if err != nil {
133133
return err
134134
}

0 commit comments

Comments
 (0)