@robota-sdk/agent-provider 3.0.0-beta.64

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 (220) hide show
  1. package/LICENSE +21 -0
  2. package/dist/browser/index.d.ts +1104 -0
  3. package/dist/browser/index.d.ts.map +1 -0
  4. package/dist/browser/index.js +7 -0
  5. package/dist/browser/index.js.map +1 -0
  6. package/dist/loggers/index.cjs +1 -0
  7. package/dist/loggers/index.d.ts +151 -0
  8. package/dist/loggers/index.d.ts.map +1 -0
  9. package/dist/loggers/index.js +2 -0
  10. package/dist/loggers/index.js.map +1 -0
  11. package/dist/node/anthropic/index.cjs +1 -0
  12. package/dist/node/anthropic/index.d.ts +158 -0
  13. package/dist/node/anthropic/index.d.ts.map +1 -0
  14. package/dist/node/anthropic/index.js +1 -0
  15. package/dist/node/anthropic--1vgLC-e.js +5 -0
  16. package/dist/node/anthropic--1vgLC-e.js.map +1 -0
  17. package/dist/node/anthropic-BFQ6DSCP.cjs +4 -0
  18. package/dist/node/bytedance/index.cjs +1 -0
  19. package/dist/node/bytedance/index.d.ts +74 -0
  20. package/dist/node/bytedance/index.d.ts.map +1 -0
  21. package/dist/node/bytedance/index.js +1 -0
  22. package/dist/node/bytedance-C_0sF_pJ.js +2 -0
  23. package/dist/node/bytedance-C_0sF_pJ.js.map +1 -0
  24. package/dist/node/bytedance-DVPxqEiC.cjs +1 -0
  25. package/dist/node/chunk-Bmb41Sf3.cjs +1 -0
  26. package/dist/node/deepseek/index.cjs +1 -0
  27. package/dist/node/deepseek/index.d.ts +2 -0
  28. package/dist/node/deepseek/index.js +1 -0
  29. package/dist/node/deepseek-_8Ixx7rA.js +2 -0
  30. package/dist/node/deepseek-_8Ixx7rA.js.map +1 -0
  31. package/dist/node/deepseek-oA2Y6bD0.cjs +1 -0
  32. package/dist/node/gemini/index.cjs +1 -0
  33. package/dist/node/gemini/index.d.ts +173 -0
  34. package/dist/node/gemini/index.d.ts.map +1 -0
  35. package/dist/node/gemini/index.js +1 -0
  36. package/dist/node/gemini-Bh2U87MY.js +4 -0
  37. package/dist/node/gemini-Bh2U87MY.js.map +1 -0
  38. package/dist/node/gemini-DSaNCxZj.cjs +3 -0
  39. package/dist/node/gemma/index.cjs +1 -0
  40. package/dist/node/gemma/index.d.ts +2 -0
  41. package/dist/node/gemma/index.js +1 -0
  42. package/dist/node/gemma-Dp_AfCUR.js +2 -0
  43. package/dist/node/gemma-Dp_AfCUR.js.map +1 -0
  44. package/dist/node/gemma-G-Pf_PnX.cjs +1 -0
  45. package/dist/node/google/index.cjs +1 -0
  46. package/dist/node/google/index.d.ts +14 -0
  47. package/dist/node/google/index.d.ts.map +1 -0
  48. package/dist/node/google/index.js +2 -0
  49. package/dist/node/google/index.js.map +1 -0
  50. package/dist/node/index-B6PnlDMd.d.ts +82 -0
  51. package/dist/node/index-B6PnlDMd.d.ts.map +1 -0
  52. package/dist/node/index-B7UvPJcI.d.ts +315 -0
  53. package/dist/node/index-B7UvPJcI.d.ts.map +1 -0
  54. package/dist/node/index-BLPOTNb5.d.ts +98 -0
  55. package/dist/node/index-BLPOTNb5.d.ts.map +1 -0
  56. package/dist/node/index-BqixM_XD.d.ts +231 -0
  57. package/dist/node/index-BqixM_XD.d.ts.map +1 -0
  58. package/dist/node/index-C3beaqKO.d.ts +231 -0
  59. package/dist/node/index-C3beaqKO.d.ts.map +1 -0
  60. package/dist/node/index-Cp2XRh9G.d.ts +82 -0
  61. package/dist/node/index-Cp2XRh9G.d.ts.map +1 -0
  62. package/dist/node/index-DSv5xruI.d.ts +98 -0
  63. package/dist/node/index-DSv5xruI.d.ts.map +1 -0
  64. package/dist/node/index-w0bV1uaP.d.ts +315 -0
  65. package/dist/node/index-w0bV1uaP.d.ts.map +1 -0
  66. package/dist/node/index.cjs +1 -0
  67. package/dist/node/index.d.ts +8 -0
  68. package/dist/node/index.js +1 -0
  69. package/dist/node/openai/index.cjs +1 -0
  70. package/dist/node/openai/index.d.ts +2 -0
  71. package/dist/node/openai/index.js +1 -0
  72. package/dist/node/openai-CRQjg4xF.js +2 -0
  73. package/dist/node/openai-CRQjg4xF.js.map +1 -0
  74. package/dist/node/openai-compatible-BYfyY5lb.cjs +1 -0
  75. package/dist/node/openai-compatible-Dm4Sof9e.js +2 -0
  76. package/dist/node/openai-compatible-Dm4Sof9e.js.map +1 -0
  77. package/dist/node/openai-xWC6pY7r.cjs +1 -0
  78. package/dist/node/qwen/index.cjs +1 -0
  79. package/dist/node/qwen/index.d.ts +2 -0
  80. package/dist/node/qwen/index.js +1 -0
  81. package/dist/node/qwen-ChUZobTL.js +2 -0
  82. package/dist/node/qwen-ChUZobTL.js.map +1 -0
  83. package/dist/node/qwen-CjT71vSM.cjs +1 -0
  84. package/package.json +157 -0
  85. package/src/anthropic/__tests__/abort-streaming.test.ts +199 -0
  86. package/src/anthropic/__tests__/model-catalog-refresh.test.ts +92 -0
  87. package/src/anthropic/__tests__/provider-definition.test.ts +55 -0
  88. package/src/anthropic/__tests__/provider.test.ts +1357 -0
  89. package/src/anthropic/__tests__/response-parser.test.ts +326 -0
  90. package/src/anthropic/index.ts +22 -0
  91. package/src/anthropic/message-converter.ts +181 -0
  92. package/src/anthropic/model-catalog-refresh.ts +128 -0
  93. package/src/anthropic/parsers/response-parser.ts +184 -0
  94. package/src/anthropic/provider-definition.ts +93 -0
  95. package/src/anthropic/provider.ts +290 -0
  96. package/src/anthropic/streaming-handler.ts +204 -0
  97. package/src/anthropic/types/api-types.ts +158 -0
  98. package/src/anthropic/types.ts +79 -0
  99. package/src/bytedance/http-client.test.ts +288 -0
  100. package/src/bytedance/http-client.ts +163 -0
  101. package/src/bytedance/index.ts +2 -0
  102. package/src/bytedance/provider.spec.ts +320 -0
  103. package/src/bytedance/provider.ts +171 -0
  104. package/src/bytedance/status-mapper.test.ts +299 -0
  105. package/src/bytedance/status-mapper.ts +141 -0
  106. package/src/bytedance/types.ts +68 -0
  107. package/src/deepseek/defaults.ts +4 -0
  108. package/src/deepseek/index.ts +22 -0
  109. package/src/deepseek/model-catalog-refresh.test.ts +57 -0
  110. package/src/deepseek/model-catalog-refresh.ts +105 -0
  111. package/src/deepseek/model-catalog.ts +55 -0
  112. package/src/deepseek/provider-definition.test.ts +109 -0
  113. package/src/deepseek/provider-definition.ts +132 -0
  114. package/src/deepseek/provider.test.ts +324 -0
  115. package/src/deepseek/provider.ts +298 -0
  116. package/src/deepseek/types.ts +37 -0
  117. package/src/gemini/execution-helpers.ts +233 -0
  118. package/src/gemini/genai-transport.test.ts +208 -0
  119. package/src/gemini/image-operations.test.ts +448 -0
  120. package/src/gemini/image-operations.ts +261 -0
  121. package/src/gemini/index.ts +11 -0
  122. package/src/gemini/message-converter.test.ts +616 -0
  123. package/src/gemini/message-converter.ts +140 -0
  124. package/src/gemini/model-catalog-refresh.test.ts +107 -0
  125. package/src/gemini/model-catalog-refresh.ts +92 -0
  126. package/src/gemini/provider-definition.test.ts +70 -0
  127. package/src/gemini/provider-definition.ts +78 -0
  128. package/src/gemini/provider-extended.test.ts +898 -0
  129. package/src/gemini/provider.spec.ts +216 -0
  130. package/src/gemini/provider.ts +279 -0
  131. package/src/gemini/request-converter.ts +226 -0
  132. package/src/gemini/tool-schema-converter.ts +78 -0
  133. package/src/gemini/types/api-types.ts +235 -0
  134. package/src/gemini/types.ts +121 -0
  135. package/src/gemma/index.ts +5 -0
  136. package/src/gemma/message-factory.ts +38 -0
  137. package/src/gemma/provider-definition.test.ts +43 -0
  138. package/src/gemma/provider-definition.ts +84 -0
  139. package/src/gemma/provider-projection.ts +49 -0
  140. package/src/gemma/provider.test.ts +628 -0
  141. package/src/gemma/provider.ts +308 -0
  142. package/src/gemma/pseudo-command-envelope.ts +58 -0
  143. package/src/gemma/pseudo-tool-call-projector.ts +243 -0
  144. package/src/gemma/pseudo-tool-call-tag-parser.ts +153 -0
  145. package/src/gemma/pseudo-tool-call-types.ts +31 -0
  146. package/src/gemma/reasoning-projector.test.ts +52 -0
  147. package/src/gemma/reasoning-projector.ts +144 -0
  148. package/src/gemma/streaming-projection.ts +79 -0
  149. package/src/gemma/tool-call-argument-parser.ts +126 -0
  150. package/src/gemma/tool-call-projector.test.ts +227 -0
  151. package/src/gemma/tool-call-projector.ts +264 -0
  152. package/src/gemma/types.ts +27 -0
  153. package/src/google/index.ts +11 -0
  154. package/src/google/provider-compat.test.ts +19 -0
  155. package/src/google/provider-definition.ts +6 -0
  156. package/src/google/provider.ts +10 -0
  157. package/src/google/types.ts +5 -0
  158. package/src/index.ts +9 -0
  159. package/src/openai/adapter.test.ts +494 -0
  160. package/src/openai/adapter.ts +145 -0
  161. package/src/openai/chat-completions-chat.ts +189 -0
  162. package/src/openai/executor-integration.test.ts +206 -0
  163. package/src/openai/index.ts +21 -0
  164. package/src/openai/interfaces/payload-logger.ts +48 -0
  165. package/src/openai/loggers/console-payload-logger.test.ts +173 -0
  166. package/src/openai/loggers/console-payload-logger.ts +94 -0
  167. package/src/openai/loggers/console.ts +9 -0
  168. package/src/openai/loggers/file-payload-logger.test.ts +238 -0
  169. package/src/openai/loggers/file-payload-logger.ts +112 -0
  170. package/src/openai/loggers/file.ts +9 -0
  171. package/src/openai/loggers/index.ts +12 -0
  172. package/src/openai/loggers/sanitize-openai-log-data.test.ts +89 -0
  173. package/src/openai/loggers/sanitize-openai-log-data.ts +14 -0
  174. package/src/openai/message-converter.ts +22 -0
  175. package/src/openai/model-catalog-refresh.test.ts +92 -0
  176. package/src/openai/model-catalog-refresh.ts +115 -0
  177. package/src/openai/openai-request-format.ts +92 -0
  178. package/src/openai/parsers/response-parser.test.ts +407 -0
  179. package/src/openai/parsers/response-parser.ts +47 -0
  180. package/src/openai/provider-definition.test.ts +75 -0
  181. package/src/openai/provider-definition.ts +132 -0
  182. package/src/openai/provider.test.ts +1402 -0
  183. package/src/openai/provider.ts +237 -0
  184. package/src/openai/responses-chat.ts +258 -0
  185. package/src/openai/responses-converter.ts +112 -0
  186. package/src/openai/responses-parser.ts +285 -0
  187. package/src/openai/responses-stream-utils.ts +45 -0
  188. package/src/openai/responses-types.ts +195 -0
  189. package/src/openai/streaming/stream-assembler.ts +3 -0
  190. package/src/openai/streaming/stream-handler.test.ts +367 -0
  191. package/src/openai/streaming/stream-handler.ts +119 -0
  192. package/src/openai/types/api-types.ts +112 -0
  193. package/src/openai/types.ts +194 -0
  194. package/src/qwen/defaults.ts +26 -0
  195. package/src/qwen/index.ts +5 -0
  196. package/src/qwen/model-catalog-refresh.test.ts +91 -0
  197. package/src/qwen/model-catalog-refresh.ts +97 -0
  198. package/src/qwen/provider-capabilities.ts +34 -0
  199. package/src/qwen/provider-definition.test.ts +139 -0
  200. package/src/qwen/provider-definition.ts +173 -0
  201. package/src/qwen/provider-streaming-assembly.ts +40 -0
  202. package/src/qwen/provider.test.ts +640 -0
  203. package/src/qwen/provider.ts +293 -0
  204. package/src/qwen/responses-chat.ts +194 -0
  205. package/src/qwen/responses-converter.ts +104 -0
  206. package/src/qwen/responses-parser.ts +299 -0
  207. package/src/qwen/responses-stream-utils.ts +38 -0
  208. package/src/qwen/types.ts +228 -0
  209. package/src/shared/openai-compatible/endpoint-probe.test.ts +52 -0
  210. package/src/shared/openai-compatible/endpoint-probe.ts +43 -0
  211. package/src/shared/openai-compatible/index.ts +6 -0
  212. package/src/shared/openai-compatible/message-converter.test.ts +111 -0
  213. package/src/shared/openai-compatible/message-converter.ts +84 -0
  214. package/src/shared/openai-compatible/native-payload-observer.test.ts +43 -0
  215. package/src/shared/openai-compatible/native-payload-observer.ts +26 -0
  216. package/src/shared/openai-compatible/response-parser.test.ts +172 -0
  217. package/src/shared/openai-compatible/response-parser.ts +180 -0
  218. package/src/shared/openai-compatible/stream-assembler.test.ts +266 -0
  219. package/src/shared/openai-compatible/stream-assembler.ts +248 -0
  220. package/src/shared/openai-compatible/types.ts +59 -0
