@code-yeongyu/senpi-ai 2026.8.12 → 2026.8.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 (228) hide show
  1. package/README.md +26 -8
  2. package/dist/api/anthropic-messages.js.map +1 -1
  3. package/dist/api/azure-openai-responses.js +5 -1
  4. package/dist/api/azure-openai-responses.js.map +1 -1
  5. package/dist/api/bedrock-converse-stream.js.map +1 -1
  6. package/dist/api/bedrock-converse-stream.lazy.js.map +1 -1
  7. package/dist/api/google-generative-ai.d.ts.map +1 -1
  8. package/dist/api/google-generative-ai.js +2 -2
  9. package/dist/api/google-generative-ai.js.map +1 -1
  10. package/dist/api/google-shared.d.ts +15 -1
  11. package/dist/api/google-shared.d.ts.map +1 -1
  12. package/dist/api/google-shared.js +103 -4
  13. package/dist/api/google-shared.js.map +1 -1
  14. package/dist/api/google-vertex.d.ts.map +1 -1
  15. package/dist/api/google-vertex.js +2 -2
  16. package/dist/api/google-vertex.js.map +1 -1
  17. package/dist/api/lazy.d.ts +5 -1
  18. package/dist/api/lazy.d.ts.map +1 -1
  19. package/dist/api/lazy.js +19 -7
  20. package/dist/api/lazy.js.map +1 -1
  21. package/dist/api/openai-codex-responses.js.map +1 -1
  22. package/dist/api/openai-completions.d.ts +3 -1
  23. package/dist/api/openai-completions.d.ts.map +1 -1
  24. package/dist/api/openai-completions.js +47 -7
  25. package/dist/api/openai-completions.js.map +1 -1
  26. package/dist/api/openai-responses-shared.d.ts.map +1 -1
  27. package/dist/api/openai-responses-shared.js +22 -9
  28. package/dist/api/openai-responses-shared.js.map +1 -1
  29. package/dist/api/openai-responses.js +5 -1
  30. package/dist/api/openai-responses.js.map +1 -1
  31. package/dist/api/pi-messages.d.ts.map +1 -1
  32. package/dist/api/pi-messages.js.map +1 -1
  33. package/dist/api/simple-options.d.ts +2 -0
  34. package/dist/api/simple-options.d.ts.map +1 -1
  35. package/dist/api/simple-options.js +8 -2
  36. package/dist/api/simple-options.js.map +1 -1
  37. package/dist/api/transform-messages.js.map +1 -1
  38. package/dist/api/warm-prompt-cache.js.map +1 -1
  39. package/dist/auth/credential-store.d.ts +6 -6
  40. package/dist/auth/credential-store.d.ts.map +1 -1
  41. package/dist/auth/credential-store.js +22 -11
  42. package/dist/auth/credential-store.js.map +1 -1
  43. package/dist/auth/helpers.d.ts +1 -0
  44. package/dist/auth/helpers.d.ts.map +1 -1
  45. package/dist/auth/helpers.js +7 -2
  46. package/dist/auth/helpers.js.map +1 -1
  47. package/dist/auth/oauth/anthropic.d.ts.map +1 -1
  48. package/dist/auth/oauth/anthropic.js +14 -8
  49. package/dist/auth/oauth/anthropic.js.map +1 -1
  50. package/dist/auth/oauth/device-code.d.ts +1 -1
  51. package/dist/auth/oauth/device-code.d.ts.map +1 -1
  52. package/dist/auth/oauth/device-code.js +4 -4
  53. package/dist/auth/oauth/device-code.js.map +1 -1
  54. package/dist/auth/oauth/github-copilot.d.ts.map +1 -1
  55. package/dist/auth/oauth/github-copilot.js +43 -30
  56. package/dist/auth/oauth/github-copilot.js.map +1 -1
  57. package/dist/auth/oauth/kimi-coding.d.ts.map +1 -1
  58. package/dist/auth/oauth/kimi-coding.js +17 -5
  59. package/dist/auth/oauth/kimi-coding.js.map +1 -1
  60. package/dist/auth/oauth/load.d.ts.map +1 -1
  61. package/dist/auth/oauth/load.js.map +1 -1
  62. package/dist/auth/oauth/openai-codex.d.ts.map +1 -1
  63. package/dist/auth/oauth/openai-codex.js +12 -5
  64. package/dist/auth/oauth/openai-codex.js.map +1 -1
  65. package/dist/auth/oauth/openrouter.d.ts.map +1 -1
  66. package/dist/auth/oauth/openrouter.js +10 -10
  67. package/dist/auth/oauth/openrouter.js.map +1 -1
  68. package/dist/auth/oauth/radius.d.ts.map +1 -1
  69. package/dist/auth/oauth/radius.js +8 -7
  70. package/dist/auth/oauth/radius.js.map +1 -1
  71. package/dist/auth/oauth/xai.d.ts.map +1 -1
  72. package/dist/auth/oauth/xai.js +3 -2
  73. package/dist/auth/oauth/xai.js.map +1 -1
  74. package/dist/auth/resolve.d.ts +1 -0
  75. package/dist/auth/resolve.d.ts.map +1 -1
  76. package/dist/auth/resolve.js +24 -13
  77. package/dist/auth/resolve.js.map +1 -1
  78. package/dist/auth/types.d.ts +21 -8
  79. package/dist/auth/types.d.ts.map +1 -1
  80. package/dist/auth/types.js.map +1 -1
  81. package/dist/cli.js +1 -0
  82. package/dist/cli.js.map +1 -1
  83. package/dist/compat.js.map +1 -1
  84. package/dist/env-api-keys.d.ts.map +1 -1
  85. package/dist/env-api-keys.js +3 -0
  86. package/dist/env-api-keys.js.map +1 -1
  87. package/dist/image-models.generated.d.ts +69 -54
  88. package/dist/image-models.generated.d.ts.map +1 -1
  89. package/dist/image-models.generated.js +15 -0
  90. package/dist/image-models.generated.js.map +1 -1
  91. package/dist/images-models.d.ts.map +1 -1
  92. package/dist/images-models.js +1 -0
  93. package/dist/images-models.js.map +1 -1
  94. package/dist/model.d.ts +2 -0
  95. package/dist/model.d.ts.map +1 -1
  96. package/dist/model.js.map +1 -1
  97. package/dist/models-store.d.ts +9 -12
  98. package/dist/models-store.d.ts.map +1 -1
  99. package/dist/models-store.js +6 -3
  100. package/dist/models-store.js.map +1 -1
  101. package/dist/models.d.ts +40 -18
  102. package/dist/models.d.ts.map +1 -1
  103. package/dist/models.generated.d.ts +6 -0
  104. package/dist/models.generated.d.ts.map +1 -1
  105. package/dist/models.generated.js +6 -0
  106. package/dist/models.generated.js.map +1 -1
  107. package/dist/models.js +247 -91
  108. package/dist/models.js.map +1 -1
  109. package/dist/node/provider-scope.d.ts.map +1 -1
  110. package/dist/providers/all.d.ts.map +1 -1
  111. package/dist/providers/all.js +6 -0
  112. package/dist/providers/all.js.map +1 -1
  113. package/dist/providers/amazon-bedrock.d.ts.map +1 -1
  114. package/dist/providers/amazon-bedrock.js +15 -7
  115. package/dist/providers/amazon-bedrock.js.map +1 -1
  116. package/dist/providers/anthropic.d.ts.map +1 -1
  117. package/dist/providers/anthropic.js +15 -6
  118. package/dist/providers/anthropic.js.map +1 -1
  119. package/dist/providers/baseten.d.ts +3 -0
  120. package/dist/providers/baseten.d.ts.map +1 -0
  121. package/dist/providers/baseten.js +15 -0
  122. package/dist/providers/baseten.js.map +1 -0
  123. package/dist/providers/baseten.models.d.ts +4 -0
  124. package/dist/providers/baseten.models.d.ts.map +1 -0
  125. package/dist/providers/baseten.models.js +6 -0
  126. package/dist/providers/baseten.models.js.map +1 -0
  127. package/dist/providers/cloudflare-auth.d.ts.map +1 -1
  128. package/dist/providers/cloudflare-auth.js +15 -10
  129. package/dist/providers/cloudflare-auth.js.map +1 -1
  130. package/dist/providers/data/.manifest.json +1 -1
  131. package/dist/providers/data/baseten.json +1 -0
  132. package/dist/providers/data/fireworks.json +1 -1
  133. package/dist/providers/data/github-copilot.json +1 -1
  134. package/dist/providers/data/opencode-go.json +1 -1
  135. package/dist/providers/data/opencode.json +1 -1
  136. package/dist/providers/data/opengateway.json +1 -0
  137. package/dist/providers/data/openrouter.json +1 -1
  138. package/dist/providers/data/qwen-token-plan-cn.json +1 -1
  139. package/dist/providers/data/qwen-token-plan-individual.json +1 -0
  140. package/dist/providers/data/qwen-token-plan.json +1 -1
  141. package/dist/providers/data/vercel-ai-gateway.json +1 -1
  142. package/dist/providers/data/xai.json +1 -1
  143. package/dist/providers/faux.d.ts +18 -13
  144. package/dist/providers/faux.d.ts.map +1 -1
  145. package/dist/providers/faux.js +95 -5
  146. package/dist/providers/faux.js.map +1 -1
  147. package/dist/providers/github-copilot.js +1 -1
  148. package/dist/providers/github-copilot.js.map +1 -1
  149. package/dist/providers/google-vertex.d.ts.map +1 -1
  150. package/dist/providers/google-vertex.js +15 -7
  151. package/dist/providers/google-vertex.js.map +1 -1
  152. package/dist/providers/kimi-coding.d.ts.map +1 -1
  153. package/dist/providers/kimi-coding.js +1 -0
  154. package/dist/providers/kimi-coding.js.map +1 -1
  155. package/dist/providers/ollama.d.ts.map +1 -1
  156. package/dist/providers/ollama.js +1 -2
  157. package/dist/providers/ollama.js.map +1 -1
  158. package/dist/providers/openai-codex.d.ts.map +1 -1
  159. package/dist/providers/openai-codex.js +5 -1
  160. package/dist/providers/openai-codex.js.map +1 -1
  161. package/dist/providers/opengateway.d.ts +3 -0
  162. package/dist/providers/opengateway.d.ts.map +1 -0
  163. package/dist/providers/opengateway.js +15 -0
  164. package/dist/providers/opengateway.js.map +1 -0
  165. package/dist/providers/opengateway.models.d.ts +4 -0
  166. package/dist/providers/opengateway.models.d.ts.map +1 -0
  167. package/dist/providers/opengateway.models.js +6 -0
  168. package/dist/providers/opengateway.models.js.map +1 -0
  169. package/dist/providers/qwen-token-plan-individual.d.ts +3 -0
  170. package/dist/providers/qwen-token-plan-individual.d.ts.map +1 -0
  171. package/dist/providers/qwen-token-plan-individual.js +15 -0
  172. package/dist/providers/qwen-token-plan-individual.js.map +1 -0
  173. package/dist/providers/qwen-token-plan-individual.models.d.ts +4 -0
  174. package/dist/providers/qwen-token-plan-individual.models.d.ts.map +1 -0
  175. package/dist/providers/qwen-token-plan-individual.models.js +6 -0
  176. package/dist/providers/qwen-token-plan-individual.models.js.map +1 -0
  177. package/dist/providers/radius.d.ts.map +1 -1
  178. package/dist/providers/radius.js +36 -26
  179. package/dist/providers/radius.js.map +1 -1
  180. package/dist/providers/xai.d.ts.map +1 -1
  181. package/dist/providers/xai.js +1 -0
  182. package/dist/providers/xai.js.map +1 -1
  183. package/dist/tool-call-middleware/context-transformer.js.map +1 -1
  184. package/dist/tool-call-middleware/protocols/anthropic-xml/recovery-wrapper-state.d.ts.map +1 -1
  185. package/dist/tool-call-middleware/protocols/kimi-xtml/parse.js.map +1 -1
  186. package/dist/tool-call-middleware/recovery-content-lifecycle.d.ts.map +1 -1
  187. package/dist/tool-call-middleware/recovery-event-stream.d.ts.map +1 -1
  188. package/dist/tool-call-middleware/recovery-native-projection.d.ts.map +1 -1
  189. package/dist/tool-call-middleware/recovery-native-projection.js.map +1 -1
  190. package/dist/tool-call-middleware/recovery-stream-terminal.d.ts.map +1 -1
  191. package/dist/tool-call-middleware/recovery-stream-wrapper.d.ts.map +1 -1
  192. package/dist/tool-call-middleware/recovery-stream-wrapper.js +5 -0
  193. package/dist/tool-call-middleware/recovery-stream-wrapper.js.map +1 -1
  194. package/dist/tool-call-middleware/recovery-text-projection.d.ts.map +1 -1
  195. package/dist/tool-call-middleware/recovery-text-projection.js.map +1 -1
  196. package/dist/tool-call-middleware/stream-thinking-projection.d.ts.map +1 -1
  197. package/dist/tool-call-middleware/stream-wrapper-shared.d.ts.map +1 -1
  198. package/dist/tool-call-middleware/stream-wrapper-shared.js.map +1 -1
  199. package/dist/tool-call-middleware/stream-wrapper.js.map +1 -1
  200. package/dist/types.d.ts +94 -87
  201. package/dist/types.d.ts.map +1 -1
  202. package/dist/types.js.map +1 -1
  203. package/dist/utils/abort.d.ts +8 -0
  204. package/dist/utils/abort.d.ts.map +1 -0
  205. package/dist/utils/abort.js +49 -0
  206. package/dist/utils/abort.js.map +1 -0
  207. package/dist/utils/deferred-tools.js.map +1 -1
  208. package/dist/utils/event-stream.d.ts.map +1 -1
  209. package/dist/utils/overflow.d.ts +14 -1
  210. package/dist/utils/overflow.d.ts.map +1 -1
  211. package/dist/utils/overflow.js +18 -1
  212. package/dist/utils/overflow.js.map +1 -1
  213. package/dist/utils/prompt-cache-ttl.d.ts +3 -1
  214. package/dist/utils/prompt-cache-ttl.d.ts.map +1 -1
  215. package/dist/utils/prompt-cache-ttl.js +2 -0
  216. package/dist/utils/prompt-cache-ttl.js.map +1 -1
  217. package/dist/utils/provider-retry.js.map +1 -1
  218. package/dist/utils/retry.d.ts +25 -0
  219. package/dist/utils/retry.d.ts.map +1 -1
  220. package/dist/utils/retry.js +64 -0
  221. package/dist/utils/retry.js.map +1 -1
  222. package/dist/utils/tool-schema-compat.d.ts.map +1 -1
  223. package/dist/utils/tool-schema-compat.js +1 -0
  224. package/dist/utils/tool-schema-compat.js.map +1 -1
  225. package/dist/utils/validation.d.ts.map +1 -1
  226. package/dist/utils/validation.js +6 -0
  227. package/dist/utils/validation.js.map +1 -1
  228. package/package.json +2 -1
