@@ -12,17 +12,20 @@ describe("updateAnthropicModelInYaml", () => {
1212 expect ( result ) . toContain ( "name: Main Config" ) ;
1313 expect ( result ) . toContain ( "version: 1.0.0" ) ;
1414 expect ( result ) . toContain ( "schema: v1" ) ;
15- expect ( result ) . toContain ( "uses: anthropic/claude-sonnet-4-6" ) ;
16- expect ( result ) . toContain ( "ANTHROPIC_API_KEY: sk-ant-test123456789" ) ;
15+ expect ( result ) . toContain ( "provider: anthropic" ) ;
16+ expect ( result ) . toContain ( "model: claude-sonnet-4-6" ) ;
17+ expect ( result ) . toContain ( "apiKey: sk-ant-test123456789" ) ;
18+ expect ( result ) . not . toContain ( "uses:" ) ;
1719 } ) ;
1820
1921 it ( "should create new config from invalid YAML" , ( ) => {
2022 const invalidYaml = "invalid: [yaml content" ;
2123 const result = updateAnthropicModelInYaml ( invalidYaml , testApiKey ) ;
2224
2325 expect ( result ) . toContain ( "name: Main Config" ) ;
24- expect ( result ) . toContain ( "uses: anthropic/claude-sonnet-4-6" ) ;
25- expect ( result ) . toContain ( "ANTHROPIC_API_KEY: sk-ant-test123456789" ) ;
26+ expect ( result ) . toContain ( "model: claude-sonnet-4-6" ) ;
27+ expect ( result ) . toContain ( "apiKey: sk-ant-test123456789" ) ;
28+ expect ( result ) . not . toContain ( "uses:" ) ;
2629 } ) ;
2730 } ) ;
2831
@@ -34,18 +37,19 @@ version: 1.0.0
3437schema: v1
3538# List of available models
3639models:
37- - uses: openai/gpt-4
38- with:
39- OPENAI_API_KEY: TEST-openai-test
40+ - name: GPT-4
41+ provider: openai
42+ model: gpt-4
43+ apiKey: TEST-openai-test
4044` ;
4145
4246 const result = updateAnthropicModelInYaml ( yamlWithComments , testApiKey ) ;
4347
4448 expect ( result ) . toContain ( "# My Continue config" ) ;
4549 expect ( result ) . toContain ( "# List of available models" ) ;
46- expect ( result ) . toContain ( "uses: openai/ gpt-4" ) ;
47- expect ( result ) . toContain ( "uses: anthropic/ claude-sonnet-4-6" ) ;
48- expect ( result ) . toContain ( "ANTHROPIC_API_KEY : sk-ant-test123456789" ) ;
50+ expect ( result ) . toContain ( "model: gpt-4" ) ;
51+ expect ( result ) . toContain ( "model: claude-sonnet-4-6" ) ;
52+ expect ( result ) . toContain ( "apiKey : sk-ant-test123456789" ) ;
4953 } ) ;
5054
5155 it ( "should preserve comments when updating existing model" , ( ) => {
@@ -55,19 +59,39 @@ version: 1.0.0
5559schema: v1
5660# List of available models
5761models:
58- - uses: anthropic/claude-sonnet-4-6
59- with:
60- ANTHROPIC_API_KEY: old-key
62+ - name: Claude Sonnet 4.6
63+ provider: anthropic
64+ model: claude-sonnet-4-6
65+ apiKey: old-key
6166` ;
6267
6368 const result = updateAnthropicModelInYaml ( yamlWithComments , testApiKey ) ;
6469
6570 expect ( result ) . toContain ( "# My Continue config" ) ;
6671 expect ( result ) . toContain ( "# List of available models" ) ;
67- expect ( result ) . toContain ( "uses: anthropic/ claude-sonnet-4-6" ) ;
68- expect ( result ) . toContain ( "ANTHROPIC_API_KEY : sk-ant-test123456789" ) ;
72+ expect ( result ) . toContain ( "model: claude-sonnet-4-6" ) ;
73+ expect ( result ) . toContain ( "apiKey : sk-ant-test123456789" ) ;
6974 expect ( result ) . not . toContain ( "old-key" ) ;
7075 } ) ;
76+
77+ it ( "should replace legacy slug-based anthropic blocks" , ( ) => {
78+ const yamlWithSlug = `name: Main Config
79+ version: 1.0.0
80+ schema: v1
81+ models:
82+ - uses: anthropic/claude-sonnet-4-6
83+ with:
84+ ANTHROPIC_API_KEY: old-key
85+ ` ;
86+
87+ const result = updateAnthropicModelInYaml ( yamlWithSlug , testApiKey ) ;
88+
89+ expect ( result ) . not . toContain ( "uses:" ) ;
90+ expect ( result ) . not . toContain ( "old-key" ) ;
91+ expect ( result ) . toContain ( "provider: anthropic" ) ;
92+ expect ( result ) . toContain ( "model: claude-sonnet-4-6" ) ;
93+ expect ( result ) . toContain ( "apiKey: sk-ant-test123456789" ) ;
94+ } ) ;
7195 } ) ;
7296
7397 describe ( "model management" , ( ) => {
@@ -76,45 +100,46 @@ models:
76100version: 1.0.0
77101schema: v1
78102models:
79- - uses: openai/gpt-4
80- with:
81- OPENAI_API_KEY: TEST-openai-test
103+ - name: GPT-4
104+ provider: openai
105+ model: gpt-4
106+ apiKey: TEST-openai-test
82107` ;
83108
84109 const result = updateAnthropicModelInYaml ( existingConfig , testApiKey ) ;
85110
86- expect ( result ) . toContain ( "uses: openai/ gpt-4" ) ;
87- expect ( result ) . toContain ( "uses: anthropic/ claude-sonnet-4-6" ) ;
88- expect ( result ) . toContain ( "ANTHROPIC_API_KEY : sk-ant-test123456789" ) ;
89- expect ( result ) . toContain ( "OPENAI_API_KEY : TEST-openai-test" ) ;
111+ expect ( result ) . toContain ( "model: gpt-4" ) ;
112+ expect ( result ) . toContain ( "model: claude-sonnet-4-6" ) ;
113+ expect ( result ) . toContain ( "apiKey : sk-ant-test123456789" ) ;
114+ expect ( result ) . toContain ( "apiKey : TEST-openai-test" ) ;
90115 } ) ;
91116
92117 it ( "should update existing anthropic model" , ( ) => {
93118 const existingConfig = `name: Main Config
94119version: 1.0.0
95120schema: v1
96121models:
97- - uses: anthropic/claude-sonnet-4-6
98- with:
99- ANTHROPIC_API_KEY: old-anthropic-key
100- - uses: openai/gpt-4
101- with:
102- OPENAI_API_KEY: TEST-openai-test
122+ - name: Claude Sonnet 4.6
123+ provider: anthropic
124+ model: claude-sonnet-4-6
125+ apiKey: old-anthropic-key
126+ - name: GPT-4
127+ provider: openai
128+ model: gpt-4
129+ apiKey: TEST-openai-test
103130` ;
104131
105132 const result = updateAnthropicModelInYaml ( existingConfig , testApiKey ) ;
106133
107- expect ( result ) . toContain ( "uses: anthropic/ claude-sonnet-4-6" ) ;
108- expect ( result ) . toContain ( "uses: openai/ gpt-4" ) ;
109- expect ( result ) . toContain ( "ANTHROPIC_API_KEY : sk-ant-test123456789" ) ;
110- expect ( result ) . toContain ( "OPENAI_API_KEY : TEST-openai-test" ) ;
134+ expect ( result ) . toContain ( "model: claude-sonnet-4-6" ) ;
135+ expect ( result ) . toContain ( "model: gpt-4" ) ;
136+ expect ( result ) . toContain ( "apiKey : sk-ant-test123456789" ) ;
137+ expect ( result ) . toContain ( "apiKey : TEST-openai-test" ) ;
111138 expect ( result ) . not . toContain ( "old-anthropic-key" ) ;
112139
113- // Should only have one anthropic model
114- const anthropicMatches = result . match (
115- / u s e s : a n t h r o p i c \/ c l a u d e - s o n n e t - 4 - 6 / g,
116- ) ;
117- expect ( anthropicMatches ) . toHaveLength ( 1 ) ;
140+ // Should only have one Claude Sonnet model
141+ const sonnetMatches = result . match ( / m o d e l : c l a u d e - s o n n e t - 4 - 6 / g) ;
142+ expect ( sonnetMatches ) . toHaveLength ( 1 ) ;
118143 } ) ;
119144
120145 it ( "should handle config with no models array" , ( ) => {
@@ -130,8 +155,8 @@ schema: v1
130155
131156 expect ( result ) . toContain ( "name: Main Config" ) ;
132157 expect ( result ) . toContain ( "models:" ) ;
133- expect ( result ) . toContain ( "uses: anthropic/ claude-sonnet-4-6" ) ;
134- expect ( result ) . toContain ( "ANTHROPIC_API_KEY : sk-ant-test123456789" ) ;
158+ expect ( result ) . toContain ( "model: claude-sonnet-4-6" ) ;
159+ expect ( result ) . toContain ( "apiKey : sk-ant-test123456789" ) ;
135160 } ) ;
136161
137162 it ( "should handle config with empty models array" , ( ) => {
@@ -147,8 +172,8 @@ models: []
147172 ) ;
148173
149174 expect ( result ) . toContain ( "name: Main Config" ) ;
150- expect ( result ) . toContain ( "uses: anthropic/ claude-sonnet-4-6" ) ;
151- expect ( result ) . toContain ( "ANTHROPIC_API_KEY : sk-ant-test123456789" ) ;
175+ expect ( result ) . toContain ( "model: claude-sonnet-4-6" ) ;
176+ expect ( result ) . toContain ( "apiKey : sk-ant-test123456789" ) ;
152177 } ) ;
153178 } ) ;
154179
@@ -157,7 +182,10 @@ models: []
157182 const input = `# Test config
158183name: Test
159184models:
160- - uses: existing/model
185+ - name: Existing
186+ provider: openai
187+ model: existing-model
188+ apiKey: test
161189` ;
162190
163191 const result = updateAnthropicModelInYaml ( input , testApiKey ) ;
@@ -175,9 +203,9 @@ models:
175203 expect ( result ) . toMatch ( / ^ v e r s i o n : / m) ;
176204 expect ( result ) . toMatch ( / ^ s c h e m a : / m) ;
177205 expect ( result ) . toMatch ( / ^ m o d e l s : / m) ;
178- expect ( result ) . toMatch ( / ^ \s + - u s e s : / m) ;
179- expect ( result ) . toMatch ( / ^ \s + w i t h : / m) ;
180- expect ( result ) . toMatch ( / ^ \s + A N T H R O P I C _ A P I _ K E Y : / m) ;
206+ expect ( result ) . toMatch ( / ^ \s + - n a m e : / m) ;
207+ expect ( result ) . toMatch ( / ^ \s + p r o v i d e r : a n t h r o p i c / m) ;
208+ expect ( result ) . toMatch ( / ^ \s + a p i K e y : / m) ;
181209 } ) ;
182210 } ) ;
183211
@@ -189,8 +217,8 @@ models: "not an array"
189217
190218 const result = updateAnthropicModelInYaml ( malformedConfig , testApiKey ) ;
191219
192- expect ( result ) . toContain ( "uses: anthropic/ claude-sonnet-4-6" ) ;
193- expect ( result ) . toContain ( "ANTHROPIC_API_KEY : sk-ant-test123456789" ) ;
220+ expect ( result ) . toContain ( "model: claude-sonnet-4-6" ) ;
221+ expect ( result ) . toContain ( "apiKey : sk-ant-test123456789" ) ;
194222 } ) ;
195223
196224 it ( "should handle different API key formats" , ( ) => {
@@ -202,7 +230,7 @@ models: "not an array"
202230
203231 differentKeys . forEach ( ( key ) => {
204232 const result = updateAnthropicModelInYaml ( "" , key ) ;
205- expect ( result ) . toContain ( `ANTHROPIC_API_KEY : ${ key } ` ) ;
233+ expect ( result ) . toContain ( `apiKey : ${ key } ` ) ;
206234 } ) ;
207235 } ) ;
208236 } ) ;
0 commit comments