@jsonstudio/rcc 0.90.141 → 0.90.181

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.
Files changed (97) hide show
  1. package/dist/build-info.js +2 -2
  2. package/dist/cli/commands/config.js +5 -5
  3. package/dist/cli/commands/config.js.map +1 -1
  4. package/dist/cli/commands/init/basic.js +30 -25
  5. package/dist/cli/commands/init/basic.js.map +1 -1
  6. package/dist/cli/commands/init/interactive.js +6 -1
  7. package/dist/cli/commands/init/interactive.js.map +1 -1
  8. package/dist/cli/commands/init/workflows.js +7 -7
  9. package/dist/cli/commands/init/workflows.js.map +1 -1
  10. package/dist/cli/commands/init.js +45 -104
  11. package/dist/cli/commands/init.js.map +1 -1
  12. package/dist/cli/config/bootstrap-provider-templates.d.ts +4 -0
  13. package/dist/cli/config/bootstrap-provider-templates.js +107 -0
  14. package/dist/cli/config/bootstrap-provider-templates.js.map +1 -0
  15. package/dist/cli/config/init-config.js +37 -102
  16. package/dist/cli/config/init-config.js.map +1 -1
  17. package/dist/cli/config/init-provider-catalog.d.ts +30 -0
  18. package/dist/cli/config/init-provider-catalog.js +381 -265
  19. package/dist/cli/config/init-provider-catalog.js.map +1 -1
  20. package/dist/cli/config/init-v2-builder.d.ts +20 -0
  21. package/dist/cli/config/init-v2-builder.js +150 -0
  22. package/dist/cli/config/init-v2-builder.js.map +1 -0
  23. package/dist/commands/provider-update.js +163 -173
  24. package/dist/commands/provider-update.js.map +1 -1
  25. package/dist/provider-sdk/provider-add-template.d.ts +17 -0
  26. package/dist/provider-sdk/provider-add-template.js +110 -0
  27. package/dist/provider-sdk/provider-add-template.js.map +1 -0
  28. package/dist/provider-sdk/provider-inspect.d.ts +37 -0
  29. package/dist/provider-sdk/provider-inspect.js +166 -0
  30. package/dist/provider-sdk/provider-inspect.js.map +1 -0
  31. package/dist/provider-sdk/provider-runtime-inference.d.ts +14 -0
  32. package/dist/provider-sdk/provider-runtime-inference.js +226 -0
  33. package/dist/provider-sdk/provider-runtime-inference.js.map +1 -0
  34. package/dist/provider-sdk/vercel-ai-doctor.d.ts +35 -0
  35. package/dist/provider-sdk/vercel-ai-doctor.js +150 -0
  36. package/dist/provider-sdk/vercel-ai-doctor.js.map +1 -0
  37. package/dist/providers/core/api/provider-types.d.ts +2 -0
  38. package/dist/providers/core/api/provider-types.js.map +1 -1
  39. package/dist/providers/core/runtime/http-request-executor.d.ts +2 -0
  40. package/dist/providers/core/runtime/http-request-executor.js +39 -40
  41. package/dist/providers/core/runtime/http-request-executor.js.map +1 -1
  42. package/dist/providers/core/runtime/http-transport-provider.d.ts +5 -0
  43. package/dist/providers/core/runtime/http-transport-provider.js +53 -6
  44. package/dist/providers/core/runtime/http-transport-provider.js.map +1 -1
  45. package/dist/providers/core/runtime/openai-responses-sdk-transport.d.ts +7 -0
  46. package/dist/providers/core/runtime/openai-responses-sdk-transport.js +142 -0
  47. package/dist/providers/core/runtime/openai-responses-sdk-transport.js.map +1 -0
  48. package/dist/providers/core/runtime/provider-factory.js +3 -0
  49. package/dist/providers/core/runtime/provider-factory.js.map +1 -1
  50. package/dist/providers/core/runtime/provider-request-executor-deps-factory.d.ts +2 -1
  51. package/dist/providers/core/runtime/provider-request-executor-deps-factory.js +1 -0
  52. package/dist/providers/core/runtime/provider-request-executor-deps-factory.js.map +1 -1
  53. package/dist/providers/core/runtime/provider-startup-tasks.d.ts +1 -0
  54. package/dist/providers/core/runtime/provider-startup-tasks.js +12 -0
  55. package/dist/providers/core/runtime/provider-startup-tasks.js.map +1 -0
  56. package/dist/providers/core/runtime/vercel-ai-sdk/anthropic-sdk-transport.d.ts +9 -0
  57. package/dist/providers/core/runtime/vercel-ai-sdk/anthropic-sdk-transport.js +642 -0
  58. package/dist/providers/core/runtime/vercel-ai-sdk/anthropic-sdk-transport.js.map +1 -0
  59. package/dist/providers/core/runtime/vercel-ai-sdk/openai-sdk-transport.d.ts +10 -0
  60. package/dist/providers/core/runtime/vercel-ai-sdk/openai-sdk-transport.js +539 -0
  61. package/dist/providers/core/runtime/vercel-ai-sdk/openai-sdk-transport.js.map +1 -0
  62. package/dist/providers/profile/provider-profile-loader.js +12 -1
  63. package/dist/providers/profile/provider-profile-loader.js.map +1 -1
  64. package/dist/providers/profile/provider-profile.d.ts +2 -0
  65. package/dist/server/handlers/chat-handler.js +4 -2
  66. package/dist/server/handlers/chat-handler.js.map +1 -1
  67. package/dist/server/handlers/config-admin-handler.js +75 -67
  68. package/dist/server/handlers/config-admin-handler.js.map +1 -1
  69. package/dist/server/handlers/handler-response-utils.js +126 -1
  70. package/dist/server/handlers/handler-response-utils.js.map +1 -1
  71. package/dist/server/handlers/handler-utils.d.ts +1 -1
  72. package/dist/server/handlers/handler-utils.js +5 -2
  73. package/dist/server/handlers/handler-utils.js.map +1 -1
  74. package/dist/server/handlers/messages-handler.js +4 -2
  75. package/dist/server/handlers/messages-handler.js.map +1 -1
  76. package/dist/server/handlers/responses-handler.js +4 -2
  77. package/dist/server/handlers/responses-handler.js.map +1 -1
  78. package/dist/server/runtime/http-server/antigravity-startup-tasks.d.ts +30 -0
  79. package/dist/server/runtime/http-server/antigravity-startup-tasks.js +108 -0
  80. package/dist/server/runtime/http-server/antigravity-startup-tasks.js.map +1 -0
  81. package/dist/server/runtime/http-server/executor/provider-response-converter.js +5 -0
  82. package/dist/server/runtime/http-server/executor/provider-response-converter.js.map +1 -1
  83. package/dist/server/runtime/http-server/executor-response.js +7 -1
  84. package/dist/server/runtime/http-server/executor-response.js.map +1 -1
  85. package/dist/server/runtime/http-server/http-server-bootstrap.js +3 -0
  86. package/dist/server/runtime/http-server/http-server-bootstrap.js.map +1 -1
  87. package/dist/server/runtime/http-server/http-server-runtime-providers.js +3 -72
  88. package/dist/server/runtime/http-server/http-server-runtime-providers.js.map +1 -1
  89. package/dist/server/runtime/http-server/request-executor.js +19 -8
  90. package/dist/server/runtime/http-server/request-executor.js.map +1 -1
  91. package/dist/server/runtime/http-server/routes.js +185 -25
  92. package/dist/server/runtime/http-server/routes.js.map +1 -1
  93. package/dist/server/utils/finish-reason.d.ts +2 -0
  94. package/dist/server/utils/finish-reason.js +75 -0
  95. package/dist/server/utils/finish-reason.js.map +1 -0
  96. package/docs/provider-analysis.md +331 -0
  97. package/package.json +5 -2
