@robota-sdk/agent-provider 3.0.0-beta.65 → 3.0.0-beta.66

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 (124) hide show
  1. package/README.md +89 -0
  2. package/dist/browser/index.d.ts +5 -2
  3. package/dist/browser/index.d.ts.map +1 -1
  4. package/dist/browser/index.js +3 -3
  5. package/dist/browser/index.js.map +1 -1
  6. package/dist/loggers/index.d.ts.map +1 -1
  7. package/dist/loggers/index.js.map +1 -1
  8. package/dist/node/anthropic/index.d.ts.map +1 -1
  9. package/dist/node/anthropic--1vgLC-e.js.map +1 -1
  10. package/dist/node/bytedance/index.d.ts.map +1 -1
  11. package/dist/node/bytedance-C_0sF_pJ.js.map +1 -1
  12. package/dist/node/deepseek/index.d.ts +1 -1
  13. package/dist/node/deepseek-_8Ixx7rA.js.map +1 -1
  14. package/dist/node/gemini/index.d.ts.map +1 -1
  15. package/dist/node/gemini-Bh2U87MY.js.map +1 -1
  16. package/dist/node/gemma/index.cjs +1 -1
  17. package/dist/node/gemma/index.d.ts +1 -1
  18. package/dist/node/gemma/index.js +1 -1
  19. package/dist/node/{gemma-G-Pf_PnX.cjs → gemma-079LPvrN.cjs} +1 -1
  20. package/dist/node/gemma-BMFWnmXE.js +2 -0
  21. package/dist/node/gemma-BMFWnmXE.js.map +1 -0
  22. package/dist/node/google/index.d.ts.map +1 -1
  23. package/dist/node/google/index.js.map +1 -1
  24. package/dist/node/index-B6PnlDMd.d.ts.map +1 -1
  25. package/dist/node/index-B7UvPJcI.d.ts.map +1 -1
  26. package/dist/node/{index-C3beaqKO.d.ts → index-B9a2gTwI.d.ts} +3 -3
  27. package/dist/node/{index-BqixM_XD.d.ts.map → index-B9a2gTwI.d.ts.map} +1 -1
  28. package/dist/node/index-BLPOTNb5.d.ts.map +1 -1
  29. package/dist/node/{index-BqixM_XD.d.ts → index-CjPeNJ1G.d.ts} +3 -3
  30. package/dist/node/{index-C3beaqKO.d.ts.map → index-CjPeNJ1G.d.ts.map} +1 -1
  31. package/dist/node/index-Cp2XRh9G.d.ts.map +1 -1
  32. package/dist/node/index-DSv5xruI.d.ts.map +1 -1
  33. package/dist/node/index-w0bV1uaP.d.ts.map +1 -1
  34. package/dist/node/index.cjs +1 -1
  35. package/dist/node/index.d.ts +11 -5
  36. package/dist/node/index.d.ts.map +1 -0
  37. package/dist/node/index.js +2 -1
  38. package/dist/node/index.js.map +1 -0
  39. package/dist/node/openai/index.cjs +1 -1
  40. package/dist/node/openai/index.d.ts +1 -1
  41. package/dist/node/openai/index.js +1 -1
  42. package/dist/node/openai--CyyQ-E4.js +2 -0
  43. package/dist/node/openai--CyyQ-E4.js.map +1 -0
  44. package/dist/node/{openai-xWC6pY7r.cjs → openai-CmuDu5k-.cjs} +1 -1
  45. package/dist/node/openai-compatible-Dm4Sof9e.js.map +1 -1
  46. package/dist/node/qwen/index.cjs +1 -1
  47. package/dist/node/qwen/index.d.ts +1 -1
  48. package/dist/node/qwen/index.js +1 -1
  49. package/dist/node/qwen-D8gtsbsC.js +2 -0
  50. package/dist/node/qwen-D8gtsbsC.js.map +1 -0
  51. package/dist/node/qwen-DxNnm7Le.cjs +1 -0
  52. package/package.json +4 -2
  53. package/src/anthropic/index.ts +1 -1
  54. package/src/anthropic/message-converter.ts +3 -2
  55. package/src/anthropic/model-catalog-refresh.ts +5 -4
  56. package/src/anthropic/parsers/response-parser.ts +5 -2
  57. package/src/anthropic/provider-definition.ts +2 -1
  58. package/src/anthropic/provider.ts +6 -3
  59. package/src/anthropic/streaming-handler.ts +4 -2
  60. package/src/anthropic/types.ts +1 -1
  61. package/src/bytedance/http-client.ts +1 -1
  62. package/src/bytedance/provider.spec.ts +1 -0
  63. package/src/bytedance/provider.ts +10 -9
  64. package/src/bytedance/status-mapper.ts +1 -1
  65. package/src/deepseek/model-catalog-refresh.ts +6 -5
  66. package/src/deepseek/model-catalog.ts +2 -1
  67. package/src/deepseek/provider-definition.ts +3 -2
  68. package/src/deepseek/provider.ts +11 -9
  69. package/src/deepseek/types.ts +1 -1
  70. package/src/default-provider-definitions.ts +19 -0
  71. package/src/gemini/execution-helpers.ts +14 -12
  72. package/src/gemini/image-operations.ts +2 -2
  73. package/src/gemini/message-converter.ts +1 -0
  74. package/src/gemini/model-catalog-refresh.ts +2 -1
  75. package/src/gemini/provider-definition.ts +2 -1
  76. package/src/gemini/provider.spec.ts +2 -0
  77. package/src/gemini/provider.ts +6 -3
  78. package/src/gemini/tool-schema-converter.ts +1 -0
  79. package/src/gemma/message-factory.ts +2 -1
  80. package/src/gemma/provider-definition.ts +3 -2
  81. package/src/gemma/provider-projection.ts +4 -3
  82. package/src/gemma/provider.ts +19 -17
  83. package/src/gemma/pseudo-command-envelope.ts +1 -0
  84. package/src/gemma/pseudo-tool-call-projector.ts +2 -1
  85. package/src/gemma/streaming-projection.ts +6 -4
  86. package/src/gemma/tool-call-projector.ts +4 -3
  87. package/src/gemma/types.ts +1 -1
  88. package/src/google/provider.ts +1 -0
  89. package/src/index.ts +2 -0
  90. package/src/openai/adapter.ts +1 -1
  91. package/src/openai/chat-completions-chat.ts +8 -7
  92. package/src/openai/loggers/console-payload-logger.ts +4 -2
  93. package/src/openai/loggers/file-payload-logger.ts +5 -2
  94. package/src/openai/message-converter.ts +3 -2
  95. package/src/openai/openai-request-format.ts +1 -1
  96. package/src/openai/parsers/response-parser.ts +3 -2
  97. package/src/openai/provider-definition.ts +3 -2
  98. package/src/openai/provider.ts +11 -9
  99. package/src/openai/responses-chat.ts +7 -5
  100. package/src/openai/responses-converter.ts +6 -6
  101. package/src/openai/responses-parser.ts +4 -2
  102. package/src/openai/responses-types.ts +1 -1
  103. package/src/openai/streaming/stream-handler.ts +6 -4
  104. package/src/openai/types.ts +1 -2
  105. package/src/qwen/model-catalog-refresh.ts +6 -5
  106. package/src/qwen/provider-capabilities.ts +1 -1
  107. package/src/qwen/provider-definition.ts +6 -5
  108. package/src/qwen/provider-streaming-assembly.ts +3 -2
  109. package/src/qwen/provider.ts +19 -12
  110. package/src/qwen/responses-chat.ts +8 -6
  111. package/src/qwen/responses-converter.ts +1 -1
  112. package/src/qwen/responses-parser.ts +4 -2
  113. package/src/qwen/types.ts +1 -1
  114. package/src/shared/openai-compatible/message-converter.ts +1 -1
  115. package/src/shared/openai-compatible/response-parser.ts +4 -2
  116. package/src/shared/openai-compatible/stream-assembler.ts +3 -2
  117. package/src/shared/openai-compatible/types.ts +1 -1
  118. package/dist/node/gemma-Dp_AfCUR.js +0 -2
  119. package/dist/node/gemma-Dp_AfCUR.js.map +0 -1
  120. package/dist/node/openai-CRQjg4xF.js +0 -2
  121. package/dist/node/openai-CRQjg4xF.js.map +0 -1
  122. package/dist/node/qwen-ChUZobTL.js +0 -2
  123. package/dist/node/qwen-ChUZobTL.js.map +0 -1
  124. package/dist/node/qwen-CjT71vSM.cjs +0 -1