@@ -15,7 +15,7 @@ import { appendGrammarToolInputJsonDelta, createGrammarToolInputProperties, getG
15
15
  import { buildCopilotDynamicHeaders, hasCopilotVisionInput } from "./github-copilot-headers.js";
16
16
  import { resolveOpenAIClientAuth } from "./openai-client-auth.js";
17
17
  import { clampOpenAIPromptCacheKey } from "./openai-prompt-cache.js";
18
- import { applyExtraBody, buildBaseOptions, clampMaxForOpenAI, OPENAI_COMPLETIONS_RESERVED_BODY_KEYS, } from "./simple-options.js";
18
+ import { applyExtraBody, buildBaseOptions, clampMaxForOpenAI, clampReasoning, MIN_ANSWER_TOKENS, OPENAI_COMPLETIONS_RESERVED_BODY_KEYS, } from "./simple-options.js";
19
19
  import { transformMessages } from "./transform-messages.js";
20
20
  export { getOpenAICompletionsCompat as getCompat, } from "../utils/prompt-cache-ttl.js";
21
21
  const KIMI_K3_THINKING_LEVEL_MAP = {
@@ -662,6 +662,7 @@ export const streamSimple = (model, context, options) => {
662
662
  ...base,
663
663
  reasoningEffort,
664
664
  toolChoice,
665
+ thinkingBudgets: options?.thinkingBudgets,
665
666
  });
666
667
  };