@@ -1 +1 @@
1
- {"version":3,"file":"init-provider-catalog.js","sourceRoot":"","sources":["../../../src/cli/config/init-provider-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-provider-catalog.js","sourceRoot":"","sources":["../../../src/cli/config/init-provider-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { UnknownRecord } from '../commands/init/shared.js';
2
+ declare const OPTIONAL_POLICY_KEYS: readonly ["loadBalancing", "classifier", "health", "contextRouting", "webSearch", "execCommandGuard", "session"];
3
+ export type RoutingConfig = Record<string, unknown>;
4
+ export type PolicyOptions = Partial<Record<(typeof OPTIONAL_POLICY_KEYS)[number], Record<string, unknown>>>;
5
+ export declare function buildWeightedRoutePool(id: string, targets: string[]): Record<string, unknown>;
6
+ export declare function buildInitRouting(args: {
7
+ defaultTarget: string;
8
+ thinkingTarget?: string;
9
+ toolsTarget?: string;
10
+ webSearchTargets?: string[];
11
+ }): RoutingConfig;
12
+ export declare function buildV2ConfigObject(args: {
13
+ host: string;
14
+ port: number;
15
+ routing: RoutingConfig;
16
+ policyId?: string;
17
+ policyOptions?: PolicyOptions;
18
+ existing?: UnknownRecord;
19
+ }): UnknownRecord;
20
+ export {};
@@ -0,0 +1,150 @@
1
+ const OPTIONAL_POLICY_KEYS = [
2
+ 'loadBalancing',
3
+ 'classifier',
4
+ 'health',
5
+ 'contextRouting',
6
+ 'webSearch',
7
+ 'execCommandGuard',
8
+ 'session'
9
+ ];
10
+ const LEGACY_TOP_LEVEL_KEYS = [
11
+ 'oauthBrowser',
12
+ 'loadBalancing',
13
+ 'classifier',
14
+ 'providers',
15
+ 'routing',
16
+ 'quota',
17
+ 'session',
18
+ 'webSearch'
19
+ ];
20
+ function isRecord(value) {
21
+ return !!value && typeof value === 'object' && !Array.isArray(value);
22
+ }
23
+ function asRecord(value) {
24
+ return isRecord(value) ? value : {};
25
+ }
26
+ function cloneRecord(value) {
27
+ if (!isRecord(value)) {
28
+ return undefined;
29
+ }
30
+ return { ...value };
31
+ }
32
+ function sanitizeTargets(targets) {
33
+ const unique = new Set();
34
+ for (const target of targets) {
35
+ if (typeof target !== 'string') {
36
+ continue;
37
+ }
38
+ const trimmed = target.trim();
39
+ if (!trimmed) {
40
+ continue;
41
+ }
42
+ unique.add(trimmed);
43
+ }
44
+ return Array.from(unique);
45
+ }
46
+ export function buildWeightedRoutePool(id, targets) {
47
+ const normalizedTargets = sanitizeTargets(targets);
48
+ const weights = Object.fromEntries(normalizedTargets.map((target) => [target, 1]));
49
+ return {
50
+ id,
51
+ targets: normalizedTargets,
52
+ loadBalancing: {
53
+ strategy: 'weighted',
54
+ weights
55
+ }
56
+ };
57
+ }
58
+ export function buildInitRouting(args) {
59
+ const defaultTarget = args.defaultTarget.trim();
60
+ const thinkingTarget = (args.thinkingTarget || defaultTarget).trim();
61
+ const toolsTarget = (args.toolsTarget || defaultTarget).trim();
62
+ const routing = {
63
+ default: [buildWeightedRoutePool('primary', [defaultTarget])],
64
+ thinking: [buildWeightedRoutePool('thinking-primary', [thinkingTarget])],
65
+ tools: [buildWeightedRoutePool('tools-primary', [toolsTarget])]
66
+ };
67
+ const webSearchTargets = sanitizeTargets(args.webSearchTargets || []);
68
+ if (webSearchTargets.length > 0) {
69
+ routing.web_search = [buildWeightedRoutePool('web_search-primary', webSearchTargets)];
70
+ }
71
+ return routing;
72
+ }
73
+ function extractCurrentPolicyId(virtualRouter) {
74
+ const active = typeof virtualRouter.activeRoutingPolicyGroup === 'string'
75
+ ? virtualRouter.activeRoutingPolicyGroup.trim()
76
+ : '';
77
+ return active || 'default';
78
+ }
79
+ function extractCurrentPolicyGroup(virtualRouter, policyId) {
80
+ const groups = asRecord(virtualRouter.routingPolicyGroups);
81
+ if (isRecord(groups[policyId])) {
82
+ return asRecord(groups[policyId]);
83
+ }
84
+ const currentPolicyId = extractCurrentPolicyId(virtualRouter);
85
+ if (currentPolicyId !== policyId && isRecord(groups[currentPolicyId])) {
86
+ return asRecord(groups[currentPolicyId]);
87
+ }
88
+ const materialized = {};
89
+ for (const key of OPTIONAL_POLICY_KEYS) {
90
+ const value = cloneRecord(virtualRouter[key]);
91
+ if (value) {
92
+ materialized[key] = value;
93
+ }
94
+ }
95
+ return materialized;
96
+ }
97
+ function mergePolicyOptions(existingPolicy, explicit) {
98
+ const nextPolicy = {};
99
+ for (const key of OPTIONAL_POLICY_KEYS) {
100
+ const explicitValue = explicit ? cloneRecord(explicit[key]) : undefined;
101
+ if (explicitValue) {
102
+ nextPolicy[key] = explicitValue;
103
+ continue;
104
+ }
105
+ const existingValue = cloneRecord(existingPolicy[key]);
106
+ if (existingValue) {
107
+ nextPolicy[key] = existingValue;
108
+ }
109
+ }
110
+ return nextPolicy;
111
+ }
112
+ export function buildV2ConfigObject(args) {
113
+ const policyId = (args.policyId || 'default').trim() || 'default';
114
+ const existing = asRecord(args.existing);
115
+ const existingVirtualRouter = asRecord(existing.virtualrouter);
116
+ const existingGroups = asRecord(existingVirtualRouter.routingPolicyGroups);
117
+ const existingPolicy = extractCurrentPolicyGroup(existingVirtualRouter, policyId);
118
+ const mergedPolicyOptions = mergePolicyOptions(existingPolicy, args.policyOptions);
119
+ const nextPolicy = {
120
+ ...mergedPolicyOptions,
121
+ routing: args.routing
122
+ };
123
+ const nextGroups = {};
124
+ for (const [groupId, groupNode] of Object.entries(existingGroups)) {
125
+ if (!groupId.trim() || !isRecord(groupNode)) {
126
+ continue;
127
+ }
128
+ nextGroups[groupId] = { ...groupNode };
129
+ }
130
+ nextGroups[policyId] = nextPolicy;
131
+ const next = {
132
+ ...existing,
133
+ version: '2.0.0',
134
+ virtualrouterMode: 'v2',
135
+ httpserver: {
136
+ ...asRecord(existing.httpserver),
137
+ host: args.host,
138
+ port: args.port
139
+ },
140
+ virtualrouter: {
141
+ activeRoutingPolicyGroup: policyId,
142
+ routingPolicyGroups: nextGroups
143
+ }
144
+ };
145
+ for (const key of LEGACY_TOP_LEVEL_KEYS) {
146
+ delete next[key];
147
+ }
148
+ return next;
149
+ }
150
+ //# sourceMappingURL=init-v2-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-v2-builder.js","sourceRoot":"","sources":["../../../src/cli/config/init-v2-builder.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,9 @@ import { fetchModelsFromUpstream } from '../tools/provider-update/fetch-models.j
8
8
  import { readBlacklist, writeBlacklist } from '../tools/provider-update/blacklist.js';
9
9
  import { probeContextForModel } from '../tools/provider-update/probe-context.js';
10
10
  import { API_ENDPOINTS } from '../constants/index.js';
11
+ import { runVercelAiProviderDoctor } from '../provider-sdk/vercel-ai-doctor.js';
12
+ import { buildProviderFromTemplate, getProviderTemplates, pickProviderTemplate } from '../provider-sdk/provider-add-template.js';
13
+ import { buildRoutingHintsConfigFragment, inspectProviderConfig } from '../provider-sdk/provider-inspect.js';
11
14
  import { loadProviderConfigsV2 } from '../config/provider-v2-loader.js';
12
15
  function resolveProviderRoot(customRoot) {
13
16
  const trimmed = typeof customRoot === 'string' ? customRoot.trim() : '';
@@ -145,168 +148,19 @@ function buildProviderUpdateInputFromV2(providerId, provider) {
145
148
  const auth = normalizeAuthForProviderUpdate(provider.auth);
146
149
  return { providerId, type, baseURL, baseUrl, auth };
147
150
  }
151
+ function authTypeUsesCredentialFile(authTypeRaw) {
152
+ const authType = authTypeRaw.trim().toLowerCase();
153
+ return authType.includes('oauth') || authType.includes('cookie') || authType.includes('account');
154
+ }
155
+ function readCredentialFileFromAuthNode(authNode) {
156
+ return readString(authNode.tokenFile) || readString(authNode.cookieFile) || (Array.isArray(authNode.entries) && isRecord(authNode.entries[0]) ? readString(authNode.entries[0].tokenFile) || '' : '') || '';
157
+ }
148
158
  function normalizeModelsNode(node) {
149
159
  if (!node || typeof node !== 'object' || Array.isArray(node)) {
150
160
  return {};
151
161
  }
152
162
  return node;
153
163
  }
154
- const PROVIDER_TEMPLATES = [
155
- {
156
- id: 'glm',
157
- label: 'GLM (Zhipu coding)',
158
- providerTypeHint: 'glm',
159
- defaultBaseUrl: 'https://open.bigmodel.cn/api/coding/paas/v4',
160
- defaultModel: 'glm-4.7',
161
- defaultCompat: 'chat:glm',
162
- defaultAuthType: 'apikey'
163
- },
164
- {
165
- id: 'qwen',
166
- label: 'Qwen Code (portal.qwen.ai)',
167
- providerTypeHint: 'qwen',
168
- defaultBaseUrl: 'https://portal.qwen.ai/v1',
169
- defaultModel: 'qwen3-coder-plus',
170
- seedModels: ['qwen3-coder-plus', 'qwen3.5-plus', 'qwen3-vl-plus'],
171
- defaultCompat: 'chat:qwen',
172
- defaultAuthType: 'qwen-oauth'
173
- },
174
- {
175
- id: 'iflow',
176
- label: 'iFlow aggregator',
177
- providerTypeHint: 'iflow',
178
- defaultBaseUrl: 'https://apis.iflow.cn/v1',
179
- defaultModel: 'kimi-k2',
180
- seedModels: ['qwen3-vl-plus'],
181
- defaultCompat: 'chat:iflow',
182
- defaultAuthType: 'iflow-oauth'
183
- },
184
- {
185
- id: 'kimi',
186
- label: 'Kimi Coding',
187
- providerTypeHint: 'openai',
188
- defaultBaseUrl: 'https://api.kimi.com/coding/v1',
189
- defaultModel: 'kimi-for-coding',
190
- defaultAuthType: 'apikey'
191
- },
192
- {
193
- id: 'modelscope',
194
- label: 'ModelScope (OpenAI-compatible)',
195
- providerTypeHint: 'openai',
196
- defaultBaseUrl: 'https://api-inference.modelscope.cn/v1',
197
- defaultModel: 'Qwen/Qwen3-Coder-480B-A35B-Instruct',
198
- defaultAuthType: 'apikey'
199
- },
200
- {
201
- id: 'gemini-cli',
202
- label: 'Gemini CLI (Cloud Code Assist)',
203
- providerTypeHint: 'gemini-cli',
204
- defaultBaseUrl: 'https://cloudcode-pa.googleapis.com',
205
- defaultModel: 'gemini-2.5-flash-lite',
206
- defaultAuthType: 'gemini-cli-oauth'
207
- },
208
- {
209
- id: 'antigravity',
210
- label: 'Antigravity (Gemini CLI dev)',
211
- providerTypeHint: 'antigravity',
212
- defaultBaseUrl: 'https://cloudcode-pa.googleapis.com',
213
- defaultModel: 'gemini-2.5-flash-lite',
214
- defaultAuthType: 'gemini-cli-oauth'
215
- },
216
- {
217
- id: 'gemini',
218
- label: 'Gemini HTTP API',
219
- providerTypeHint: 'gemini',
220
- defaultBaseUrl: 'https://generativelanguage.googleapis.com/v1beta',
221
- defaultModel: 'models/gemini-2.0-flash',
222
- defaultAuthType: 'apikey'
223
- },
224
- {
225
- id: 'openai',
226
- label: 'OpenAI Chat (api.openai.com)',
227
- providerTypeHint: 'openai',
228
- defaultBaseUrl: API_ENDPOINTS.OPENAI,
229
- defaultModel: 'gpt-4.1',
230
- defaultAuthType: 'apikey'
231
- },
232
- {
233
- id: 'anthropic',
234
- label: 'Anthropic Messages (api.anthropic.com)',
235
- providerTypeHint: 'anthropic',
236
- defaultBaseUrl: API_ENDPOINTS.ANTHROPIC,
237
- defaultModel: 'claude-3.5-sonnet',
238
- defaultAuthType: 'apikey'
239
- },
240
- {
241
- id: 'responses',
242
- label: 'Responses-style aggregator (ChatGPT/Codex compatible)',
243
- providerTypeHint: 'responses',
244
- defaultAuthType: 'apikey'
245
- },
246
- {
247
- id: 'custom',
248
- label: 'Custom provider (manual configuration)',
249
- providerTypeHint: 'openai'
250
- }
251
- ];
252
- function pickTemplate(id) {
253
- const normalized = (id || '').trim().toLowerCase();
254
- if (!normalized) {
255
- return PROVIDER_TEMPLATES[0];
256
- }
257
- const found = PROVIDER_TEMPLATES.find((t) => t.id === normalized);
258
- return found ?? PROVIDER_TEMPLATES[PROVIDER_TEMPLATES.length - 1];
259
- }
260
- function buildProviderFromTemplate(providerId, tpl, baseUrl, authType, apiKeyOrPlaceholder, tokenFile, primaryModelId) {
261
- const auth = { type: authType };
262
- if (authType.toLowerCase().includes('apikey')) {
263
- if (apiKeyOrPlaceholder.trim()) {
264
- auth.apiKey = apiKeyOrPlaceholder.trim();
265
- }
266
- else {
267
- auth.apiKey = 'YOUR_API_KEY_HERE';
268
- }
269
- }
270
- else if (authType.toLowerCase().includes('oauth')) {
271
- if (tokenFile.trim()) {
272
- auth.tokenFile = tokenFile.trim();
273
- }
274
- }
275
- const models = {};
276
- const seedModels = Array.isArray(tpl.seedModels) ? tpl.seedModels : [];
277
- for (const modelId of seedModels) {
278
- const normalizedModelId = typeof modelId === 'string' ? modelId.trim() : '';
279
- if (!normalizedModelId) {
280
- continue;
281
- }
282
- models[normalizedModelId] = {
283
- supportsStreaming: true
284
- };
285
- }
286
- if (primaryModelId.trim()) {
287
- models[primaryModelId.trim()] = {
288
- supportsStreaming: true
289
- };
290
- }
291
- const provider = {
292
- id: providerId,
293
- enabled: true,
294
- type: tpl.providerTypeHint,
295
- baseURL: baseUrl,
296
- auth,
297
- models
298
- };
299
- if (tpl.defaultCompat) {
300
- provider.compatibilityProfile = tpl.defaultCompat;
301
- }
302
- if (tpl.id === 'responses') {
303
- provider.responses = {
304
- process: 'chat',
305
- streaming: 'always'
306
- };
307
- }
308
- return provider;
309
- }
310
164
  export function createProviderUpdateCommand() {
311
165
  const cmd = new Command('provider');
312
166
  // provider update (existing behavior)
@@ -606,6 +460,125 @@ export function createProviderUpdateCommand() {
606
460
  }
607
461
  console.log(`Probe results: ${JSON.stringify(results, null, 2)}`);
608
462
  });
463
+ const inspect = new Command('inspect')
464
+ .description('Show normalized provider metadata from config.v2.json plus catalog defaults')
465
+ .argument('<id>', 'Provider id to inspect (directory name under ~/.routecodex/provider)')
466
+ .option('--root <dir>', 'Override provider root directory')
467
+ .option('--json', 'Output raw JSON', false)
468
+ .option('--routing-hints', 'Include suggested routing/webSearch snippets', false)
469
+ .action(async (id, opts) => {
470
+ const providerId = (id || '').trim();
471
+ if (!providerId) {
472
+ console.error('Provider id is required');
473
+ process.exit(1);
474
+ }
475
+ const root = resolveProviderRoot(opts.root);
476
+ await ensureDir(root);
477
+ const configs = await loadProviderConfigsV2(root);
478
+ const cfg = configs[providerId];
479
+ if (!cfg) {
480
+ console.error(`No config.v2.json found for provider "${providerId}" under ${root}`);
481
+ process.exit(1);
482
+ }
483
+ const configPath = path.join(root, providerId, 'config.v2.json');
484
+ const inspection = inspectProviderConfig(cfg, { configPath, includeRoutingHints: Boolean(opts.routingHints) });
485
+ if (opts.json) {
486
+ console.log(JSON.stringify(inspection, null, 2));
487
+ return;
488
+ }
489
+ console.log(`Provider inspect: ${inspection.providerId}`);
490
+ console.log(` path: ${configPath}`);
491
+ console.log(` version: ${inspection.version}`);
492
+ console.log(` type: ${inspection.providerType}`);
493
+ if (inspection.baseURL) {
494
+ console.log(` baseURL: ${inspection.baseURL}`);
495
+ }
496
+ if (inspection.authType) {
497
+ console.log(` auth: ${inspection.authType}`);
498
+ }
499
+ if (inspection.compatibilityProfile) {
500
+ console.log(` compatibilityProfile: ${inspection.compatibilityProfile}`);
501
+ }
502
+ if (inspection.catalogId || inspection.catalogLabel) {
503
+ console.log(` catalog: ${inspection.catalogId ?? '-'}${inspection.catalogLabel ? ` (${inspection.catalogLabel})` : ''}`);
504
+ }
505
+ console.log(` defaultModel: ${inspection.defaultModel || '-'}`);
506
+ console.log(` routeTarget.default: ${inspection.routeTargets.default}`);
507
+ if (inspection.routeTargets.webSearch) {
508
+ console.log(` routeTarget.web_search: ${inspection.routeTargets.webSearch}`);
509
+ }
510
+ console.log(` models (${inspection.modelCount}): ${inspection.models.join(', ') || '-'}`);
511
+ if (inspection.sdkBinding) {
512
+ console.log(` sdkBinding: ${JSON.stringify(inspection.sdkBinding)}`);
513
+ }
514
+ if (inspection.capabilities && Object.keys(inspection.capabilities).length) {
515
+ console.log(` capabilities: ${Object.keys(inspection.capabilities).join(', ')}`);
516
+ }
517
+ if (inspection.webSearch) {
518
+ console.log(` webSearch: ${JSON.stringify(inspection.webSearch)}`);
519
+ }
520
+ if (inspection.routingHints) {
521
+ console.log(' routingHints:');
522
+ console.log(JSON.stringify(inspection.routingHints, null, 2));
523
+ console.log(' configFragment:');
524
+ console.log(JSON.stringify(buildRoutingHintsConfigFragment(inspection.routingHints), null, 2));
525
+ }
526
+ });
527
+ const doctor = new Command('doctor')
528
+ .description('Probe a provider v2 config via the Vercel AI SDK compatibility layer')
529
+ .argument('<id>', 'Provider id to probe (directory name under ~/.routecodex/provider)')
530
+ .option('--root <dir>', 'Override provider root directory')
531
+ .option('--model <id>', 'Override model id (defaults to provider.defaultModel or the first configured model)')
532
+ .option('--prompt <text>', 'Prompt to use for the text probe', 'Reply with exactly OK.')
533
+ .option('--json', 'Output raw JSON', false)
534
+ .action(async (id, opts) => {
535
+ const providerId = (id || '').trim();
536
+ if (!providerId) {
537
+ console.error('Provider id is required');
538
+ process.exit(1);
539
+ }
540
+ const root = resolveProviderRoot(opts.root);
541
+ await ensureDir(root);
542
+ const configs = await loadProviderConfigsV2(root);
543
+ const cfg = configs[providerId];
544
+ if (!cfg) {
545
+ console.error(`No config.v2.json found for provider "${providerId}" under ${root}`);
546
+ process.exit(1);
547
+ }
548
+ const providerNode = (cfg.provider ?? {});
549
+ const modelsNode = normalizeModelsNode(providerNode.models);
550
+ const inferredModel = readString(providerNode.defaultModel) || Object.keys(modelsNode)[0] || '';
551
+ const modelId = (opts.model || inferredModel).trim();
552
+ if (!modelId) {
553
+ console.error(`Provider "${providerId}" has no configured models; pass --model explicitly.`);
554
+ process.exit(1);
555
+ }
556
+ const result = await runVercelAiProviderDoctor({
557
+ providerId,
558
+ providerNode,
559
+ modelId,
560
+ prompt: opts.prompt
561
+ });
562
+ if (opts.json) {
563
+ console.log(JSON.stringify(result, null, 2));
564
+ }
565
+ else {
566
+ console.log(`Provider doctor: ${providerId}`);
567
+ console.log(` model: ${modelId}`);
568
+ console.log(` binding: ${result.binding.family}${result.binding.supported ? '' : ' (runtime-only)'}`);
569
+ if (result.baseURL) {
570
+ console.log(` baseURL: ${result.baseURL}`);
571
+ }
572
+ console.log(` status: ${result.ok ? 'ok' : 'failed'}`);
573
+ console.log(` message: ${result.message}`);
574
+ if (typeof result.text === 'string' && result.text.trim()) {
575
+ console.log(` text: ${result.text.slice(0, 200)}`);
576
+ }
577
+ }
578
+ if (!result.ok) {
579
+ process.exit(1);
580
+ }
581
+ });
609
582
  // provider list
610
583
  const list = new Command('list')
611
584
  .description('List provider v2 configs under ~/.routecodex/provider')
@@ -650,13 +623,13 @@ export function createProviderUpdateCommand() {
650
623
  });
651
624
  // provider add
652
625
  const add = new Command('add')
653
- .description('Interactively create a new provider v2 config')
654
- .option('-i, --id <id>', 'Provider id (e.g. glm, qwen, iflow, gemini-cli, antigravity, modelscope, kimi, openai)')
626
+ .description('Interactively create a new provider v2 config (guided standard protocols + managed-auth built-ins)')
627
+ .option('-i, --id <id>', 'Provider id (e.g. my-openai, qwen, iflow, gemini-cli, antigravity, deepseek-web)')
655
628
  .option('--root <dir>', 'Override provider root directory')
656
629
  .action(async (opts) => {
657
630
  let providerId = (opts.id || '').trim();
658
631
  if (!providerId) {
659
- providerId = await ask('Provider id (e.g. glm, qwen, iflow, kimi, modelscope, gemini-cli, antigravity, openai)', 'glm');
632
+ providerId = await ask('Provider id (e.g. my-openai, qwen, iflow, gemini-cli, antigravity, deepseek-web)', 'glm');
660
633
  }
661
634
  if (!providerId.trim()) {
662
635
  console.error('Provider id is required');
@@ -674,12 +647,12 @@ export function createProviderUpdateCommand() {
674
647
  return;
675
648
  }
676
649
  }
677
- console.log('Available provider templates:');
678
- for (const tpl of PROVIDER_TEMPLATES) {
650
+ console.log('Available provider templates (guided protocols + managed-auth built-ins):');
651
+ for (const tpl of getProviderTemplates()) {
679
652
  console.log(`- ${tpl.id}: ${tpl.label}`);
680
653
  }
681
- const templateIdRaw = await ask('Template id', 'glm');
682
- const tpl = pickTemplate(templateIdRaw);
654
+ const templateIdRaw = await ask('Template id', 'openai');
655
+ const tpl = pickProviderTemplate(templateIdRaw);
683
656
  const baseUrlDefault = tpl.defaultBaseUrl ?? '';
684
657
  const baseUrl = await ask('Base URL', baseUrlDefault);
685
658
  if (!baseUrl.trim()) {
@@ -687,14 +660,14 @@ export function createProviderUpdateCommand() {
687
660
  process.exit(1);
688
661
  }
689
662
  const authTypeDefault = tpl.defaultAuthType ?? 'apikey';
690
- const authType = await ask('Auth type (e.g. apikey, oauth, qwen-oauth, iflow-oauth, gemini-cli-oauth)', authTypeDefault);
663
+ const authType = await ask('Auth type (e.g. apikey, qwen-oauth, iflow-cookie, gemini-cli-oauth, antigravity-oauth, deepseek-account)', authTypeDefault);
691
664
  let apiKeyPlaceholder = '';
692
665
  let tokenFile = '';
693
666
  if (authType.toLowerCase().includes('apikey')) {
694
667
  apiKeyPlaceholder = await ask('API key (or placeholder, e.g. ${PROVIDER_API_KEY:-})', 'YOUR_API_KEY_HERE');
695
668
  }
696
- else if (authType.toLowerCase().includes('oauth')) {
697
- tokenFile = await ask('Token file path or alias (leave empty to use default)', '');
669
+ else if (authTypeUsesCredentialFile(authType)) {
670
+ tokenFile = await ask('Token/cookie file path or alias (leave empty to use default)', '');
698
671
  }
699
672
  const modelDefault = tpl.defaultModel ?? '';
700
673
  const primaryModelId = await ask('Primary model id (at least one)', modelDefault);
@@ -717,6 +690,11 @@ export function createProviderUpdateCommand() {
717
690
  }
718
691
  await fs.writeFile(v2Path, `${JSON.stringify(payload, null, 2)}\n`, 'utf8');
719
692
  console.log(`Provider "${providerId}" written to ${v2Path}`);
693
+ const inspection = inspectProviderConfig(payload, { configPath: v2Path, includeRoutingHints: true });
694
+ if (inspection.routingHints) {
695
+ console.log('Suggested config fragment for ~/.routecodex/config.json:');
696
+ console.log(JSON.stringify(buildRoutingHintsConfigFragment(inspection.routingHints), null, 2));
697
+ }
720
698
  });
721
699
  // provider change
722
700
  const change = new Command('change')
@@ -760,26 +738,36 @@ export function createProviderUpdateCommand() {
760
738
  const currentAuthType = typeof authNode.type === 'string'
761
739
  ? authNode.type
762
740
  : 'apikey';
763
- const authType = await ask('Auth type (e.g. apikey, oauth, qwen-oauth, iflow-oauth, gemini-cli-oauth)', currentAuthType);
741
+ const authType = await ask('Auth type (e.g. apikey, qwen-oauth, iflow-cookie, gemini-cli-oauth, antigravity-oauth, deepseek-account)', currentAuthType);
764
742
  authNode.type = authType;
765
743
  let apiKeyPlaceholder = typeof authNode.apiKey === 'string'
766
744
  ? String(authNode.apiKey)
767
745
  : 'YOUR_API_KEY_HERE';
768
- let tokenFile = typeof authNode.tokenFile === 'string'
769
- ? String(authNode.tokenFile)
770
- : '';
746
+ let tokenFile = readCredentialFileFromAuthNode(authNode);
771
747
  if (authType.toLowerCase().includes('apikey')) {
772
748
  apiKeyPlaceholder = await ask('API key (or placeholder, e.g. ${PROVIDER_API_KEY:-})', apiKeyPlaceholder);
773
749
  authNode.apiKey = apiKeyPlaceholder;
774
750
  delete authNode.tokenFile;
775
751
  }
776
- else if (authType.toLowerCase().includes('oauth')) {
777
- tokenFile = await ask('Token file path or alias (leave empty to use default)', tokenFile);
752
+ else if (authTypeUsesCredentialFile(authType)) {
753
+ tokenFile = await ask('Token/cookie file path or alias (leave empty to use default)', tokenFile);
778
754
  if (tokenFile.trim()) {
779
- authNode.tokenFile = tokenFile.trim();
755
+ if (authType.toLowerCase().includes('cookie')) {
756
+ authNode.cookieFile = tokenFile.trim();
757
+ delete authNode.tokenFile;
758
+ }
759
+ else if (authType.toLowerCase().includes('account') && Array.isArray(authNode.entries) && isRecord(authNode.entries?.[0])) {
760
+ (authNode.entries[0]).tokenFile = tokenFile.trim();
761
+ delete authNode.tokenFile;
762
+ }
763
+ else {
764
+ authNode.tokenFile = tokenFile.trim();
765
+ delete authNode.cookieFile;
766
+ }
780
767
  }
781
768
  else {
782
769
  delete authNode.tokenFile;
770
+ delete authNode.cookieFile;
783
771
  }
784
772
  delete authNode.apiKey;
785
773
  }
@@ -841,6 +829,8 @@ export function createProviderUpdateCommand() {
841
829
  }
842
830
  });
843
831
  cmd.addCommand(update);
832
+ cmd.addCommand(inspect);
833
+ cmd.addCommand(doctor);
844
834
  cmd.addCommand(syncModels);
845
835
  cmd.addCommand(probeContext);
846
836
  cmd.addCommand(list);