@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.
Files changed (212) hide show
  1. package/dist/agent.d.ts +16 -12
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +40 -33
  4. package/dist/agent.js.map +1 -1
  5. package/dist/cli.d.ts +1 -0
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +109 -17
  8. package/dist/cli.js.map +1 -1
  9. package/dist/config/n8n-config-service.d.ts +16 -0
  10. package/dist/config/n8n-config-service.d.ts.map +1 -1
  11. package/dist/config/n8n-config-service.js +32 -1
  12. package/dist/config/n8n-config-service.js.map +1 -1
  13. package/dist/config/yagr-config-service.d.ts +16 -0
  14. package/dist/config/yagr-config-service.d.ts.map +1 -1
  15. package/dist/config/yagr-config-service.js.map +1 -1
  16. package/dist/engine/engine.d.ts +15 -1
  17. package/dist/engine/engine.d.ts.map +1 -1
  18. package/dist/gateway/cli.d.ts +2 -2
  19. package/dist/gateway/cli.d.ts.map +1 -1
  20. package/dist/gateway/cli.js +6 -3
  21. package/dist/gateway/cli.js.map +1 -1
  22. package/dist/gateway/format-message.d.ts +8 -4
  23. package/dist/gateway/format-message.d.ts.map +1 -1
  24. package/dist/gateway/format-message.js +10 -5
  25. package/dist/gateway/format-message.js.map +1 -1
  26. package/dist/gateway/interactive-ui.d.ts +2 -2
  27. package/dist/gateway/interactive-ui.d.ts.map +1 -1
  28. package/dist/gateway/interactive-ui.js +87 -82
  29. package/dist/gateway/interactive-ui.js.map +1 -1
  30. package/dist/gateway/manager.d.ts +6 -6
  31. package/dist/gateway/manager.d.ts.map +1 -1
  32. package/dist/gateway/manager.js.map +1 -1
  33. package/dist/gateway/telegram.d.ts +5 -5
  34. package/dist/gateway/telegram.d.ts.map +1 -1
  35. package/dist/gateway/telegram.js +100 -101
  36. package/dist/gateway/telegram.js.map +1 -1
  37. package/dist/gateway/webui.d.ts +52 -5
  38. package/dist/gateway/webui.d.ts.map +1 -1
  39. package/dist/gateway/webui.js +109 -237
  40. package/dist/gateway/webui.js.map +1 -1
  41. package/dist/gateway/workflow-diagram.d.ts +19 -0
  42. package/dist/gateway/workflow-diagram.d.ts.map +1 -0
  43. package/dist/gateway/workflow-diagram.js +124 -0
  44. package/dist/gateway/workflow-diagram.js.map +1 -0
  45. package/dist/index.d.ts +9 -2
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +6 -1
  48. package/dist/index.js.map +1 -1
  49. package/dist/llm/anthropic-account.d.ts +2 -1
  50. package/dist/llm/anthropic-account.d.ts.map +1 -1
  51. package/dist/llm/anthropic-account.js +1 -1
  52. package/dist/llm/anthropic-account.js.map +1 -1
  53. package/dist/llm/capability-resolver.d.ts +10 -0
  54. package/dist/llm/capability-resolver.d.ts.map +1 -0
  55. package/dist/llm/capability-resolver.js +93 -0
  56. package/dist/llm/capability-resolver.js.map +1 -0
  57. package/dist/llm/copilot-account.d.ts +2 -1
  58. package/dist/llm/copilot-account.d.ts.map +1 -1
  59. package/dist/llm/copilot-account.js +323 -32
  60. package/dist/llm/copilot-account.js.map +1 -1
  61. package/dist/llm/create-language-model.d.ts.map +1 -1
  62. package/dist/llm/create-language-model.js +12 -171
  63. package/dist/llm/create-language-model.js.map +1 -1
  64. package/dist/llm/model-capabilities.d.ts +32 -0
  65. package/dist/llm/model-capabilities.d.ts.map +1 -0
  66. package/dist/llm/model-capabilities.js +144 -0
  67. package/dist/llm/model-capabilities.js.map +1 -0
  68. package/dist/llm/openai-account.d.ts +2 -1
  69. package/dist/llm/openai-account.d.ts.map +1 -1
  70. package/dist/llm/openai-account.js +29 -17
  71. package/dist/llm/openai-account.js.map +1 -1
  72. package/dist/llm/provider-discovery.d.ts +1 -1
  73. package/dist/llm/provider-discovery.d.ts.map +1 -1
  74. package/dist/llm/provider-discovery.js +3 -34
  75. package/dist/llm/provider-discovery.js.map +1 -1
  76. package/dist/llm/provider-metadata.d.ts +27 -0
  77. package/dist/llm/provider-metadata.d.ts.map +1 -0
  78. package/dist/llm/provider-metadata.js +327 -0
  79. package/dist/llm/provider-metadata.js.map +1 -0
  80. package/dist/llm/provider-plugin.d.ts +41 -0
  81. package/dist/llm/provider-plugin.d.ts.map +1 -0
  82. package/dist/llm/provider-plugin.js +429 -0
  83. package/dist/llm/provider-plugin.js.map +1 -0
  84. package/dist/llm/provider-registry.d.ts +5 -1
  85. package/dist/llm/provider-registry.d.ts.map +1 -1
  86. package/dist/llm/provider-registry.js +7 -24
  87. package/dist/llm/provider-registry.js.map +1 -1
  88. package/dist/llm/proxy-runtime.d.ts.map +1 -1
  89. package/dist/llm/proxy-runtime.js +16 -63
  90. package/dist/llm/proxy-runtime.js.map +1 -1
  91. package/dist/llm/test-model-policy.d.ts.map +1 -1
  92. package/dist/llm/test-model-policy.js +8 -10
  93. package/dist/llm/test-model-policy.js.map +1 -1
  94. package/dist/llm/tool-schema.d.ts +4 -0
  95. package/dist/llm/tool-schema.d.ts.map +1 -0
  96. package/dist/llm/tool-schema.js +80 -0
  97. package/dist/llm/tool-schema.js.map +1 -0
  98. package/dist/prompt/build-system-prompt.d.ts +3 -3
  99. package/dist/prompt/build-system-prompt.d.ts.map +1 -1
  100. package/dist/prompt/build-system-prompt.js +2 -0
  101. package/dist/prompt/build-system-prompt.js.map +1 -1
  102. package/dist/runtime/completion-gate.d.ts +4 -0
  103. package/dist/runtime/completion-gate.d.ts.map +1 -1
  104. package/dist/runtime/completion-gate.js +13 -2
  105. package/dist/runtime/completion-gate.js.map +1 -1
  106. package/dist/runtime/context-compaction.d.ts.map +1 -1
  107. package/dist/runtime/context-compaction.js +6 -5
  108. package/dist/runtime/context-compaction.js.map +1 -1
  109. package/dist/runtime/outcome.d.ts +3 -0
  110. package/dist/runtime/outcome.d.ts.map +1 -1
  111. package/dist/runtime/outcome.js +40 -3
  112. package/dist/runtime/outcome.js.map +1 -1
  113. package/dist/runtime/policy-hooks.d.ts +4 -0
  114. package/dist/runtime/policy-hooks.d.ts.map +1 -1
  115. package/dist/runtime/policy-hooks.js +137 -0
  116. package/dist/runtime/policy-hooks.js.map +1 -1
  117. package/dist/runtime/required-actions.d.ts +5 -0
  118. package/dist/runtime/required-actions.d.ts.map +1 -1
  119. package/dist/runtime/required-actions.js +22 -4
  120. package/dist/runtime/required-actions.js.map +1 -1
  121. package/dist/runtime/run-engine.d.ts +6 -3
  122. package/dist/runtime/run-engine.d.ts.map +1 -1
  123. package/dist/runtime/run-engine.js +699 -97
  124. package/dist/runtime/run-engine.js.map +1 -1
  125. package/dist/runtime/tool-runtime-strategy.d.ts +29 -0
  126. package/dist/runtime/tool-runtime-strategy.d.ts.map +1 -0
  127. package/dist/runtime/tool-runtime-strategy.js +102 -0
  128. package/dist/runtime/tool-runtime-strategy.js.map +1 -0
  129. package/dist/runtime/user-visible-updates.d.ts +12 -0
  130. package/dist/runtime/user-visible-updates.d.ts.map +1 -0
  131. package/dist/runtime/user-visible-updates.js +93 -0
  132. package/dist/runtime/user-visible-updates.js.map +1 -0
  133. package/dist/setup/application-services.d.ts +199 -0
  134. package/dist/setup/application-services.d.ts.map +1 -0
  135. package/dist/setup/application-services.js +468 -0
  136. package/dist/setup/application-services.js.map +1 -0
  137. package/dist/setup/setup-wizard.d.ts +1 -0
  138. package/dist/setup/setup-wizard.d.ts.map +1 -1
  139. package/dist/setup/setup-wizard.js +16 -18
  140. package/dist/setup/setup-wizard.js.map +1 -1
  141. package/dist/setup/status.d.ts +21 -0
  142. package/dist/setup/status.d.ts.map +1 -0
  143. package/dist/setup/status.js +47 -0
  144. package/dist/setup/status.js.map +1 -0
  145. package/dist/setup.d.ts +3 -14
  146. package/dist/setup.d.ts.map +1 -1
  147. package/dist/setup.js +30 -256
  148. package/dist/setup.js.map +1 -1
  149. package/dist/tools/build-tools.d.ts +160 -18
  150. package/dist/tools/build-tools.d.ts.map +1 -1
  151. package/dist/tools/build-tools.js +11 -1
  152. package/dist/tools/build-tools.js.map +1 -1
  153. package/dist/tools/deploy.d.ts +2 -2
  154. package/dist/tools/deploy.d.ts.map +1 -1
  155. package/dist/tools/deploy.js.map +1 -1
  156. package/dist/tools/generate-workflow.d.ts +9 -9
  157. package/dist/tools/generate-workflow.d.ts.map +1 -1
  158. package/dist/tools/generate-workflow.js.map +1 -1
  159. package/dist/tools/index.d.ts +1 -1
  160. package/dist/tools/index.d.ts.map +1 -1
  161. package/dist/tools/index.js.map +1 -1
  162. package/dist/tools/list-workflows.d.ts +2 -2
  163. package/dist/tools/list-workflows.d.ts.map +1 -1
  164. package/dist/tools/list-workflows.js.map +1 -1
  165. package/dist/tools/manage-workflow.d.ts +2 -2
  166. package/dist/tools/manage-workflow.d.ts.map +1 -1
  167. package/dist/tools/manage-workflow.js.map +1 -1
  168. package/dist/tools/n8nac.d.ts +121 -4
  169. package/dist/tools/n8nac.d.ts.map +1 -1
  170. package/dist/tools/n8nac.js +183 -38
  171. package/dist/tools/n8nac.js.map +1 -1
  172. package/dist/tools/node-info.d.ts +2 -2
  173. package/dist/tools/node-info.d.ts.map +1 -1
  174. package/dist/tools/node-info.js.map +1 -1
  175. package/dist/tools/observer.d.ts +6 -35
  176. package/dist/tools/observer.d.ts.map +1 -1
  177. package/dist/tools/observer.js +18 -0
  178. package/dist/tools/observer.js.map +1 -1
  179. package/dist/tools/present-workflow-result.d.ts +1 -0
  180. package/dist/tools/present-workflow-result.d.ts.map +1 -1
  181. package/dist/tools/present-workflow-result.js +24 -5
  182. package/dist/tools/present-workflow-result.js.map +1 -1
  183. package/dist/tools/request-required-action.d.ts +7 -3
  184. package/dist/tools/request-required-action.d.ts.map +1 -1
  185. package/dist/tools/request-required-action.js +5 -3
  186. package/dist/tools/request-required-action.js.map +1 -1
  187. package/dist/tools/search-nodes.d.ts +2 -2
  188. package/dist/tools/search-nodes.d.ts.map +1 -1
  189. package/dist/tools/search-nodes.js.map +1 -1
  190. package/dist/tools/search-templates.d.ts +2 -2
  191. package/dist/tools/search-templates.d.ts.map +1 -1
  192. package/dist/tools/search-templates.js.map +1 -1
  193. package/dist/tools/toolsets.d.ts +11 -0
  194. package/dist/tools/toolsets.d.ts.map +1 -0
  195. package/dist/tools/toolsets.js +49 -0
  196. package/dist/tools/toolsets.js.map +1 -0
  197. package/dist/tools/validate.d.ts +2 -2
  198. package/dist/tools/validate.d.ts.map +1 -1
  199. package/dist/tools/validate.js.map +1 -1
  200. package/dist/tools/write-workspace-file.d.ts +25 -9
  201. package/dist/tools/write-workspace-file.d.ts.map +1 -1
  202. package/dist/tools/write-workspace-file.js +27 -4
  203. package/dist/tools/write-workspace-file.js.map +1 -1
  204. package/dist/types.d.ts +1 -0
  205. package/dist/types.d.ts.map +1 -1
  206. package/dist/webui/app.js +97 -101
  207. package/dist/webui/app.js.map +4 -4
  208. package/package.json +6 -5
  209. package/dist/llm/google-account.d.ts +0 -31
  210. package/dist/llm/google-account.d.ts.map +0 -1
  211. package/dist/llm/google-account.js +0 -851
  212. package/dist/llm/google-account.js.map +0 -1
