@yagr/agent 0.2.11 → 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 +109 -17
- 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 +109 -237
- 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 -1
- package/dist/llm/provider-registry.d.ts.map +1 -1
- package/dist/llm/provider-registry.js +7 -24
- 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 +16 -18
- 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,12 +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[];
|
|
28
|
+
export declare const YAGR_SUPPORTED_MODEL_PROVIDERS: readonly YagrModelProvider[];
|
|
29
|
+
export declare const YAGR_SELECTABLE_MODEL_PROVIDERS: readonly YagrModelProvider[];
|
|
27
30
|
export declare function getProviderDefinition(provider: YagrModelProvider): YagrProviderDefinition;
|
|
28
31
|
export declare function getDefaultBaseUrlForProvider(provider: YagrModelProvider): string | undefined;
|
|
29
32
|
export declare function getDefaultModelForProvider(provider: YagrModelProvider): string;
|
|
30
33
|
export declare function providerNeedsBaseUrlInput(provider: YagrModelProvider): boolean;
|
|
31
34
|
export declare function providerRequiresApiKey(provider: YagrModelProvider): boolean;
|
|
32
35
|
export declare function isExperimentalProvider(provider: YagrModelProvider): boolean;
|
|
36
|
+
export declare function isSupportedProvider(provider: YagrModelProvider): boolean;
|
|
33
37
|
export declare function getProviderSetupHint(provider: YagrModelProvider): string | undefined;
|
|
34
38
|
export declare function getProviderDisplayName(provider: YagrModelProvider): string;
|
|
35
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,6 +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));
|
|
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)));
|
|
129
109
|
export function getProviderDefinition(provider) {
|
|
130
110
|
return YAGR_PROVIDER_DEFINITIONS[provider];
|
|
131
111
|
}
|
|
@@ -139,7 +119,7 @@ export function providerNeedsBaseUrlInput(provider) {
|
|
|
139
119
|
if (isOAuthAccountProvider(provider)) {
|
|
140
120
|
return false;
|
|
141
121
|
}
|
|
142
|
-
return provider.endsWith('-proxy') || provider === '
|
|
122
|
+
return provider.endsWith('-proxy') || provider === 'mistral' || provider === 'openrouter';
|
|
143
123
|
}
|
|
144
124
|
export function providerRequiresApiKey(provider) {
|
|
145
125
|
return getProviderDefinition(provider).requiresApiKey;
|
|
@@ -147,6 +127,9 @@ export function providerRequiresApiKey(provider) {
|
|
|
147
127
|
export function isExperimentalProvider(provider) {
|
|
148
128
|
return getProviderDefinition(provider).experimental === true;
|
|
149
129
|
}
|
|
130
|
+
export function isSupportedProvider(provider) {
|
|
131
|
+
return getProviderDefinition(provider).supported !== false;
|
|
132
|
+
}
|
|
150
133
|
export function getProviderSetupHint(provider) {
|
|
151
134
|
return getProviderDefinition(provider).setupHint;
|
|
152
135
|
}
|
|
@@ -154,7 +137,7 @@ export function getProviderDisplayName(provider) {
|
|
|
154
137
|
return getProviderDefinition(provider).displayName ?? provider;
|
|
155
138
|
}
|
|
156
139
|
export function isOAuthAccountProvider(provider) {
|
|
157
|
-
return provider === 'openai-proxy' || provider === 'anthropic-proxy' || provider === '
|
|
140
|
+
return provider === 'openai-proxy' || provider === 'anthropic-proxy' || provider === 'copilot-proxy';
|
|
158
141
|
}
|
|
159
142
|
export function isProviderConfigured(localConfig, getApiKey) {
|
|
160
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":"AACA,OAAO,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAoC5F,MAAM,iBAAiB,GAAG,CAAC,IAA6B,EAAE,EAAE,CACzD,IAAI,CAAC,IAA0C,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;AAEnF,MAAM,+BAA+B,GAAG,CAAC,IAA6B,EAAE,EAAE,CACvE,IAAI,CAAC,IAA0C;IAC9C,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;KACnD,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC9D,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;OACzC,EAAE,CAAC;AAER,MAAM,CAAC,MAAM,yBAAyB,GAAsD;IAC1F,SAAS,EAAE;QACT,EAAE,EAAE,WAAW;QACf,WAAW,EAAE,QAAQ;QACrB,YAAY,EAAE,mBAAmB;QACjC,cAAc,EAAE,IAAI;QACpB,uBAAuB,EAAE,KAAK;QAC9B,cAAc,EAAE;YACd,QAAQ,EAAE,GAAG,EAAE,CAAC,qCAAqC;YACrD,QAAQ,EAAE,oBAAoB;YAC9B,WAAW,EAAE,iBAAiB;SAC/B;KACF;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,QAAQ;QACrB,YAAY,EAAE,QAAQ;QACtB,cAAc,EAAE,IAAI;QACpB,uBAAuB,EAAE,IAAI;QAC7B,cAAc,EAAE;YACd,QAAQ,EAAE,GAAG,EAAE,CAAC,kCAAkC;YAClD,QAAQ,EAAE,iBAAiB;YAC3B,WAAW,EAAE,iBAAiB;SAC/B;KACF;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,QAAQ;QACrB,YAAY,EAAE,kBAAkB;QAChC,cAAc,EAAE,yDAAyD;QACzE,cAAc,EAAE,IAAI;QACpB,uBAAuB,EAAE,IAAI;QAC7B,cAAc,EAAE;YACd,QAAQ,EAAE,GAAG,EAAE,CAAC,gEAAgE;YAChF,QAAQ,EAAE,iBAAiB;YAC3B,WAAW,EAAE,+BAA+B;SAC7C;KACF;IACD,OAAO,EAAE;QACP,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,sBAAsB;QACpC,cAAc,EAAE,2BAA2B;QAC3C,cAAc,EAAE,IAAI;QACpB,uBAAuB,EAAE,IAAI;QAC7B,cAAc,EAAE;YACd,QAAQ,EAAE,GAAG,EAAE,CAAC,kCAAkC;YAClD,QAAQ,EAAE,iBAAiB;YAC3B,WAAW,EAAE,iBAAiB;SAC/B;KACF;IACD,UAAU,EAAE;QACV,EAAE,EAAE,YAAY;QAChB,WAAW,EAAE,YAAY;QACzB,YAAY,EAAE,6BAA6B;QAC3C,cAAc,EAAE,8BAA8B;QAC9C,cAAc,EAAE,IAAI;QACpB,uBAAuB,EAAE,IAAI;QAC7B,cAAc,EAAE;YACd,QAAQ,EAAE,GAAG,EAAE,CAAC,qCAAqC;YACrD,QAAQ,EAAE,iBAAiB;YAC3B,WAAW,EAAE,iBAAiB;SAC/B;KACF;IACD,cAAc,EAAE;QACd,EAAE,EAAE,cAAc;QAClB,WAAW,EAAE,QAAQ;QACrB,YAAY,EAAE,4BAA4B;QAC1C,cAAc,EAAE,uBAAuB;QACvC,cAAc,EAAE,KAAK;QACrB,uBAAuB,EAAE,IAAI;QAC7B,SAAS,EAAE,2CAA2C;QACtD,cAAc,EAAE;YACd,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,uBAAuB,SAAS;YACnD,QAAQ,EAAE,iBAAiB;YAC3B,WAAW,EAAE,iBAAiB;SAC/B;KACF;IACD,iBAAiB,EAAE;QACjB,EAAE,EAAE,iBAAiB;QACrB,WAAW,EAAE,QAAQ;QACrB,YAAY,EAAE,+BAA+B;QAC7C,cAAc,EAAE,KAAK;QACrB,uBAAuB,EAAE,KAAK;QAC9B,SAAS,EAAE,8CAA8C;KAC1D;IACD,eAAe,EAAE;QACf,EAAE,EAAE,eAAe;QACnB,WAAW,EAAE,QAAQ;QACrB,YAAY,EAAE,4BAA4B;QAC1C,cAAc,EAAE,4BAA4B;QAC5C,cAAc,EAAE,KAAK;QACrB,uBAAuB,EAAE,IAAI;QAC7B,SAAS,EAAE,2CAA2C;KACvD;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAwB,CAAC,CAAC;AACjH,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,CACzD,oBAAoB,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,CACnG,CAAC;AACF,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC,MAAM,CAC1D,8BAA8B,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CACxH,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,QAA2B;IAC/D,OAAO,yBAAyB,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,QAA2B;IACtE,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAA2B;IACpE,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAA2B;IACnE,IAAI,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,YAAY,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAA2B;IAChE,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAA2B;IAChE,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAA2B;IAC7D,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAA2B;IAC9D,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAA2B;IAChE,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC,WAAW,IAAI,QAAQ,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAA2B;IAChE,OAAO,QAAQ,KAAK,cAAc,IAAI,QAAQ,KAAK,iBAAiB,IAAI,QAAQ,KAAK,eAAe,CAAC;AACvG,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,WAA4B,EAAE,SAA8D;IAC/H,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,qBAAqB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,UAAU,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,yBAAyB,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC3G,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAgB;IAC/C,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,SAAS,CAAC;AACnG,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,MAAM,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAChE,CAAC"}
|
|
@@ -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"}
|