@yagr/agent 0.2.12 → 0.2.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/dist/agent.d.ts +16 -12
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +40 -33
- package/dist/agent.js.map +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +107 -15
- package/dist/cli.js.map +1 -1
- package/dist/config/n8n-config-service.d.ts +16 -0
- package/dist/config/n8n-config-service.d.ts.map +1 -1
- package/dist/config/n8n-config-service.js +32 -1
- package/dist/config/n8n-config-service.js.map +1 -1
- package/dist/config/yagr-config-service.d.ts +16 -0
- package/dist/config/yagr-config-service.d.ts.map +1 -1
- package/dist/config/yagr-config-service.js.map +1 -1
- package/dist/engine/engine.d.ts +15 -1
- package/dist/engine/engine.d.ts.map +1 -1
- package/dist/gateway/cli.d.ts +2 -2
- package/dist/gateway/cli.d.ts.map +1 -1
- package/dist/gateway/cli.js +6 -3
- package/dist/gateway/cli.js.map +1 -1
- package/dist/gateway/format-message.d.ts +8 -4
- package/dist/gateway/format-message.d.ts.map +1 -1
- package/dist/gateway/format-message.js +10 -5
- package/dist/gateway/format-message.js.map +1 -1
- package/dist/gateway/interactive-ui.d.ts +2 -2
- package/dist/gateway/interactive-ui.d.ts.map +1 -1
- package/dist/gateway/interactive-ui.js +87 -82
- package/dist/gateway/interactive-ui.js.map +1 -1
- package/dist/gateway/manager.d.ts +6 -6
- package/dist/gateway/manager.d.ts.map +1 -1
- package/dist/gateway/manager.js.map +1 -1
- package/dist/gateway/telegram.d.ts +5 -5
- package/dist/gateway/telegram.d.ts.map +1 -1
- package/dist/gateway/telegram.js +100 -101
- package/dist/gateway/telegram.js.map +1 -1
- package/dist/gateway/webui.d.ts +52 -5
- package/dist/gateway/webui.d.ts.map +1 -1
- package/dist/gateway/webui.js +107 -235
- package/dist/gateway/webui.js.map +1 -1
- package/dist/gateway/workflow-diagram.d.ts +19 -0
- package/dist/gateway/workflow-diagram.d.ts.map +1 -0
- package/dist/gateway/workflow-diagram.js +124 -0
- package/dist/gateway/workflow-diagram.js.map +1 -0
- package/dist/index.d.ts +9 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/llm/anthropic-account.d.ts +2 -1
- package/dist/llm/anthropic-account.d.ts.map +1 -1
- package/dist/llm/anthropic-account.js +1 -1
- package/dist/llm/anthropic-account.js.map +1 -1
- package/dist/llm/capability-resolver.d.ts +10 -0
- package/dist/llm/capability-resolver.d.ts.map +1 -0
- package/dist/llm/capability-resolver.js +93 -0
- package/dist/llm/capability-resolver.js.map +1 -0
- package/dist/llm/copilot-account.d.ts +2 -1
- package/dist/llm/copilot-account.d.ts.map +1 -1
- package/dist/llm/copilot-account.js +323 -32
- package/dist/llm/copilot-account.js.map +1 -1
- package/dist/llm/create-language-model.d.ts.map +1 -1
- package/dist/llm/create-language-model.js +12 -171
- package/dist/llm/create-language-model.js.map +1 -1
- package/dist/llm/model-capabilities.d.ts +32 -0
- package/dist/llm/model-capabilities.d.ts.map +1 -0
- package/dist/llm/model-capabilities.js +144 -0
- package/dist/llm/model-capabilities.js.map +1 -0
- package/dist/llm/openai-account.d.ts +2 -1
- package/dist/llm/openai-account.d.ts.map +1 -1
- package/dist/llm/openai-account.js +29 -17
- package/dist/llm/openai-account.js.map +1 -1
- package/dist/llm/provider-discovery.d.ts +1 -1
- package/dist/llm/provider-discovery.d.ts.map +1 -1
- package/dist/llm/provider-discovery.js +3 -34
- package/dist/llm/provider-discovery.js.map +1 -1
- package/dist/llm/provider-metadata.d.ts +27 -0
- package/dist/llm/provider-metadata.d.ts.map +1 -0
- package/dist/llm/provider-metadata.js +327 -0
- package/dist/llm/provider-metadata.js.map +1 -0
- package/dist/llm/provider-plugin.d.ts +41 -0
- package/dist/llm/provider-plugin.d.ts.map +1 -0
- package/dist/llm/provider-plugin.js +429 -0
- package/dist/llm/provider-plugin.js.map +1 -0
- package/dist/llm/provider-registry.d.ts +5 -2
- package/dist/llm/provider-registry.d.ts.map +1 -1
- package/dist/llm/provider-registry.js +7 -25
- package/dist/llm/provider-registry.js.map +1 -1
- package/dist/llm/proxy-runtime.d.ts.map +1 -1
- package/dist/llm/proxy-runtime.js +16 -63
- package/dist/llm/proxy-runtime.js.map +1 -1
- package/dist/llm/test-model-policy.d.ts.map +1 -1
- package/dist/llm/test-model-policy.js +8 -10
- package/dist/llm/test-model-policy.js.map +1 -1
- package/dist/llm/tool-schema.d.ts +4 -0
- package/dist/llm/tool-schema.d.ts.map +1 -0
- package/dist/llm/tool-schema.js +80 -0
- package/dist/llm/tool-schema.js.map +1 -0
- package/dist/prompt/build-system-prompt.d.ts +3 -3
- package/dist/prompt/build-system-prompt.d.ts.map +1 -1
- package/dist/prompt/build-system-prompt.js +2 -0
- package/dist/prompt/build-system-prompt.js.map +1 -1
- package/dist/runtime/completion-gate.d.ts +4 -0
- package/dist/runtime/completion-gate.d.ts.map +1 -1
- package/dist/runtime/completion-gate.js +13 -2
- package/dist/runtime/completion-gate.js.map +1 -1
- package/dist/runtime/context-compaction.d.ts.map +1 -1
- package/dist/runtime/context-compaction.js +6 -5
- package/dist/runtime/context-compaction.js.map +1 -1
- package/dist/runtime/outcome.d.ts +3 -0
- package/dist/runtime/outcome.d.ts.map +1 -1
- package/dist/runtime/outcome.js +40 -3
- package/dist/runtime/outcome.js.map +1 -1
- package/dist/runtime/policy-hooks.d.ts +4 -0
- package/dist/runtime/policy-hooks.d.ts.map +1 -1
- package/dist/runtime/policy-hooks.js +137 -0
- package/dist/runtime/policy-hooks.js.map +1 -1
- package/dist/runtime/required-actions.d.ts +5 -0
- package/dist/runtime/required-actions.d.ts.map +1 -1
- package/dist/runtime/required-actions.js +22 -4
- package/dist/runtime/required-actions.js.map +1 -1
- package/dist/runtime/run-engine.d.ts +6 -3
- package/dist/runtime/run-engine.d.ts.map +1 -1
- package/dist/runtime/run-engine.js +699 -97
- package/dist/runtime/run-engine.js.map +1 -1
- package/dist/runtime/tool-runtime-strategy.d.ts +29 -0
- package/dist/runtime/tool-runtime-strategy.d.ts.map +1 -0
- package/dist/runtime/tool-runtime-strategy.js +102 -0
- package/dist/runtime/tool-runtime-strategy.js.map +1 -0
- package/dist/runtime/user-visible-updates.d.ts +12 -0
- package/dist/runtime/user-visible-updates.d.ts.map +1 -0
- package/dist/runtime/user-visible-updates.js +93 -0
- package/dist/runtime/user-visible-updates.js.map +1 -0
- package/dist/setup/application-services.d.ts +199 -0
- package/dist/setup/application-services.d.ts.map +1 -0
- package/dist/setup/application-services.js +468 -0
- package/dist/setup/application-services.js.map +1 -0
- package/dist/setup/setup-wizard.d.ts +1 -0
- package/dist/setup/setup-wizard.d.ts.map +1 -1
- package/dist/setup/setup-wizard.js +11 -13
- package/dist/setup/setup-wizard.js.map +1 -1
- package/dist/setup/status.d.ts +21 -0
- package/dist/setup/status.d.ts.map +1 -0
- package/dist/setup/status.js +47 -0
- package/dist/setup/status.js.map +1 -0
- package/dist/setup.d.ts +3 -14
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +30 -256
- package/dist/setup.js.map +1 -1
- package/dist/tools/build-tools.d.ts +160 -18
- package/dist/tools/build-tools.d.ts.map +1 -1
- package/dist/tools/build-tools.js +11 -1
- package/dist/tools/build-tools.js.map +1 -1
- package/dist/tools/deploy.d.ts +2 -2
- package/dist/tools/deploy.d.ts.map +1 -1
- package/dist/tools/deploy.js.map +1 -1
- package/dist/tools/generate-workflow.d.ts +9 -9
- package/dist/tools/generate-workflow.d.ts.map +1 -1
- package/dist/tools/generate-workflow.js.map +1 -1
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-workflows.d.ts +2 -2
- package/dist/tools/list-workflows.d.ts.map +1 -1
- package/dist/tools/list-workflows.js.map +1 -1
- package/dist/tools/manage-workflow.d.ts +2 -2
- package/dist/tools/manage-workflow.d.ts.map +1 -1
- package/dist/tools/manage-workflow.js.map +1 -1
- package/dist/tools/n8nac.d.ts +121 -4
- package/dist/tools/n8nac.d.ts.map +1 -1
- package/dist/tools/n8nac.js +183 -38
- package/dist/tools/n8nac.js.map +1 -1
- package/dist/tools/node-info.d.ts +2 -2
- package/dist/tools/node-info.d.ts.map +1 -1
- package/dist/tools/node-info.js.map +1 -1
- package/dist/tools/observer.d.ts +6 -35
- package/dist/tools/observer.d.ts.map +1 -1
- package/dist/tools/observer.js +18 -0
- package/dist/tools/observer.js.map +1 -1
- package/dist/tools/present-workflow-result.d.ts +1 -0
- package/dist/tools/present-workflow-result.d.ts.map +1 -1
- package/dist/tools/present-workflow-result.js +24 -5
- package/dist/tools/present-workflow-result.js.map +1 -1
- package/dist/tools/request-required-action.d.ts +7 -3
- package/dist/tools/request-required-action.d.ts.map +1 -1
- package/dist/tools/request-required-action.js +5 -3
- package/dist/tools/request-required-action.js.map +1 -1
- package/dist/tools/search-nodes.d.ts +2 -2
- package/dist/tools/search-nodes.d.ts.map +1 -1
- package/dist/tools/search-nodes.js.map +1 -1
- package/dist/tools/search-templates.d.ts +2 -2
- package/dist/tools/search-templates.d.ts.map +1 -1
- package/dist/tools/search-templates.js.map +1 -1
- package/dist/tools/toolsets.d.ts +11 -0
- package/dist/tools/toolsets.d.ts.map +1 -0
- package/dist/tools/toolsets.js +49 -0
- package/dist/tools/toolsets.js.map +1 -0
- package/dist/tools/validate.d.ts +2 -2
- package/dist/tools/validate.d.ts.map +1 -1
- package/dist/tools/validate.js.map +1 -1
- package/dist/tools/write-workspace-file.d.ts +25 -9
- package/dist/tools/write-workspace-file.d.ts.map +1 -1
- package/dist/tools/write-workspace-file.js +27 -4
- package/dist/tools/write-workspace-file.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/webui/app.js +97 -101
- package/dist/webui/app.js.map +4 -4
- package/package.json +6 -5
- package/dist/llm/google-account.d.ts +0 -31
- package/dist/llm/google-account.d.ts.map +0 -1
- package/dist/llm/google-account.js +0 -851
- package/dist/llm/google-account.js.map +0 -1
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
import { createAnthropic } from '@ai-sdk/anthropic';
|
|
2
|
+
import { createOpenAI } from '@ai-sdk/openai';
|
|
3
|
+
import { createAnthropicAccountLanguageModel } from './anthropic-account.js';
|
|
4
|
+
import { createGitHubCopilotLanguageModel, fetchGitHubCopilotModels } from './copilot-account.js';
|
|
5
|
+
import { getOpenAiCompatibleProviderSettingsForCapability, resolveModelCapabilityProfile, } from './model-capabilities.js';
|
|
6
|
+
import { createOpenAiAccountLanguageModel, getOpenAiAccountSession } from './openai-account.js';
|
|
7
|
+
import { fetchAndCacheProviderMetadata, primeProviderModelMetadata, warmProviderMetadataCacheFromDiscovery } from './provider-metadata.js';
|
|
8
|
+
import { getDefaultBaseUrlForProvider, getProviderDefinition, isOAuthAccountProvider, } from './provider-registry.js';
|
|
9
|
+
function buildProviderPlugin(provider) {
|
|
10
|
+
const definition = getProviderDefinition(provider);
|
|
11
|
+
const plugin = {
|
|
12
|
+
id: provider,
|
|
13
|
+
definition,
|
|
14
|
+
transport: {
|
|
15
|
+
usesOpenAiCompatibleApi: definition.usesOpenAiCompatibleApi,
|
|
16
|
+
managedProxy: Boolean(definition.managedProxy),
|
|
17
|
+
oauthAccount: isOAuthAccountProvider(provider),
|
|
18
|
+
},
|
|
19
|
+
factory: {
|
|
20
|
+
createLanguageModel: buildModelFactory(provider, definition),
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
const discovery = buildProviderDiscovery(provider, definition);
|
|
24
|
+
if (discovery) {
|
|
25
|
+
plugin.discovery = discovery;
|
|
26
|
+
}
|
|
27
|
+
if (provider === 'openrouter') {
|
|
28
|
+
plugin.metadata = {
|
|
29
|
+
warmDiscoveryPayload: (payload) => {
|
|
30
|
+
warmProviderMetadataCacheFromDiscovery(provider, payload);
|
|
31
|
+
},
|
|
32
|
+
primeModelMetadata: async ({ model, apiKey, baseUrl }) => {
|
|
33
|
+
await primeProviderModelMetadata(provider, model, apiKey, baseUrl);
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
else if (definition.modelDiscovery) {
|
|
38
|
+
plugin.metadata = {
|
|
39
|
+
warmDiscoveryPayload: (payload) => {
|
|
40
|
+
warmProviderMetadataCacheFromDiscovery(provider, payload);
|
|
41
|
+
},
|
|
42
|
+
primeModelMetadata: async ({ apiKey, baseUrl }) => {
|
|
43
|
+
await fetchAndCacheProviderMetadata(provider, apiKey, baseUrl).catch(() => undefined);
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
else if (provider === 'copilot-proxy') {
|
|
48
|
+
plugin.metadata = {
|
|
49
|
+
warmDiscoveryPayload: (payload) => {
|
|
50
|
+
warmProviderMetadataCacheFromDiscovery(provider, payload);
|
|
51
|
+
},
|
|
52
|
+
primeModelMetadata: async ({ model, apiKey, baseUrl }) => {
|
|
53
|
+
await primeProviderModelMetadata(provider, model, apiKey, baseUrl).catch(() => undefined);
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
return plugin;
|
|
58
|
+
}
|
|
59
|
+
function buildModelFactory(provider, definition) {
|
|
60
|
+
if (provider === 'anthropic') {
|
|
61
|
+
return ({ model, apiKey, baseUrl }) => createAnthropic({
|
|
62
|
+
apiKey,
|
|
63
|
+
baseURL: baseUrl,
|
|
64
|
+
})(model);
|
|
65
|
+
}
|
|
66
|
+
if (provider === 'openai') {
|
|
67
|
+
return ({ model, apiKey, baseUrl }) => {
|
|
68
|
+
const headers = apiKey ? { Authorization: `Bearer ${apiKey}` } : undefined;
|
|
69
|
+
return createOpenAI({
|
|
70
|
+
apiKey,
|
|
71
|
+
baseURL: baseUrl || definition.defaultBaseUrl,
|
|
72
|
+
headers,
|
|
73
|
+
name: provider,
|
|
74
|
+
compatibility: 'compatible',
|
|
75
|
+
}).responses(model);
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
if (provider === 'openai-proxy') {
|
|
79
|
+
return ({ model, capabilityProfile }) => {
|
|
80
|
+
if (!getOpenAiAccountSession()?.accessToken) {
|
|
81
|
+
throw new Error('OpenAI account session not found. Run `yagr setup` again.');
|
|
82
|
+
}
|
|
83
|
+
return createOpenAiAccountLanguageModel(model, capabilityProfile);
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
if (provider === 'anthropic-proxy') {
|
|
87
|
+
return ({ model, apiKey, capabilityProfile }) => createAnthropicAccountLanguageModel(model, apiKey, capabilityProfile);
|
|
88
|
+
}
|
|
89
|
+
if (provider === 'copilot-proxy') {
|
|
90
|
+
return ({ model, capabilityProfile }) => createGitHubCopilotLanguageModel(model, capabilityProfile);
|
|
91
|
+
}
|
|
92
|
+
if (definition.usesOpenAiCompatibleApi) {
|
|
93
|
+
// Hoist once at factory registration time so the thought-signature map
|
|
94
|
+
// survives across all createLanguageModel() calls within a session.
|
|
95
|
+
const persistentFetch = provider === 'google'
|
|
96
|
+
? createGoogleThoughtSignatureFetch()
|
|
97
|
+
: getOpenAiFetchOverride(provider);
|
|
98
|
+
return ({ model, apiKey, baseUrl, capabilityProfile }) => {
|
|
99
|
+
const headers = apiKey ? { Authorization: `Bearer ${apiKey}` } : undefined;
|
|
100
|
+
const providerClient = createOpenAI({
|
|
101
|
+
apiKey,
|
|
102
|
+
baseURL: baseUrl || definition.defaultBaseUrl,
|
|
103
|
+
headers,
|
|
104
|
+
name: provider,
|
|
105
|
+
compatibility: 'compatible',
|
|
106
|
+
fetch: persistentFetch,
|
|
107
|
+
});
|
|
108
|
+
const providerSettings = getOpenAiCompatibleProviderSettings(provider, capabilityProfile);
|
|
109
|
+
return providerSettings ? providerClient(model, providerSettings) : providerClient(model);
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
return ({ model }) => {
|
|
113
|
+
throw new Error(`Provider ${provider} is not yet fully implemented for model ${model}`);
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function buildProviderDiscovery(provider, definition) {
|
|
117
|
+
const discovery = definition.modelDiscovery;
|
|
118
|
+
if (provider === 'copilot-proxy') {
|
|
119
|
+
return {
|
|
120
|
+
fetchAvailableModels: async ({ apiKey, baseUrl }) => {
|
|
121
|
+
if (!apiKey) {
|
|
122
|
+
return [];
|
|
123
|
+
}
|
|
124
|
+
const response = await fetch(`${baseUrl || getDefaultBaseUrlForProvider(provider)}/models`, {
|
|
125
|
+
headers: {
|
|
126
|
+
Authorization: `Bearer ${apiKey}`,
|
|
127
|
+
Accept: 'application/json',
|
|
128
|
+
'User-Agent': 'GitHubCopilotChat/0.26.7',
|
|
129
|
+
'Editor-Version': 'vscode/1.96.2',
|
|
130
|
+
'Editor-Plugin-Version': 'copilot-chat/0.26.7',
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
if (!response.ok) {
|
|
134
|
+
return [];
|
|
135
|
+
}
|
|
136
|
+
const payload = await response.json();
|
|
137
|
+
getProviderPlugin(provider).metadata?.warmDiscoveryPayload?.(payload);
|
|
138
|
+
return fetchGitHubCopilotModels(apiKey, baseUrl || getDefaultBaseUrlForProvider(provider));
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
if (!discovery) {
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
fetchAvailableModels: async ({ apiKey, baseUrl }) => {
|
|
147
|
+
const discoveryUrl = discovery.buildUrl(baseUrl || getDefaultBaseUrlForProvider(provider));
|
|
148
|
+
if (!discoveryUrl) {
|
|
149
|
+
return [];
|
|
150
|
+
}
|
|
151
|
+
const headers = {
|
|
152
|
+
'Content-Type': 'application/json',
|
|
153
|
+
};
|
|
154
|
+
if ((discovery.authMode === 'bearer-optional' || discovery.authMode === 'bearer-required') && apiKey) {
|
|
155
|
+
headers.Authorization = `Bearer ${apiKey}`;
|
|
156
|
+
}
|
|
157
|
+
if (discovery.authMode === 'x-api-key-required' && apiKey) {
|
|
158
|
+
headers['x-api-key'] = apiKey;
|
|
159
|
+
headers['anthropic-version'] = '2023-06-01';
|
|
160
|
+
}
|
|
161
|
+
if (discovery.authMode === 'bearer-required' && !apiKey) {
|
|
162
|
+
return [];
|
|
163
|
+
}
|
|
164
|
+
if (discovery.authMode === 'x-api-key-required' && !apiKey) {
|
|
165
|
+
return [];
|
|
166
|
+
}
|
|
167
|
+
try {
|
|
168
|
+
const response = await fetch(discoveryUrl, { headers });
|
|
169
|
+
if (!response.ok) {
|
|
170
|
+
throw new Error(`${response.status} ${response.statusText}`);
|
|
171
|
+
}
|
|
172
|
+
const payload = await response.json();
|
|
173
|
+
getProviderPlugin(provider).metadata?.warmDiscoveryPayload?.(payload);
|
|
174
|
+
const models = discovery.mapResponse(payload).sort((left, right) => left.localeCompare(right));
|
|
175
|
+
if (provider === 'openrouter') {
|
|
176
|
+
return models.filter((model) => resolveModelCapabilityProfile({ provider, model }).toolCalling !== 'none');
|
|
177
|
+
}
|
|
178
|
+
return models;
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
return [];
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
function getOpenAiCompatibleProviderSettings(provider, capabilityProfile) {
|
|
187
|
+
const baseSettings = getOpenAiCompatibleProviderSettingsForCapability(capabilityProfile);
|
|
188
|
+
if (provider === 'mistral') {
|
|
189
|
+
return {
|
|
190
|
+
...baseSettings,
|
|
191
|
+
simulateStreaming: true,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
return baseSettings;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Creates a per-model-instance fetch override for Google that preserves thought_signature
|
|
198
|
+
* values across multi-turn tool use. Newer Gemini models attach a thought_signature to each
|
|
199
|
+
* function call in streaming responses; the OpenAI-compatible SDK strips it when building
|
|
200
|
+
* conversation history, causing subsequent requests to fail with INVALID_ARGUMENT.
|
|
201
|
+
* This interceptor tees the response stream to capture signatures, then re-injects them
|
|
202
|
+
* into the corresponding assistant messages of subsequent requests.
|
|
203
|
+
*/
|
|
204
|
+
function createGoogleThoughtSignatureFetch() {
|
|
205
|
+
const thoughtSigs = new Map();
|
|
206
|
+
// Track extraction from the previous turn — must finish before the next request runs
|
|
207
|
+
let extractionPromise = Promise.resolve();
|
|
208
|
+
return async (input, init) => {
|
|
209
|
+
// Wait for any in-progress extraction from the previous response before
|
|
210
|
+
// checking / injecting thought signatures into this request.
|
|
211
|
+
await extractionPromise.catch(() => undefined);
|
|
212
|
+
// Optionally rewrite the request body to inject thought signatures
|
|
213
|
+
const requestInit = (thoughtSigs.size > 0 && init?.body && typeof init.body === 'string')
|
|
214
|
+
? (() => {
|
|
215
|
+
const injected = injectGoogleThoughtSignatures(init.body, thoughtSigs);
|
|
216
|
+
return injected !== init.body ? { ...init, body: injected } : init;
|
|
217
|
+
})()
|
|
218
|
+
: init;
|
|
219
|
+
const response = await fetch(input, requestInit);
|
|
220
|
+
if (!response.ok || !response.body) {
|
|
221
|
+
return response;
|
|
222
|
+
}
|
|
223
|
+
// Tee the response stream so we can extract thought_signatures for the next turn
|
|
224
|
+
const [sdkStream, captureStream] = response.body.tee();
|
|
225
|
+
extractionPromise = extractGoogleThoughtSignatures(captureStream, thoughtSigs);
|
|
226
|
+
return new Response(sdkStream, {
|
|
227
|
+
status: response.status,
|
|
228
|
+
statusText: response.statusText,
|
|
229
|
+
headers: response.headers,
|
|
230
|
+
});
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
function injectGoogleThoughtSignatures(body, sigs) {
|
|
234
|
+
try {
|
|
235
|
+
const parsed = JSON.parse(body);
|
|
236
|
+
if (!Array.isArray(parsed.messages)) {
|
|
237
|
+
return body;
|
|
238
|
+
}
|
|
239
|
+
let modified = false;
|
|
240
|
+
for (const message of parsed.messages) {
|
|
241
|
+
if (message.role !== 'assistant' || !Array.isArray(message.tool_calls)) {
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
for (const toolCall of message.tool_calls) {
|
|
245
|
+
if (toolCall.id && sigs.has(toolCall.id) && !toolCall.extra_content) {
|
|
246
|
+
toolCall.extra_content = { google: { thought_signature: sigs.get(toolCall.id) } };
|
|
247
|
+
modified = true;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return modified ? JSON.stringify(parsed) : body;
|
|
252
|
+
}
|
|
253
|
+
catch {
|
|
254
|
+
return body;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
async function extractGoogleThoughtSignatures(stream, sigs) {
|
|
258
|
+
const reader = stream.getReader();
|
|
259
|
+
const decoder = new TextDecoder();
|
|
260
|
+
let buffer = '';
|
|
261
|
+
try {
|
|
262
|
+
while (true) {
|
|
263
|
+
const { done, value } = await reader.read();
|
|
264
|
+
if (done)
|
|
265
|
+
break;
|
|
266
|
+
buffer += decoder.decode(value, { stream: true });
|
|
267
|
+
}
|
|
268
|
+
buffer += decoder.decode(); // flush
|
|
269
|
+
}
|
|
270
|
+
catch {
|
|
271
|
+
// best effort — stream read failure is non-fatal
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
// Check if the body is a plain JSON response (non-streaming doGenerate)
|
|
275
|
+
// or an SSE stream (streaming doStream with "data: {...}" lines)
|
|
276
|
+
const trimmed = buffer.trimStart();
|
|
277
|
+
if (trimmed.startsWith('{')) {
|
|
278
|
+
// Non-streaming JSON response: choices[i].message.tool_calls[j].extra_content
|
|
279
|
+
try {
|
|
280
|
+
const data = JSON.parse(trimmed);
|
|
281
|
+
for (const choice of data.choices ?? []) {
|
|
282
|
+
for (const toolCall of choice.message?.tool_calls ?? []) {
|
|
283
|
+
const sig = toolCall.extra_content?.google?.thought_signature;
|
|
284
|
+
if (sig && toolCall.id) {
|
|
285
|
+
sigs.set(toolCall.id, sig);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
catch {
|
|
291
|
+
// ignore parse errors
|
|
292
|
+
}
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
// SSE streaming response: scan "data: {...}" lines
|
|
296
|
+
// Track tool call id by index in case id and extra_content arrive in different chunks
|
|
297
|
+
const indexToId = new Map();
|
|
298
|
+
for (const line of buffer.split('\n')) {
|
|
299
|
+
if (!line.startsWith('data: ') || line === 'data: [DONE]')
|
|
300
|
+
continue;
|
|
301
|
+
try {
|
|
302
|
+
const data = JSON.parse(line.slice(6));
|
|
303
|
+
for (const choice of data.choices ?? []) {
|
|
304
|
+
for (const toolCall of choice.delta?.tool_calls ?? []) {
|
|
305
|
+
// Accumulate index→id mapping whenever an id arrives
|
|
306
|
+
if (toolCall.id !== undefined && toolCall.index !== undefined) {
|
|
307
|
+
indexToId.set(toolCall.index, toolCall.id);
|
|
308
|
+
}
|
|
309
|
+
const sig = toolCall.extra_content?.google?.thought_signature;
|
|
310
|
+
if (sig) {
|
|
311
|
+
// Resolve id from this chunk or from the accumulated index map
|
|
312
|
+
const id = toolCall.id ?? (toolCall.index !== undefined ? indexToId.get(toolCall.index) : undefined);
|
|
313
|
+
if (id) {
|
|
314
|
+
sigs.set(id, sig);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
catch {
|
|
321
|
+
// ignore malformed SSE lines
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
function getOpenAiFetchOverride(provider) {
|
|
326
|
+
if (provider !== 'mistral') {
|
|
327
|
+
return undefined;
|
|
328
|
+
}
|
|
329
|
+
return async (input, init) => {
|
|
330
|
+
const response = await fetch(input, init);
|
|
331
|
+
const contentType = response.headers.get('content-type')?.toLowerCase() || '';
|
|
332
|
+
if (contentType.includes('text/event-stream')) {
|
|
333
|
+
return response;
|
|
334
|
+
}
|
|
335
|
+
const payload = await response.clone().text().catch(() => '');
|
|
336
|
+
if (response.ok) {
|
|
337
|
+
if (payload.trim()) {
|
|
338
|
+
let parsed;
|
|
339
|
+
try {
|
|
340
|
+
parsed = JSON.parse(payload);
|
|
341
|
+
}
|
|
342
|
+
catch {
|
|
343
|
+
throw new Error(`Mistral API returned non-JSON payload: ${truncateForError(payload.replace(/\s+/g, ' ').trim(), 280)}`);
|
|
344
|
+
}
|
|
345
|
+
const normalized = normalizeMistralToolCalls(parsed);
|
|
346
|
+
if (normalized !== parsed) {
|
|
347
|
+
return new Response(JSON.stringify(normalized), {
|
|
348
|
+
status: response.status,
|
|
349
|
+
statusText: response.statusText,
|
|
350
|
+
headers: response.headers,
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return response;
|
|
355
|
+
}
|
|
356
|
+
const compact = payload.replace(/\s+/g, ' ').trim();
|
|
357
|
+
throw new Error(`Mistral API error ${response.status}: ${truncateForError(compact, 280)}`);
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
function truncateForError(value, maxLength) {
|
|
361
|
+
if (value.length <= maxLength) {
|
|
362
|
+
return value;
|
|
363
|
+
}
|
|
364
|
+
return `${value.slice(0, maxLength - 1)}…`;
|
|
365
|
+
}
|
|
366
|
+
function normalizeMistralToolCalls(payload) {
|
|
367
|
+
if (!payload || typeof payload !== 'object') {
|
|
368
|
+
return payload;
|
|
369
|
+
}
|
|
370
|
+
const root = payload;
|
|
371
|
+
if (!Array.isArray(root.choices) || root.choices.length === 0) {
|
|
372
|
+
return payload;
|
|
373
|
+
}
|
|
374
|
+
let mutated = false;
|
|
375
|
+
const choices = root.choices.map((choice) => {
|
|
376
|
+
if (!choice || typeof choice !== 'object') {
|
|
377
|
+
return choice;
|
|
378
|
+
}
|
|
379
|
+
const record = choice;
|
|
380
|
+
const toolCalls = record.message?.tool_calls;
|
|
381
|
+
if (!Array.isArray(toolCalls) || toolCalls.length === 0) {
|
|
382
|
+
return choice;
|
|
383
|
+
}
|
|
384
|
+
let choiceMutated = false;
|
|
385
|
+
const normalizedToolCalls = toolCalls.map((toolCall) => {
|
|
386
|
+
if (!toolCall || typeof toolCall !== 'object') {
|
|
387
|
+
return toolCall;
|
|
388
|
+
}
|
|
389
|
+
const callRecord = toolCall;
|
|
390
|
+
if (typeof callRecord.type === 'string' && callRecord.type.length > 0) {
|
|
391
|
+
return toolCall;
|
|
392
|
+
}
|
|
393
|
+
choiceMutated = true;
|
|
394
|
+
return {
|
|
395
|
+
...callRecord,
|
|
396
|
+
type: 'function',
|
|
397
|
+
};
|
|
398
|
+
});
|
|
399
|
+
if (!choiceMutated) {
|
|
400
|
+
return choice;
|
|
401
|
+
}
|
|
402
|
+
mutated = true;
|
|
403
|
+
return {
|
|
404
|
+
...choice,
|
|
405
|
+
message: {
|
|
406
|
+
...record.message,
|
|
407
|
+
tool_calls: normalizedToolCalls,
|
|
408
|
+
},
|
|
409
|
+
};
|
|
410
|
+
});
|
|
411
|
+
if (!mutated) {
|
|
412
|
+
return payload;
|
|
413
|
+
}
|
|
414
|
+
return {
|
|
415
|
+
...payload,
|
|
416
|
+
choices,
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
const providerPluginCache = new Map();
|
|
420
|
+
export function getProviderPlugin(provider) {
|
|
421
|
+
const cached = providerPluginCache.get(provider);
|
|
422
|
+
if (cached) {
|
|
423
|
+
return cached;
|
|
424
|
+
}
|
|
425
|
+
const plugin = buildProviderPlugin(provider);
|
|
426
|
+
providerPluginCache.set(provider, plugin);
|
|
427
|
+
return plugin;
|
|
428
|
+
}
|
|
429
|
+
//# sourceMappingURL=provider-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-plugin.js","sourceRoot":"","sources":["../../src/llm/provider-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { YagrLocalConfig } from '../config/yagr-config-service.js';
|
|
2
|
-
export type YagrModelProvider = 'anthropic' | 'openai' | 'google' | '
|
|
2
|
+
export type YagrModelProvider = 'anthropic' | 'openai' | 'google' | 'mistral' | 'openrouter' | 'openai-proxy' | 'anthropic-proxy' | 'copilot-proxy';
|
|
3
3
|
export interface YagrProviderDefinition {
|
|
4
4
|
id: YagrModelProvider;
|
|
5
5
|
displayName?: string;
|
|
@@ -7,6 +7,7 @@ export interface YagrProviderDefinition {
|
|
|
7
7
|
defaultBaseUrl?: string;
|
|
8
8
|
requiresApiKey: boolean;
|
|
9
9
|
usesOpenAiCompatibleApi: boolean;
|
|
10
|
+
supported?: boolean;
|
|
10
11
|
experimental?: boolean;
|
|
11
12
|
setupHint?: string;
|
|
12
13
|
managedProxy?: {
|
|
@@ -24,13 +25,15 @@ export interface YagrProviderDefinition {
|
|
|
24
25
|
}
|
|
25
26
|
export declare const YAGR_PROVIDER_DEFINITIONS: Record<YagrModelProvider, YagrProviderDefinition>;
|
|
26
27
|
export declare const YAGR_MODEL_PROVIDERS: readonly YagrModelProvider[];
|
|
27
|
-
export declare const
|
|
28
|
+
export declare const YAGR_SUPPORTED_MODEL_PROVIDERS: readonly YagrModelProvider[];
|
|
29
|
+
export declare const YAGR_SELECTABLE_MODEL_PROVIDERS: readonly YagrModelProvider[];
|
|
28
30
|
export declare function getProviderDefinition(provider: YagrModelProvider): YagrProviderDefinition;
|
|
29
31
|
export declare function getDefaultBaseUrlForProvider(provider: YagrModelProvider): string | undefined;
|
|
30
32
|
export declare function getDefaultModelForProvider(provider: YagrModelProvider): string;
|
|
31
33
|
export declare function providerNeedsBaseUrlInput(provider: YagrModelProvider): boolean;
|
|
32
34
|
export declare function providerRequiresApiKey(provider: YagrModelProvider): boolean;
|
|
33
35
|
export declare function isExperimentalProvider(provider: YagrModelProvider): boolean;
|
|
36
|
+
export declare function isSupportedProvider(provider: YagrModelProvider): boolean;
|
|
34
37
|
export declare function getProviderSetupHint(provider: YagrModelProvider): string | undefined;
|
|
35
38
|
export declare function getProviderDisplayName(provider: YagrModelProvider): string;
|
|
36
39
|
export declare function isOAuthAccountProvider(provider: YagrModelProvider): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-registry.d.ts","sourceRoot":"","sources":["../../src/llm/provider-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"provider-registry.d.ts","sourceRoot":"","sources":["../../src/llm/provider-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAKxE,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,cAAc,GACd,iBAAiB,GACjB,eAAe,CAAC;AAEpB,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,iBAAiB,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,uBAAuB,EAAE,OAAO,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,cAAc,CAAC,EAAE;QACf,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;QACnD,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,oBAAoB,GAAG,MAAM,CAAC;QAChF,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;KAC1D,CAAC;CACH;AAYD,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CA+FvF,CAAC;AAEF,eAAO,MAAM,oBAAoB,8BAA+E,CAAC;AACjH,eAAO,MAAM,8BAA8B,8BAE1C,CAAC;AACF,eAAO,MAAM,+BAA+B,8BAE3C,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,sBAAsB,CAEzF;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAE5F;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAE9E;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAM9E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAE3E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAE3E;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAExE;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAEpF;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAE1E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAE3E;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,MAAM,GAAG,SAAS,GAAG,OAAO,CAe1I"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { DEFAULT_COPILOT_API_BASE_URL, GITHUB_COPILOT_DEFAULT_MODEL } from './copilot-account.js';
|
|
2
2
|
import { ANTHROPIC_ACCOUNT_DEFAULT_MODEL } from './anthropic-account.js';
|
|
3
|
-
import { GEMINI_ACCOUNT_DEFAULT_MODEL } from './google-account.js';
|
|
4
3
|
import { OPENAI_ACCOUNT_BASE_URL, OPENAI_ACCOUNT_DEFAULT_MODEL } from './openai-account.js';
|
|
5
4
|
const MODEL_LIST_MAPPER = (data) => data.data?.map((model) => model.id) ?? [];
|
|
6
5
|
const GOOGLE_OPENAI_MODEL_LIST_MAPPER = (data) => data.data
|
|
@@ -46,19 +45,6 @@ export const YAGR_PROVIDER_DEFINITIONS = {
|
|
|
46
45
|
mapResponse: GOOGLE_OPENAI_MODEL_LIST_MAPPER,
|
|
47
46
|
},
|
|
48
47
|
},
|
|
49
|
-
groq: {
|
|
50
|
-
id: 'groq',
|
|
51
|
-
displayName: 'Groq',
|
|
52
|
-
defaultModel: 'llama-3.1-70b-versatile',
|
|
53
|
-
defaultBaseUrl: 'https://api.groq.com/openai/v1',
|
|
54
|
-
requiresApiKey: true,
|
|
55
|
-
usesOpenAiCompatibleApi: true,
|
|
56
|
-
modelDiscovery: {
|
|
57
|
-
buildUrl: () => 'https://api.groq.com/openai/v1/models',
|
|
58
|
-
authMode: 'bearer-required',
|
|
59
|
-
mapResponse: MODEL_LIST_MAPPER,
|
|
60
|
-
},
|
|
61
|
-
},
|
|
62
48
|
mistral: {
|
|
63
49
|
id: 'mistral',
|
|
64
50
|
displayName: 'Mistral',
|
|
@@ -107,14 +93,6 @@ export const YAGR_PROVIDER_DEFINITIONS = {
|
|
|
107
93
|
usesOpenAiCompatibleApi: false,
|
|
108
94
|
setupHint: 'Claude setup-token from `claude setup-token`',
|
|
109
95
|
},
|
|
110
|
-
'google-proxy': {
|
|
111
|
-
id: 'google-proxy',
|
|
112
|
-
displayName: 'Gemini',
|
|
113
|
-
defaultModel: GEMINI_ACCOUNT_DEFAULT_MODEL,
|
|
114
|
-
requiresApiKey: false,
|
|
115
|
-
usesOpenAiCompatibleApi: false,
|
|
116
|
-
setupHint: 'Gemini subscription, no API key required (unofficial, not recommended)',
|
|
117
|
-
},
|
|
118
96
|
'copilot-proxy': {
|
|
119
97
|
id: 'copilot-proxy',
|
|
120
98
|
displayName: 'GitHub',
|
|
@@ -126,7 +104,8 @@ export const YAGR_PROVIDER_DEFINITIONS = {
|
|
|
126
104
|
},
|
|
127
105
|
};
|
|
128
106
|
export const YAGR_MODEL_PROVIDERS = Object.freeze(Object.keys(YAGR_PROVIDER_DEFINITIONS));
|
|
129
|
-
export const
|
|
107
|
+
export const YAGR_SUPPORTED_MODEL_PROVIDERS = Object.freeze(YAGR_MODEL_PROVIDERS.filter((provider) => YAGR_PROVIDER_DEFINITIONS[provider].supported !== false));
|
|
108
|
+
export const YAGR_SELECTABLE_MODEL_PROVIDERS = Object.freeze(YAGR_SUPPORTED_MODEL_PROVIDERS.filter((provider) => !isOAuthAccountProvider(provider) || isSupportedProvider(provider)));
|
|
130
109
|
export function getProviderDefinition(provider) {
|
|
131
110
|
return YAGR_PROVIDER_DEFINITIONS[provider];
|
|
132
111
|
}
|
|
@@ -140,7 +119,7 @@ export function providerNeedsBaseUrlInput(provider) {
|
|
|
140
119
|
if (isOAuthAccountProvider(provider)) {
|
|
141
120
|
return false;
|
|
142
121
|
}
|
|
143
|
-
return provider.endsWith('-proxy') || provider === '
|
|
122
|
+
return provider.endsWith('-proxy') || provider === 'mistral' || provider === 'openrouter';
|
|
144
123
|
}
|
|
145
124
|
export function providerRequiresApiKey(provider) {
|
|
146
125
|
return getProviderDefinition(provider).requiresApiKey;
|
|
@@ -148,6 +127,9 @@ export function providerRequiresApiKey(provider) {
|
|
|
148
127
|
export function isExperimentalProvider(provider) {
|
|
149
128
|
return getProviderDefinition(provider).experimental === true;
|
|
150
129
|
}
|
|
130
|
+
export function isSupportedProvider(provider) {
|
|
131
|
+
return getProviderDefinition(provider).supported !== false;
|
|
132
|
+
}
|
|
151
133
|
export function getProviderSetupHint(provider) {
|
|
152
134
|
return getProviderDefinition(provider).setupHint;
|
|
153
135
|
}
|
|
@@ -155,7 +137,7 @@ export function getProviderDisplayName(provider) {
|
|
|
155
137
|
return getProviderDefinition(provider).displayName ?? provider;
|
|
156
138
|
}
|
|
157
139
|
export function isOAuthAccountProvider(provider) {
|
|
158
|
-
return provider === 'openai-proxy' || provider === 'anthropic-proxy' || provider === '
|
|
140
|
+
return provider === 'openai-proxy' || provider === 'anthropic-proxy' || provider === 'copilot-proxy';
|
|
159
141
|
}
|
|
160
142
|
export function isProviderConfigured(localConfig, getApiKey) {
|
|
161
143
|
if (!localConfig.provider || !localConfig.model) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-registry.js","sourceRoot":"","sources":["../../src/llm/provider-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"provider-registry.js","sourceRoot":"","sources":["../../src/llm/provider-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-runtime.d.ts","sourceRoot":"","sources":["../../src/llm/proxy-runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"proxy-runtime.d.ts","sourceRoot":"","sources":["../../src/llm/proxy-runtime.ts"],"names":[],"mappings":"AAqBA,OAAO,EAA+E,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAe7I,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAClD,OAAO,CAAC,4BAA4B,CAAC,CAyQvC;AA4CD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,kBAAkB,CA2BtH;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,kBAAkB,CAgBjF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,kBAAkB,CAarF;AAED,wBAAgB,wBAAwB,IAAI,kBAAkB,EAAE,CAI/D"}
|