@@ -1,11 +1,7 @@
1
- import { createAnthropic } from '@ai-sdk/anthropic';
2
- import { createOpenAI } from '@ai-sdk/openai';
3
1
  import { YagrConfigService } from '../config/yagr-config-service.js';
4
- import { createAnthropicAccountLanguageModel } from './anthropic-account.js';
5
- import { createGitHubCopilotLanguageModel } from './copilot-account.js';
6
- import { createGeminiAccountLanguageModel } from './google-account.js';
7
- import { createOpenAiAccountLanguageModel, getOpenAiAccountSession } from './openai-account.js';
8
- import { getDefaultBaseUrlForProvider, getDefaultModelForProvider, getProviderDefinition, YAGR_MODEL_PROVIDERS, } from './provider-registry.js';
2
+ import { resolveModelCapabilityProfile } from './model-capabilities.js';
3
+ import { getDefaultBaseUrlForProvider, getDefaultModelForProvider, YAGR_MODEL_PROVIDERS, } from './provider-registry.js';
4
+ import { getProviderPlugin } from './provider-plugin.js';
9
5
  const DEFAULT_ANTHROPIC_MODEL = 'claude-3-5-sonnet-latest';
10
6
  const DEFAULT_OPENAI_MODEL = 'gpt-4o';