@@ -1,6 +1,7 @@
1
1
  import { randomUUID } from 'node:crypto';
2
- import type OpenAI from 'openai';
2
+
3
3
  import type { IToolCall, TUniversalMessage } from '@robota-sdk/agent-core';
4
+ import type OpenAI from 'openai';
4
5
 
5
6
  export function createStreamTextMessage(
6
7
  content: string,
@@ -1,6 +1,7 @@
1
- import type { IProviderDefinition } from '@robota-sdk/agent-core';
2
- import { probeOpenAICompatibleProfile } from '../shared/openai-compatible/index.js';
3
1
  import { GemmaProvider } from './provider';
2
+ import { probeOpenAICompatibleProfile } from '../shared/openai-compatible/index.js';
3
+
4
+ import type { IProviderDefinition } from '@robota-sdk/agent-core';
4
5
 
5
6
  export const DEFAULT_GEMMA_PROVIDER_MODEL = 'supergemma4-26b-uncensored-v2';
6
7
  export const DEFAULT_GEMMA_PROVIDER_API_KEY = 'lm-studio';
@@ -1,8 +1,9 @@
1
- import type OpenAI from 'openai';
2
- import type { IChatOptions, ILogger, TUniversalMessage } from '@robota-sdk/agent-core';
3
- import { OpenAICompatibleResponseParser } from '../shared/openai-compatible/index.js';
4
1
  import { projectGemmaReasoningText } from './reasoning-projector';
5
2
  import { createGemmaToolCallProjector } from './tool-call-projector';
3
+ import { OpenAICompatibleResponseParser } from '../shared/openai-compatible/index.js';
4
+
5
+ import type { IChatOptions, ILogger, TUniversalMessage } from '@robota-sdk/agent-core';
6
+ import type OpenAI from 'openai';
6
7
 
7
8
  export function parseGemmaChatCompletion(
8
9
  response: OpenAI.Chat.ChatCompletion,
@@ -1,28 +1,30 @@
1
- import OpenAI from 'openai';
2
1
  import { AbstractAIProvider, SilentLogger } from '@robota-sdk/agent-core';
3
- import type {
4
- IAssistantMessage,
5
- IChatOptions,
6
- IProviderCapabilities,
7
- TTextDeltaCallback,
8
- TUniversalMessage,
9
- } from '@robota-sdk/agent-core';
2
+ import OpenAI from 'openai';
3
+
4
+ import { parseGemmaChatCompletion, withGemmaProjectionMetadata } from './provider-projection';
5
+ import { GemmaReasoningProjector } from './reasoning-projector';
6
+ import {
7
+ createGemmaStreamProjectionState,
8
+ flushGemmaStreamProjection,
9
+ projectGemmaStreamChunk,
10
+ } from './streaming-projection';
11
+ import { createGemmaToolCallProjector } from './tool-call-projector';
10
12
  import {
11
13
  assembleOpenAICompatibleStream,
12
14
  convertToOpenAICompatibleMessages,
13
15
  convertToOpenAICompatibleTools,
14
16
  observeProviderNativeRawPayloadStream,
15
17
  } from '../shared/openai-compatible/index.js';
16
- import type { IOpenAICompatibleError } from '../shared/openai-compatible/index.js';
18
+
17
19
  import type { IGemmaProviderOptions } from './types';
18
- import { GemmaReasoningProjector } from './reasoning-projector';
19
- import { createGemmaToolCallProjector } from './tool-call-projector';
20
- import { parseGemmaChatCompletion, withGemmaProjectionMetadata } from './provider-projection';
21
- import {
22
- createGemmaStreamProjectionState,
23
- flushGemmaStreamProjection,
24
- projectGemmaStreamChunk,
25
- } from './streaming-projection';
20
+ import type { IOpenAICompatibleError } from '../shared/openai-compatible/index.js';
21
+ import type {
22
+ IAssistantMessage,
23
+ IChatOptions,
24
+ IProviderCapabilities,
25
+ TTextDeltaCallback,
26
+ TUniversalMessage,
27
+ } from '@robota-sdk/agent-core';
26
28
 
27
29
  export class GemmaProvider extends AbstractAIProvider {
28
30
  override readonly name = 'gemma';
@@ -1,4 +1,5 @@
1
1
  import { findGemmaDeclaredToolName } from './pseudo-tool-call-tag-parser';
2
+
2
3
  import type { TGemmaJsonValue } from './pseudo-tool-call-types';
3
4
 
4
5
  export interface IGemmaPseudoCommandEnvelope {
@@ -1,4 +1,3 @@
1
- import type { IToolCall } from '@robota-sdk/agent-core';
2
1
  import { parseGemmaPseudoCommandEnvelopes } from './pseudo-command-envelope';
3
2
  import {
4
3
  consumeGemmaPseudoControlBlock,
@@ -9,12 +8,14 @@ import {
9
8
  longestGemmaPseudoStartPrefixSuffixLength,
10
9
  parseGemmaPseudoTag,
11
10
  } from './pseudo-tool-call-tag-parser';
11
+
12
12
  import type {
13
13
  IGemmaConsumedPseudoBlock,
14
14
  IGemmaParsedPseudoTag,
15
15
  IGemmaPseudoProjectionOptions,
16
16
  TGemmaJsonValue,
17
17
  } from './pseudo-tool-call-types';
18
+ import type { IToolCall } from '@robota-sdk/agent-core';
18
19
 
19
20
  const DEFAULT_CALL_ID_PREFIX = 'gemma_call';
20
21
 
@@ -1,11 +1,13 @@
1
- import type OpenAI from 'openai';
2
1
  import { isAssistantMessage } from '@robota-sdk/agent-core';
3
- import type { ILogger, IToolSchema, TUniversalMessage } from '@robota-sdk/agent-core';
4
- import { OpenAICompatibleResponseParser } from '../shared/openai-compatible/index.js';
5
- import type { IOpenAICompatibleToolCallTextProjector } from '../shared/openai-compatible/index.js';
2
+
6
3
  import { createStreamTextMessage, createStreamToolCallMessage } from './message-factory';
7
4
  import { GemmaReasoningProjector } from './reasoning-projector';
8
5
  import { createGemmaToolCallProjector } from './tool-call-projector';
6
+ import { OpenAICompatibleResponseParser } from '../shared/openai-compatible/index.js';
7
+
8
+ import type { IOpenAICompatibleToolCallTextProjector } from '../shared/openai-compatible/index.js';
9
+ import type { ILogger, IToolSchema, TUniversalMessage } from '@robota-sdk/agent-core';
10
+ import type OpenAI from 'openai';
9
11
 
10
12
  export interface IGemmaStreamProjectionState {
11
13
  reasoningProjector: GemmaReasoningProjector;
@@ -1,10 +1,11 @@
1
- import type { IToolCall, IToolSchema } from '@robota-sdk/agent-core';
1
+ import { projectGemmaPseudoToolCallText } from './pseudo-tool-call-projector';
2
+ import { GemmaArgumentParser } from './tool-call-argument-parser';
3
+
2
4
  import type {
3
5
  IOpenAICompatibleToolCallTextProjection,
4
6
  IOpenAICompatibleToolCallTextProjector,
5
7
  } from '../shared/openai-compatible/index.js';
6
- import { GemmaArgumentParser } from './tool-call-argument-parser';
7
- import { projectGemmaPseudoToolCallText } from './pseudo-tool-call-projector';
8
+ import type { IToolCall, IToolSchema } from '@robota-sdk/agent-core';
8
9
 
9
10
  const TOOL_CALL_START = '<|tool_call>';
10
11
  const TOOL_CALL_END = '<tool_call|>';
@@ -1,5 +1,5 @@
1
- import type OpenAI from 'openai';
2
1
  import type { IExecutor, ILogger, TProviderOptionValueBase } from '@robota-sdk/agent-core';
2
+ import type OpenAI from 'openai';
3
3
 
4
4
  export type TGemmaProviderOptionValue =
5
5
  | string
@@ -1,4 +1,5 @@
1
1
  import { GeminiProvider } from '../gemini/index.js';
2
+
2
3
  import type { IGoogleProviderOptions } from './types.js';
3
4
 
4
5
  export class GoogleProvider extends GeminiProvider {
package/src/index.ts CHANGED
@@ -7,3 +7,5 @@ export * from './bytedance/index.js';
7
7
  export * from './qwen/index.js';
8
8
  // google/ omitted: deprecated compatibility alias for gemini, available via sub-path only
9
9
  // import { GoogleProvider } from '@robota-sdk/agent-provider/google';
10
+
11
+ export { createDefaultProviderDefinitions } from './default-provider-definitions.js';
@@ -1,5 +1,5 @@
1
- import OpenAI from 'openai';
2
1
  import type { TUniversalMessage, IAssistantMessage } from '@robota-sdk/agent-core';
2
+ import type OpenAI from 'openai';
3
3
 
4
4
  /**
5
5
  * OpenAI Conversation Adapter
@@ -1,13 +1,14 @@
1
- import type OpenAI from 'openai';
2
- import type { IChatOptions, TTextDeltaCallback, TUniversalMessage } from '@robota-sdk/agent-core';
1
+ import { convertToOpenAIMessages, convertToOpenAITools } from './message-converter';
2
+ import { buildOpenAIChatResponseFormat } from './openai-request-format';
3
+ import { assembleOpenAIStream } from './streaming/stream-assembler';
3
4
  import { observeProviderNativeRawPayloadStream } from '../shared/openai-compatible/index.js';
5
+
4
6
  import type { IPayloadLogger } from './interfaces/payload-logger';
5
- import type { IOpenAIError, IOpenAILogData } from './types/api-types';
7
+ import type { OpenAIResponseParser } from './parsers/response-parser';
6
8
  import type { IOpenAIProviderOptions } from './types';
7
- import { buildOpenAIChatResponseFormat } from './openai-request-format';
8
- import { convertToOpenAIMessages, convertToOpenAITools } from './message-converter';
9
- import { OpenAIResponseParser } from './parsers/response-parser';
10
- import { assembleOpenAIStream } from './streaming/stream-assembler';
9
+ import type { IOpenAIError, IOpenAILogData } from './types/api-types';
10
+ import type { IChatOptions, TTextDeltaCallback, TUniversalMessage } from '@robota-sdk/agent-core';
11
+ import type OpenAI from 'openai';
11
12
 
12
13
  export interface IOpenAIChatCompletionsOptions {
13
14
  client?: OpenAI;
@@ -1,8 +1,10 @@
1
- import type { IPayloadLogger, IPayloadLoggerOptions } from '../interfaces/payload-logger';
2
- import type { IOpenAILogData } from '../types/api-types';
3
1
  import { SilentLogger, type ILogger } from '@robota-sdk/agent-core';
2
+
4
3
  import { sanitizeOpenAILogData } from './sanitize-openai-log-data';
5
4
 
5
+ import type { IPayloadLogger, IPayloadLoggerOptions } from '../interfaces/payload-logger';
6
+ import type { IOpenAILogData } from '../types/api-types';
7
+
6
8
  /**
7
9
  * Console-based payload logger for browser environments
8
10
  *
@@ -1,10 +1,13 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
+
4
+ import { SilentLogger } from '@robota-sdk/agent-core';
5
+
6
+ import { sanitizeOpenAILogData } from './sanitize-openai-log-data';
7
+
3
8
  import type { IPayloadLogger } from '../interfaces/payload-logger';
4
9
  import type { IOpenAILogData } from '../types/api-types';
5
10
  import type { ILogger } from '@robota-sdk/agent-core';
6
- import { SilentLogger } from '@robota-sdk/agent-core';
7
- import { sanitizeOpenAILogData } from './sanitize-openai-log-data';
8
11
 
9
12
  /**
10
13
  * File-based payload logger for Node.js environments
@@ -1,10 +1,11 @@
1
- import type OpenAI from 'openai';
2
- import type { IToolSchema, TUniversalMessage } from '@robota-sdk/agent-core';
3
1
  import {
4
2
  convertToOpenAICompatibleMessages,
5
3
  convertToOpenAICompatibleTools,
6
4
  } from '../shared/openai-compatible/index.js';
7
5
 
6
+ import type { IToolSchema, TUniversalMessage } from '@robota-sdk/agent-core';
7
+ import type OpenAI from 'openai';
8
+
8
9
  /**
9
10
  * Convert TUniversalMessage array to OpenAI chat completion message format.
10
11
  */
@@ -1,8 +1,8 @@
1
- import type { IOpenAIProviderOptions, TOpenAIProviderOptionValue } from './types';
2
1
  import type {
3
2
  IOpenAIResponsesTextConfig,
4
3
  IOpenAIResponsesTextFormatJsonSchema,
5
4
  } from './responses-types';
5
+ import type { IOpenAIProviderOptions, TOpenAIProviderOptionValue } from './types';
6
6
 
7
7
  export interface IOpenAIChatTextFormatText {
8
8
  type: 'text';
@@ -1,7 +1,8 @@
1
- import type OpenAI from 'openai';
2
- import type { ILogger, TUniversalMessage } from '@robota-sdk/agent-core';
3
1
  import { OpenAICompatibleResponseParser } from '../../shared/openai-compatible/index.js';
4
2
 
3
+ import type { ILogger, TUniversalMessage } from '@robota-sdk/agent-core';
4
+ import type OpenAI from 'openai';
5
+
5
6
  /**
6
7
  * OpenAI response parser compatibility wrapper.
7
8
  *
@@ -1,8 +1,9 @@
1
- import type { IProviderDefinition, TUniversalValue } from '@robota-sdk/agent-core';
2
- import { probeOpenAICompatibleProfile } from '../shared/openai-compatible/index.js';
3
1
  import { refreshOpenAIModelCatalog } from './model-catalog-refresh';
4
2
  import { OpenAIProvider } from './provider';
3
+ import { probeOpenAICompatibleProfile } from '../shared/openai-compatible/index.js';
4
+
5
5
  import type { IOpenAINativeWebToolsOptions, TOpenAIApiSurface } from './types';
6
+ import type { IProviderDefinition, TUniversalValue } from '@robota-sdk/agent-core';
6
7
 
7
8
  export const DEFAULT_OPENAI_PROVIDER_MODEL: string | undefined = undefined;
8
9
  export const DEFAULT_OPENAI_PROVIDER_API_KEY_REFERENCE = '$ENV:OPENAI_API_KEY';
@@ -1,6 +1,16 @@
1
+ import { AbstractAIProvider } from '@robota-sdk/agent-core';
2
+ import { SilentLogger } from '@robota-sdk/agent-core';
1
3
  import OpenAI from 'openai';
4
+
5
+ import {
6
+ chatStreamWithOpenAIChatCompletions,
7
+ chatWithOpenAIChatCompletions,
8
+ } from './chat-completions-chat';
9
+ import { OpenAIResponseParser } from './parsers/response-parser';
10
+ import { chatStreamWithOpenAIResponsesApi, chatWithOpenAIResponsesApi } from './responses-chat';
11
+
12
+ import type { IPayloadLogger } from './interfaces/payload-logger';
2
13
  import type { IOpenAIProviderOptions, TOpenAIApiSurface } from './types';
3
- import { AbstractAIProvider } from '@robota-sdk/agent-core';
4
14
  import type {
5
15
  TUniversalMessage,
6
16
  IChatOptions,
@@ -8,14 +18,6 @@ import type {
8
18
  IProviderCapabilities,
9
19
  TTextDeltaCallback,
10
20
  } from '@robota-sdk/agent-core';
11
- import type { IPayloadLogger } from './interfaces/payload-logger';
12
- import { OpenAIResponseParser } from './parsers/response-parser';
13
- import { SilentLogger } from '@robota-sdk/agent-core';
14
- import {
15
- chatStreamWithOpenAIChatCompletions,
16
- chatWithOpenAIChatCompletions,
17
- } from './chat-completions-chat';
18
- import { chatStreamWithOpenAIResponsesApi, chatWithOpenAIResponsesApi } from './responses-chat';
19
21
 
20
22
  /**
21
23
  * OpenAI provider implementation for Robota
@@ -1,20 +1,22 @@
1
1
  import { randomUUID } from 'node:crypto';
2
- import type OpenAI from 'openai';
3
- import type { IChatOptions, TTextDeltaCallback, TUniversalMessage } from '@robota-sdk/agent-core';
4
- import { observeProviderNativeRawPayloadStream } from '../shared/openai-compatible/index.js';
5
- import type { IOpenAIError } from './types/api-types';
6
- import type { IOpenAIProviderOptions } from './types';
2
+
7
3
  import { buildOpenAIResponsesTextConfig } from './openai-request-format';
8
4
  import {
9
5
  convertToOpenAIResponsesInput,
10
6
  convertToOpenAIResponsesTools,
11
7
  } from './responses-converter';
12
8
  import { assembleOpenAIResponsesStream, parseOpenAIResponsesResponse } from './responses-parser';
9
+ import { observeProviderNativeRawPayloadStream } from '../shared/openai-compatible/index.js';
10
+
13
11
  import type {
14
12
  IOpenAIResponsesRequestNonStreaming,
15
13
  IOpenAIResponsesRequestStreaming,
16
14
  TOpenAIResponsesStreamEvent,
17
15
  } from './responses-types';
16
+ import type { IOpenAIProviderOptions } from './types';
17
+ import type { IOpenAIError } from './types/api-types';
18
+ import type { IChatOptions, TTextDeltaCallback, TUniversalMessage } from '@robota-sdk/agent-core';
19
+ import type OpenAI from 'openai';
18
20
 
19
21
  export interface IOpenAIResponsesChatOptions {
20
22
  client?: OpenAI;
@@ -1,15 +1,15 @@
1
- import type {
2
- IAssistantMessage,
3
- IToolSchema,
4
- TUniversalMessage,
5
- TUniversalMessagePart,
6
- } from '@robota-sdk/agent-core';
7
1
  import type {
8
2
  IOpenAIResponsesFunctionTool,
9
3
  IOpenAIResponsesMessageInput,
10
4
  TOpenAIResponsesInputContent,
11
5
  TOpenAIResponsesInputItem,
12
6
  } from './responses-types';
7
+ import type {
8
+ IAssistantMessage,
9
+ IToolSchema,
10
+ TUniversalMessage,
11
+ TUniversalMessagePart,
12
+ } from '@robota-sdk/agent-core';
13
13
 
14
14
  export function convertToOpenAIResponsesInput(
15
15
  messages: TUniversalMessage[],
@@ -1,5 +1,7 @@
1
1
  import { randomUUID } from 'node:crypto';
2
- import type { IToolCall, TTextDeltaCallback, TUniversalMessage } from '@robota-sdk/agent-core';
2
+
3
+ import { streamWithAbort } from './responses-stream-utils';
4
+
3
5
  import type {
4
6
  IOpenAIResponsesErrorEvent,
5
7
  IOpenAIResponsesFunctionCallOutputItem,
@@ -11,7 +13,7 @@ import type {
11
13
  TOpenAIResponsesOutputItem,
12
14
  TOpenAIResponsesStreamEvent,
13
15
  } from './responses-types';
14
- import { streamWithAbort } from './responses-stream-utils';
16
+ import type { IToolCall, TTextDeltaCallback, TUniversalMessage } from '@robota-sdk/agent-core';
15
17
 
16
18
  interface IOpenAIResponsesStreamAssemblyOptions {
17
19
  stream: AsyncIterable<TOpenAIResponsesStreamEvent>;
@@ -1,9 +1,9 @@
1
- import type { IToolSchema } from '@robota-sdk/agent-core';
2
1
  import type {
3
2
  IOpenAIJsonSchemaDefinition,
4
3
  IOpenAIResponsesReasoningOptions,
5
4
  TOpenAIProviderOptionValue,
6
5
  } from './types';
6
+ import type { IToolSchema } from '@robota-sdk/agent-core';
7
7
 
8
8
  export type TOpenAIResponsesInputRole = 'user' | 'assistant' | 'system' | 'developer';
9
9
 
@@ -1,10 +1,12 @@
1
- import OpenAI from 'openai';
2
- import type { TUniversalMessage } from '@robota-sdk/agent-core';
3
- import type { IPayloadLogger } from '../interfaces/payload-logger';
4
- import type { IOpenAIChatRequestParams, IOpenAIStreamRequestParams } from '../types/api-types';
5
1
  import { SilentLogger, type ILogger } from '@robota-sdk/agent-core';
2
+
6
3
  import { OpenAIResponseParser } from '../parsers/response-parser';
7
4
 
5
+ import type { IPayloadLogger } from '../interfaces/payload-logger';
6
+ import type { IOpenAIChatRequestParams, IOpenAIStreamRequestParams } from '../types/api-types';
7
+ import type { TUniversalMessage } from '@robota-sdk/agent-core';
8
+ import type OpenAI from 'openai';
9
+
8
10
  /**
9
11
  * OpenAI streaming response handler
10
12
  *
@@ -1,7 +1,6 @@
1
- import OpenAI from 'openai';
2
-
3
1
  import type { IPayloadLogger } from './interfaces/payload-logger';
4
2
  import type { IExecutor, ILogger, TProviderOptionValueBase } from '@robota-sdk/agent-core';
3
+ import type OpenAI from 'openai';
5
4
 
6
5
  export type TOpenAIApiSurface = 'responses' | 'chat-completions';
7
6
 
@@ -1,14 +1,15 @@
1
- import type {
2
- IProviderModelCatalog,
3
- IProviderModelCatalogEntry,
4
- IProviderProfileConfig,
5
- } from '@robota-sdk/agent-core';
6
1
  import {
7
2
  DEFAULT_QWEN_PROVIDER_BASE_URL,
8
3
  QWEN_MODEL_LAST_VERIFIED_AT,
9
4
  QWEN_MODEL_SOURCE_URL,
10
5
  } from './defaults';
11
6
 
7
+ import type {
8
+ IProviderModelCatalog,
9
+ IProviderModelCatalogEntry,
10
+ IProviderProfileConfig,
11
+ } from '@robota-sdk/agent-core';
12
+
12
13
  export interface IQwenModelsResponse {
13
14
  data?: Array<{
14
15
  id?: string;
@@ -1,5 +1,5 @@
1
- import type { IProviderCapabilities } from '@robota-sdk/agent-core';
2
1
  import type { IQwenProviderOptions } from './types';
2
+ import type { IProviderCapabilities } from '@robota-sdk/agent-core';
3
3
 
4
4
  const QWEN_RESPONSES_SOURCE = 'qwen-responses';
5
5
  const ENABLE_WEB_SEARCH_REASON = 'Enable builtInWebTools.webSearch or builtInWebTools.webFetch.';
@@ -1,7 +1,3 @@
1
- import type { IProviderDefinition } from '@robota-sdk/agent-core';
2
- import type { TUniversalValue } from '@robota-sdk/agent-core';
3
- import { probeOpenAICompatibleProfile } from '../shared/openai-compatible/index.js';
4
- import { QwenProvider } from './provider';
5
1
  import {
6
2
  DEFAULT_QWEN_PROVIDER_API_KEY_REFERENCE,
7
3
  DEFAULT_QWEN_PROVIDER_BASE_URL,
@@ -9,8 +5,13 @@ import {
9
5
  QWEN_MODEL_LAST_VERIFIED_AT,
10
6
  QWEN_MODEL_SOURCE_URL,
11
7
  } from './defaults';
12
- import type { IQwenBuiltInWebToolsOptions } from './types';
13
8
  import { refreshQwenModelCatalog } from './model-catalog-refresh';
9
+ import { QwenProvider } from './provider';
10
+ import { probeOpenAICompatibleProfile } from '../shared/openai-compatible/index.js';
11
+
12
+ import type { IQwenBuiltInWebToolsOptions } from './types';
13
+ import type { IProviderDefinition } from '@robota-sdk/agent-core';
14
+ import type { TUniversalValue } from '@robota-sdk/agent-core';
14
15
 
15
16
  const QWEN_API_KEY_URL = 'https://modelstudio.console.alibabacloud.com/?tab=api#/api-key';
16
17
  const QWEN_SETUP_SOURCE_URL = 'https://www.alibabacloud.com/help/en/model-studio/get-api-key';
@@ -1,10 +1,11 @@
1
- import OpenAI from 'openai';
2
- import type { IChatOptions, TUniversalMessage } from '@robota-sdk/agent-core';
3
1
  import {
4
2
  assembleOpenAICompatibleStream,
5
3
  observeProviderNativeRawPayloadStream,
6
4
  } from '../shared/openai-compatible/index.js';
5
+
7
6
  import type { IOpenAICompatibleError } from '../shared/openai-compatible/index.js';
7
+ import type { IChatOptions, TUniversalMessage } from '@robota-sdk/agent-core';
8
+ import type OpenAI from 'openai';
8
9
 
9
10
  export async function qwenChatWithStreamingAssembly(
10
11
  client: OpenAI,
@@ -1,6 +1,14 @@
1
- import OpenAI from 'openai';
2
1
  import { AbstractAIProvider, SilentLogger } from '@robota-sdk/agent-core';
3
- import type { IChatOptions, TTextDeltaCallback, TUniversalMessage } from '@robota-sdk/agent-core';
2
+ import OpenAI from 'openai';
3
+
4
+ import {
5
+ DEFAULT_QWEN_PROVIDER_BASE_URL,
6
+ DEFAULT_QWEN_PROVIDER_RESPONSES_BASE_URL,
7
+ } from './defaults';
8
+ import { getQwenProviderCapabilities } from './provider-capabilities';
9
+ import { qwenChatWithStreamingAssembly } from './provider-streaming-assembly';
10
+ import { chatStreamWithQwenResponsesApi, chatWithQwenResponsesApi } from './responses-chat';
11
+ import { hasQwenBuiltInWebTools } from './responses-converter';
4
12
  import {
5
13
  assembleOpenAICompatibleStream,
6
14
  convertToOpenAICompatibleMessages,
@@ -8,16 +16,15 @@ import {
8
16
  observeProviderNativeRawPayloadStream,
9
17
  OpenAICompatibleResponseParser,
10
18
  } from '../shared/openai-compatible/index.js';
11
- import type { IOpenAICompatibleError } from '../shared/openai-compatible/index.js';
12
- import {
13
- DEFAULT_QWEN_PROVIDER_BASE_URL,
14
- DEFAULT_QWEN_PROVIDER_RESPONSES_BASE_URL,
15
- } from './defaults';
16
- import { hasQwenBuiltInWebTools } from './responses-converter';
17
- import { chatStreamWithQwenResponsesApi, chatWithQwenResponsesApi } from './responses-chat';
18
- import { getQwenProviderCapabilities } from './provider-capabilities';
19
- import { qwenChatWithStreamingAssembly } from './provider-streaming-assembly';
19
+
20
20
  import type { IQwenProviderOptions } from './types';
21
+ import type { IOpenAICompatibleError } from '../shared/openai-compatible/index.js';
22
+ import type {
23
+ IChatOptions,
24
+ IProviderCapabilities,
25
+ TTextDeltaCallback,
26
+ TUniversalMessage,
27
+ } from '@robota-sdk/agent-core';
21
28
 
22
29
  export class QwenProvider extends AbstractAIProvider {
23
30
  override readonly name = 'qwen';
@@ -219,7 +226,7 @@ export class QwenProvider extends AbstractAIProvider {
219
226
  return true;
220
227
  }
221
228
 
222
- override getCapabilities() {
229
+ override getCapabilities(): IProviderCapabilities {
223
230
  return getQwenProviderCapabilities(this.options);
224
231
  }
225
232
 
@@ -1,22 +1,24 @@
1
1
  import { randomUUID } from 'node:crypto';
2
- import type OpenAI from 'openai';
3
- import type { IChatOptions, TTextDeltaCallback, TUniversalMessage } from '@robota-sdk/agent-core';
4
- import {
5
- observeProviderNativeRawPayloadStream,
6
- type IOpenAICompatibleError,
7
- } from '../shared/openai-compatible/index.js';
2
+
8
3
  import {
9
4
  buildQwenResponsesTools,
10
5
  convertToQwenResponsesInput,
11
6
  getQwenBuiltInWebToolNames,
12
7
  } from './responses-converter';
13
8
  import { assembleQwenResponsesStream, parseQwenResponsesResponse } from './responses-parser';
9
+ import {
10
+ observeProviderNativeRawPayloadStream,
11
+ type IOpenAICompatibleError,
12
+ } from '../shared/openai-compatible/index.js';
13
+
14
14
  import type {
15
15
  IQwenBuiltInWebToolsOptions,
16
16
  IQwenResponsesRequestNonStreaming,
17
17
  IQwenResponsesRequestStreaming,
18
18
  TQwenResponsesStreamEvent,
19
19
  } from './types';
20
+ import type { IChatOptions, TTextDeltaCallback, TUniversalMessage } from '@robota-sdk/agent-core';
21
+ import type OpenAI from 'openai';
20
22
 
21
23
  export interface IQwenResponsesChatOptions {
22
24
  client?: OpenAI;
@@ -1,4 +1,3 @@
1
- import type { IAssistantMessage, IToolSchema, TUniversalMessage } from '@robota-sdk/agent-core';
2
1
  import type {
3
2
  IQwenBuiltInWebToolsOptions,
4
3
  IQwenResponsesFunctionTool,
@@ -7,6 +6,7 @@ import type {
7
6
  TQwenResponsesInputItem,
8
7
  TQwenResponsesTool,
9
8
  } from './types';
9
+ import type { IAssistantMessage, IToolSchema, TUniversalMessage } from '@robota-sdk/agent-core';
10
10
 
11
11
  export function getQwenBuiltInWebToolNames(
12
12
  options: IQwenBuiltInWebToolsOptions | undefined,
@@ -1,5 +1,7 @@
1
1
  import { randomUUID } from 'node:crypto';
2
- import type { IToolCall, TTextDeltaCallback, TUniversalMessage } from '@robota-sdk/agent-core';
2
+
3
+ import { streamWithAbort } from './responses-stream-utils';
4
+
3
5
  import type {
4
6
  IQwenResponsesFunctionCallOutputItem,
5
7
  IQwenResponsesErrorEvent,
@@ -9,7 +11,7 @@ import type {
9
11
  TQwenResponsesOutputItem,
10
12
  TQwenResponsesStreamEvent,
11
13
  } from './types';
12
- import { streamWithAbort } from './responses-stream-utils';
14
+ import type { IToolCall, TTextDeltaCallback, TUniversalMessage } from '@robota-sdk/agent-core';
13
15
 
14
16
  interface IQwenResponsesParseOptions {
15
17
  enabledBuiltInTools: readonly TQwenBuiltInWebToolName[];
package/src/qwen/types.ts CHANGED
@@ -1,4 +1,3 @@
1
- import type OpenAI from 'openai';
2
1
  import type {
3
2
  IExecutor,
4
3
  ILogger,
@@ -6,6 +5,7 @@ import type {
6
5
  TProviderOptionValueBase,
7
6
  TUniversalMessage,
8
7
  } from '@robota-sdk/agent-core';
8
+ import type OpenAI from 'openai';
9
9
 
10
10
  export type TQwenBuiltInWebToolName = 'web_search' | 'web_extractor';
11
11
 
@@ -1,10 +1,10 @@
1
- import type OpenAI from 'openai';
2
1
  import type {
3
2
  IAssistantMessage,
4
3
  IToolCall,
5
4
  IToolSchema,
6
5
  TUniversalMessage,
7
6
  } from '@robota-sdk/agent-core';
7
+ import type OpenAI from 'openai';
8
8
 
9
9
  export function convertToOpenAICompatibleMessages(
10
10
  messages: TUniversalMessage[],