@@ -8,8 +8,8 @@ import (
11+ "github.com/charmbracelet/catwalk/pkg/catwalk"
11 "github.com/charmbracelet/crush/internal/env"
12 "github.com/charmbracelet/crush/internal/env"
12− "github.com/charmbracelet/crush/internal/fur/provider"
13 "github.com/stretchr/testify/assert"
13 "github.com/stretchr/testify/assert"
@@ -54,12 +54,12 @@ func TestConfig_setDefaults(t *testing.T) {
56func TestConfig_configureProviders(t *testing.T) {
56func TestConfig_configureProviders(t *testing.T) {
57− knownProviders := []provider.Provider{
57+ knownProviders := []catwalk.Provider{
59 ID: "openai",
59 ID: "openai",
60 APIKey: "$OPENAI_API_KEY",
60 APIKey: "$OPENAI_API_KEY",
61 APIEndpoint: "https://api.openai.com/v1",
61 APIEndpoint: "https://api.openai.com/v1",
62− Models: []provider.Model{{
62+ Models: []catwalk.Model{{
63 ID: "test-model",
63 ID: "test-model",
@@ -80,12 +80,12 @@ func TestConfig_configureProviders(t *testing.T) {
82func TestConfig_configureProvidersWithOverride(t *testing.T) {
82func TestConfig_configureProvidersWithOverride(t *testing.T) {
83− knownProviders := []provider.Provider{
83+ knownProviders := []catwalk.Provider{
85 ID: "openai",
85 ID: "openai",
86 APIKey: "$OPENAI_API_KEY",
86 APIKey: "$OPENAI_API_KEY",
87 APIEndpoint: "https://api.openai.com/v1",
87 APIEndpoint: "https://api.openai.com/v1",
88− Models: []provider.Model{{
88+ Models: []catwalk.Model{{
89 ID: "test-model",
89 ID: "test-model",
@@ -96,10 +96,10 @@ func TestConfig_configureProvidersWithOverride(t *testing.T) {
96 "openai": {
96 "openai": {
97 APIKey: "xyz",
97 APIKey: "xyz",
98 BaseURL: "https://api.openai.com/v2",
98 BaseURL: "https://api.openai.com/v2",
99− Models: []provider.Model{
99+ Models: []catwalk.Model{
101− ID: "test-model",
101+ ID: "test-model",
102− Model: "Updated",
102+ Name: "Updated",
105 ID: "another-model",
105 ID: "another-model",
@@ -122,16 +122,16 @@ func TestConfig_configureProvidersWithOverride(t *testing.T) {
122 assert.Equal(t, "xyz", cfg.Providers["openai"].APIKey)
122 assert.Equal(t, "xyz", cfg.Providers["openai"].APIKey)
123 assert.Equal(t, "https://api.openai.com/v2", cfg.Providers["openai"].BaseURL)
123 assert.Equal(t, "https://api.openai.com/v2", cfg.Providers["openai"].BaseURL)
124 assert.Len(t, cfg.Providers["openai"].Models, 2)
124 assert.Len(t, cfg.Providers["openai"].Models, 2)
125− assert.Equal(t, "Updated", cfg.Providers["openai"].Models[0].Model)
125+ assert.Equal(t, "Updated", cfg.Providers["openai"].Models[0].Name)
128func TestConfig_configureProvidersWithNewProvider(t *testing.T) {
128func TestConfig_configureProvidersWithNewProvider(t *testing.T) {
129− knownProviders := []provider.Provider{
129+ knownProviders := []catwalk.Provider{
131 ID: "openai",
131 ID: "openai",
132 APIKey: "$OPENAI_API_KEY",
132 APIKey: "$OPENAI_API_KEY",
133 APIEndpoint: "https://api.openai.com/v1",
133 APIEndpoint: "https://api.openai.com/v1",
134− Models: []provider.Model{{
134+ Models: []catwalk.Model{{
135 ID: "test-model",
135 ID: "test-model",
@@ -142,7 +142,7 @@ func TestConfig_configureProvidersWithNewProvider(t *testing.T) {
142 "custom": {
142 "custom": {
143 APIKey: "xyz",
143 APIKey: "xyz",
144 BaseURL: "https://api.someendpoint.com/v2",
144 BaseURL: "https://api.someendpoint.com/v2",
145− Models: []provider.Model{
145+ Models: []catwalk.Model{
147 ID: "test-model",
147 ID: "test-model",
@@ -172,12 +172,12 @@ func TestConfig_configureProvidersWithNewProvider(t *testing.T) {
174func TestConfig_configureProvidersBedrockWithCredentials(t *testing.T) {
174func TestConfig_configureProvidersBedrockWithCredentials(t *testing.T) {
175− knownProviders := []provider.Provider{
175+ knownProviders := []catwalk.Provider{
177− ID: provider.InferenceProviderBedrock,
177+ ID: catwalk.InferenceProviderBedrock,
178 APIKey: "",
178 APIKey: "",
179 APIEndpoint: "",
179 APIEndpoint: "",
180− Models: []provider.Model{{
180+ Models: []catwalk.Model{{
181 ID: "anthropic.claude-sonnet-4-20250514-v1:0",
181 ID: "anthropic.claude-sonnet-4-20250514-v1:0",
@@ -201,12 +201,12 @@ func TestConfig_configureProvidersBedrockWithCredentials(t *testing.T) {
203func TestConfig_configureProvidersBedrockWithoutCredentials(t *testing.T) {
203func TestConfig_configureProvidersBedrockWithoutCredentials(t *testing.T) {
204− knownProviders := []provider.Provider{
204+ knownProviders := []catwalk.Provider{
206− ID: provider.InferenceProviderBedrock,
206+ ID: catwalk.InferenceProviderBedrock,
207 APIKey: "",
207 APIKey: "",
208 APIEndpoint: "",
208 APIEndpoint: "",
209− Models: []provider.Model{{
209+ Models: []catwalk.Model{{
210 ID: "anthropic.claude-sonnet-4-20250514-v1:0",
210 ID: "anthropic.claude-sonnet-4-20250514-v1:0",
@@ -223,12 +223,12 @@ func TestConfig_configureProvidersBedrockWithoutCredentials(t *testing.T) {
225func TestConfig_configureProvidersBedrockWithoutUnsupportedModel(t *testing.T) {
225func TestConfig_configureProvidersBedrockWithoutUnsupportedModel(t *testing.T) {
226− knownProviders := []provider.Provider{
226+ knownProviders := []catwalk.Provider{
228− ID: provider.InferenceProviderBedrock,
228+ ID: catwalk.InferenceProviderBedrock,
229 APIKey: "",
229 APIKey: "",
230 APIEndpoint: "",
230 APIEndpoint: "",
231− Models: []provider.Model{{
231+ Models: []catwalk.Model{{
232 ID: "some-random-model",
232 ID: "some-random-model",
@@ -246,12 +246,12 @@ func TestConfig_configureProvidersBedrockWithoutUnsupportedModel(t *testing.T) {
248func TestConfig_configureProvidersVertexAIWithCredentials(t *testing.T) {
248func TestConfig_configureProvidersVertexAIWithCredentials(t *testing.T) {
249− knownProviders := []provider.Provider{
249+ knownProviders := []catwalk.Provider{
251− ID: provider.InferenceProviderVertexAI,
251+ ID: catwalk.InferenceProviderVertexAI,
252 APIKey: "",
252 APIKey: "",
253 APIEndpoint: "",
253 APIEndpoint: "",
254− Models: []provider.Model{{
254+ Models: []catwalk.Model{{
255 ID: "gemini-pro",
255 ID: "gemini-pro",
@@ -278,12 +278,12 @@ func TestConfig_configureProvidersVertexAIWithCredentials(t *testing.T) {
280func TestConfig_configureProvidersVertexAIWithoutCredentials(t *testing.T) {
280func TestConfig_configureProvidersVertexAIWithoutCredentials(t *testing.T) {
281− knownProviders := []provider.Provider{
281+ knownProviders := []catwalk.Provider{
283− ID: provider.InferenceProviderVertexAI,
283+ ID: catwalk.InferenceProviderVertexAI,
284 APIKey: "",
284 APIKey: "",
285 APIEndpoint: "",
285 APIEndpoint: "",
286− Models: []provider.Model{{
286+ Models: []catwalk.Model{{
287 ID: "gemini-pro",
287 ID: "gemini-pro",
@@ -304,12 +304,12 @@ func TestConfig_configureProvidersVertexAIWithoutCredentials(t *testing.T) {
306func TestConfig_configureProvidersVertexAIMissingProject(t *testing.T) {
306func TestConfig_configureProvidersVertexAIMissingProject(t *testing.T) {
307− knownProviders := []provider.Provider{
307+ knownProviders := []catwalk.Provider{
309− ID: provider.InferenceProviderVertexAI,
309+ ID: catwalk.InferenceProviderVertexAI,
310 APIKey: "",
310 APIKey: "",
311 APIEndpoint: "",
311 APIEndpoint: "",
312− Models: []provider.Model{{
312+ Models: []catwalk.Model{{
313 ID: "gemini-pro",
313 ID: "gemini-pro",
@@ -329,12 +329,12 @@ func TestConfig_configureProvidersVertexAIMissingProject(t *testing.T) {
331func TestConfig_configureProvidersSetProviderID(t *testing.T) {
331func TestConfig_configureProvidersSetProviderID(t *testing.T) {
332− knownProviders := []provider.Provider{
332+ knownProviders := []catwalk.Provider{
334 ID: "openai",
334 ID: "openai",
335 APIKey: "$OPENAI_API_KEY",
335 APIKey: "$OPENAI_API_KEY",
336 APIEndpoint: "https://api.openai.com/v1",
336 APIEndpoint: "https://api.openai.com/v1",
337− Models: []provider.Model{{
337+ Models: []catwalk.Model{{
338 ID: "test-model",
338 ID: "test-model",
@@ -450,12 +450,12 @@ func TestConfig_IsConfigured(t *testing.T) {
452func TestConfig_configureProvidersWithDisabledProvider(t *testing.T) {
452func TestConfig_configureProvidersWithDisabledProvider(t *testing.T) {
453− knownProviders := []provider.Provider{
453+ knownProviders := []catwalk.Provider{
455 ID: "openai",
455 ID: "openai",
456 APIKey: "$OPENAI_API_KEY",
456 APIKey: "$OPENAI_API_KEY",
457 APIEndpoint: "https://api.openai.com/v1",
457 APIEndpoint: "https://api.openai.com/v1",
458− Models: []provider.Model{{
458+ Models: []catwalk.Model{{
459 ID: "test-model",
459 ID: "test-model",
@@ -489,7 +489,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
489 Providers: map[string]ProviderConfig{
489 Providers: map[string]ProviderConfig{
490 "custom": {
490 "custom": {
491 BaseURL: "https://api.custom.com/v1",
491 BaseURL: "https://api.custom.com/v1",
492− Models: []provider.Model{{
492+ Models: []catwalk.Model{{
493 ID: "test-model",
493 ID: "test-model",
@@ -502,7 +502,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
503 env := env.NewFromMap(map[string]string{})
503 env := env.NewFromMap(map[string]string{})
504 resolver := NewEnvironmentVariableResolver(env)
504 resolver := NewEnvironmentVariableResolver(env)
505− err := cfg.configureProviders(env, resolver, []provider.Provider{})
505+ err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
506 assert.NoError(t, err)
506 assert.NoError(t, err)
508 assert.Len(t, cfg.Providers, 1)
508 assert.Len(t, cfg.Providers, 1)
@@ -515,7 +515,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
515 Providers: map[string]ProviderConfig{
515 Providers: map[string]ProviderConfig{
516 "custom": {
516 "custom": {
517 APIKey: "test-key",
517 APIKey: "test-key",
518− Models: []provider.Model{{
518+ Models: []catwalk.Model{{
519 ID: "test-model",
519 ID: "test-model",
@@ -525,7 +525,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
526 env := env.NewFromMap(map[string]string{})
526 env := env.NewFromMap(map[string]string{})
527 resolver := NewEnvironmentVariableResolver(env)
527 resolver := NewEnvironmentVariableResolver(env)
528− err := cfg.configureProviders(env, resolver, []provider.Provider{})
528+ err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
529 assert.NoError(t, err)
529 assert.NoError(t, err)
531 assert.Len(t, cfg.Providers, 0)
531 assert.Len(t, cfg.Providers, 0)
@@ -539,7 +539,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
539 "custom": {
539 "custom": {
540 APIKey: "test-key",
540 APIKey: "test-key",
541 BaseURL: "https://api.custom.com/v1",
541 BaseURL: "https://api.custom.com/v1",
542− Models: []provider.Model{},
542+ Models: []catwalk.Model{},
@@ -547,7 +547,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
548 env := env.NewFromMap(map[string]string{})
548 env := env.NewFromMap(map[string]string{})
549 resolver := NewEnvironmentVariableResolver(env)
549 resolver := NewEnvironmentVariableResolver(env)
550− err := cfg.configureProviders(env, resolver, []provider.Provider{})
550+ err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
551 assert.NoError(t, err)
551 assert.NoError(t, err)
553 assert.Len(t, cfg.Providers, 0)
553 assert.Len(t, cfg.Providers, 0)
@@ -562,7 +562,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
562 APIKey: "test-key",
562 APIKey: "test-key",
563 BaseURL: "https://api.custom.com/v1",
563 BaseURL: "https://api.custom.com/v1",
564 Type: "unsupported",
564 Type: "unsupported",
565− Models: []provider.Model{{
565+ Models: []catwalk.Model{{
566 ID: "test-model",
566 ID: "test-model",
@@ -572,7 +572,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
573 env := env.NewFromMap(map[string]string{})
573 env := env.NewFromMap(map[string]string{})
574 resolver := NewEnvironmentVariableResolver(env)
574 resolver := NewEnvironmentVariableResolver(env)
575− err := cfg.configureProviders(env, resolver, []provider.Provider{})
575+ err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
576 assert.NoError(t, err)
576 assert.NoError(t, err)
578 assert.Len(t, cfg.Providers, 0)
578 assert.Len(t, cfg.Providers, 0)
@@ -586,8 +586,8 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
586 "custom": {
586 "custom": {
587 APIKey: "test-key",
587 APIKey: "test-key",
588 BaseURL: "https://api.custom.com/v1",
588 BaseURL: "https://api.custom.com/v1",
589− Type: provider.TypeOpenAI,
589+ Type: catwalk.TypeOpenAI,
590− Models: []provider.Model{{
590+ Models: []catwalk.Model{{
591 ID: "test-model",
591 ID: "test-model",
@@ -597,7 +597,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
598 env := env.NewFromMap(map[string]string{})
598 env := env.NewFromMap(map[string]string{})
599 resolver := NewEnvironmentVariableResolver(env)
599 resolver := NewEnvironmentVariableResolver(env)
600− err := cfg.configureProviders(env, resolver, []provider.Provider{})
600+ err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
601 assert.NoError(t, err)
601 assert.NoError(t, err)
603 assert.Len(t, cfg.Providers, 1)
603 assert.Len(t, cfg.Providers, 1)
@@ -614,9 +614,9 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
614 "custom": {
614 "custom": {
615 APIKey: "test-key",
615 APIKey: "test-key",
616 BaseURL: "https://api.custom.com/v1",
616 BaseURL: "https://api.custom.com/v1",
617− Type: provider.TypeOpenAI,
617+ Type: catwalk.TypeOpenAI,
618 Disable: true,
618 Disable: true,
619− Models: []provider.Model{{
619+ Models: []catwalk.Model{{
620 ID: "test-model",
620 ID: "test-model",
@@ -626,7 +626,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
627 env := env.NewFromMap(map[string]string{})
627 env := env.NewFromMap(map[string]string{})
628 resolver := NewEnvironmentVariableResolver(env)
628 resolver := NewEnvironmentVariableResolver(env)
629− err := cfg.configureProviders(env, resolver, []provider.Provider{})
629+ err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
630 assert.NoError(t, err)
630 assert.NoError(t, err)
632 assert.Len(t, cfg.Providers, 0)
632 assert.Len(t, cfg.Providers, 0)
@@ -637,12 +637,12 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
638func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
638func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
639 t.Run("VertexAI provider removed when credentials missing with existing config", func(t *testing.T) {
639 t.Run("VertexAI provider removed when credentials missing with existing config", func(t *testing.T) {
640− knownProviders := []provider.Provider{
640+ knownProviders := []catwalk.Provider{
642− ID: provider.InferenceProviderVertexAI,
642+ ID: catwalk.InferenceProviderVertexAI,
643 APIKey: "",
643 APIKey: "",
644 APIEndpoint: "",
644 APIEndpoint: "",
645− Models: []provider.Model{{
645+ Models: []catwalk.Model{{
646 ID: "gemini-pro",
646 ID: "gemini-pro",
@@ -670,12 +670,12 @@ func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
672 t.Run("Bedrock provider removed when AWS credentials missing with existing config", func(t *testing.T) {
672 t.Run("Bedrock provider removed when AWS credentials missing with existing config", func(t *testing.T) {
673− knownProviders := []provider.Provider{
673+ knownProviders := []catwalk.Provider{
675− ID: provider.InferenceProviderBedrock,
675+ ID: catwalk.InferenceProviderBedrock,
676 APIKey: "",
676 APIKey: "",
677 APIEndpoint: "",
677 APIEndpoint: "",
678− Models: []provider.Model{{
678+ Models: []catwalk.Model{{
679 ID: "anthropic.claude-sonnet-4-20250514-v1:0",
679 ID: "anthropic.claude-sonnet-4-20250514-v1:0",
@@ -701,12 +701,12 @@ func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
703 t.Run("provider removed when API key missing with existing config", func(t *testing.T) {
703 t.Run("provider removed when API key missing with existing config", func(t *testing.T) {
704− knownProviders := []provider.Provider{
704+ knownProviders := []catwalk.Provider{
706 ID: "openai",
706 ID: "openai",
707 APIKey: "$MISSING_API_KEY",
707 APIKey: "$MISSING_API_KEY",
708 APIEndpoint: "https://api.openai.com/v1",
708 APIEndpoint: "https://api.openai.com/v1",
709− Models: []provider.Model{{
709+ Models: []catwalk.Model{{
710 ID: "test-model",
710 ID: "test-model",
@@ -732,12 +732,12 @@ func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
734 t.Run("known provider should still be added if the endpoint is missing the client will use default endpoints", func(t *testing.T) {
734 t.Run("known provider should still be added if the endpoint is missing the client will use default endpoints", func(t *testing.T) {
735− knownProviders := []provider.Provider{
735+ knownProviders := []catwalk.Provider{
737 ID: "openai",
737 ID: "openai",
738 APIKey: "$OPENAI_API_KEY",
738 APIKey: "$OPENAI_API_KEY",
739 APIEndpoint: "$MISSING_ENDPOINT",
739 APIEndpoint: "$MISSING_ENDPOINT",
740− Models: []provider.Model{{
740+ Models: []catwalk.Model{{
741 ID: "test-model",
741 ID: "test-model",
@@ -767,13 +767,13 @@ func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
768func TestConfig_defaultModelSelection(t *testing.T) {
768func TestConfig_defaultModelSelection(t *testing.T) {
769 t.Run("default behavior uses the default models for given provider", func(t *testing.T) {
769 t.Run("default behavior uses the default models for given provider", func(t *testing.T) {
770− knownProviders := []provider.Provider{
770+ knownProviders := []catwalk.Provider{
772 ID: "openai",
772 ID: "openai",
773 APIKey: "abc",
773 APIKey: "abc",
774 DefaultLargeModelID: "large-model",
774 DefaultLargeModelID: "large-model",
775 DefaultSmallModelID: "small-model",
775 DefaultSmallModelID: "small-model",
776− Models: []provider.Model{
776+ Models: []catwalk.Model{
778 ID: "large-model",
778 ID: "large-model",
779 DefaultMaxTokens: 1000,
779 DefaultMaxTokens: 1000,
@@ -803,13 +803,13 @@ func TestConfig_defaultModelSelection(t *testing.T) {
803 assert.Equal(t, int64(500), small.MaxTokens)
803 assert.Equal(t, int64(500), small.MaxTokens)
805 t.Run("should error if no providers configured", func(t *testing.T) {
805 t.Run("should error if no providers configured", func(t *testing.T) {
806− knownProviders := []provider.Provider{
806+ knownProviders := []catwalk.Provider{
808 ID: "openai",
808 ID: "openai",
809 APIKey: "$MISSING_KEY",
809 APIKey: "$MISSING_KEY",
810 DefaultLargeModelID: "large-model",
810 DefaultLargeModelID: "large-model",
811 DefaultSmallModelID: "small-model",
811 DefaultSmallModelID: "small-model",
812− Models: []provider.Model{
812+ Models: []catwalk.Model{
814 ID: "large-model",
814 ID: "large-model",
815 DefaultMaxTokens: 1000,
815 DefaultMaxTokens: 1000,
@@ -833,13 +833,13 @@ func TestConfig_defaultModelSelection(t *testing.T) {
833 assert.Error(t, err)
833 assert.Error(t, err)
835 t.Run("should error if model is missing", func(t *testing.T) {
835 t.Run("should error if model is missing", func(t *testing.T) {
836− knownProviders := []provider.Provider{
836+ knownProviders := []catwalk.Provider{
838 ID: "openai",
838 ID: "openai",
839 APIKey: "abc",
839 APIKey: "abc",
840 DefaultLargeModelID: "large-model",
840 DefaultLargeModelID: "large-model",
841 DefaultSmallModelID: "small-model",
841 DefaultSmallModelID: "small-model",
842− Models: []provider.Model{
842+ Models: []catwalk.Model{
844 ID: "not-large-model",
844 ID: "not-large-model",
845 DefaultMaxTokens: 1000,
845 DefaultMaxTokens: 1000,
@@ -863,13 +863,13 @@ func TestConfig_defaultModelSelection(t *testing.T) {
865 t.Run("should configure the default models with a custom provider", func(t *testing.T) {
865 t.Run("should configure the default models with a custom provider", func(t *testing.T) {
866− knownProviders := []provider.Provider{
866+ knownProviders := []catwalk.Provider{
868 ID: "openai",
868 ID: "openai",
869 APIKey: "$MISSING", // will not be included in the config
869 APIKey: "$MISSING", // will not be included in the config
870 DefaultLargeModelID: "large-model",
870 DefaultLargeModelID: "large-model",
871 DefaultSmallModelID: "small-model",
871 DefaultSmallModelID: "small-model",
872− Models: []provider.Model{
872+ Models: []catwalk.Model{
874 ID: "not-large-model",
874 ID: "not-large-model",
875 DefaultMaxTokens: 1000,
875 DefaultMaxTokens: 1000,
@@ -887,7 +887,7 @@ func TestConfig_defaultModelSelection(t *testing.T) {
887 "custom": {
887 "custom": {
888 APIKey: "test-key",
888 APIKey: "test-key",
889 BaseURL: "https://api.custom.com/v1",
889 BaseURL: "https://api.custom.com/v1",
890− Models: []provider.Model{
890+ Models: []catwalk.Model{
892 ID: "model",
892 ID: "model",
893 DefaultMaxTokens: 600,
893 DefaultMaxTokens: 600,
@@ -912,13 +912,13 @@ func TestConfig_defaultModelSelection(t *testing.T) {
914 t.Run("should fail if no model configured", func(t *testing.T) {
914 t.Run("should fail if no model configured", func(t *testing.T) {
915− knownProviders := []provider.Provider{
915+ knownProviders := []catwalk.Provider{
917 ID: "openai",
917 ID: "openai",
918 APIKey: "$MISSING", // will not be included in the config
918 APIKey: "$MISSING", // will not be included in the config
919 DefaultLargeModelID: "large-model",
919 DefaultLargeModelID: "large-model",
920 DefaultSmallModelID: "small-model",
920 DefaultSmallModelID: "small-model",
921− Models: []provider.Model{
921+ Models: []catwalk.Model{
923 ID: "not-large-model",
923 ID: "not-large-model",
924 DefaultMaxTokens: 1000,
924 DefaultMaxTokens: 1000,
@@ -936,7 +936,7 @@ func TestConfig_defaultModelSelection(t *testing.T) {
936 "custom": {
936 "custom": {
937 APIKey: "test-key",
937 APIKey: "test-key",
938 BaseURL: "https://api.custom.com/v1",
938 BaseURL: "https://api.custom.com/v1",
939− Models: []provider.Model{},
939+ Models: []catwalk.Model{},
@@ -949,13 +949,13 @@ func TestConfig_defaultModelSelection(t *testing.T) {
949 assert.Error(t, err)
949 assert.Error(t, err)
951 t.Run("should use the default provider first", func(t *testing.T) {
951 t.Run("should use the default provider first", func(t *testing.T) {
952− knownProviders := []provider.Provider{
952+ knownProviders := []catwalk.Provider{
954 ID: "openai",
954 ID: "openai",
955 APIKey: "set",
955 APIKey: "set",
956 DefaultLargeModelID: "large-model",
956 DefaultLargeModelID: "large-model",
957 DefaultSmallModelID: "small-model",
957 DefaultSmallModelID: "small-model",
958− Models: []provider.Model{
958+ Models: []catwalk.Model{
960 ID: "large-model",
960 ID: "large-model",
961 DefaultMaxTokens: 1000,
961 DefaultMaxTokens: 1000,
@@ -973,7 +973,7 @@ func TestConfig_defaultModelSelection(t *testing.T) {
973 "custom": {
973 "custom": {
974 APIKey: "test-key",
974 APIKey: "test-key",
975 BaseURL: "https://api.custom.com/v1",
975 BaseURL: "https://api.custom.com/v1",
976− Models: []provider.Model{
976+ Models: []catwalk.Model{
978 ID: "large-model",
978 ID: "large-model",
979 DefaultMaxTokens: 1000,
979 DefaultMaxTokens: 1000,
@@ -1000,13 +1000,13 @@ func TestConfig_defaultModelSelection(t *testing.T) {
1001func TestConfig_configureSelectedModels(t *testing.T) {
1001func TestConfig_configureSelectedModels(t *testing.T) {
1002 t.Run("should override defaults", func(t *testing.T) {
1002 t.Run("should override defaults", func(t *testing.T) {
1003− knownProviders := []provider.Provider{
1003+ knownProviders := []catwalk.Provider{
1005 ID: "openai",
1005 ID: "openai",
1006 APIKey: "abc",
1006 APIKey: "abc",
1007 DefaultLargeModelID: "large-model",
1007 DefaultLargeModelID: "large-model",
1008 DefaultSmallModelID: "small-model",
1008 DefaultSmallModelID: "small-model",
1009− Models: []provider.Model{
1009+ Models: []catwalk.Model{
1011 ID: "larger-model",
1011 ID: "larger-model",
1012 DefaultMaxTokens: 2000,
1012 DefaultMaxTokens: 2000,
@@ -1048,13 +1048,13 @@ func TestConfig_configureSelectedModels(t *testing.T) {
1048 assert.Equal(t, int64(500), small.MaxTokens)
1048 assert.Equal(t, int64(500), small.MaxTokens)
1050 t.Run("should be possible to use multiple providers", func(t *testing.T) {
1050 t.Run("should be possible to use multiple providers", func(t *testing.T) {
1051− knownProviders := []provider.Provider{
1051+ knownProviders := []catwalk.Provider{
1053 ID: "openai",
1053 ID: "openai",
1054 APIKey: "abc",
1054 APIKey: "abc",
1055 DefaultLargeModelID: "large-model",
1055 DefaultLargeModelID: "large-model",
1056 DefaultSmallModelID: "small-model",
1056 DefaultSmallModelID: "small-model",
1057− Models: []provider.Model{
1057+ Models: []catwalk.Model{
1059 ID: "large-model",
1059 ID: "large-model",
1060 DefaultMaxTokens: 1000,
1060 DefaultMaxTokens: 1000,
@@ -1070,7 +1070,7 @@ func TestConfig_configureSelectedModels(t *testing.T) {
1070 APIKey: "abc",
1070 APIKey: "abc",
1071 DefaultLargeModelID: "a-large-model",
1071 DefaultLargeModelID: "a-large-model",
1072 DefaultSmallModelID: "a-small-model",
1072 DefaultSmallModelID: "a-small-model",
1073− Models: []provider.Model{
1073+ Models: []catwalk.Model{
1075 ID: "a-large-model",
1075 ID: "a-large-model",
1076 DefaultMaxTokens: 1000,
1076 DefaultMaxTokens: 1000,
@@ -1111,13 +1111,13 @@ func TestConfig_configureSelectedModels(t *testing.T) {
1113 t.Run("should override the max tokens only", func(t *testing.T) {
1113 t.Run("should override the max tokens only", func(t *testing.T) {
1114− knownProviders := []provider.Provider{
1114+ knownProviders := []catwalk.Provider{
1116 ID: "openai",
1116 ID: "openai",
1117 APIKey: "abc",
1117 APIKey: "abc",
1118 DefaultLargeModelID: "large-model",
1118 DefaultLargeModelID: "large-model",
1119 DefaultSmallModelID: "small-model",
1119 DefaultSmallModelID: "small-model",
1120− Models: []provider.Model{
1120+ Models: []catwalk.Model{
1122 ID: "large-model",
1122 ID: "large-model",
1123 DefaultMaxTokens: 1000,
1123 DefaultMaxTokens: 1000,