@hebo-ai/gateway 0.10.7 → 0.11.1

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 (115) hide show
  1. package/README.md +97 -84
  2. package/dist/config.js +21 -4
  3. package/dist/endpoints/chat-completions/converters.js +6 -2
  4. package/dist/endpoints/chat-completions/handler.js +9 -5
  5. package/dist/endpoints/chat-completions/schema.d.ts +48 -4
  6. package/dist/endpoints/chat-completions/schema.js +1 -1
  7. package/dist/endpoints/conversations/handler.js +3 -3
  8. package/dist/endpoints/embeddings/handler.js +2 -2
  9. package/dist/endpoints/messages/converters.js +17 -21
  10. package/dist/endpoints/messages/handler.js +5 -5
  11. package/dist/endpoints/responses/handler.js +9 -5
  12. package/dist/index.d.ts +1 -0
  13. package/dist/index.js +1 -0
  14. package/dist/models/alibaba/index.d.ts +2 -0
  15. package/dist/models/alibaba/index.js +2 -0
  16. package/dist/models/alibaba/middleware.d.ts +2 -0
  17. package/dist/models/alibaba/middleware.js +31 -0
  18. package/dist/models/alibaba/presets.d.ts +956 -0
  19. package/dist/models/alibaba/presets.js +264 -0
  20. package/dist/models/amazon/presets.d.ts +31 -31
  21. package/dist/models/anthropic/middleware.js +0 -1
  22. package/dist/models/anthropic/presets.d.ts +68 -68
  23. package/dist/models/cohere/presets.d.ts +38 -38
  24. package/dist/models/deepseek/index.d.ts +2 -0
  25. package/dist/models/deepseek/index.js +2 -0
  26. package/dist/models/deepseek/middleware.d.ts +2 -0
  27. package/dist/models/deepseek/middleware.js +25 -0
  28. package/dist/models/deepseek/presets.d.ts +51 -0
  29. package/dist/models/deepseek/presets.js +33 -0
  30. package/dist/models/google/presets.d.ts +106 -106
  31. package/dist/models/google/presets.js +11 -5
  32. package/dist/models/meta/presets.d.ts +84 -84
  33. package/dist/models/meta/presets.js +11 -12
  34. package/dist/models/minimax/index.d.ts +2 -0
  35. package/dist/models/minimax/index.js +2 -0
  36. package/dist/models/minimax/middleware.d.ts +2 -0
  37. package/dist/models/minimax/middleware.js +43 -0
  38. package/dist/models/minimax/presets.d.ts +99 -0
  39. package/dist/models/minimax/presets.js +47 -0
  40. package/dist/models/moonshot/index.d.ts +2 -0
  41. package/dist/models/moonshot/index.js +2 -0
  42. package/dist/models/moonshot/middleware.d.ts +2 -0
  43. package/dist/models/moonshot/middleware.js +32 -0
  44. package/dist/models/moonshot/presets.d.ts +104 -0
  45. package/dist/models/moonshot/presets.js +36 -0
  46. package/dist/models/openai/presets.d.ts +128 -128
  47. package/dist/models/openai/presets.js +1 -1
  48. package/dist/models/types.d.ts +1 -1
  49. package/dist/models/types.js +41 -1
  50. package/dist/models/voyage/presets.d.ts +46 -46
  51. package/dist/models/xai/index.d.ts +2 -0
  52. package/dist/models/xai/index.js +2 -0
  53. package/dist/models/xai/middleware.d.ts +2 -0
  54. package/dist/models/xai/middleware.js +37 -0
  55. package/dist/models/xai/presets.d.ts +210 -0
  56. package/dist/models/xai/presets.js +55 -0
  57. package/dist/models/zai/index.d.ts +2 -0
  58. package/dist/models/zai/index.js +2 -0
  59. package/dist/models/zai/middleware.d.ts +2 -0
  60. package/dist/models/zai/middleware.js +25 -0
  61. package/dist/models/zai/presets.d.ts +141 -0
  62. package/dist/models/zai/presets.js +41 -0
  63. package/dist/providers/alibaba/canonical.d.ts +3 -0
  64. package/dist/providers/alibaba/canonical.js +13 -0
  65. package/dist/providers/alibaba/index.d.ts +1 -0
  66. package/dist/providers/alibaba/index.js +1 -0
  67. package/dist/providers/bedrock/canonical.js +3 -0
  68. package/dist/providers/chutes/canonical.d.ts +3 -0
  69. package/dist/providers/chutes/canonical.js +14 -0
  70. package/dist/providers/chutes/index.d.ts +1 -0
  71. package/dist/providers/chutes/index.js +1 -0
  72. package/dist/providers/deepinfra/canonical.d.ts +3 -0
  73. package/dist/providers/deepinfra/canonical.js +40 -0
  74. package/dist/providers/deepinfra/index.d.ts +1 -0
  75. package/dist/providers/deepinfra/index.js +1 -0
  76. package/dist/providers/deepseek/canonical.d.ts +3 -0
  77. package/dist/providers/deepseek/canonical.js +9 -0
  78. package/dist/providers/deepseek/index.d.ts +1 -0
  79. package/dist/providers/deepseek/index.js +1 -0
  80. package/dist/providers/fireworks/canonical.d.ts +3 -0
  81. package/dist/providers/fireworks/canonical.js +27 -0
  82. package/dist/providers/fireworks/index.d.ts +2 -0
  83. package/dist/providers/fireworks/index.js +2 -0
  84. package/dist/providers/fireworks/middleware.d.ts +2 -0
  85. package/dist/providers/fireworks/middleware.js +35 -0
  86. package/dist/providers/groq/canonical.js +1 -1
  87. package/dist/providers/minimax/canonical.d.ts +3 -0
  88. package/dist/providers/minimax/canonical.js +9 -0
  89. package/dist/providers/minimax/index.d.ts +1 -0
  90. package/dist/providers/minimax/index.js +1 -0
  91. package/dist/providers/moonshot/canonical.d.ts +3 -0
  92. package/dist/providers/moonshot/canonical.js +6 -0
  93. package/dist/providers/moonshot/index.d.ts +1 -0
  94. package/dist/providers/moonshot/index.js +1 -0
  95. package/dist/providers/togetherai/canonical.d.ts +3 -0
  96. package/dist/providers/togetherai/canonical.js +24 -0
  97. package/dist/providers/togetherai/index.d.ts +1 -0
  98. package/dist/providers/togetherai/index.js +1 -0
  99. package/dist/providers/types.d.ts +1 -1
  100. package/dist/providers/types.js +10 -0
  101. package/dist/providers/vertex/canonical.js +5 -1
  102. package/dist/providers/xai/canonical.d.ts +3 -0
  103. package/dist/providers/xai/canonical.js +12 -0
  104. package/dist/providers/xai/index.d.ts +1 -0
  105. package/dist/providers/xai/index.js +1 -0
  106. package/dist/providers/zai/canonical.d.ts +3 -0
  107. package/dist/providers/zai/canonical.js +10 -0
  108. package/dist/providers/zai/index.d.ts +1 -0
  109. package/dist/providers/zai/index.js +1 -0
  110. package/dist/types.d.ts +30 -16
  111. package/dist/utils/index.d.ts +8 -0
  112. package/dist/utils/index.js +8 -0
  113. package/dist/utils/request.d.ts +2 -1
  114. package/dist/utils/request.js +35 -7
  115. package/package.json +154 -30