11
7
  const DEFAULT_RESERVED_OUTPUT_TOKENS = 8_192;
@@ -26,10 +22,10 @@ function inferContextWindowTokens(provider, modelName) {
26
22
  }
27
23
  return 128_000;
28
24
  }
29
- if (provider === 'google' || provider === 'google-proxy') {
25
+ if (provider === 'google') {
30
26
  return 1_000_000;
31
27
  }
32
- if (provider === 'groq' || provider === 'mistral' || provider === 'copilot-proxy') {
28
+ if (provider === 'mistral' || provider === 'copilot-proxy') {
33
29
  return 128_000;
34
30
  }
35
31
  return 128_000;
@@ -85,168 +81,14 @@ export function resolveLanguageModelConfig(config = {}, configStore = new YagrCo
85
81
  export function createLanguageModel(config = {}) {
86
82
  const resolvedConfig = resolveLanguageModelConfig(config);
87
83
  const { provider, model: modelName, apiKey, baseUrl: baseURL } = resolvedConfig;
88
- const definition = getProviderDefinition(provider);
89
- const sessionApiKey = provider === 'openai-proxy' ? getOpenAiAccountSession()?.accessToken : undefined;
90
- const resolvedApiKey = apiKey || sessionApiKey;
91
- const headers = resolvedApiKey ? { Authorization: `Bearer ${resolvedApiKey}` } : undefined;
92
- if (provider === 'anthropic') {
93
- return createAnthropic({
94
- apiKey: resolvedApiKey,
95
- baseURL,
96
- })(modelName);
97
- }
98
- if (provider === 'openai') {
99
- const openaiProvider = createOpenAI({
100
- apiKey: resolvedApiKey,
101
- baseURL: baseURL || definition.defaultBaseUrl,
102
- headers,
103
- name: provider,
104
- compatibility: 'compatible',
105
- });
106
- // SSOT for direct OpenAI API-key provider:
107
- // route all text generation through the Responses API.
108
- return openaiProvider.responses(modelName);
109
- }
110
- if (provider === 'openai-proxy') {
111
- if (!resolvedApiKey) {
112
- throw new Error('OpenAI account session not found. Run `yagr setup` again.');
113
- }
114
- return createOpenAiAccountLanguageModel(modelName);
115
- }
116
- if (provider === 'anthropic-proxy') {
117
- return createAnthropicAccountLanguageModel(modelName, resolvedApiKey);
118
- }
119
- if (provider === 'google-proxy') {
120
- return createGeminiAccountLanguageModel(modelName);
121
- }
122
- if (provider === 'copilot-proxy') {
123
- return createGitHubCopilotLanguageModel(modelName);
124
- }
125
- if (definition.usesOpenAiCompatibleApi) {
126
- const providerClient = createOpenAI({
127
- apiKey: resolvedApiKey,
128
- baseURL: baseURL || definition.defaultBaseUrl,
129
- headers,
130
- name: provider,
131
- compatibility: getOpenAiCompatibilityMode(provider),
132
- fetch: getOpenAiFetchOverride(provider),
133
- });
134
- const providerSettings = getOpenAiCompatibleProviderSettings(provider);
135
- return providerSettings
136
- ? providerClient(modelName, providerSettings)
137
- : providerClient(modelName);
138
- }
139
- throw new Error(`Provider ${provider} is not yet fully implemented in createLanguageModel`);
140
- }
141
- function getOpenAiCompatibilityMode(provider) {
142
- return 'compatible';
143
- }
144
- function getOpenAiFetchOverride(provider) {
145
- if (provider !== 'mistral') {
146
- return undefined;
147
- }
148
- return async (input, init) => {
149
- const response = await fetch(input, init);
150
- const contentType = response.headers.get('content-type')?.toLowerCase() || '';
151
- if (contentType.includes('text/event-stream')) {
152
- return response;
153
- }
154
- const payload = await response.clone().text().catch(() => '');
155
- if (response.ok) {
156
- if (payload.trim()) {
157
- let parsed;
158
- try {
159
- parsed = JSON.parse(payload);
160
- }
161
- catch {
162
- throw new Error(`Mistral API returned non-JSON payload: ${truncateForError(payload.replace(/\s+/g, ' ').trim(), 280)}`);
163
- }
164
- const normalized = normalizeMistralToolCalls(parsed);
165
- if (normalized !== parsed) {
166
- return new Response(JSON.stringify(normalized), {
167
- status: response.status,
168
- statusText: response.statusText,
169
- headers: response.headers,
170
- });
171
- }
172
- }
173
- return response;
174
- }
175
- const compact = payload.replace(/\s+/g, ' ').trim();
176
- throw new Error(`Mistral API error ${response.status}: ${truncateForError(compact, 280)}`);
177
- };
178
- }
179
- function truncateForError(value, maxLength) {
180
- if (value.length <= maxLength) {
181
- return value;
182
- }
183
- return `${value.slice(0, maxLength - 1)}…`;
184
- }
185
- function normalizeMistralToolCalls(payload) {
186
- if (!payload || typeof payload !== 'object') {
187
- return payload;
188
- }
189
- const root = payload;
190
- if (!Array.isArray(root.choices) || root.choices.length === 0) {
191
- return payload;
192
- }
193
- let mutated = false;
194
- const choices = root.choices.map((choice) => {
195
- if (!choice || typeof choice !== 'object') {
196
- return choice;
197
- }
198
- const record = choice;
199
- const toolCalls = record.message?.tool_calls;
200
- if (!Array.isArray(toolCalls) || toolCalls.length === 0) {
201
- return choice;
202
- }
203
- let choiceMutated = false;
204
- const normalizedToolCalls = toolCalls.map((toolCall) => {
205
- if (!toolCall || typeof toolCall !== 'object') {
206
- return toolCall;
207
- }
208
- const callRecord = toolCall;
209
- if (typeof callRecord.type === 'string' && callRecord.type.length > 0) {
210
- return toolCall;
211
- }
212
- choiceMutated = true;
213
- return {
214
- ...callRecord,
215
- type: 'function',
216
- };
217
- });
218
- if (!choiceMutated) {
219
- return choice;
220
- }
221
- mutated = true;
222
- return {
223
- ...choice,
224
- message: {
225
- ...record.message,
226
- tool_calls: normalizedToolCalls,
227
- },
228
- };
84
+ const capabilityProfile = resolveModelCapabilityProfile({ provider, model: modelName });
85
+ const plugin = getProviderPlugin(provider);
86
+ return plugin.factory.createLanguageModel({
87
+ model: modelName,
88
+ apiKey,
89
+ baseUrl: baseURL,
90
+ capabilityProfile,
229
91
  });
230
- if (!mutated) {
231
- return payload;
232
- }
233
- return {
234
- ...payload,
235
- choices,
236
- };
237
- }
238
- function getOpenAiCompatibleProviderSettings(provider) {
239
- if (provider === 'mistral') {
240
- return {
241
- // Reduce tool-call surface complexity for better compatibility.
242
- parallelToolCalls: false,
243
- // Mistral OpenAI-compatible endpoints can emit non-JSON fragments during tool
244
- // argument generation; disabling strict structured parsing avoids hard failures.
245
- structuredOutputs: false,
246
- simulateStreaming: true,
247
- };
248
- }
249
- return undefined;
250
92
  }
251
93
  function getApiKeyForProvider(provider, configStore) {
252
94
  const configured = configStore.getApiKey(provider);
@@ -257,7 +99,6 @@ function getApiKeyForProvider(provider, configStore) {
257
99
  openai: ['OPENAI_LLM_API_KEY', 'OPENAI_API_KEY'],
258
100
  anthropic: ['ANTHROPIC_LLM_API_KEY', 'ANTHROPIC_API_KEY'],
259
101
  google: ['GOOGLE_GENERATIVE_AI_API_KEY', 'GEMINI_API_KEY', 'GOOGLE_API_KEY', 'GEMINI_LLM_API_KEY', 'GOOGLE_LLM_API_KEY'],
260
- groq: ['GROQ_API_KEY', 'GROQ_LLM_API_KEY'],
261
102
  mistral: ['MISTRAL_API_KEY', 'MISTRAL_LLM_API_KEY'],
262
103
  openrouter: ['OPENROUTER_API_KEY', 'OPENROUTER_LLM_API_KEY'],
263
104
  };
@@ -1 +1 @@
1
- {"version":3,"file":"create-language-model.js","sourceRoot":"","sources":["../../src/llm/create-language-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-language-model.js","sourceRoot":"","sources":["../../src/llm/create-language-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { LanguageModelV1FunctionTool, LanguageModelV1ToolChoice } from '@ai-sdk/provider';
2
+ import type { YagrModelProvider } from './provider-registry.js';
3
+ export type YagrToolCallingCapability = 'native' | 'compatible' | 'none';
4
+ export interface YagrModelCapabilityProfile {
5
+ provider: YagrModelProvider;
6
+ model: string;
7
+ toolCalling: YagrToolCallingCapability;
8
+ supportsParallelToolCalls: boolean;
9
+ supportsStructuredOutputs: boolean;
10
+ supportsStreamingToolCalls: boolean;
11
+ supportsForcedToolChoice: boolean;
12
+ prefersStrictToolSchemas: boolean;
13
+ }
14
+ export type CapabilityFlags = Omit<YagrModelCapabilityProfile, 'provider' | 'model' | 'toolCalling'>;
15
+ export declare const CAPABILITY_FLAGS: Record<YagrToolCallingCapability, CapabilityFlags>;
16
+ export declare function resolveModelCapabilityProfile(input: {
17
+ provider: YagrModelProvider;
18
+ model: string;
19
+ }): YagrModelCapabilityProfile;
20
+ export declare function getProviderOptionsForCapability(profile: YagrModelCapabilityProfile): {
21
+ openai?: {
22
+ strictSchemas: boolean;
23
+ };
24
+ } | undefined;
25
+ export declare function getOpenAiCompatibleProviderSettingsForCapability(profile: YagrModelCapabilityProfile): {
26
+ parallelToolCalls?: boolean;
27
+ structuredOutputs?: boolean;
28
+ simulateStreaming?: boolean;
29
+ } | undefined;
30
+ export declare function filterFunctionToolsForCapability(tools: LanguageModelV1FunctionTool[], profile: YagrModelCapabilityProfile): LanguageModelV1FunctionTool[];
31
+ export declare function normalizeToolChoiceForCapability(toolChoice: LanguageModelV1ToolChoice | undefined, profile: YagrModelCapabilityProfile): LanguageModelV1ToolChoice | undefined;
32
+ //# sourceMappingURL=model-capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-capabilities.d.ts","sourceRoot":"","sources":["../../src/llm/model-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAE/F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAC;AAEzE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,yBAAyB,CAAC;IACvC,yBAAyB,EAAE,OAAO,CAAC;IACnC,yBAAyB,EAAE,OAAO,CAAC;IACnC,0BAA0B,EAAE,OAAO,CAAC;IACpC,wBAAwB,EAAE,OAAO,CAAC;IAClC,wBAAwB,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,0BAA0B,EAAE,UAAU,GAAG,OAAO,GAAG,aAAa,CAAC,CAAC;AAErG,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,yBAAyB,EAAE,eAAe,CAsB/E,CAAC;AA0CF,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,0BAA0B,CAkD7B;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,0BAA0B,GAAG;IAAE,MAAM,CAAC,EAAE;QAAE,aAAa,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,GAAG,SAAS,CAMxI;AAED,wBAAgB,gDAAgD,CAC9D,OAAO,EAAE,0BAA0B,GAClC;IACD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,SAAS,CAiBZ;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,2BAA2B,EAAE,EACpC,OAAO,EAAE,0BAA0B,GAClC,2BAA2B,EAAE,CAM/B;AAED,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,yBAAyB,GAAG,SAAS,EACjD,OAAO,EAAE,0BAA0B,GAClC,yBAAyB,GAAG,SAAS,CAcvC"}
@@ -0,0 +1,144 @@
1
+ import { resolveCapabilityProfileFromMetadata } from './capability-resolver.js';
2
+ export const CAPABILITY_FLAGS = {
3
+ native: {
4
+ supportsParallelToolCalls: true,
5
+ supportsStructuredOutputs: true,
6
+ supportsStreamingToolCalls: true,
7
+ supportsForcedToolChoice: true,
8
+ prefersStrictToolSchemas: false,
9
+ },
10
+ compatible: {
11
+ supportsParallelToolCalls: false,
12
+ supportsStructuredOutputs: false,
13
+ supportsStreamingToolCalls: true,
14
+ supportsForcedToolChoice: true,
15
+ prefersStrictToolSchemas: false,
16
+ },
17
+ none: {
18
+ supportsParallelToolCalls: false,
19
+ supportsStructuredOutputs: false,
20
+ supportsStreamingToolCalls: false,
21
+ supportsForcedToolChoice: false,
22
+ prefersStrictToolSchemas: false,
23
+ },
24
+ };
25
+ function buildProfile(provider, model, toolCalling, overrides = {}) {
26
+ return {
27
+ provider,
28
+ model,
29
+ toolCalling,
30
+ ...CAPABILITY_FLAGS[toolCalling],
31
+ ...overrides,
32
+ };
33
+ }
34
+ function classifyOpenRouterModel(model) {
35
+ const normalized = model.toLowerCase();
36
+ // Semantic-purpose exclusions: these identifiers describe non-LLM endpoint
37
+ // types (embeddings, rerankers, speech, moderation) that definitionally do
38
+ // not support tool calling. This is not a heuristic — the endpoint type is
39
+ // encoded in the model ID by OpenRouter convention.
40
+ if (normalized.includes('embed')
41
+ || normalized.includes('embedding')
42
+ || normalized.includes('rerank')
43
+ || normalized.includes('whisper')
44
+ || normalized.includes('tts')
45
+ || normalized.includes('moderation')) {
46
+ return 'none';
47
+ }
48
+ // When metadata is unavailable, default to compatible: tool calling is sent
49
+ // sequentially without parallel calls or structured outputs. The metadata
50
+ // path (classifyMetadataCapability) provides precise per-model classification
51
+ // whenever primeModelMetadata has been called successfully.
52
+ return 'compatible';
53
+ }
54
+ export function resolveModelCapabilityProfile(input) {
55
+ const provider = input.provider;
56
+ const model = String(input.model || '').trim();
57
+ const resolvedFromMetadata = resolveCapabilityProfileFromMetadata({ provider, model });
58
+ if (resolvedFromMetadata) {
59
+ // Apply provider-level constraints that metadata cannot determine.
60
+ // copilot-proxy uses a simulated (non-streaming) completion wrapper, so
61
+ // streaming tool calls are never truly supported regardless of model tier.
62
+ if (provider === 'copilot-proxy') {
63
+ return { ...resolvedFromMetadata, supportsStreamingToolCalls: false };
64
+ }
65
+ return resolvedFromMetadata;
66
+ }
67
+ switch (provider) {
68
+ case 'openai':
69
+ case 'anthropic':
70
+ return buildProfile(provider, model, 'native');
71
+ case 'openai-proxy':
72
+ return buildProfile(provider, model, 'compatible', {
73
+ supportsStreamingToolCalls: false,
74
+ });
75
+ case 'copilot-proxy':
76
+ return buildProfile(provider, model, 'compatible', {
77
+ supportsStructuredOutputs: false,
78
+ supportsStreamingToolCalls: false,
79
+ });
80
+ case 'google':
81
+ // Gemini models support native tool calling but their streaming API
82
+ // has a known behaviour where the model produces empty completions when
83
+ // invoked after a long multi-step inspect conversation. Using
84
+ // non-streaming (generateText) for the execute phase avoids this.
85
+ return buildProfile(provider, model, 'native', {
86
+ supportsStreamingToolCalls: false,
87
+ });
88
+ case 'mistral':
89
+ // Mistral models support function calling natively (sequential, no
90
+ // parallel calls, no structured outputs). The AI SDK Mistral provider
91
+ // requires simulateStreaming which is forced in provider-plugin.ts,
92
+ // so we keep supportsStreamingToolCalls false here.
93
+ return buildProfile(provider, model, 'compatible', {
94
+ supportsStreamingToolCalls: false,
95
+ });
96
+ case 'openrouter':
97
+ return buildProfile(provider, model, classifyOpenRouterModel(model));
98
+ case 'anthropic-proxy':
99
+ return buildProfile(provider, model, 'native');
100
+ default:
101
+ return buildProfile(provider, model, 'compatible');
102
+ }
103
+ }
104
+ export function getProviderOptionsForCapability(profile) {
105
+ if (!profile.prefersStrictToolSchemas) {
106
+ return { openai: { strictSchemas: false } };
107
+ }
108
+ return undefined;
109
+ }
110
+ export function getOpenAiCompatibleProviderSettingsForCapability(profile) {
111
+ if (profile.toolCalling === 'none') {
112
+ return {
113
+ simulateStreaming: true,
114
+ };
115
+ }
116
+ if (profile.toolCalling === 'native') {
117
+ return undefined;
118
+ }
119
+ // compatible
120
+ return {
121
+ parallelToolCalls: profile.supportsParallelToolCalls,
122
+ structuredOutputs: profile.supportsStructuredOutputs,
123
+ simulateStreaming: !profile.supportsStreamingToolCalls,
124
+ };
125
+ }
126
+ export function filterFunctionToolsForCapability(tools, profile) {
127
+ if (profile.toolCalling === 'none') {
128
+ return [];
129
+ }
130
+ return tools;
131
+ }
132
+ export function normalizeToolChoiceForCapability(toolChoice, profile) {
133
+ if (!toolChoice) {
134
+ return toolChoice;
135
+ }
136
+ if (!profile.supportsForcedToolChoice && toolChoice.type !== 'auto') {
137
+ return { type: 'auto' };
138
+ }
139
+ if (profile.toolCalling === 'none') {
140
+ return { type: 'auto' };
141
+ }
142
+ return toolChoice;
143
+ }
144
+ //# sourceMappingURL=model-capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-capabilities.js","sourceRoot":"","sources":["../../src/llm/model-capabilities.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { LanguageModelV1 } from '@ai-sdk/provider';
2
+ import { type YagrModelCapabilityProfile } from './model-capabilities.js';
2
3
  export declare const OPENAI_ACCOUNT_BASE_URL = "https://chatgpt.com/backend-api";
3
4
  export declare const OPENAI_ACCOUNT_DEFAULT_MODEL = "gpt-5.1-codex-mini";
4
5
  /** Known models served by the ChatGPT Codex backend (chatgpt.com/backend-api). */
@@ -29,5 +30,5 @@ export declare function validateOpenAiAccountRuntime(modelId?: string): Promise<
29
30
  text?: string;
30
31
  error?: string;
31
32
  }>;
32
- export declare function createOpenAiAccountLanguageModel(modelId: string): LanguageModelV1;
33
+ export declare function createOpenAiAccountLanguageModel(modelId: string, capabilityProfile?: YagrModelCapabilityProfile): LanguageModelV1;
33
34
  //# sourceMappingURL=openai-account.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai-account.d.ts","sourceRoot":"","sources":["../../src/llm/openai-account.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,eAAe,EAQhB,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,uBAAuB,oCAAoC,CAAC;AACzE,eAAO,MAAM,4BAA4B,uBAAuB,CAAC;AAQjE,kFAAkF;AAClF,eAAO,MAAM,kBAAkB,UAS9B,CAAC;AAWF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAmFD,wBAAsB,cAAc,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAiBlE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAwDvE;AAcD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,MAAM,EAAE,OAAO,CAAC;CACjB;AAID,qFAAqF;AACrF,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AA4BD,wBAAgB,uBAAuB,IAAI,oBAAoB,GAAG,SAAS,CAE1E;AAED,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAE5F;AAID;;qCAEqC;AAErC,wBAAsB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAEtF;AAID,wBAAsB,4BAA4B,CAAC,OAAO,SAA+B,GAAG,OAAO,CAAC;IAClG,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CA2BD;AAID,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAmDjF"}
1
+ {"version":3,"file":"openai-account.d.ts","sourceRoot":"","sources":["../../src/llm/openai-account.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,eAAe,EAQhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,yBAAyB,CAAC;AAGjC,eAAO,MAAM,uBAAuB,oCAAoC,CAAC;AACzE,eAAO,MAAM,4BAA4B,uBAAuB,CAAC;AAQjE,kFAAkF;AAClF,eAAO,MAAM,kBAAkB,UAS9B,CAAC;AAWF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAmFD,wBAAsB,cAAc,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAiBlE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAwDvE;AAcD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,MAAM,EAAE,OAAO,CAAC;CACjB;AAID,qFAAqF;AACrF,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AA4BD,wBAAgB,uBAAuB,IAAI,oBAAoB,GAAG,SAAS,CAE1E;AAED,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAE5F;AAID;;qCAEqC;AAErC,wBAAsB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAEtF;AAID,wBAAsB,4BAA4B,CAAC,OAAO,SAA+B,GAAG,OAAO,CAAC;IAClG,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CA2BD;AAID,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,MAAM,EACf,iBAAiB,CAAC,EAAE,0BAA0B,GAC7C,eAAe,CAoDjB"}
@@ -3,6 +3,8 @@ import http from 'node:http';
3
3
  import os from 'node:os';
4
4
  import path from 'node:path';
5
5
  import { createHash, randomBytes } from 'node:crypto';
6
+ import { filterFunctionToolsForCapability, normalizeToolChoiceForCapability, } from './model-capabilities.js';
7
+ import { normalizeFunctionToolParametersSchema } from './tool-schema.js';
6
8
  export const OPENAI_ACCOUNT_BASE_URL = 'https://chatgpt.com/backend-api';
7
9
  export const OPENAI_ACCOUNT_DEFAULT_MODEL = 'gpt-5.1-codex-mini';
8
10
  /** Endpoint path for Codex responses on the ChatGPT backend. */
@@ -220,16 +222,17 @@ export async function validateOpenAiAccountRuntime(modelId = OPENAI_ACCOUNT_DEFA
220
222
  }
221
223
  }
222
224
  // ─── Language model ────────────────────────────────────────────────────────────
223
- export function createOpenAiAccountLanguageModel(modelId) {
225
+ export function createOpenAiAccountLanguageModel(modelId, capabilityProfile) {
226
+ const profile = capabilityProfile;
224
227
  return {
225
228
  specificationVersion: 'v1',
226
229
  provider: 'openai-proxy.account',
227
230
  modelId,
228
231
  defaultObjectGenerationMode: undefined,
229
232
  supportsImageUrls: false,
230
- supportsStructuredOutputs: false,
233
+ supportsStructuredOutputs: Boolean(profile?.supportsStructuredOutputs),
231
234
  async doGenerate(options) {
232
- const execution = await runOpenAiAccountCompletion(modelId, options);
235
+ const execution = await runOpenAiAccountCompletion(modelId, options, profile);
233
236
  return {
234
237
  text: execution.text,
235
238
  finishReason: execution.finishReason,
@@ -247,7 +250,7 @@ export function createOpenAiAccountLanguageModel(modelId) {
247
250
  };
248
251
  },
249
252
  async doStream(options) {
250
- const execution = await runOpenAiAccountCompletion(modelId, options);
253
+ const execution = await runOpenAiAccountCompletion(modelId, options, profile);
251
254
  const stream = new ReadableStream({
252
255
  start(controller) {
253
256
  if (execution.text) {
@@ -273,13 +276,13 @@ export function createOpenAiAccountLanguageModel(modelId) {
273
276
  };
274
277
  }
275
278
  // ─── Inference (Codex Responses API via chatgpt.com/backend-api) ──────────────
276
- async function runOpenAiAccountCompletion(modelId, options) {
279
+ async function runOpenAiAccountCompletion(modelId, options, capabilityProfile) {
277
280
  const session = await ensureOpenAiAccountSession();
278
281
  if (!session) {
279
282
  throw new Error('OpenAI account session not found. Run `codex --login` to sign in.');
280
283
  }
281
284
  const regularMode = options.mode.type === 'regular' ? options.mode : undefined;
282
- const tools = getFunctionTools(options.mode);
285
+ const tools = getFunctionTools(options.mode, capabilityProfile);
283
286
  const warnings = buildCodexWarnings(options, tools);
284
287
  const accountId = extractChatGptAccountId(session.accessToken);
285
288
  const { instructions, input } = convertPromptToCodexInput(options.prompt);
@@ -291,8 +294,8 @@ async function runOpenAiAccountCompletion(modelId, options) {
291
294
  instructions: instructions || 'You are a helpful assistant.',
292
295
  input,
293
296
  text: { verbosity: 'medium' },
294
- ...(tools.length > 0 ? { tools: toCodexTools(tools), tool_choice: toCodexToolChoice(regularMode?.toolChoice) } : { tool_choice: 'auto' }),
295
- parallel_tool_calls: true,
297
+ ...(tools.length > 0 ? { tools: toCodexTools(tools), tool_choice: toCodexToolChoice(regularMode?.toolChoice, capabilityProfile) } : { tool_choice: 'auto' }),
298
+ parallel_tool_calls: capabilityProfile?.supportsParallelToolCalls ?? false,
296
299
  };
297
300
  const response = await fetch(`${OPENAI_ACCOUNT_BASE_URL}${CODEX_RESPONSES_PATH}`, {
298
301
  method: 'POST',
@@ -498,31 +501,40 @@ function buildCodexWarnings(options, functionTools) {
498
501
  details: 'openai-proxy currently supports only function tools on the Codex backend.',
499
502
  }));
500
503
  }
501
- function getFunctionTools(mode) {
504
+ function getFunctionTools(mode, capabilityProfile) {
502
505
  if (mode.type !== 'regular' || !Array.isArray(mode.tools) || mode.tools.length === 0) {
503
506
  return [];
504
507
  }
505
- return mode.tools.filter((tool) => tool.type === 'function');
508
+ const tools = mode.tools.filter((tool) => tool.type === 'function');
509
+ return capabilityProfile ? filterFunctionToolsForCapability(tools, capabilityProfile) : tools;
506
510
  }
507
511
  function toCodexTools(tools) {
508
512
  return tools.map((tool) => ({
509
513
  type: 'function',
510
514
  name: tool.name,
511
515
  ...(tool.description ? { description: tool.description } : {}),
512
- parameters: tool.parameters,
516
+ parameters: normalizeFunctionToolParametersSchema(tool.parameters, {
517
+ forceRequiredObjectProperties: true,
518
+ }),
513
519
  }));
514
520
  }
515
- function toCodexToolChoice(toolChoice) {
516
- if (!toolChoice || toolChoice.type === 'auto') {
521
+ function toCodexToolChoice(toolChoice, capabilityProfile) {
522
+ const normalizedToolChoice = capabilityProfile
523
+ ? normalizeToolChoiceForCapability(toolChoice, capabilityProfile)
524
+ : toolChoice;
525
+ if (capabilityProfile && !capabilityProfile.supportsForcedToolChoice) {
517
526
  return 'auto';
518
527
  }
519
- if (toolChoice.type === 'none' || toolChoice.type === 'required') {
520
- return toolChoice.type;
528
+ if (!normalizedToolChoice || normalizedToolChoice.type === 'auto') {
529
+ return 'auto';
530
+ }
531
+ if (normalizedToolChoice.type === 'none' || normalizedToolChoice.type === 'required') {
532
+ return normalizedToolChoice.type;
521
533
  }
522
- if (toolChoice.type === 'tool') {
534
+ if (normalizedToolChoice.type === 'tool') {
523
535
  return {
524
536
  type: 'function',
525
- name: toolChoice.toolName,
537
+ name: normalizedToolChoice.toolName,
526
538
  };
527
539
  }
528
540
  return 'auto';