@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.
- package/dist/build-info.js +2 -2
- package/dist/cli/commands/config.js +5 -5
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/init/basic.js +30 -25
- package/dist/cli/commands/init/basic.js.map +1 -1
- package/dist/cli/commands/init/interactive.js +6 -1
- package/dist/cli/commands/init/interactive.js.map +1 -1
- package/dist/cli/commands/init/workflows.js +7 -7
- package/dist/cli/commands/init/workflows.js.map +1 -1
- package/dist/cli/commands/init.js +45 -104
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/config/bootstrap-provider-templates.d.ts +4 -0
- package/dist/cli/config/bootstrap-provider-templates.js +107 -0
- package/dist/cli/config/bootstrap-provider-templates.js.map +1 -0
- package/dist/cli/config/init-config.js +37 -102
- package/dist/cli/config/init-config.js.map +1 -1
- package/dist/cli/config/init-provider-catalog.d.ts +30 -0
- package/dist/cli/config/init-provider-catalog.js +381 -265
- package/dist/cli/config/init-provider-catalog.js.map +1 -1
- package/dist/cli/config/init-v2-builder.d.ts +20 -0
- package/dist/cli/config/init-v2-builder.js +150 -0
- package/dist/cli/config/init-v2-builder.js.map +1 -0
- package/dist/commands/provider-update.js +163 -173
- package/dist/commands/provider-update.js.map +1 -1
- package/dist/provider-sdk/provider-add-template.d.ts +17 -0
- package/dist/provider-sdk/provider-add-template.js +110 -0
- package/dist/provider-sdk/provider-add-template.js.map +1 -0
- package/dist/provider-sdk/provider-inspect.d.ts +37 -0
- package/dist/provider-sdk/provider-inspect.js +166 -0
- package/dist/provider-sdk/provider-inspect.js.map +1 -0
- package/dist/provider-sdk/provider-runtime-inference.d.ts +14 -0
- package/dist/provider-sdk/provider-runtime-inference.js +226 -0
- package/dist/provider-sdk/provider-runtime-inference.js.map +1 -0
- package/dist/provider-sdk/vercel-ai-doctor.d.ts +35 -0
- package/dist/provider-sdk/vercel-ai-doctor.js +150 -0
- package/dist/provider-sdk/vercel-ai-doctor.js.map +1 -0
- package/dist/providers/core/api/provider-types.d.ts +2 -0
- package/dist/providers/core/api/provider-types.js.map +1 -1
- package/dist/providers/core/runtime/http-request-executor.d.ts +2 -0
- package/dist/providers/core/runtime/http-request-executor.js +39 -40
- package/dist/providers/core/runtime/http-request-executor.js.map +1 -1
- package/dist/providers/core/runtime/http-transport-provider.d.ts +5 -0
- package/dist/providers/core/runtime/http-transport-provider.js +53 -6
- package/dist/providers/core/runtime/http-transport-provider.js.map +1 -1
- package/dist/providers/core/runtime/openai-responses-sdk-transport.d.ts +7 -0
- package/dist/providers/core/runtime/openai-responses-sdk-transport.js +142 -0
- package/dist/providers/core/runtime/openai-responses-sdk-transport.js.map +1 -0
- package/dist/providers/core/runtime/provider-factory.js +3 -0
- package/dist/providers/core/runtime/provider-factory.js.map +1 -1
- package/dist/providers/core/runtime/provider-request-executor-deps-factory.d.ts +2 -1
- package/dist/providers/core/runtime/provider-request-executor-deps-factory.js +1 -0
- package/dist/providers/core/runtime/provider-request-executor-deps-factory.js.map +1 -1
- package/dist/providers/core/runtime/provider-startup-tasks.d.ts +1 -0
- package/dist/providers/core/runtime/provider-startup-tasks.js +12 -0
- package/dist/providers/core/runtime/provider-startup-tasks.js.map +1 -0
- package/dist/providers/core/runtime/vercel-ai-sdk/anthropic-sdk-transport.d.ts +9 -0
- package/dist/providers/core/runtime/vercel-ai-sdk/anthropic-sdk-transport.js +642 -0
- package/dist/providers/core/runtime/vercel-ai-sdk/anthropic-sdk-transport.js.map +1 -0
- package/dist/providers/core/runtime/vercel-ai-sdk/openai-sdk-transport.d.ts +10 -0
- package/dist/providers/core/runtime/vercel-ai-sdk/openai-sdk-transport.js +539 -0
- package/dist/providers/core/runtime/vercel-ai-sdk/openai-sdk-transport.js.map +1 -0
- package/dist/providers/profile/provider-profile-loader.js +12 -1
- package/dist/providers/profile/provider-profile-loader.js.map +1 -1
- package/dist/providers/profile/provider-profile.d.ts +2 -0
- package/dist/server/handlers/chat-handler.js +4 -2
- package/dist/server/handlers/chat-handler.js.map +1 -1
- package/dist/server/handlers/config-admin-handler.js +75 -67
- package/dist/server/handlers/config-admin-handler.js.map +1 -1
- package/dist/server/handlers/handler-response-utils.js +126 -1
- package/dist/server/handlers/handler-response-utils.js.map +1 -1
- package/dist/server/handlers/handler-utils.d.ts +1 -1
- package/dist/server/handlers/handler-utils.js +5 -2
- package/dist/server/handlers/handler-utils.js.map +1 -1
- package/dist/server/handlers/messages-handler.js +4 -2
- package/dist/server/handlers/messages-handler.js.map +1 -1
- package/dist/server/handlers/responses-handler.js +4 -2
- package/dist/server/handlers/responses-handler.js.map +1 -1
- package/dist/server/runtime/http-server/antigravity-startup-tasks.d.ts +30 -0
- package/dist/server/runtime/http-server/antigravity-startup-tasks.js +108 -0
- package/dist/server/runtime/http-server/antigravity-startup-tasks.js.map +1 -0
- package/dist/server/runtime/http-server/executor/provider-response-converter.js +5 -0
- package/dist/server/runtime/http-server/executor/provider-response-converter.js.map +1 -1
- package/dist/server/runtime/http-server/executor-response.js +7 -1
- package/dist/server/runtime/http-server/executor-response.js.map +1 -1
- package/dist/server/runtime/http-server/http-server-bootstrap.js +3 -0
- package/dist/server/runtime/http-server/http-server-bootstrap.js.map +1 -1
- package/dist/server/runtime/http-server/http-server-runtime-providers.js +3 -72
- package/dist/server/runtime/http-server/http-server-runtime-providers.js.map +1 -1
- package/dist/server/runtime/http-server/request-executor.js +19 -8
- package/dist/server/runtime/http-server/request-executor.js.map +1 -1
- package/dist/server/runtime/http-server/routes.js +185 -25
- package/dist/server/runtime/http-server/routes.js.map +1 -1
- package/dist/server/utils/finish-reason.d.ts +2 -0
- package/dist/server/utils/finish-reason.js +75 -0
- package/dist/server/utils/finish-reason.js.map +1 -0
- package/docs/provider-analysis.md +331 -0
- 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":"AAEA,MAAM,oBAAoB,GAAG;IAC3B,eAAe;IACf,YAAY;IACZ,QAAQ;IACR,gBAAgB;IAChB,WAAW;IACX,kBAAkB;IAClB,SAAS;CACD,CAAC;AAEX,MAAM,qBAAqB,GAAG;IAC5B,cAAc;IACd,eAAe;IACf,YAAY;IACZ,WAAW;IACX,SAAS;IACT,OAAO;IACP,SAAS;IACT,WAAW;CACH,CAAC;AAKX,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,GAAI,KAAiC,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,eAAe,CAAC,OAAiB;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,EAAU,EAAE,OAAiB;IAClE,MAAM,iBAAiB,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,OAAO;QACL,EAAE;QACF,OAAO,EAAE,iBAAiB;QAC1B,aAAa,EAAE;YACb,QAAQ,EAAE,UAAU;YACpB,OAAO;SACR;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAKhC;IACC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAChD,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;IACrE,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/D,MAAM,OAAO,GAAkB;QAC7B,OAAO,EAAE,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QAC7D,QAAQ,EAAE,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;QACxE,KAAK,EAAE,CAAC,sBAAsB,CAAC,eAAe,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;KAChE,CAAC;IACF,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;IACtE,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,UAAU,GAAG,CAAC,sBAAsB,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,sBAAsB,CAAC,aAA4B;IAC1D,MAAM,MAAM,GAAG,OAAO,aAAa,CAAC,wBAAwB,KAAK,QAAQ;QACvE,CAAC,CAAC,aAAa,CAAC,wBAAwB,CAAC,IAAI,EAAE;QAC/C,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,MAAM,IAAI,SAAS,CAAC;AAC7B,CAAC;AAED,SAAS,yBAAyB,CAAC,aAA4B,EAAE,QAAgB;IAC/E,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC3D,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,eAAe,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAC9D,IAAI,eAAe,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;QACtE,OAAO,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,YAAY,GAAkB,EAAE,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,kBAAkB,CAAC,cAA6B,EAAE,QAAwB;IACjF,MAAM,UAAU,GAAkB,EAAE,CAAC;IACrC,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACvC,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,IAAI,aAAa,EAAE,CAAC;YAClB,UAAU,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;YAChC,SAAS;QACX,CAAC;QACD,MAAM,aAAa,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,IAAI,aAAa,EAAE,CAAC;YAClB,UAAU,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;QAClC,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAOnC;IACC,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;IAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,qBAAqB,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC/D,MAAM,cAAc,GAAG,QAAQ,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAG,yBAAyB,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;IAClF,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACnF,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB;QACtB,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC;IACF,MAAM,UAAU,GAAkB,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,SAAS;QACX,CAAC;QACD,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAI,SAAqC,EAAE,CAAC;IACtE,CAAC;IACD,UAAU,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;IAElC,MAAM,IAAI,GAAkB;QAC1B,GAAG,QAAQ;QACX,OAAO,EAAE,OAAO;QAChB,iBAAiB,EAAE,IAAI;QACvB,UAAU,EAAE;YACV,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;YAChC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB;QACD,aAAa,EAAE;YACb,wBAAwB,EAAE,QAAQ;YAClC,mBAAmB,EAAE,UAAU;SAChC;KACF,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -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.
|
|
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.
|
|
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
|
|
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', '
|
|
682
|
-
const tpl =
|
|
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,
|
|
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
|
|
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,
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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);
|