diff --git a/internal/cmd/hub_repo_sdk.go b/internal/cmd/hub_repo_sdk.go index 963fea8..4a6136f 100644 --- a/internal/cmd/hub_repo_sdk.go +++ b/internal/cmd/hub_repo_sdk.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "net/http" + "strings" "time" "github.com/langchain-ai/langsmith-cli/internal/client" @@ -104,25 +105,26 @@ func ensureHubRepo(ctx context.Context, c *client.Client, owner, name, repoType if err != nil { return err } - create := langsmith.RepoNewParams{ - RepoHandle: langsmith.F(name), - RepoType: langsmith.F(sdkRepoType), - IsPublic: langsmith.F(false), + create := map[string]any{ + "repo_handle": name, + "repo_type": string(sdkRepoType), + "is_public": false, + "source": "internal", } if meta.IsPublic != nil { - create.IsPublic = langsmith.F(*meta.IsPublic) + create["is_public"] = *meta.IsPublic } if meta.Description != nil { - create.Description = langsmith.F(*meta.Description) + create["description"] = *meta.Description } if meta.Readme != nil { - create.Readme = langsmith.F(*meta.Readme) + create["readme"] = *meta.Readme } if meta.Tags != nil { - create.Tags = langsmith.F(meta.Tags) + create["tags"] = meta.Tags } - if _, err := c.SDK.Repos.New(ctx, create); err != nil { - if isHTTP409(err) { + if err := c.RawPost(ctx, "/api/v1/repos", create, nil); err != nil { + if isHTTP409(err) || strings.Contains(err.Error(), "HTTP 409:") { return nil } return fmt.Errorf("creating %s/%s: %w", owner, name, err) diff --git a/internal/cmd/hub_repo_sdk_test.go b/internal/cmd/hub_repo_sdk_test.go index de1750f..2f60685 100644 --- a/internal/cmd/hub_repo_sdk_test.go +++ b/internal/cmd/hub_repo_sdk_test.go @@ -198,6 +198,9 @@ func TestEnsureHubRepo_404_CreatesRepo(t *testing.T) { if got, _ := body["is_public"].(bool); got { t.Fatalf("is_public = %v, want false", got) } + if got, _ := body["source"].(string); got != "internal" { + t.Fatalf("source = %q, want internal", got) + } } func TestEnsureHubRepo_404_CreateConflict_IsIgnored(t *testing.T) {