mozi-bot 1.0.0

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 (259) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +467 -0
  3. package/dist/agents/agent.d.ts +118 -0
  4. package/dist/agents/agent.d.ts.map +1 -0
  5. package/dist/agents/agent.js +686 -0
  6. package/dist/agents/agent.js.map +1 -0
  7. package/dist/agents/compaction.d.ts +78 -0
  8. package/dist/agents/compaction.d.ts.map +1 -0
  9. package/dist/agents/compaction.js +350 -0
  10. package/dist/agents/compaction.js.map +1 -0
  11. package/dist/agents/failover-error.d.ts +42 -0
  12. package/dist/agents/failover-error.d.ts.map +1 -0
  13. package/dist/agents/failover-error.js +171 -0
  14. package/dist/agents/failover-error.js.map +1 -0
  15. package/dist/agents/index.d.ts +10 -0
  16. package/dist/agents/index.d.ts.map +1 -0
  17. package/dist/agents/index.js +10 -0
  18. package/dist/agents/index.js.map +1 -0
  19. package/dist/agents/model-fallback.d.ts +54 -0
  20. package/dist/agents/model-fallback.d.ts.map +1 -0
  21. package/dist/agents/model-fallback.js +227 -0
  22. package/dist/agents/model-fallback.js.map +1 -0
  23. package/dist/agents/session-store.d.ts +53 -0
  24. package/dist/agents/session-store.d.ts.map +1 -0
  25. package/dist/agents/session-store.js +217 -0
  26. package/dist/agents/session-store.js.map +1 -0
  27. package/dist/agents/system-prompt.d.ts +29 -0
  28. package/dist/agents/system-prompt.d.ts.map +1 -0
  29. package/dist/agents/system-prompt.js +299 -0
  30. package/dist/agents/system-prompt.js.map +1 -0
  31. package/dist/channels/common/base.d.ts +40 -0
  32. package/dist/channels/common/base.d.ts.map +1 -0
  33. package/dist/channels/common/base.js +23 -0
  34. package/dist/channels/common/base.js.map +1 -0
  35. package/dist/channels/common/index.d.ts +21 -0
  36. package/dist/channels/common/index.d.ts.map +1 -0
  37. package/dist/channels/common/index.js +66 -0
  38. package/dist/channels/common/index.js.map +1 -0
  39. package/dist/channels/dingtalk/api.d.ts +30 -0
  40. package/dist/channels/dingtalk/api.d.ts.map +1 -0
  41. package/dist/channels/dingtalk/api.js +149 -0
  42. package/dist/channels/dingtalk/api.js.map +1 -0
  43. package/dist/channels/dingtalk/events.d.ts +80 -0
  44. package/dist/channels/dingtalk/events.d.ts.map +1 -0
  45. package/dist/channels/dingtalk/events.js +92 -0
  46. package/dist/channels/dingtalk/events.js.map +1 -0
  47. package/dist/channels/dingtalk/index.d.ts +51 -0
  48. package/dist/channels/dingtalk/index.d.ts.map +1 -0
  49. package/dist/channels/dingtalk/index.js +231 -0
  50. package/dist/channels/dingtalk/index.js.map +1 -0
  51. package/dist/channels/dingtalk/stream.d.ts +31 -0
  52. package/dist/channels/dingtalk/stream.d.ts.map +1 -0
  53. package/dist/channels/dingtalk/stream.js +116 -0
  54. package/dist/channels/dingtalk/stream.js.map +1 -0
  55. package/dist/channels/feishu/api.d.ts +33 -0
  56. package/dist/channels/feishu/api.d.ts.map +1 -0
  57. package/dist/channels/feishu/api.js +120 -0
  58. package/dist/channels/feishu/api.js.map +1 -0
  59. package/dist/channels/feishu/events.d.ts +87 -0
  60. package/dist/channels/feishu/events.d.ts.map +1 -0
  61. package/dist/channels/feishu/events.js +163 -0
  62. package/dist/channels/feishu/events.js.map +1 -0
  63. package/dist/channels/feishu/index.d.ts +46 -0
  64. package/dist/channels/feishu/index.d.ts.map +1 -0
  65. package/dist/channels/feishu/index.js +207 -0
  66. package/dist/channels/feishu/index.js.map +1 -0
  67. package/dist/channels/feishu/websocket.d.ts +32 -0
  68. package/dist/channels/feishu/websocket.d.ts.map +1 -0
  69. package/dist/channels/feishu/websocket.js +121 -0
  70. package/dist/channels/feishu/websocket.js.map +1 -0
  71. package/dist/channels/index.d.ts +9 -0
  72. package/dist/channels/index.d.ts.map +1 -0
  73. package/dist/channels/index.js +9 -0
  74. package/dist/channels/index.js.map +1 -0
  75. package/dist/cli/index.d.ts +6 -0
  76. package/dist/cli/index.d.ts.map +1 -0
  77. package/dist/cli/index.js +468 -0
  78. package/dist/cli/index.js.map +1 -0
  79. package/dist/commands/index.d.ts +54 -0
  80. package/dist/commands/index.d.ts.map +1 -0
  81. package/dist/commands/index.js +171 -0
  82. package/dist/commands/index.js.map +1 -0
  83. package/dist/config/index.d.ts +201 -0
  84. package/dist/config/index.d.ts.map +1 -0
  85. package/dist/config/index.js +261 -0
  86. package/dist/config/index.js.map +1 -0
  87. package/dist/gateway/index.d.ts +5 -0
  88. package/dist/gateway/index.d.ts.map +1 -0
  89. package/dist/gateway/index.js +5 -0
  90. package/dist/gateway/index.js.map +1 -0
  91. package/dist/gateway/server.d.ts +42 -0
  92. package/dist/gateway/server.d.ts.map +1 -0
  93. package/dist/gateway/server.js +235 -0
  94. package/dist/gateway/server.js.map +1 -0
  95. package/dist/hooks/index.d.ts +168 -0
  96. package/dist/hooks/index.d.ts.map +1 -0
  97. package/dist/hooks/index.js +148 -0
  98. package/dist/hooks/index.js.map +1 -0
  99. package/dist/index.d.ts +18 -0
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +29 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/memory/index.d.ts +94 -0
  104. package/dist/memory/index.d.ts.map +1 -0
  105. package/dist/memory/index.js +282 -0
  106. package/dist/memory/index.js.map +1 -0
  107. package/dist/plugins/index.d.ts +57 -0
  108. package/dist/plugins/index.d.ts.map +1 -0
  109. package/dist/plugins/index.js +103 -0
  110. package/dist/plugins/index.js.map +1 -0
  111. package/dist/providers/anthropic-compatible.d.ts +48 -0
  112. package/dist/providers/anthropic-compatible.d.ts.map +1 -0
  113. package/dist/providers/anthropic-compatible.js +380 -0
  114. package/dist/providers/anthropic-compatible.js.map +1 -0
  115. package/dist/providers/base.d.ts +26 -0
  116. package/dist/providers/base.d.ts.map +1 -0
  117. package/dist/providers/base.js +58 -0
  118. package/dist/providers/base.js.map +1 -0
  119. package/dist/providers/custom-openai.d.ts +66 -0
  120. package/dist/providers/custom-openai.d.ts.map +1 -0
  121. package/dist/providers/custom-openai.js +255 -0
  122. package/dist/providers/custom-openai.js.map +1 -0
  123. package/dist/providers/dashscope.d.ts +15 -0
  124. package/dist/providers/dashscope.d.ts.map +1 -0
  125. package/dist/providers/dashscope.js +237 -0
  126. package/dist/providers/dashscope.js.map +1 -0
  127. package/dist/providers/deepseek.d.ts +10 -0
  128. package/dist/providers/deepseek.d.ts.map +1 -0
  129. package/dist/providers/deepseek.js +57 -0
  130. package/dist/providers/deepseek.js.map +1 -0
  131. package/dist/providers/index.d.ts +33 -0
  132. package/dist/providers/index.d.ts.map +1 -0
  133. package/dist/providers/index.js +142 -0
  134. package/dist/providers/index.js.map +1 -0
  135. package/dist/providers/kimi.d.ts +10 -0
  136. package/dist/providers/kimi.d.ts.map +1 -0
  137. package/dist/providers/kimi.js +83 -0
  138. package/dist/providers/kimi.js.map +1 -0
  139. package/dist/providers/minimax.d.ts +20 -0
  140. package/dist/providers/minimax.d.ts.map +1 -0
  141. package/dist/providers/minimax.js +252 -0
  142. package/dist/providers/minimax.js.map +1 -0
  143. package/dist/providers/modelscope.d.ts +15 -0
  144. package/dist/providers/modelscope.d.ts.map +1 -0
  145. package/dist/providers/modelscope.js +237 -0
  146. package/dist/providers/modelscope.js.map +1 -0
  147. package/dist/providers/openai-compatible.d.ts +57 -0
  148. package/dist/providers/openai-compatible.d.ts.map +1 -0
  149. package/dist/providers/openai-compatible.js +193 -0
  150. package/dist/providers/openai-compatible.js.map +1 -0
  151. package/dist/providers/stepfun.d.ts +10 -0
  152. package/dist/providers/stepfun.d.ts.map +1 -0
  153. package/dist/providers/stepfun.js +125 -0
  154. package/dist/providers/stepfun.js.map +1 -0
  155. package/dist/providers/zhipu.d.ts +15 -0
  156. package/dist/providers/zhipu.d.ts.map +1 -0
  157. package/dist/providers/zhipu.js +247 -0
  158. package/dist/providers/zhipu.js.map +1 -0
  159. package/dist/sessions/index.d.ts +6 -0
  160. package/dist/sessions/index.d.ts.map +1 -0
  161. package/dist/sessions/index.js +6 -0
  162. package/dist/sessions/index.js.map +1 -0
  163. package/dist/sessions/store.d.ts +45 -0
  164. package/dist/sessions/store.d.ts.map +1 -0
  165. package/dist/sessions/store.js +268 -0
  166. package/dist/sessions/store.js.map +1 -0
  167. package/dist/sessions/types.d.ts +110 -0
  168. package/dist/sessions/types.d.ts.map +1 -0
  169. package/dist/sessions/types.js +6 -0
  170. package/dist/sessions/types.js.map +1 -0
  171. package/dist/tools/builtin/apply-patch.d.ts +8 -0
  172. package/dist/tools/builtin/apply-patch.d.ts.map +1 -0
  173. package/dist/tools/builtin/apply-patch.js +272 -0
  174. package/dist/tools/builtin/apply-patch.js.map +1 -0
  175. package/dist/tools/builtin/bash.d.ts +25 -0
  176. package/dist/tools/builtin/bash.d.ts.map +1 -0
  177. package/dist/tools/builtin/bash.js +212 -0
  178. package/dist/tools/builtin/bash.js.map +1 -0
  179. package/dist/tools/builtin/browser.d.ts +12 -0
  180. package/dist/tools/builtin/browser.d.ts.map +1 -0
  181. package/dist/tools/builtin/browser.js +693 -0
  182. package/dist/tools/builtin/browser.js.map +1 -0
  183. package/dist/tools/builtin/filesystem.d.ts +29 -0
  184. package/dist/tools/builtin/filesystem.d.ts.map +1 -0
  185. package/dist/tools/builtin/filesystem.js +484 -0
  186. package/dist/tools/builtin/filesystem.js.map +1 -0
  187. package/dist/tools/builtin/image.d.ts +13 -0
  188. package/dist/tools/builtin/image.d.ts.map +1 -0
  189. package/dist/tools/builtin/image.js +126 -0
  190. package/dist/tools/builtin/image.js.map +1 -0
  191. package/dist/tools/builtin/index.d.ts +30 -0
  192. package/dist/tools/builtin/index.d.ts.map +1 -0
  193. package/dist/tools/builtin/index.js +55 -0
  194. package/dist/tools/builtin/index.js.map +1 -0
  195. package/dist/tools/builtin/process-registry.d.ts +71 -0
  196. package/dist/tools/builtin/process-registry.d.ts.map +1 -0
  197. package/dist/tools/builtin/process-registry.js +172 -0
  198. package/dist/tools/builtin/process-registry.js.map +1 -0
  199. package/dist/tools/builtin/process-tool.d.ts +8 -0
  200. package/dist/tools/builtin/process-tool.d.ts.map +1 -0
  201. package/dist/tools/builtin/process-tool.js +279 -0
  202. package/dist/tools/builtin/process-tool.js.map +1 -0
  203. package/dist/tools/builtin/subagent.d.ts +33 -0
  204. package/dist/tools/builtin/subagent.d.ts.map +1 -0
  205. package/dist/tools/builtin/subagent.js +185 -0
  206. package/dist/tools/builtin/subagent.js.map +1 -0
  207. package/dist/tools/builtin/system.d.ts +11 -0
  208. package/dist/tools/builtin/system.d.ts.map +1 -0
  209. package/dist/tools/builtin/system.js +144 -0
  210. package/dist/tools/builtin/system.js.map +1 -0
  211. package/dist/tools/builtin/web.d.ts +9 -0
  212. package/dist/tools/builtin/web.d.ts.map +1 -0
  213. package/dist/tools/builtin/web.js +87 -0
  214. package/dist/tools/builtin/web.js.map +1 -0
  215. package/dist/tools/common.d.ts +45 -0
  216. package/dist/tools/common.d.ts.map +1 -0
  217. package/dist/tools/common.js +129 -0
  218. package/dist/tools/common.js.map +1 -0
  219. package/dist/tools/index.d.ts +8 -0
  220. package/dist/tools/index.d.ts.map +1 -0
  221. package/dist/tools/index.js +8 -0
  222. package/dist/tools/index.js.map +1 -0
  223. package/dist/tools/registry.d.ts +33 -0
  224. package/dist/tools/registry.d.ts.map +1 -0
  225. package/dist/tools/registry.js +174 -0
  226. package/dist/tools/registry.js.map +1 -0
  227. package/dist/tools/types.d.ts +58 -0
  228. package/dist/tools/types.d.ts.map +1 -0
  229. package/dist/tools/types.js +11 -0
  230. package/dist/tools/types.js.map +1 -0
  231. package/dist/types/index.d.ts +280 -0
  232. package/dist/types/index.d.ts.map +1 -0
  233. package/dist/types/index.js +34 -0
  234. package/dist/types/index.js.map +1 -0
  235. package/dist/utils/index.d.ts +35 -0
  236. package/dist/utils/index.d.ts.map +1 -0
  237. package/dist/utils/index.js +114 -0
  238. package/dist/utils/index.js.map +1 -0
  239. package/dist/utils/logger.d.ts +24 -0
  240. package/dist/utils/logger.d.ts.map +1 -0
  241. package/dist/utils/logger.js +94 -0
  242. package/dist/utils/logger.js.map +1 -0
  243. package/dist/web/index.d.ts +7 -0
  244. package/dist/web/index.d.ts.map +1 -0
  245. package/dist/web/index.js +7 -0
  246. package/dist/web/index.js.map +1 -0
  247. package/dist/web/static.d.ts +12 -0
  248. package/dist/web/static.d.ts.map +1 -0
  249. package/dist/web/static.js +1260 -0
  250. package/dist/web/static.js.map +1 -0
  251. package/dist/web/types.d.ts +95 -0
  252. package/dist/web/types.d.ts.map +1 -0
  253. package/dist/web/types.js +5 -0
  254. package/dist/web/types.js.map +1 -0
  255. package/dist/web/websocket.d.ts +58 -0
  256. package/dist/web/websocket.d.ts.map +1 -0
  257. package/dist/web/websocket.js +371 -0
  258. package/dist/web/websocket.js.map +1 -0
  259. package/package.json +89 -0