667
668
  function createClient(model, context, apiKey, optionsHeaders, fetch, sessionId, compat = getCompat(model)) {
@@ -780,11 +781,26 @@ function buildParams(model, context, options, compat = getCompat(model), cacheRe
780
781
  };
781
782
  }
782
783
  else if (compat.thinkingFormat === "chat-template" && model.reasoning) {
783
- const chatTemplateKwargs = buildChatTemplateKwargs(model, options, compat);
784
+ const chatTemplateKwargs = buildChatTemplateValues(model, options, compat, compat.chatTemplateKwargs);
784
785
  if (chatTemplateKwargs) {
785
786
  params.chat_template_kwargs = chatTemplateKwargs;
786
787
  }
787
788
  }
789
+ else if (compat.thinkingFormat === "baseten" && model.reasoning) {
790
+ const basetenParams = params;
791
+ const chatTemplateArgs = buildChatTemplateValues(model, options, compat, compat.chatTemplateArgs ?? {});
792
+ if (chatTemplateArgs) {
793
+ basetenParams.chat_template_args = chatTemplateArgs;
794
+ }
795
+ if (compat.supportsReasoningEffort) {
796
+ const requestedEffort = options?.reasoningEffort;
797
+ const mappedEffort = requestedEffort ? model.thinkingLevelMap?.[requestedEffort] : model.thinkingLevelMap?.off;
798
+ const effort = mappedEffort === undefined ? requestedEffort : mappedEffort;
799
+ if (typeof effort === "string") {
800
+ basetenParams.reasoning_effort = effort;
801
+ }
802
+ }
803
+ }
788
804
  else if (compat.thinkingFormat === "deepseek" && model.reasoning) {
789
805
  if (options?.reasoningEffort) {
790
806
  params.thinking = { type: "enabled" };
@@ -852,6 +868,26 @@ function buildParams(model, context, options, compat = getCompat(model), cacheRe
852
868
  params.reasoning_effort = offValue;
853
869
  }
854
870
  }
871
+ // vLLM caps reasoning with a top-level thinking_token_budget. Independent of
872
+ // thinkingFormat: the same server can serve zai, qwen or chat-template models.
873
+ // Reasoning and the answer share max_tokens here, so an uncapped reasoning
874
+ // phase can consume the whole response and leave no answer and no tool call.
875
+ if (compat.supportsThinkingTokenBudget && options?.reasoningEffort && model.reasoning) {
876
+ const level = clampReasoning(options.reasoningEffort);
877
+ const budgets = {
878
+ minimal: 1024,
879
+ low: 2048,
880
+ medium: 8192,
881
+ high: 16384,
882
+ ...options.thinkingBudgets,
883
+ };
884
+ const ceiling = params.max_tokens ?? params.max_completion_tokens ?? model.maxTokens;
885
+ // Always leave room for the answer, otherwise the budget recreates the bug it prevents.
886
+ const budget = Math.min(budgets[level], Math.max(0, ceiling - MIN_ANSWER_TOKENS));
887
+ if (budget > 0) {
888
+ params.thinking_token_budget = budget;
889
+ }
890
+ }
855
891
  // OpenRouter provider routing preferences
856
892
  if (model.compat?.openRouterRouting) {
857
893
  params.provider = model.compat.openRouterRouting;
@@ -869,17 +905,21 @@ function buildParams(model, context, options, compat = getCompat(model), cacheRe
869
905
  }
870
906
  }
871
907
  applyExtraBody(params, options?.extraBody, OPENAI_COMPLETIONS_RESERVED_BODY_KEYS);
908
+ // Last so custom keys override the named request fields.
909
+ if (options?.samplingParams) {
910
+ Object.assign(params, options.samplingParams);
911
+ }
872
912
  return params;
873
913
  }
874
- function buildChatTemplateKwargs(model, options, compat) {
875
- const kwargs = {};
876
- for (const [key, value] of Object.entries(compat.chatTemplateKwargs)) {
914
+ function buildChatTemplateValues(model, options, compat, values) {
915
+ const resolvedValues = {};
916
+ for (const [key, value] of Object.entries(values)) {
877
917
  const resolved = resolveChatTemplateKwargValue(model, options, compat, value);
878
918
  if (resolved !== undefined) {
879
- kwargs[key] = resolved;
919
+ resolvedValues[key] = resolved;
880
920
  }
881
921
  }
882
- return Object.keys(kwargs).length > 0 ? kwargs : undefined;
922
+ return Object.keys(resolvedValues).length > 0 ? resolvedValues : undefined;
883
923
  }
884
924
  function resolveChatTemplateKwargValue(model, options, compat, value) {
885
925
  if (typeof value !== "object" || value === null) {