@@ -23,7 +23,7 @@ export const responses = (config) => {
23
23
  throw new GatewayError("Method Not Allowed", 405);
24
24
  }
25
25
  // Parse + validate input (handles Content-Encoding decompression + body size limits).
26
- ctx.body = (await parseRequestBody(ctx.request, cfg.maxBodySize));
26
+ ctx.body = (await parseRequestBody(ctx.request, cfg.advanced.maxBodySize));
27
27
  logger.trace({ requestId: ctx.requestId, body: ctx.body }, "[responses] ResponsesBody");
28
28
  addSpanEvent("hebo.request.deserialized");
29
29
  const parsed = ResponsesBodySchema.safeParse(ctx.body);
@@ -71,10 +71,12 @@ export const responses = (config) => {
71
71
  let ttft = 0;
72
72
  const result = streamText({
73
73
  model: languageModelWithMiddleware,
74
- headers: prepareForwardHeaders(ctx.request),
74
+ headers: prepareForwardHeaders(ctx.request, cfg.advanced.forwardHeaders),
75
75
  abortSignal: ctx.request.signal,
76
76
  timeout: {
77
- totalMs: ctx.body.service_tier === "flex" ? cfg.timeouts.flex : cfg.timeouts.normal,
77
+ totalMs: ctx.body.service_tier === "flex"
78
+ ? cfg.advanced.timeouts.flex
79
+ : cfg.advanced.timeouts.normal,
78
80
  },
79
81
  onAbort: () => {
80
82
  throw new DOMException("The operation was aborted.", "AbortError");
@@ -112,9 +114,11 @@ export const responses = (config) => {
112
114
  addSpanEvent("hebo.ai-sdk.started");
113
115
  const result = await generateText({
114
116
  model: languageModelWithMiddleware,
115
- headers: prepareForwardHeaders(ctx.request),
117
+ headers: prepareForwardHeaders(ctx.request, cfg.advanced.forwardHeaders),
116
118
  abortSignal: ctx.request.signal,
117
- timeout: ctx.body.service_tier === "flex" ? cfg.timeouts.flex : cfg.timeouts.normal,
119
+ timeout: ctx.body.service_tier === "flex"
120
+ ? cfg.advanced.timeouts.flex
121
+ : cfg.advanced.timeouts.normal,
118
122
  experimental_include: {
119
123
  requestBody: false,
120
124
  responseBody: false,
package/dist/index.d.ts CHANGED
@@ -10,3 +10,4 @@ export * from "./models/catalog";
10
10
  export * from "./models/types";
11
11
  export * from "./providers/registry";
12
12
  export * from "./providers/types";
13
+ export { FORWARD_HEADER_ALLOWLIST } from "./utils";
package/dist/index.js CHANGED
@@ -9,3 +9,4 @@ export * from "./models/catalog";
9
9
  export * from "./models/types";
10
10
  export * from "./providers/registry";
11
11
  export * from "./providers/types";
12
+ export { FORWARD_HEADER_ALLOWLIST } from "./utils";
@@ -0,0 +1,2 @@
1
+ export * from "./presets";
2
+ export * from "./middleware";
@@ -0,0 +1,2 @@
1
+ export * from "./presets";
2
+ export * from "./middleware";
@@ -0,0 +1,2 @@
1
+ import type { LanguageModelMiddleware } from "ai";
2
+ export declare const qwenReasoningMiddleware: LanguageModelMiddleware;
@@ -0,0 +1,31 @@
1
+ import { modelMiddlewareMatcher } from "../../middleware/matcher";
2
+ import { calculateReasoningBudgetFromEffort } from "../../middleware/utils";
3
+ const QWEN_DEFAULT_MAX_OUTPUT_TOKENS = 16384;
4
+ export const qwenReasoningMiddleware = {
5
+ specificationVersion: "v3",
6
+ // oxlint-disable-next-line require-await
7
+ transformParams: async ({ params }) => {
8
+ const unknown = params.providerOptions?.["unknown"];
9
+ if (!unknown)
10
+ return params;
11
+ const reasoning = unknown["reasoning"];
12
+ if (!reasoning)
13
+ return params;
14
+ const target = (params.providerOptions["alibaba"] ??= {});
15
+ if (!reasoning.enabled || reasoning.effort === "none") {
16
+ target.enableThinking = false;
17
+ delete target.thinkingBudget;
18
+ }
19
+ else {
20
+ target.enableThinking = true;
21
+ target.thinkingBudget =
22
+ reasoning.max_tokens ??
23
+ calculateReasoningBudgetFromEffort(reasoning.effort ?? "medium", params.maxOutputTokens ?? QWEN_DEFAULT_MAX_OUTPUT_TOKENS);
24
+ }
25
+ delete unknown["reasoning"];
26
+ return params;
27
+ },
28
+ };
29
+ modelMiddlewareMatcher.useForModel("alibaba/qwen*", {
30
+ language: [qwenReasoningMiddleware],
31
+ });