@@ -0,0 +1,237 @@
1
+ /**
2
+ * ModelScope (魔搭) 模型提供商
3
+ *
4
+ * ModelScope 是阿里巴巴达摩院的开源模型社区
5
+ * 支持 Qwen、GLM、Baichuan 等多种国产大模型
6
+ *
7
+ * API 文档: https://modelscope.cn/docs/model-service/API-Inference
8
+ */
9
+ import { OpenAICompatibleProvider } from "./openai-compatible.js";
10
+ // ModelScope 社区推理 API (支持 ms-xxx 格式的 token)
11
+ const MODELSCOPE_BASE_URL = "https://api-inference.modelscope.cn/v1";
12
+ /** ModelScope 模型定义 */
13
+ const MODELSCOPE_MODELS = [
14
+ // Qwen 2.5 系列 (开源模型,免费使用)
15
+ {
16
+ id: "Qwen/Qwen2.5-72B-Instruct",
17
+ name: "Qwen 2.5 72B Instruct",
18
+ provider: "modelscope",
19
+ api: "openai-compatible",
20
+ contextWindow: 131072,
21
+ maxTokens: 8192,
22
+ supportsVision: false,
23
+ supportsReasoning: false,
24
+ cost: { input: 0, output: 0 }, // ModelScope 社区免费
25
+ },
26
+ {
27
+ id: "Qwen/Qwen2.5-32B-Instruct",
28
+ name: "Qwen 2.5 32B Instruct",
29
+ provider: "modelscope",
30
+ api: "openai-compatible",
31
+ contextWindow: 131072,
32
+ maxTokens: 8192,
33
+ supportsVision: false,
34
+ supportsReasoning: false,
35
+ cost: { input: 0, output: 0 },
36
+ },
37
+ {
38
+ id: "Qwen/Qwen2.5-14B-Instruct",
39
+ name: "Qwen 2.5 14B Instruct",
40
+ provider: "modelscope",
41
+ api: "openai-compatible",
42
+ contextWindow: 131072,
43
+ maxTokens: 8192,
44
+ supportsVision: false,
45
+ supportsReasoning: false,
46
+ cost: { input: 0, output: 0 },
47
+ },
48
+ {
49
+ id: "Qwen/Qwen2.5-7B-Instruct",
50
+ name: "Qwen 2.5 7B Instruct",
51
+ provider: "modelscope",
52
+ api: "openai-compatible",
53
+ contextWindow: 131072,
54
+ maxTokens: 8192,
55
+ supportsVision: false,
56
+ supportsReasoning: false,
57
+ cost: { input: 0, output: 0 },
58
+ },
59
+ {
60
+ id: "Qwen/Qwen2.5-3B-Instruct",
61
+ name: "Qwen 2.5 3B Instruct",
62
+ provider: "modelscope",
63
+ api: "openai-compatible",
64
+ contextWindow: 32768,
65
+ maxTokens: 8192,
66
+ supportsVision: false,
67
+ supportsReasoning: false,
68
+ cost: { input: 0, output: 0 },
69
+ },
70
+ // Qwen Coder (代码模型)
71
+ {
72
+ id: "Qwen/Qwen2.5-Coder-32B-Instruct",
73
+ name: "Qwen 2.5 Coder 32B",
74
+ provider: "modelscope",
75
+ api: "openai-compatible",
76
+ contextWindow: 131072,
77
+ maxTokens: 8192,
78
+ supportsVision: false,
79
+ supportsReasoning: false,
80
+ cost: { input: 0, output: 0 },
81
+ },
82
+ {
83
+ id: "Qwen/Qwen2.5-Coder-14B-Instruct",
84
+ name: "Qwen 2.5 Coder 14B",
85
+ provider: "modelscope",
86
+ api: "openai-compatible",
87
+ contextWindow: 131072,
88
+ maxTokens: 8192,
89
+ supportsVision: false,
90
+ supportsReasoning: false,
91
+ cost: { input: 0, output: 0 },
92
+ },
93
+ {
94
+ id: "Qwen/Qwen2.5-Coder-7B-Instruct",
95
+ name: "Qwen 2.5 Coder 7B",
96
+ provider: "modelscope",
97
+ api: "openai-compatible",
98
+ contextWindow: 131072,
99
+ maxTokens: 8192,
100
+ supportsVision: false,
101
+ supportsReasoning: false,
102
+ cost: { input: 0, output: 0 },
103
+ },
104
+ // Qwen VL 视觉模型
105
+ {
106
+ id: "Qwen/Qwen2-VL-72B-Instruct",
107
+ name: "Qwen 2 VL 72B",
108
+ provider: "modelscope",
109
+ api: "openai-compatible",
110
+ contextWindow: 32768,
111
+ maxTokens: 2048,
112
+ supportsVision: true,
113
+ supportsReasoning: false,
114
+ cost: { input: 0, output: 0 },
115
+ },
116
+ {
117
+ id: "Qwen/Qwen2-VL-7B-Instruct",
118
+ name: "Qwen 2 VL 7B",
119
+ provider: "modelscope",
120
+ api: "openai-compatible",
121
+ contextWindow: 32768,
122
+ maxTokens: 2048,
123
+ supportsVision: true,
124
+ supportsReasoning: false,
125
+ cost: { input: 0, output: 0 },
126
+ },
127
+ // DeepSeek 系列
128
+ {
129
+ id: "deepseek-ai/DeepSeek-R1",
130
+ name: "DeepSeek R1",
131
+ provider: "modelscope",
132
+ api: "openai-compatible",
133
+ contextWindow: 65536,
134
+ maxTokens: 8192,
135
+ supportsVision: false,
136
+ supportsReasoning: true,
137
+ cost: { input: 0, output: 0 },
138
+ },
139
+ {
140
+ id: "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B",
141
+ name: "DeepSeek R1 Distill Qwen 32B",
142
+ provider: "modelscope",
143
+ api: "openai-compatible",
144
+ contextWindow: 65536,
145
+ maxTokens: 8192,
146
+ supportsVision: false,
147
+ supportsReasoning: true,
148
+ cost: { input: 0, output: 0 },
149
+ },
150
+ {
151
+ id: "deepseek-ai/DeepSeek-R1-Distill-Qwen-14B",
152
+ name: "DeepSeek R1 Distill Qwen 14B",
153
+ provider: "modelscope",
154
+ api: "openai-compatible",
155
+ contextWindow: 65536,
156
+ maxTokens: 8192,
157
+ supportsVision: false,
158
+ supportsReasoning: true,
159
+ cost: { input: 0, output: 0 },
160
+ },
161
+ {
162
+ id: "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B",
163
+ name: "DeepSeek R1 Distill Qwen 7B",
164
+ provider: "modelscope",
165
+ api: "openai-compatible",
166
+ contextWindow: 65536,
167
+ maxTokens: 8192,
168
+ supportsVision: false,
169
+ supportsReasoning: true,
170
+ cost: { input: 0, output: 0 },
171
+ },
172
+ {
173
+ id: "deepseek-ai/DeepSeek-V3",
174
+ name: "DeepSeek V3",
175
+ provider: "modelscope",
176
+ api: "openai-compatible",
177
+ contextWindow: 65536,
178
+ maxTokens: 8192,
179
+ supportsVision: false,
180
+ supportsReasoning: false,
181
+ cost: { input: 0, output: 0 },
182
+ },
183
+ // GLM 系列 (智谱)
184
+ {
185
+ id: "ZhipuAI/GLM-4-9B-Chat",
186
+ name: "GLM 4 9B Chat",
187
+ provider: "modelscope",
188
+ api: "openai-compatible",
189
+ contextWindow: 128000,
190
+ maxTokens: 4096,
191
+ supportsVision: false,
192
+ supportsReasoning: false,
193
+ cost: { input: 0, output: 0 },
194
+ },
195
+ // Yi 系列 (零一万物)
196
+ {
197
+ id: "01ai/Yi-1.5-34B-Chat",
198
+ name: "Yi 1.5 34B Chat",
199
+ provider: "modelscope",
200
+ api: "openai-compatible",
201
+ contextWindow: 4096,
202
+ maxTokens: 2048,
203
+ supportsVision: false,
204
+ supportsReasoning: false,
205
+ cost: { input: 0, output: 0 },
206
+ },
207
+ {
208
+ id: "01ai/Yi-1.5-9B-Chat",
209
+ name: "Yi 1.5 9B Chat",
210
+ provider: "modelscope",
211
+ api: "openai-compatible",
212
+ contextWindow: 4096,
213
+ maxTokens: 2048,
214
+ supportsVision: false,
215
+ supportsReasoning: false,
216
+ cost: { input: 0, output: 0 },
217
+ },
218
+ ];
219
+ export class ModelScopeProvider extends OpenAICompatibleProvider {
220
+ constructor(apiKey, customBaseUrl) {
221
+ const config = {
222
+ id: "modelscope",
223
+ name: "ModelScope (魔搭)",
224
+ baseUrl: customBaseUrl || MODELSCOPE_BASE_URL,
225
+ apiKey,
226
+ api: "openai-compatible",
227
+ models: MODELSCOPE_MODELS,
228
+ };
229
+ super(config);
230
+ this.logger = this.logger.child({ provider: "modelscope" });
231
+ }
232
+ }
233
+ /** 创建 ModelScope 提供商 */
234
+ export function createModelScopeProvider(apiKey, baseUrl) {
235
+ return new ModelScopeProvider(apiKey, baseUrl);
236
+ }
237
+ //# sourceMappingURL=modelscope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelscope.js","sourceRoot":"","sources":["../../src/providers/modelscope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * OpenAI 兼容提供商基类
3
+ * 用于 DeepSeek, Kimi, Stepfun 等使用 OpenAI 兼容接口的提供商
4
+ * 支持原生 function calling (tools 参数)
5
+ */
6
+ import { BaseProvider } from "./base.js";
7
+ import type { ChatCompletionRequest, ChatCompletionResponse, StreamChunk, ChatMessage, OpenAIToolDefinition } from "../types/index.js";
8
+ interface OpenAIMessage {
9
+ role: string;
10
+ content: string | Array<{
11
+ type: string;
12
+ text?: string;
13
+ image_url?: {
14
+ url: string;
15
+ };
16
+ }> | null;
17
+ tool_calls?: Array<{
18
+ id: string;
19
+ type: "function";
20
+ function: {
21
+ name: string;
22
+ arguments: string;
23
+ };
24
+ }>;
25
+ tool_call_id?: string;
26
+ name?: string;
27
+ }
28
+ interface OpenAIRequest {
29
+ model: string;
30
+ messages: OpenAIMessage[];
31
+ temperature?: number;
32
+ max_tokens?: number;
33
+ stream?: boolean;
34
+ top_p?: number;
35
+ stop?: string[];
36
+ tools?: OpenAIToolDefinition[];
37
+ tool_choice?: "auto" | "none" | {
38
+ type: "function";
39
+ function: {
40
+ name: string;
41
+ };
42
+ };
43
+ }
44
+ export declare abstract class OpenAICompatibleProvider extends BaseProvider {
45
+ /** 转换消息格式 */
46
+ protected convertMessages(messages: ChatMessage[]): OpenAIMessage[];
47
+ /** 构建请求体 */
48
+ protected buildRequest(request: ChatCompletionRequest): OpenAIRequest;
49
+ /** 聊天完成 */
50
+ chat(request: ChatCompletionRequest): Promise<ChatCompletionResponse>;
51
+ /** 流式聊天 (支持 tool_calls 流式) */
52
+ chatStream(request: ChatCompletionRequest): AsyncGenerator<StreamChunk, void, unknown>;
53
+ /** 映射完成原因 */
54
+ private mapFinishReason;
55
+ }
56
+ export {};
57
+ //# sourceMappingURL=openai-compatible.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-compatible.d.ts","sourceRoot":"","sources":["../../src/providers/openai-compatible.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACtB,WAAW,EACX,WAAW,EAEX,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAE3B,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAC7F,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,UAAU,CAAC;QACjB,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAClF;AA2CD,8BAAsB,wBAAyB,SAAQ,YAAY;IACjE,aAAa;IACb,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE;IAyCnE,YAAY;IACZ,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,aAAa;IAoBrE,WAAW;IACL,IAAI,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAmD3E,8BAA8B;IACvB,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC;IAwE7F,aAAa;IACb,OAAO,CAAC,eAAe;CAexB"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * OpenAI 兼容提供商基类
3
+ * 用于 DeepSeek, Kimi, Stepfun 等使用 OpenAI 兼容接口的提供商
4
+ * 支持原生 function calling (tools 参数)
5
+ */
6
+ import { BaseProvider } from "./base.js";
7
+ export class OpenAICompatibleProvider extends BaseProvider {
8
+ /** 转换消息格式 */
9
+ convertMessages(messages) {
10
+ return messages.map((msg) => {
11
+ const base = {
12
+ role: msg.role,
13
+ content: null,
14
+ };
15
+ // 处理内容
16
+ if (typeof msg.content === "string") {
17
+ base.content = msg.content;
18
+ }
19
+ else if (Array.isArray(msg.content)) {
20
+ base.content = msg.content.map((part) => {
21
+ if (part.type === "text") {
22
+ return { type: "text", text: part.text };
23
+ }
24
+ else if (part.type === "image") {
25
+ const url = part.url || `data:${part.mediaType || "image/jpeg"};base64,${part.base64}`;
26
+ return { type: "image_url", image_url: { url } };
27
+ }
28
+ return { type: "text", text: "" };
29
+ });
30
+ }
31
+ // assistant 消息的 tool_calls
32
+ if (msg.tool_calls) {
33
+ base.tool_calls = msg.tool_calls;
34
+ }
35
+ // tool 消息的 tool_call_id
36
+ if (msg.tool_call_id) {
37
+ base.tool_call_id = msg.tool_call_id;
38
+ }
39
+ // tool 消息的 name
40
+ if (msg.name) {
41
+ base.name = msg.name;
42
+ }
43
+ return base;
44
+ });
45
+ }
46
+ /** 构建请求体 */
47
+ buildRequest(request) {
48
+ const body = {
49
+ model: request.model,
50
+ messages: this.convertMessages(request.messages),
51
+ temperature: request.temperature,
52
+ max_tokens: request.maxTokens,
53
+ stream: request.stream ?? false,
54
+ top_p: request.topP,
55
+ stop: request.stop,
56
+ };
57
+ // 添加工具定义
58
+ if (request.tools && request.tools.length > 0) {
59
+ body.tools = request.tools;
60
+ body.tool_choice = request.tool_choice ?? "auto";
61
+ }
62
+ return body;
63
+ }
64
+ /** 聊天完成 */
65
+ async chat(request) {
66
+ const url = `${this.baseUrl}/chat/completions`;
67
+ const body = this.buildRequest(request);
68
+ this.logger.debug({ url, model: request.model, hasTools: !!request.tools }, "Sending chat request");
69
+ try {
70
+ const response = await fetch(url, {
71
+ method: "POST",
72
+ headers: this.getHeaders(),
73
+ body: JSON.stringify(body),
74
+ });
75
+ if (!response.ok) {
76
+ const errorText = await response.text();
77
+ throw new Error(`HTTP ${response.status}: ${errorText}`);
78
+ }
79
+ const data = (await response.json());
80
+ const choice = data.choices[0];
81
+ // 解析 tool_calls
82
+ let toolCalls;
83
+ if (choice?.message.tool_calls && choice.message.tool_calls.length > 0) {
84
+ toolCalls = choice.message.tool_calls.map((tc) => ({
85
+ id: tc.id,
86
+ type: "function",
87
+ function: {
88
+ name: tc.function.name,
89
+ arguments: tc.function.arguments,
90
+ },
91
+ }));
92
+ }
93
+ return {
94
+ id: data.id,
95
+ model: data.model,
96
+ content: choice?.message.content ?? "",
97
+ toolCalls,
98
+ usage: {
99
+ promptTokens: data.usage.prompt_tokens,
100
+ completionTokens: data.usage.completion_tokens,
101
+ totalTokens: data.usage.total_tokens,
102
+ },
103
+ finishReason: this.mapFinishReason(choice?.finish_reason),
104
+ };
105
+ }
106
+ catch (error) {
107
+ this.handleError(error, "chat");
108
+ }
109
+ }
110
+ /** 流式聊天 (支持 tool_calls 流式) */
111
+ async *chatStream(request) {
112
+ const url = `${this.baseUrl}/chat/completions`;
113
+ const body = this.buildRequest({ ...request, stream: true });
114
+ this.logger.debug({ url, model: request.model, hasTools: !!request.tools }, "Sending stream chat request");
115
+ try {
116
+ const response = await fetch(url, {
117
+ method: "POST",
118
+ headers: this.getHeaders(),
119
+ body: JSON.stringify(body),
120
+ });
121
+ if (!response.ok) {
122
+ const errorText = await response.text();
123
+ throw new Error(`HTTP ${response.status}: ${errorText}`);
124
+ }
125
+ const reader = response.body?.getReader();
126
+ if (!reader) {
127
+ throw new Error("Response body is not readable");
128
+ }
129
+ const decoder = new TextDecoder();
130
+ let buffer = "";
131
+ let currentId = "";
132
+ while (true) {
133
+ const { done, value } = await reader.read();
134
+ if (done)
135
+ break;
136
+ buffer += decoder.decode(value, { stream: true });
137
+ const lines = buffer.split("\n");
138
+ buffer = lines.pop() ?? "";
139
+ for (const line of lines) {
140
+ const trimmed = line.trim();
141
+ if (!trimmed || trimmed === "data: [DONE]")
142
+ continue;
143
+ if (trimmed.startsWith("data: ")) {
144
+ try {
145
+ const json = JSON.parse(trimmed.slice(6));
146
+ currentId = json.id;
147
+ const choice = json.choices[0];
148
+ const delta = choice?.delta?.content ?? "";
149
+ const finishReason = choice?.finish_reason;
150
+ const toolCallDeltas = choice?.delta?.tool_calls;
151
+ if (delta || finishReason || toolCallDeltas) {
152
+ yield {
153
+ id: currentId,
154
+ delta,
155
+ finishReason: finishReason ?? undefined,
156
+ toolCallDeltas: toolCallDeltas?.map((tc) => ({
157
+ index: tc.index,
158
+ id: tc.id,
159
+ type: tc.type,
160
+ function: tc.function,
161
+ })),
162
+ };
163
+ }
164
+ }
165
+ catch {
166
+ // 忽略解析错误
167
+ }
168
+ }
169
+ }
170
+ }
171
+ }
172
+ catch (error) {
173
+ this.handleError(error, "chatStream");
174
+ }
175
+ }
176
+ /** 映射完成原因 */
177
+ mapFinishReason(reason) {
178
+ switch (reason) {
179
+ case "stop":
180
+ return "stop";
181
+ case "length":
182
+ return "length";
183
+ case "content_filter":
184
+ return "content_filter";
185
+ case "tool_calls":
186
+ case "function_call":
187
+ return "tool_calls";
188
+ default:
189
+ return "stop";
190
+ }
191
+ }
192
+ }
193
+ //# sourceMappingURL=openai-compatible.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-compatible.js","sourceRoot":"","sources":["../../src/providers/openai-compatible.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 阶跃星辰 (Stepfun) 模型提供商
3
+ */
4
+ import { OpenAICompatibleProvider } from "./openai-compatible.js";
5
+ export declare class StepfunProvider extends OpenAICompatibleProvider {
6
+ constructor(apiKey: string, customBaseUrl?: string);
7
+ }
8
+ /** 创建 Stepfun 提供商 */
9
+ export declare function createStepfunProvider(apiKey: string, baseUrl?: string): StepfunProvider;
10
+ //# sourceMappingURL=stepfun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stepfun.d.ts","sourceRoot":"","sources":["../../src/providers/stepfun.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AA2GlE,qBAAa,eAAgB,SAAQ,wBAAwB;gBAC/C,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;CAYnD;AAED,qBAAqB;AACrB,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,eAAe,CAEvF"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * 阶跃星辰 (Stepfun) 模型提供商
3
+ */
4
+ import { OpenAICompatibleProvider } from "./openai-compatible.js";
5
+ const STEPFUN_BASE_URL = "https://api.stepfun.com/v1";
6
+ /** Stepfun 模型定义 */
7
+ const STEPFUN_MODELS = [
8
+ {
9
+ id: "step-1-8k",
10
+ name: "Step 1 8K",
11
+ provider: "stepfun",
12
+ api: "openai-compatible",
13
+ contextWindow: 8000,
14
+ maxTokens: 4096,
15
+ supportsVision: false,
16
+ supportsReasoning: false,
17
+ cost: {
18
+ input: 5, // ¥5/百万 token
19
+ output: 20, // ¥20/百万 token
20
+ },
21
+ },
22
+ {
23
+ id: "step-1-32k",
24
+ name: "Step 1 32K",
25
+ provider: "stepfun",
26
+ api: "openai-compatible",
27
+ contextWindow: 32000,
28
+ maxTokens: 16384,
29
+ supportsVision: false,
30
+ supportsReasoning: false,
31
+ cost: {
32
+ input: 15,
33
+ output: 70,
34
+ },
35
+ },
36
+ {
37
+ id: "step-1-128k",
38
+ name: "Step 1 128K",
39
+ provider: "stepfun",
40
+ api: "openai-compatible",
41
+ contextWindow: 128000,
42
+ maxTokens: 65536,
43
+ supportsVision: false,
44
+ supportsReasoning: false,
45
+ cost: {
46
+ input: 40,
47
+ output: 200,
48
+ },
49
+ },
50
+ {
51
+ id: "step-1-256k",
52
+ name: "Step 1 256K",
53
+ provider: "stepfun",
54
+ api: "openai-compatible",
55
+ contextWindow: 256000,
56
+ maxTokens: 65536,
57
+ supportsVision: false,
58
+ supportsReasoning: false,
59
+ cost: {
60
+ input: 95,
61
+ output: 300,
62
+ },
63
+ },
64
+ {
65
+ id: "step-1v-8k",
66
+ name: "Step 1V 8K (Vision)",
67
+ provider: "stepfun",
68
+ api: "openai-compatible",
69
+ contextWindow: 8000,
70
+ maxTokens: 4096,
71
+ supportsVision: true,
72
+ supportsReasoning: false,
73
+ cost: {
74
+ input: 8,
75
+ output: 30,
76
+ },
77
+ },
78
+ {
79
+ id: "step-1v-32k",
80
+ name: "Step 1V 32K (Vision)",
81
+ provider: "stepfun",
82
+ api: "openai-compatible",
83
+ contextWindow: 32000,
84
+ maxTokens: 16384,
85
+ supportsVision: true,
86
+ supportsReasoning: false,
87
+ cost: {
88
+ input: 24,
89
+ output: 96,
90
+ },
91
+ },
92
+ {
93
+ id: "step-2-16k",
94
+ name: "Step 2 16K",
95
+ provider: "stepfun",
96
+ api: "openai-compatible",
97
+ contextWindow: 16000,
98
+ maxTokens: 8192,
99
+ supportsVision: false,
100
+ supportsReasoning: true,
101
+ cost: {
102
+ input: 38,
103
+ output: 120,
104
+ },
105
+ },
106
+ ];
107
+ export class StepfunProvider extends OpenAICompatibleProvider {
108
+ constructor(apiKey, customBaseUrl) {
109
+ const config = {
110
+ id: "stepfun",
111
+ name: "阶跃星辰 (Stepfun)",
112
+ baseUrl: customBaseUrl || STEPFUN_BASE_URL,
113
+ apiKey,
114
+ api: "openai-compatible",
115
+ models: STEPFUN_MODELS,
116
+ };
117
+ super(config);
118
+ this.logger = this.logger.child({ provider: "stepfun" });
119
+ }
120
+ }
121
+ /** 创建 Stepfun 提供商 */
122
+ export function createStepfunProvider(apiKey, baseUrl) {
123
+ return new StepfunProvider(apiKey, baseUrl);
124
+ }
125
+ //# sourceMappingURL=stepfun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stepfun.js","sourceRoot":"","sources":["../../src/providers/stepfun.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 智谱 AI (Zhipu) 模型提供商
3
+ *
4
+ * 智谱 AI 是清华大学技术团队创立的人工智能公司
5
+ * 提供 GLM 系列大语言模型
6
+ *
7
+ * API 文档: https://open.bigmodel.cn/dev/api
8
+ */
9
+ import { OpenAICompatibleProvider } from "./openai-compatible.js";
10
+ export declare class ZhipuProvider extends OpenAICompatibleProvider {
11
+ constructor(apiKey: string, customBaseUrl?: string);
12
+ }
13
+ /** 创建智谱 AI 提供商 */
14
+ export declare function createZhipuProvider(apiKey: string, baseUrl?: string): ZhipuProvider;
15
+ //# sourceMappingURL=zhipu.d.ts.map