@@ -0,0 +1,315 @@
1
+ import { AbstractAIProvider, IChatOptions, IExecutor, ILogger, IProviderCapabilities, IProviderDefinition, IProviderModelCatalog, IProviderProfileConfig, TProviderOptionValueBase, TTextDeltaCallback, TUniversalMessage } from "@robota-sdk/agent-core";
2
+ import OpenAI from "openai";
3
+
4
+ //#region src/openai/types/api-types.d.ts
5
+ /**
6
+ * Payload logging data structure
7
+ */
8
+ interface IOpenAILogData {
9
+ model: string;
10
+ messagesCount: number;
11
+ hasTools: boolean;
12
+ temperature?: number | undefined;
13
+ maxTokens?: number | undefined;
14
+ timestamp: string;
15
+ requestId?: string | undefined;
16
+ }
17
+ //#endregion
18
+ //#region src/openai/interfaces/payload-logger.d.ts
19
+ /**
20
+ * IPayloadLogger interface for logging OpenAI API payloads
21
+ *
22
+ * This interface provides a contract for different logging implementations:
23
+ * - FilePayloadLogger: Node.js file-based logging
24
+ * - ConsolePayloadLogger: Browser console-based logging
25
+ * - Custom implementations: User-defined loggers
26
+ */
27
+ interface IPayloadLogger {
28
+ /**
29
+ * Check if logging is enabled
30
+ * @returns true if logging is active, false otherwise
31
+ */
32
+ isEnabled(): boolean;
33
+ /**
34
+ * Log API payload data
35
+ * @param payload - The API request/response payload data
36
+ * @param type - Type of operation ('chat' or 'stream')
37
+ */
38
+ logPayload(payload: IOpenAILogData, type: 'chat' | 'stream'): Promise<void>;
39
+ }
40
+ /**
41
+ * Configuration options for payload loggers
42
+ */
43
+ interface IPayloadLoggerOptions {
44
+ /**
45
+ * Whether logging is enabled
46
+ * @defaultValue true
47
+ */
48
+ enabled?: boolean;
49
+ /**
50
+ * Include timestamp in log entries
51
+ * @defaultValue true
52
+ */
53
+ includeTimestamp?: boolean;
54
+ /**
55
+ * Logger instance for console output
56
+ * @defaultValue SilentLogger
57
+ */
58
+ logger?: ILogger;
59
+ }
60
+ //#endregion
61
+ //#region src/openai/types.d.ts
62
+ type TOpenAIApiSurface = 'responses' | 'chat-completions';
63
+ interface IOpenAIJsonSchemaDefinition {
64
+ name: string;
65
+ description?: string;
66
+ schema?: Record<string, TOpenAIProviderOptionValue>;
67
+ strict?: boolean;
68
+ }
69
+ interface IOpenAIResponsesReasoningOptions {
70
+ effort?: 'low' | 'medium' | 'high';
71
+ summary?: 'auto' | 'concise' | 'detailed';
72
+ }
73
+ interface IOpenAINativeWebToolsOptions {
74
+ webSearch?: boolean;
75
+ webFetch?: boolean;
76
+ }
77
+ /**
78
+ * Valid provider option value types
79
+ */
80
+ type TOpenAIProviderOptionValue = string | number | boolean | undefined | null | IOpenAIJsonSchemaDefinition | IOpenAINativeWebToolsOptions | IOpenAIResponsesReasoningOptions | OpenAI | IPayloadLogger | ILogger | IExecutor | TProviderOptionValueBase | TOpenAIProviderOptionValue[] | {
81
+ [key: string]: TOpenAIProviderOptionValue;
82
+ };
83
+ /**
84
+ * OpenAI provider options
85
+ */
86
+ interface IOpenAIProviderOptions {
87
+ /**
88
+ * Additional provider-specific options
89
+ */
90
+ [key: string]: TOpenAIProviderOptionValue;
91
+ /**
92
+ * OpenAI API key (required when client is not provided)
93
+ */
94
+ apiKey?: string;
95
+ /**
96
+ * OpenAI organization ID (optional)
97
+ */
98
+ organization?: string;
99
+ /**
100
+ * API request timeout (milliseconds)
101
+ */
102
+ timeout?: number;
103
+ /**
104
+ * API base URL (default: 'https://api.openai.com/v1')
105
+ */
106
+ baseURL?: string;
107
+ /**
108
+ * Default model used when chat options do not provide a model.
109
+ */
110
+ defaultModel?: string;
111
+ /**
112
+ * API surface to use for direct OpenAI calls.
113
+ *
114
+ * Defaults to Responses for official OpenAI calls. Profiles with baseURL use
115
+ * Chat Completions by default for OpenAI-compatible endpoint compatibility.
116
+ */
117
+ apiSurface?: TOpenAIApiSurface;
118
+ /**
119
+ * Response format (default: 'text')
120
+ * - 'text': Plain text response
121
+ * - 'json_object': JSON object mode (requires system message)
122
+ * - 'json_schema': Structured Outputs with schema validation
123
+ */
124
+ responseFormat?: 'text' | 'json_object' | 'json_schema';
125
+ /**
126
+ * JSON schema for structured outputs (required when responseFormat is 'json_schema')
127
+ */
128
+ jsonSchema?: IOpenAIJsonSchemaDefinition;
129
+ /**
130
+ * Responses API reasoning controls. Hidden reasoning is never exposed in message
131
+ * content; only explicit summaries/encrypted items requested here are represented.
132
+ */
133
+ reasoning?: IOpenAIResponsesReasoningOptions;
134
+ /**
135
+ * Whether OpenAI should store Responses API results. Defaults to OpenAI API behavior.
136
+ */
137
+ store?: boolean;
138
+ /**
139
+ * Include encrypted reasoning items for stateless reasoning continuation.
140
+ */
141
+ includeEncryptedReasoning?: boolean;
142
+ /**
143
+ * Opt into strict custom function parameter validation where supported.
144
+ */
145
+ strictTools?: boolean;
146
+ /**
147
+ * Provider-native hosted web tool request from provider profile options.
148
+ *
149
+ * OpenAI-compatible Chat Completions endpoints do not support this Robota
150
+ * native web contract. The provider rejects unsupported configurations before
151
+ * any model request is sent.
152
+ */
153
+ nativeWebTools?: IOpenAINativeWebToolsOptions;
154
+ /**
155
+ * OpenAI client instance (optional: will be created from apiKey if not provided)
156
+ */
157
+ client?: OpenAI;
158
+ /**
159
+ * Payload logger instance for debugging API requests/responses
160
+ *
161
+ * Use different implementations based on your environment:
162
+ * - FilePayloadLogger: Node.js file-based logging
163
+ * - ConsolePayloadLogger: Browser console-based logging
164
+ * - Custom: Implement IPayloadLogger interface
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * // Node.js
169
+ * import { FilePayloadLogger } from '@robota-sdk/agent-provider/openai/loggers';
170
+ * const provider = new OpenAIProvider({
171
+ * client: openaiClient,
172
+ * payloadLogger: new FilePayloadLogger({ logDir: './logs/openai' })
173
+ * });
174
+ *
175
+ * // Browser
176
+ * import { ConsolePayloadLogger } from '@robota-sdk/agent-provider/openai/loggers';
177
+ * const provider = new OpenAIProvider({
178
+ * client: openaiClient,
179
+ * payloadLogger: new ConsolePayloadLogger()
180
+ * });
181
+ * ```
182
+ */
183
+ payloadLogger?: IPayloadLogger;
184
+ /**
185
+ * Optional executor for handling AI requests
186
+ *
187
+ * When provided, the provider will delegate all chat operations to this executor
188
+ * instead of making direct API calls. This enables remote execution capabilities.
189
+ *
190
+ * @example
191
+ * ```typescript
192
+ * import { LocalExecutor, RemoteExecutor } from '@robota-sdk/agent-core';
193
+ *
194
+ * // Local execution (registers this provider)
195
+ * const localExecutor = new LocalExecutor();
196
+ * localExecutor.registerProvider('openai', new OpenAIProvider({ apiKey: 'sk-...' }));
197
+ *
198
+ * // Remote execution
199
+ * const remoteExecutor = new RemoteExecutor({
200
+ * serverUrl: 'https://api.robota.io',
201
+ * userApiKey: 'user-token-123'
202
+ * });
203
+ *
204
+ * const provider = new OpenAIProvider({
205
+ * executor: remoteExecutor // No direct API key needed
206
+ * });
207
+ * ```
208
+ */
209
+ executor?: IExecutor;
210
+ /**
211
+ * Logger instance for internal OpenAI provider logging
212
+ * @defaultValue SilentLogger
213
+ */
214
+ logger?: ILogger;
215
+ }
216
+ //#endregion
217
+ //#region src/openai/provider.d.ts
218
+ /**
219
+ * OpenAI provider implementation for Robota
220
+ *
221
+ * Provides integration with OpenAI models through the Robota provider contract.
222
+ * Uses OpenAI SDK native types internally for optimal performance and feature support.
223
+ *
224
+ * @public
225
+ */
226
+ declare class OpenAIProvider extends AbstractAIProvider {
227
+ readonly name = "openai";
228
+ readonly version = "1.0.0";
229
+ private readonly client?;
230
+ private readonly options;
231
+ private readonly apiSurface;
232
+ private readonly payloadLogger;
233
+ private readonly responseParser;
234
+ /**
235
+ * Optional callback for text deltas during streaming.
236
+ * Set by the consumer (e.g., Session) to receive real-time text chunks.
237
+ * When set, chat() uses streaming internally while still returning
238
+ * the complete assembled message.
239
+ */
240
+ onTextDelta?: TTextDeltaCallback;
241
+ constructor(options: IOpenAIProviderOptions);
242
+ chat(messages: TUniversalMessage[], options?: IChatOptions): Promise<TUniversalMessage>;
243
+ chatStream(messages: TUniversalMessage[], options?: IChatOptions): AsyncIterable<TUniversalMessage>;
244
+ supportsTools(): boolean;
245
+ getCapabilities(): IProviderCapabilities;
246
+ validateConfig(): boolean;
247
+ dispose(): Promise<void>;
248
+ protected validateMessages(messages: TUniversalMessage[]): void;
249
+ }
250
+ //#endregion
251
+ //#region src/openai/adapter.d.ts
252
+ /**
253
+ * OpenAI Conversation Adapter
254
+ *
255
+ * Converts between TUniversalMessage format and OpenAI native types.
256
+ * Provides bidirectional conversion for seamless integration.
257
+ *
258
+ * @public
259
+ */
260
+ declare class OpenAIConversationAdapter {
261
+ /**
262
+ * Filter messages for OpenAI compatibility
263
+ *
264
+ * OpenAI has specific requirements:
265
+ * - Tool messages must have valid toolCallId
266
+ * - Messages must be in proper sequence
267
+ * - Tool messages without toolCallId should be excluded
268
+ */
269
+ static filterMessagesForOpenAI(messages: TUniversalMessage[]): TUniversalMessage[];
270
+ /**
271
+ * Convert TUniversalMessage array to OpenAI message format
272
+ * Now properly handles tool messages for OpenAI's tool calling feature
273
+ */
274
+ static toOpenAIFormat(messages: TUniversalMessage[]): OpenAI.Chat.ChatCompletionMessageParam[];
275
+ /**
276
+ * Convert a single TUniversalMessage to OpenAI format
277
+ * Handles all message types including tool messages
278
+ */
279
+ static convertMessage(msg: TUniversalMessage): OpenAI.Chat.ChatCompletionMessageParam;
280
+ /**
281
+ * Add system prompt to message array if needed
282
+ */
283
+ static addSystemPromptIfNeeded(messages: OpenAI.Chat.ChatCompletionMessageParam[], systemPrompt?: string): OpenAI.Chat.ChatCompletionMessageParam[];
284
+ }
285
+ //#endregion
286
+ //#region src/openai/model-catalog-refresh.d.ts
287
+ interface IOpenAIModelCatalogResponse {
288
+ data?: readonly IOpenAIModelCatalogResource[];
289
+ }
290
+ interface IOpenAIModelCatalogResource {
291
+ id?: string;
292
+ }
293
+ interface IOpenAIModelCatalogFetchInit {
294
+ headers: Record<string, string>;
295
+ }
296
+ interface IOpenAIModelCatalogFetchResponse {
297
+ ok: boolean;
298
+ status: number;
299
+ statusText?: string;
300
+ json: () => Promise<IOpenAIModelCatalogResponse>;
301
+ }
302
+ type TOpenAIModelCatalogFetch = (url: string, init: IOpenAIModelCatalogFetchInit) => Promise<IOpenAIModelCatalogFetchResponse>;
303
+ interface IRefreshOpenAIModelCatalogOptions {
304
+ fetcher?: TOpenAIModelCatalogFetch;
305
+ now?: () => Date;
306
+ }
307
+ declare function refreshOpenAIModelCatalog(profile: IProviderProfileConfig, options?: IRefreshOpenAIModelCatalogOptions): Promise<IProviderModelCatalog>;
308
+ //#endregion
309
+ //#region src/openai/provider-definition.d.ts
310
+ declare const DEFAULT_OPENAI_PROVIDER_MODEL: string | undefined;
311
+ declare const DEFAULT_OPENAI_PROVIDER_API_KEY_REFERENCE = "$ENV:OPENAI_API_KEY";
312
+ declare function createOpenAIProviderDefinition(): IProviderDefinition;
313
+ //#endregion
314
+ export { TOpenAIApiSurface as _, IOpenAIModelCatalogFetchResponse as a, IPayloadLoggerOptions as b, IRefreshOpenAIModelCatalogOptions as c, OpenAIConversationAdapter as d, OpenAIProvider as f, IOpenAIResponsesReasoningOptions as g, IOpenAIProviderOptions as h, IOpenAIModelCatalogFetchInit as i, TOpenAIModelCatalogFetch as l, IOpenAINativeWebToolsOptions as m, DEFAULT_OPENAI_PROVIDER_MODEL as n, IOpenAIModelCatalogResource as o, IOpenAIJsonSchemaDefinition as p, createOpenAIProviderDefinition as r, IOpenAIModelCatalogResponse as s, DEFAULT_OPENAI_PROVIDER_API_KEY_REFERENCE as t, refreshOpenAIModelCatalog as u, TOpenAIProviderOptionValue as v, IPayloadLogger as y };
315
+ //# sourceMappingURL=index-B7UvPJcI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-B7UvPJcI.d.ts","names":[],"sources":["../../src/openai/types/api-types.ts","../../src/openai/interfaces/payload-logger.ts","../../src/openai/types.ts","../../src/openai/provider.ts","../../src/openai/adapter.ts","../../src/openai/model-catalog-refresh.ts","../../src/openai/provider-definition.ts"],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import { AbstractAIProvider, IChatOptions, IExecutor, ILogger, IProviderCapabilities, IProviderDefinition, IProviderProfileConfig, IToolCall, IToolSchema, TProviderOptionValueBase, TTextDeltaCallback, TUniversalMessage } from "@robota-sdk/agent-core";
2
+ import OpenAI from "openai";
3
+
4
+ //#region src/gemma/types.d.ts
5
+ type TGemmaProviderOptionValue = string | number | boolean | undefined | null | OpenAI | ILogger | IExecutor | TProviderOptionValueBase | TGemmaProviderOptionValue[] | {
6
+ [key: string]: TGemmaProviderOptionValue;
7
+ };
8
+ interface IGemmaProviderOptions {
9
+ [key: string]: TGemmaProviderOptionValue;
10
+ apiKey?: string;
11
+ baseURL?: string;
12
+ timeout?: number;
13
+ defaultModel?: string;
14
+ client?: OpenAI;
15
+ executor?: IExecutor;
16
+ logger?: ILogger;
17
+ }
18
+ //#endregion
19
+ //#region src/gemma/reasoning-projector.d.ts
20
+ interface IGemmaReasoningProjection {
21
+ rawText: string;
22
+ visibleText: string;
23
+ removedReasoning: boolean;
24
+ }
25
+ declare function projectGemmaReasoningText(rawText: string): IGemmaReasoningProjection;
26
+ declare class GemmaReasoningProjector {
27
+ private buffer;
28
+ private emittedVisibleText;
29
+ private hasRemovedReasoning;
30
+ get rawText(): string;
31
+ get removedReasoning(): boolean;
32
+ project(delta: string): string;
33
+ flush(): string;
34
+ private projectVisibleText;
35
+ }
36
+ //#endregion
37
+ //#region src/shared/openai-compatible/types.d.ts
38
+ interface IOpenAICompatibleToolCallTextProjection {
39
+ visibleText: string;
40
+ toolCalls: IToolCall[];
41
+ removedToolCallText: boolean;
42
+ rawToolCallText?: string | undefined;
43
+ }
44
+ interface IOpenAICompatibleToolCallTextProjector {
45
+ project(text: string): IOpenAICompatibleToolCallTextProjection;
46
+ flush(): IOpenAICompatibleToolCallTextProjection;
47
+ }
48
+ //#endregion
49
+ //#region src/gemma/tool-call-projector.d.ts
50
+ interface IGemmaToolCallProjectorOptions {
51
+ toolNames: readonly string[];
52
+ callIdPrefix?: string;
53
+ }
54
+ interface IGemmaToolCallProjection extends IOpenAICompatibleToolCallTextProjection {
55
+ rawText: string;
56
+ }
57
+ declare function createGemmaToolCallProjector(tools: readonly IToolSchema[] | undefined): GemmaToolCallProjector | undefined;
58
+ declare function projectGemmaToolCallText(rawText: string, options: IGemmaToolCallProjectorOptions): IGemmaToolCallProjection;
59
+ declare class GemmaToolCallProjector implements IOpenAICompatibleToolCallTextProjector {
60
+ private readonly options;
61
+ private buffer;
62
+ private emittedVisibleText;
63
+ private emittedRawToolCallText;
64
+ private readonly emittedToolCallIds;
65
+ constructor(options: IGemmaToolCallProjectorOptions);
66
+ project(delta: string): IOpenAICompatibleToolCallTextProjection;
67
+ flush(): IOpenAICompatibleToolCallTextProjection;
68
+ private projectVisibleText;
69
+ }
70
+ //#endregion
71
+ //#region src/gemma/provider.d.ts
72
+ declare class GemmaProvider extends AbstractAIProvider {
73
+ readonly name = "gemma";
74
+ readonly version = "1.0.0";
75
+ private readonly client?;
76
+ private readonly options;
77
+ onTextDelta?: TTextDeltaCallback;
78
+ constructor(options: IGemmaProviderOptions);
79
+ chat(messages: TUniversalMessage[], options?: IChatOptions): Promise<TUniversalMessage>;
80
+ chatStream(messages: TUniversalMessage[], options?: IChatOptions): AsyncIterable<TUniversalMessage>;
81
+ supportsTools(): boolean;
82
+ getCapabilities(): IProviderCapabilities;
83
+ validateConfig(): boolean;
84
+ dispose(): Promise<void>;
85
+ protected validateMessages(messages: TUniversalMessage[]): void;
86
+ private buildRequestParams;
87
+ private buildStreamingRequestParams;
88
+ private chatWithStreamingAssembly;
89
+ }
90
+ //#endregion
91
+ //#region src/gemma/provider-definition.d.ts
92
+ declare const DEFAULT_GEMMA_PROVIDER_MODEL = "supergemma4-26b-uncensored-v2";
93
+ declare const DEFAULT_GEMMA_PROVIDER_API_KEY = "lm-studio";
94
+ declare const DEFAULT_GEMMA_PROVIDER_BASE_URL = "http://localhost:1234/v1";
95
+ declare function createGemmaProviderDefinition(): IProviderDefinition;
96
+ //#endregion
97
+ export { GemmaProvider as a, IGemmaToolCallProjectorOptions as c, GemmaReasoningProjector as d, IGemmaReasoningProjection as f, TGemmaProviderOptionValue as h, createGemmaProviderDefinition as i, createGemmaToolCallProjector as l, IGemmaProviderOptions as m, DEFAULT_GEMMA_PROVIDER_BASE_URL as n, GemmaToolCallProjector as o, projectGemmaReasoningText as p, DEFAULT_GEMMA_PROVIDER_MODEL as r, IGemmaToolCallProjection as s, DEFAULT_GEMMA_PROVIDER_API_KEY as t, projectGemmaToolCallText as u };
98
+ //# sourceMappingURL=index-BLPOTNb5.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BLPOTNb5.d.ts","names":[],"sources":["../../src/gemma/types.ts","../../src/gemma/reasoning-projector.ts","../../src/shared/openai-compatible/types.ts","../../src/gemma/tool-call-projector.ts","../../src/gemma/provider.ts","../../src/gemma/provider-definition.ts"],"mappings":";;;;KAGY,yBAAA,kDAMR,MAAA,GACA,OAAA,GACA,SAAA,GACA,wBAAA,GACA,yBAAA;EAAA,CACG,GAAA,WAAc,yBAAA;AAAA;AAAA,UAEJ,qBAAA;EAAA,CACd,GAAA,WAAc,yBAAA;EAEf,MAAA;EACA,OAAA;EACA,OAAA;EACA,YAAA;EACA,MAAA,GAAS,MAAA;EACT,QAAA,GAAW,SAAA;EACX,MAAA,GAAS,OAAA;AAAA;;;UCrBM,yBAAA;EACf,OAAA;EACA,WAAA;EACA,gBAAA;AAAA;AAAA,iBAYc,yBAAA,CAA0B,OAAA,WAAkB,yBAAyB;AAAA,cASxE,uBAAA;EAAA,QACH,MAAA;EAAA,QACA,kBAAA;EAAA,QACA,mBAAA;EAAA,IAEJ,OAAA,CAAA;EAAA,IAIA,gBAAA,CAAA;EAIJ,OAAA,CAAQ,KAAA;EASR,KAAA,CAAA;EAAA,QAIQ,kBAAA;AAAA;;;UChBO,uCAAA;EACf,WAAA;EACA,SAAA,EAAW,SAAS;EACpB,mBAAA;EACA,eAAA;AAAA;AAAA,UAGe,sCAAA;EACf,OAAA,CAAQ,IAAA,WAAe,uCAAA;EACvB,KAAA,IAAS,uCAAuC;AAAA;;;UClCjC,8BAAA;EACf,SAAA;EACA,YAAY;AAAA;AAAA,UAGG,wBAAA,SAAiC,uCAAuC;EACvF,OAAO;AAAA;AAAA,iBAcO,4BAAA,CACd,KAAA,WAAgB,WAAA,iBACf,sBAAsB;AAAA,iBAOT,wBAAA,CACd,OAAA,UACA,OAAA,EAAS,8BAAA,GACR,wBAAwB;AAAA,cAKd,sBAAA,YAAkC,sCAAA;EAAA,iBAMhB,OAAA;EAAA,QALrB,MAAA;EAAA,QACA,kBAAA;EAAA,QACA,sBAAA;EAAA,iBACS,kBAAA;cAEY,OAAA,EAAS,8BAAA;EAEtC,OAAA,CAAQ,KAAA,WAAgB,uCAAA;EASxB,KAAA,CAAA,GAAS,uCAAA;EAAA,QAID,kBAAA;AAAA;;;cC7CG,aAAA,SAAsB,kBAAA;EAAA,SACf,IAAA;EAAA,SACA,OAAA;EAAA,iBAED,MAAA;EAAA,iBACA,OAAA;EAEjB,WAAA,GAAc,kBAAA;cAEF,OAAA,EAAS,qBAAA;EAuBN,IAAA,CACb,QAAA,EAAU,iBAAA,IACV,OAAA,GAAU,YAAA,GACT,OAAA,CAAQ,iBAAA;EA2DK,UAAA,CACd,QAAA,EAAU,iBAAA,IACV,OAAA,GAAU,YAAA,GACT,aAAA,CAAc,iBAAA;EAwDR,aAAA,CAAA;EAIA,eAAA,CAAA,GAAmB,qBAAA;EAsBnB,cAAA,CAAA;EAIM,OAAA,CAAA,GAAW,OAAA;EAAA,UAIP,gBAAA,CAAiB,QAAA,EAAU,iBAAA;EAAA,QAiBtC,kBAAA;EAAA,QAyBA,2BAAA;EAAA,QAUM,yBAAA;AAAA;;;cCrQH,4BAAA;AAAA,cACA,8BAAA;AAAA,cACA,+BAAA;AAAA,iBA8BG,6BAAA,CAAA,GAAiC,mBAAmB"}
@@ -0,0 +1,231 @@
1
+ import { AbstractAIProvider, IChatOptions, IExecutor, ILogger, IProviderDefinition, IProviderModelCatalog, IProviderProfileConfig, IToolSchema, TProviderOptionValueBase, TTextDeltaCallback, TUniversalMessage } from "@robota-sdk/agent-core";
2
+ import OpenAI from "openai";
3
+
4
+ //#region src/qwen/defaults.d.ts
5
+ declare const QWEN_PROVIDER_BASE_URLS: {
6
+ readonly singapore: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1";
7
+ readonly usVirginia: "https://dashscope-us.aliyuncs.com/compatible-mode/v1";
8
+ readonly beijing: "https://dashscope.aliyuncs.com/compatible-mode/v1";
9
+ readonly hongKong: "https://cn-hongkong.dashscope.aliyuncs.com/compatible-mode/v1";
10
+ };
11
+ type TQwenProviderRegion = keyof typeof QWEN_PROVIDER_BASE_URLS;
12
+ declare const QWEN_PROVIDER_RESPONSES_BASE_URLS: {
13
+ readonly singapore: "https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1";
14
+ readonly usVirginia: "https://dashscope-us.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1";
15
+ readonly beijing: "https://dashscope.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1";
16
+ };
17
+ type TQwenProviderResponsesRegion = keyof typeof QWEN_PROVIDER_RESPONSES_BASE_URLS;
18
+ declare const DEFAULT_QWEN_PROVIDER_MODEL = "qwen-plus";
19
+ declare const DEFAULT_QWEN_PROVIDER_API_KEY_ENV = "DASHSCOPE_API_KEY";
20
+ declare const DEFAULT_QWEN_PROVIDER_API_KEY_REFERENCE = "$ENV:DASHSCOPE_API_KEY";
21
+ declare const DEFAULT_QWEN_PROVIDER_BASE_URL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1";
22
+ declare const DEFAULT_QWEN_PROVIDER_RESPONSES_BASE_URL: "https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1";
23
+ declare const QWEN_MODEL_SOURCE_URL = "https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope";
24
+ declare const QWEN_MODEL_LAST_VERIFIED_AT = "2026-05-04";
25
+ //#endregion
26
+ //#region src/qwen/types.d.ts
27
+ type TQwenBuiltInWebToolName = 'web_search' | 'web_extractor';
28
+ interface IQwenBuiltInWebToolsOptions {
29
+ webSearch?: boolean;
30
+ webFetch?: boolean;
31
+ enableThinking?: boolean;
32
+ }
33
+ interface IQwenResponsesWebSearchTool {
34
+ type: 'web_search';
35
+ }
36
+ interface IQwenResponsesWebExtractorTool {
37
+ type: 'web_extractor';
38
+ }
39
+ interface IQwenResponsesFunctionTool {
40
+ type: 'function';
41
+ name: string;
42
+ description?: string;
43
+ parameters: IToolSchema['parameters'];
44
+ }
45
+ type TQwenResponsesTool = IQwenResponsesWebSearchTool | IQwenResponsesWebExtractorTool | IQwenResponsesFunctionTool;
46
+ interface IQwenResponsesMessageInput {
47
+ type?: 'message';
48
+ role: 'user' | 'assistant' | 'system' | 'developer';
49
+ content: string;
50
+ }
51
+ interface IQwenResponsesFunctionCallInput {
52
+ type: 'function_call';
53
+ call_id: string;
54
+ name: string;
55
+ arguments: string;
56
+ }
57
+ interface IQwenResponsesFunctionCallOutputInput {
58
+ type: 'function_call_output';
59
+ call_id: string;
60
+ output: string;
61
+ }
62
+ type TQwenResponsesInputItem = IQwenResponsesMessageInput | IQwenResponsesFunctionCallInput | IQwenResponsesFunctionCallOutputInput;
63
+ interface IQwenResponsesRequestBase {
64
+ model: string;
65
+ input: TQwenResponsesInputItem[];
66
+ tools?: TQwenResponsesTool[];
67
+ temperature?: number;
68
+ max_output_tokens?: number;
69
+ enable_thinking?: boolean;
70
+ }
71
+ interface IQwenResponsesRequestNonStreaming extends IQwenResponsesRequestBase {
72
+ stream?: false;
73
+ }
74
+ interface IQwenResponsesRequestStreaming extends IQwenResponsesRequestBase {
75
+ stream: true;
76
+ }
77
+ interface IQwenResponsesTextContent {
78
+ type: 'output_text' | 'text' | 'input_text';
79
+ text: string;
80
+ }
81
+ interface IQwenResponsesMessageOutputItem {
82
+ type: 'message';
83
+ content: IQwenResponsesTextContent[];
84
+ }
85
+ interface IQwenResponsesFunctionCallOutputItem {
86
+ type: 'function_call';
87
+ call_id: string;
88
+ name: string;
89
+ arguments: string;
90
+ id?: string;
91
+ status?: string;
92
+ }
93
+ interface IQwenResponsesWebSearchAction {
94
+ query?: string;
95
+ }
96
+ interface IQwenResponsesWebSearchOutputItem {
97
+ type: 'web_search_call';
98
+ id?: string;
99
+ status?: string;
100
+ action?: IQwenResponsesWebSearchAction;
101
+ }
102
+ interface IQwenResponsesWebExtractorOutputItem {
103
+ type: 'web_extractor_call';
104
+ id?: string;
105
+ status?: string;
106
+ goal?: string;
107
+ output?: string;
108
+ }
109
+ interface IQwenResponsesGenericOutputItem {
110
+ type: string;
111
+ id?: string;
112
+ status?: string;
113
+ }
114
+ type TQwenResponsesOutputItem = IQwenResponsesMessageOutputItem | IQwenResponsesFunctionCallOutputItem | IQwenResponsesWebSearchOutputItem | IQwenResponsesWebExtractorOutputItem | IQwenResponsesGenericOutputItem;
115
+ interface IQwenResponsesToolUsageCount {
116
+ count?: number;
117
+ }
118
+ interface IQwenResponsesUsage {
119
+ input_tokens?: number;
120
+ output_tokens?: number;
121
+ total_tokens?: number;
122
+ x_tools?: Record<string, IQwenResponsesToolUsageCount>;
123
+ }
124
+ interface IQwenResponsesResponse {
125
+ id?: string;
126
+ model?: string;
127
+ output_text?: string;
128
+ output?: TQwenResponsesOutputItem[];
129
+ usage?: IQwenResponsesUsage;
130
+ status?: string;
131
+ }
132
+ interface IQwenResponsesTextDeltaEvent {
133
+ type: 'response.output_text.delta';
134
+ delta: string;
135
+ }
136
+ interface IQwenResponsesCompletedEvent {
137
+ type: 'response.completed';
138
+ response: IQwenResponsesResponse;
139
+ }
140
+ interface IQwenResponsesOutputItemDoneEvent {
141
+ type: 'response.output_item.done';
142
+ item: TQwenResponsesOutputItem;
143
+ }
144
+ interface IQwenResponsesErrorEvent {
145
+ type: 'response.error' | 'response.failed';
146
+ message?: string;
147
+ error?: {
148
+ message?: string;
149
+ };
150
+ response?: {
151
+ error?: {
152
+ message?: string;
153
+ };
154
+ };
155
+ }
156
+ interface IQwenResponsesWebSearchEvent {
157
+ type: 'response.web_search_call.in_progress' | 'response.web_search_call.searching' | 'response.web_search_call.completed';
158
+ }
159
+ interface IQwenResponsesGenericEvent {
160
+ type: string;
161
+ item?: TQwenResponsesOutputItem;
162
+ response?: IQwenResponsesResponse;
163
+ }
164
+ type TQwenResponsesStreamEvent = IQwenResponsesTextDeltaEvent | IQwenResponsesCompletedEvent | IQwenResponsesOutputItemDoneEvent | IQwenResponsesErrorEvent | IQwenResponsesWebSearchEvent;
165
+ type TQwenMessagesToResponsesInput = (messages: TUniversalMessage[]) => TQwenResponsesInputItem[];
166
+ type TQwenProviderOptionValue = string | number | boolean | undefined | null | IQwenBuiltInWebToolsOptions | OpenAI | ILogger | IExecutor | TProviderOptionValueBase | TQwenProviderOptionValue[] | {
167
+ [key: string]: TQwenProviderOptionValue;
168
+ };
169
+ interface IQwenProviderOptions {
170
+ [key: string]: TQwenProviderOptionValue;
171
+ apiKey?: string;
172
+ baseURL?: string;
173
+ responsesBaseURL?: string;
174
+ timeout?: number;
175
+ defaultModel?: string;
176
+ builtInWebTools?: IQwenBuiltInWebToolsOptions;
177
+ client?: OpenAI;
178
+ executor?: IExecutor;
179
+ logger?: ILogger;
180
+ }
181
+ //#endregion
182
+ //#region src/qwen/provider.d.ts
183
+ declare class QwenProvider extends AbstractAIProvider {
184
+ readonly name = "qwen";
185
+ readonly version = "1.0.0";
186
+ private readonly client?;
187
+ private readonly responsesClient?;
188
+ private readonly options;
189
+ private readonly responseParser;
190
+ onTextDelta?: TTextDeltaCallback;
191
+ constructor(options: IQwenProviderOptions);
192
+ chat(messages: TUniversalMessage[], options?: IChatOptions): Promise<TUniversalMessage>;
193
+ private chatViaExecutor;
194
+ private chatViaResponsesApi;
195
+ private chatViaChatCompletions;
196
+ chatStream(messages: TUniversalMessage[], options?: IChatOptions): AsyncIterable<TUniversalMessage>;
197
+ supportsTools(): boolean;
198
+ getCapabilities(): import("@robota-sdk/agent-core").IProviderCapabilities;
199
+ validateConfig(): boolean;
200
+ dispose(): Promise<void>;
201
+ private buildRequestParams;
202
+ private buildStreamingRequestParams;
203
+ private shouldUseResponsesApi;
204
+ private getClient;
205
+ private getResponsesClient;
206
+ }
207
+ //#endregion
208
+ //#region src/qwen/provider-definition.d.ts
209
+ declare function createQwenProviderDefinition(): IProviderDefinition;
210
+ //#endregion
211
+ //#region src/qwen/model-catalog-refresh.d.ts
212
+ interface IQwenModelsResponse {
213
+ data?: Array<{
214
+ id?: string;
215
+ object?: string;
216
+ owned_by?: string;
217
+ }>;
218
+ }
219
+ interface IQwenFetchInit {
220
+ headers?: Record<string, string>;
221
+ }
222
+ interface IQwenFetchResponse {
223
+ ok: boolean;
224
+ status: number;
225
+ json: () => Promise<IQwenModelsResponse>;
226
+ }
227
+ type TQwenFetch = (url: string, init?: IQwenFetchInit) => Promise<IQwenFetchResponse>;
228
+ declare function refreshQwenModelCatalog(profile: IProviderProfileConfig, fetcher?: TQwenFetch): Promise<IProviderModelCatalog>;
229
+ //#endregion
230
+ export { IQwenResponsesWebExtractorTool as A, TQwenResponsesStreamEvent as B, IQwenResponsesRequestStreaming as C, IQwenResponsesToolUsageCount as D, IQwenResponsesTextDeltaEvent as E, TQwenBuiltInWebToolName as F, DEFAULT_QWEN_PROVIDER_MODEL as G, DEFAULT_QWEN_PROVIDER_API_KEY_ENV as H, TQwenMessagesToResponsesInput as I, QWEN_MODEL_SOURCE_URL as J, DEFAULT_QWEN_PROVIDER_RESPONSES_BASE_URL as K, TQwenProviderOptionValue as L, IQwenResponsesWebSearchEvent as M, IQwenResponsesWebSearchOutputItem as N, IQwenResponsesUsage as O, IQwenResponsesWebSearchTool as P, TQwenProviderResponsesRegion as Q, TQwenResponsesInputItem as R, IQwenResponsesRequestNonStreaming as S, IQwenResponsesTextContent as T, DEFAULT_QWEN_PROVIDER_API_KEY_REFERENCE as U, TQwenResponsesTool as V, DEFAULT_QWEN_PROVIDER_BASE_URL as W, QWEN_PROVIDER_RESPONSES_BASE_URLS as X, QWEN_PROVIDER_BASE_URLS as Y, TQwenProviderRegion as Z, IQwenResponsesGenericOutputItem as _, refreshQwenModelCatalog as a, IQwenResponsesOutputItemDoneEvent as b, IQwenBuiltInWebToolsOptions as c, IQwenResponsesErrorEvent as d, IQwenResponsesFunctionCallInput as f, IQwenResponsesGenericEvent as g, IQwenResponsesFunctionTool as h, TQwenFetch as i, IQwenResponsesWebSearchAction as j, IQwenResponsesWebExtractorOutputItem as k, IQwenProviderOptions as l, IQwenResponsesFunctionCallOutputItem as m, IQwenFetchResponse as n, createQwenProviderDefinition as o, IQwenResponsesFunctionCallOutputInput as p, QWEN_MODEL_LAST_VERIFIED_AT as q, IQwenModelsResponse as r, QwenProvider as s, IQwenFetchInit as t, IQwenResponsesCompletedEvent as u, IQwenResponsesMessageInput as v, IQwenResponsesResponse as w, IQwenResponsesRequestBase as x, IQwenResponsesMessageOutputItem as y, TQwenResponsesOutputItem as z };
231
+ //# sourceMappingURL=index-BqixM_XD.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BqixM_XD.d.ts","names":[],"sources":["../../src/qwen/defaults.ts","../../src/qwen/types.ts","../../src/qwen/provider.ts","../../src/qwen/provider-definition.ts","../../src/qwen/model-catalog-refresh.ts"],"mappings":"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"}