myclaude-code 8.8.12 → 8.8.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -4
- package/dist/cli.js +83 -83
- package/dist/login-redirect-command.js +2 -2
- package/dist/provider-command.js +30 -30
- package/dist/provider-setup.js +132 -162
- package/package.json +9 -5
|
@@ -24,13 +24,13 @@ export async function call() {
|
|
|
24
24
|
return {
|
|
25
25
|
type: 'text',
|
|
26
26
|
value:
|
|
27
|
-
'当前版本的 /login 已改为启动前配置流。\n请先退出当前会话,然后重新运行 myclaude;启动时会先让你选择“直接使用当前配置”或“重新配置模型与 API”。\n如果你想立刻进入配置,也可以直接在终端执行:myclaude
|
|
27
|
+
'当前版本的 /login 已改为启动前配置流。\n请先退出当前会话,然后重新运行 myclaude;启动时会先让你选择“直接使用当前配置”或“重新配置模型与 API”。\n如果你想立刻进入配置,也可以直接在终端执行:myclaude setup-token\n如果你只是想检查当前供应商与模型是否可用,可以执行:/provider validate\n如果你想自动修复无效的模型路由,可以执行:/provider repair',
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
return {
|
|
32
32
|
type: 'text',
|
|
33
33
|
value:
|
|
34
|
-
'The /login flow has been moved to the pre-launch configuration path.\nExit the current session and start myclaude again; before chat starts you will be able to choose between using the current configuration or reconfiguring model and API settings.\nIf you want to open setup immediately from the shell, run: myclaude
|
|
34
|
+
'The /login flow has been moved to the pre-launch configuration path.\nExit the current session and start myclaude again; before chat starts you will be able to choose between using the current configuration or reconfiguring model and API settings.\nIf you want to open setup immediately from the shell, run: myclaude setup-token\nIf you only want to test the current provider and model route, run: /provider validate\nIf you want myclaude to auto-repair an invalid model route, run: /provider repair',
|
|
35
35
|
}
|
|
36
36
|
}
|
package/dist/provider-command.js
CHANGED
|
@@ -24,16 +24,16 @@ function getRoutingDisplayValue(value, fallback) {
|
|
|
24
24
|
|
|
25
25
|
function formatProviderSummary(profile) {
|
|
26
26
|
return [
|
|
27
|
-
`
|
|
27
|
+
`Profile: ${profile.name}`,
|
|
28
28
|
`API URL: ${profile.baseUrl}`,
|
|
29
29
|
`${getCredentialLabel(profile.authType)}: ${maskCredential(profile.credential)}`,
|
|
30
|
-
`
|
|
30
|
+
`Main thread model: ${getRoutingDisplayValue(
|
|
31
31
|
profile.modelRouting?.primaryModel,
|
|
32
32
|
'provider default',
|
|
33
33
|
)}`,
|
|
34
34
|
`Subagent model: ${getRoutingDisplayValue(
|
|
35
35
|
profile.modelRouting?.subagentModel,
|
|
36
|
-
'inherit from
|
|
36
|
+
'inherit from main thread model',
|
|
37
37
|
)}`,
|
|
38
38
|
`Fast helper model: ${getRoutingDisplayValue(
|
|
39
39
|
profile.modelRouting?.smallFastModel,
|
|
@@ -46,8 +46,8 @@ function buildHelpText() {
|
|
|
46
46
|
return [
|
|
47
47
|
'Usage: /provider [list|current|clear|validate [profile]|matrix [profile]|repair [profile]|use <profile>|<profile>]',
|
|
48
48
|
'',
|
|
49
|
-
'
|
|
50
|
-
'
|
|
49
|
+
'Manage saved provider profiles and routing roles for myclaude.',
|
|
50
|
+
'Use `myclaude setup-token` outside the session to open the full /provider setup flow.',
|
|
51
51
|
'',
|
|
52
52
|
'Examples:',
|
|
53
53
|
' /provider list',
|
|
@@ -67,7 +67,7 @@ function formatListOutput() {
|
|
|
67
67
|
const currentProfile = getDisplayCurrentProfile()
|
|
68
68
|
|
|
69
69
|
if (profiles.length === 0 && !currentProfile) {
|
|
70
|
-
return 'No provider profiles are configured yet.
|
|
70
|
+
return 'No provider profiles are configured yet. Run `myclaude setup-token` outside the session to create one.'
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
const sections = [buildHelpText()]
|
|
@@ -78,7 +78,7 @@ function formatListOutput() {
|
|
|
78
78
|
'Saved provider profiles:',
|
|
79
79
|
...profiles.map(profile => {
|
|
80
80
|
const suffix = activeProfileId === profile.id ? ' (active)' : ''
|
|
81
|
-
return `- ${profile.name}${suffix} · ${profile.baseUrl} · Main ${getRoutingDisplayValue(
|
|
81
|
+
return `- ${profile.name}${suffix} · ${profile.baseUrl} · Main thread ${getRoutingDisplayValue(
|
|
82
82
|
profile.modelRouting?.primaryModel,
|
|
83
83
|
'provider default',
|
|
84
84
|
)}`
|
|
@@ -89,7 +89,7 @@ function formatListOutput() {
|
|
|
89
89
|
|
|
90
90
|
if (currentProfile) {
|
|
91
91
|
sections.push(
|
|
92
|
-
`
|
|
92
|
+
`Active profile:\n${formatProviderSummary(currentProfile)}`,
|
|
93
93
|
)
|
|
94
94
|
}
|
|
95
95
|
|
|
@@ -142,7 +142,7 @@ function buildValidationGuidance(profile, validation, routeMatrix) {
|
|
|
142
142
|
if (gpt54Route?.status === 'recommended') {
|
|
143
143
|
const guidance = [
|
|
144
144
|
'Guidance:',
|
|
145
|
-
'- This provider is currently best routed as gpt-5.4 for
|
|
145
|
+
'- This provider is currently best routed as gpt-5.4 for the main thread, subagent, and fast helper roles.',
|
|
146
146
|
]
|
|
147
147
|
|
|
148
148
|
if (gpt54Route.effortLevels.includes('max')) {
|
|
@@ -181,7 +181,7 @@ function buildValidationGuidance(profile, validation, routeMatrix) {
|
|
|
181
181
|
return [
|
|
182
182
|
'Guidance:',
|
|
183
183
|
'- This gateway is currently verified for native myclaude workflows on gpt-5.4.',
|
|
184
|
-
'- One or more secondary
|
|
184
|
+
'- One or more secondary routing roles are degraded here. Restart myclaude and choose reconfigure to switch all roles to gpt-5.4.',
|
|
185
185
|
]
|
|
186
186
|
}
|
|
187
187
|
|
|
@@ -189,7 +189,7 @@ function buildValidationGuidance(profile, validation, routeMatrix) {
|
|
|
189
189
|
return [
|
|
190
190
|
'Guidance:',
|
|
191
191
|
'- The provider can answer chat requests, but some native workflows may still degrade on the current routing.',
|
|
192
|
-
'- Restart myclaude and choose reconfigure, or run `myclaude
|
|
192
|
+
'- Restart myclaude and choose reconfigure, or run `myclaude setup-token`, to adjust the active profile and model route.',
|
|
193
193
|
]
|
|
194
194
|
}
|
|
195
195
|
|
|
@@ -216,11 +216,11 @@ export async function call(args, context) {
|
|
|
216
216
|
const currentProfile = getDisplayCurrentProfile()
|
|
217
217
|
return {
|
|
218
218
|
type: 'text',
|
|
219
|
-
|
|
220
|
-
? `
|
|
219
|
+
value: currentProfile
|
|
220
|
+
? `Active profile:\n${formatProviderSummary(
|
|
221
221
|
currentProfile,
|
|
222
222
|
)}`
|
|
223
|
-
: 'No active provider
|
|
223
|
+
: 'No active provider profile is set.',
|
|
224
224
|
}
|
|
225
225
|
}
|
|
226
226
|
|
|
@@ -229,7 +229,7 @@ export async function call(args, context) {
|
|
|
229
229
|
syncLiveSession(context, null)
|
|
230
230
|
return {
|
|
231
231
|
type: 'text',
|
|
232
|
-
value: 'Cleared the active provider configuration.',
|
|
232
|
+
value: 'Cleared the active provider profile configuration.',
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
235
|
|
|
@@ -243,13 +243,13 @@ export async function call(args, context) {
|
|
|
243
243
|
if (matches.length === 0) {
|
|
244
244
|
return {
|
|
245
245
|
type: 'text',
|
|
246
|
-
value: `No saved
|
|
246
|
+
value: `No saved profile matched '${profileQuery}'. Run /provider list to inspect saved names.`,
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
249
|
if (matches.length > 1) {
|
|
250
250
|
return {
|
|
251
251
|
type: 'text',
|
|
252
|
-
value: `Multiple
|
|
252
|
+
value: `Multiple profiles matched '${profileQuery}'. Be more specific:\n${formatMatchList(
|
|
253
253
|
matches,
|
|
254
254
|
)}`,
|
|
255
255
|
}
|
|
@@ -262,7 +262,7 @@ export async function call(args, context) {
|
|
|
262
262
|
if (!profile) {
|
|
263
263
|
return {
|
|
264
264
|
type: 'text',
|
|
265
|
-
value: 'No active provider
|
|
265
|
+
value: 'No active provider profile is set.',
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
268
|
|
|
@@ -282,13 +282,13 @@ export async function call(args, context) {
|
|
|
282
282
|
if (matches.length === 0) {
|
|
283
283
|
return {
|
|
284
284
|
type: 'text',
|
|
285
|
-
value: `No saved
|
|
285
|
+
value: `No saved profile matched '${profileQuery}'. Run /provider list to inspect saved names.`,
|
|
286
286
|
}
|
|
287
287
|
}
|
|
288
288
|
if (matches.length > 1) {
|
|
289
289
|
return {
|
|
290
290
|
type: 'text',
|
|
291
|
-
value: `Multiple
|
|
291
|
+
value: `Multiple profiles matched '${profileQuery}'. Be more specific:\n${formatMatchList(
|
|
292
292
|
matches,
|
|
293
293
|
)}`,
|
|
294
294
|
}
|
|
@@ -301,7 +301,7 @@ export async function call(args, context) {
|
|
|
301
301
|
if (!profile) {
|
|
302
302
|
return {
|
|
303
303
|
type: 'text',
|
|
304
|
-
value: 'No active provider
|
|
304
|
+
value: 'No active provider profile is set.',
|
|
305
305
|
}
|
|
306
306
|
}
|
|
307
307
|
|
|
@@ -334,13 +334,13 @@ export async function call(args, context) {
|
|
|
334
334
|
if (matches.length === 0) {
|
|
335
335
|
return {
|
|
336
336
|
type: 'text',
|
|
337
|
-
value: `No saved
|
|
337
|
+
value: `No saved profile matched '${profileQuery}'. Run /provider list to inspect saved names.`,
|
|
338
338
|
}
|
|
339
339
|
}
|
|
340
340
|
if (matches.length > 1) {
|
|
341
341
|
return {
|
|
342
342
|
type: 'text',
|
|
343
|
-
value: `Multiple
|
|
343
|
+
value: `Multiple profiles matched '${profileQuery}'. Be more specific:\n${formatMatchList(
|
|
344
344
|
matches,
|
|
345
345
|
)}`,
|
|
346
346
|
}
|
|
@@ -353,7 +353,7 @@ export async function call(args, context) {
|
|
|
353
353
|
if (!profile) {
|
|
354
354
|
return {
|
|
355
355
|
type: 'text',
|
|
356
|
-
value: 'No active provider
|
|
356
|
+
value: 'No active provider profile is set.',
|
|
357
357
|
}
|
|
358
358
|
}
|
|
359
359
|
|
|
@@ -363,7 +363,7 @@ export async function call(args, context) {
|
|
|
363
363
|
return {
|
|
364
364
|
type: 'text',
|
|
365
365
|
value: [
|
|
366
|
-
`Auto-repaired
|
|
366
|
+
`Auto-repaired profile ${repairResult.profile.name}:`,
|
|
367
367
|
...repairResult.repairLines,
|
|
368
368
|
...repairResult.validation.lines,
|
|
369
369
|
`Status: ${repairResult.validation.status}`,
|
|
@@ -385,7 +385,7 @@ export async function call(args, context) {
|
|
|
385
385
|
return {
|
|
386
386
|
type: 'text',
|
|
387
387
|
value:
|
|
388
|
-
'
|
|
388
|
+
'Run `myclaude setup-token` in the shell, or restart and choose reconfigure, to open the full /provider setup flow.',
|
|
389
389
|
}
|
|
390
390
|
}
|
|
391
391
|
|
|
@@ -396,14 +396,14 @@ export async function call(args, context) {
|
|
|
396
396
|
if (matches.length === 0) {
|
|
397
397
|
return {
|
|
398
398
|
type: 'text',
|
|
399
|
-
value: `No saved
|
|
399
|
+
value: `No saved profile matched '${profileQuery}'. Run /provider list to inspect saved names.`,
|
|
400
400
|
}
|
|
401
401
|
}
|
|
402
402
|
|
|
403
403
|
if (matches.length > 1) {
|
|
404
404
|
return {
|
|
405
405
|
type: 'text',
|
|
406
|
-
value: `Multiple
|
|
406
|
+
value: `Multiple profiles matched '${profileQuery}'. Be more specific:\n${formatMatchList(
|
|
407
407
|
matches,
|
|
408
408
|
)}`,
|
|
409
409
|
}
|
|
@@ -413,14 +413,14 @@ export async function call(args, context) {
|
|
|
413
413
|
if (!activatedProfile) {
|
|
414
414
|
return {
|
|
415
415
|
type: 'text',
|
|
416
|
-
value: `
|
|
416
|
+
value: `Profile '${matches[0].name}' is no longer available.`,
|
|
417
417
|
}
|
|
418
418
|
}
|
|
419
419
|
|
|
420
420
|
syncLiveSession(context, activatedProfile)
|
|
421
421
|
return {
|
|
422
422
|
type: 'text',
|
|
423
|
-
value: `Activated
|
|
423
|
+
value: `Activated profile ${activatedProfile.name}\n${formatProviderSummary(
|
|
424
424
|
activatedProfile,
|
|
425
425
|
)}`,
|
|
426
426
|
}
|