sema-core 1.0.2

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 (411) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +150 -0
  3. package/dist/constants/config.d.ts +20 -0
  4. package/dist/constants/config.d.ts.map +1 -0
  5. package/dist/constants/config.js +31 -0
  6. package/dist/constants/config.js.map +1 -0
  7. package/dist/constants/message.d.ts +10 -0
  8. package/dist/constants/message.d.ts.map +1 -0
  9. package/dist/constants/message.js +25 -0
  10. package/dist/constants/message.js.map +1 -0
  11. package/dist/constants/product.d.ts +5 -0
  12. package/dist/constants/product.d.ts.map +1 -0
  13. package/dist/constants/product.js +8 -0
  14. package/dist/constants/product.js.map +1 -0
  15. package/dist/core/Conversation.d.ts +16 -0
  16. package/dist/core/Conversation.d.ts.map +1 -0
  17. package/dist/core/Conversation.js +226 -0
  18. package/dist/core/Conversation.js.map +1 -0
  19. package/dist/core/RunTools.d.ts +11 -0
  20. package/dist/core/RunTools.d.ts.map +1 -0
  21. package/dist/core/RunTools.js +244 -0
  22. package/dist/core/RunTools.js.map +1 -0
  23. package/dist/core/SemaCore.d.ts +49 -0
  24. package/dist/core/SemaCore.d.ts.map +1 -0
  25. package/dist/core/SemaCore.js +94 -0
  26. package/dist/core/SemaCore.js.map +1 -0
  27. package/dist/core/SemaEngine.d.ts +54 -0
  28. package/dist/core/SemaEngine.d.ts.map +1 -0
  29. package/dist/core/SemaEngine.js +335 -0
  30. package/dist/core/SemaEngine.js.map +1 -0
  31. package/dist/events/EventSystem.d.ts +42 -0
  32. package/dist/events/EventSystem.d.ts.map +1 -0
  33. package/dist/events/EventSystem.js +134 -0
  34. package/dist/events/EventSystem.js.map +1 -0
  35. package/dist/events/types.d.ts +300 -0
  36. package/dist/events/types.d.ts.map +1 -0
  37. package/dist/events/types.js +4 -0
  38. package/dist/events/types.js.map +1 -0
  39. package/dist/index.d.ts +2 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +6 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/manager/ConfManager.d.ts +76 -0
  44. package/dist/manager/ConfManager.d.ts.map +1 -0
  45. package/dist/manager/ConfManager.js +329 -0
  46. package/dist/manager/ConfManager.js.map +1 -0
  47. package/dist/manager/ModelManager.d.ts +51 -0
  48. package/dist/manager/ModelManager.d.ts.map +1 -0
  49. package/dist/manager/ModelManager.js +291 -0
  50. package/dist/manager/ModelManager.js.map +1 -0
  51. package/dist/manager/PermissionManager.d.ts +16 -0
  52. package/dist/manager/PermissionManager.d.ts.map +1 -0
  53. package/dist/manager/PermissionManager.js +308 -0
  54. package/dist/manager/PermissionManager.js.map +1 -0
  55. package/dist/manager/StateManager.d.ts +164 -0
  56. package/dist/manager/StateManager.d.ts.map +1 -0
  57. package/dist/manager/StateManager.js +357 -0
  58. package/dist/manager/StateManager.js.map +1 -0
  59. package/dist/services/agents/agentsManager.d.ts +112 -0
  60. package/dist/services/agents/agentsManager.d.ts.map +1 -0
  61. package/dist/services/agents/agentsManager.js +394 -0
  62. package/dist/services/agents/agentsManager.js.map +1 -0
  63. package/dist/services/agents/defaultBuiltInAgentsConfs.d.ts +3 -0
  64. package/dist/services/agents/defaultBuiltInAgentsConfs.d.ts.map +1 -0
  65. package/dist/services/agents/defaultBuiltInAgentsConfs.js +102 -0
  66. package/dist/services/agents/defaultBuiltInAgentsConfs.js.map +1 -0
  67. package/dist/services/agents/genSystemPrompt.d.ts +23 -0
  68. package/dist/services/agents/genSystemPrompt.d.ts.map +1 -0
  69. package/dist/services/agents/genSystemPrompt.js +189 -0
  70. package/dist/services/agents/genSystemPrompt.js.map +1 -0
  71. package/dist/services/agents/prompt.d.ts +12 -0
  72. package/dist/services/agents/prompt.d.ts.map +1 -0
  73. package/dist/services/agents/prompt.js +162 -0
  74. package/dist/services/agents/prompt.js.map +1 -0
  75. package/dist/services/api/adapt/anthropic.d.ts +10 -0
  76. package/dist/services/api/adapt/anthropic.d.ts.map +1 -0
  77. package/dist/services/api/adapt/anthropic.js +233 -0
  78. package/dist/services/api/adapt/anthropic.js.map +1 -0
  79. package/dist/services/api/adapt/openai.d.ts +8 -0
  80. package/dist/services/api/adapt/openai.d.ts.map +1 -0
  81. package/dist/services/api/adapt/openai.js +412 -0
  82. package/dist/services/api/adapt/openai.js.map +1 -0
  83. package/dist/services/api/adapt/util.d.ts +7 -0
  84. package/dist/services/api/adapt/util.d.ts.map +1 -0
  85. package/dist/services/api/adapt/util.js +24 -0
  86. package/dist/services/api/adapt/util.js.map +1 -0
  87. package/dist/services/api/apiUtil.d.ts +10 -0
  88. package/dist/services/api/apiUtil.d.ts.map +1 -0
  89. package/dist/services/api/apiUtil.js +256 -0
  90. package/dist/services/api/apiUtil.js.map +1 -0
  91. package/dist/services/api/cache.d.ts +11 -0
  92. package/dist/services/api/cache.d.ts.map +1 -0
  93. package/dist/services/api/cache.js +128 -0
  94. package/dist/services/api/cache.js.map +1 -0
  95. package/dist/services/api/queryLLM.d.ts +18 -0
  96. package/dist/services/api/queryLLM.d.ts.map +1 -0
  97. package/dist/services/api/queryLLM.js +147 -0
  98. package/dist/services/api/queryLLM.js.map +1 -0
  99. package/dist/services/command/runCommand.d.ts +18 -0
  100. package/dist/services/command/runCommand.d.ts.map +1 -0
  101. package/dist/services/command/runCommand.js +149 -0
  102. package/dist/services/command/runCommand.js.map +1 -0
  103. package/dist/services/mcp/MCPClient.d.ts +35 -0
  104. package/dist/services/mcp/MCPClient.d.ts.map +1 -0
  105. package/dist/services/mcp/MCPClient.js +166 -0
  106. package/dist/services/mcp/MCPClient.js.map +1 -0
  107. package/dist/services/mcp/MCPManager.d.ts +140 -0
  108. package/dist/services/mcp/MCPManager.d.ts.map +1 -0
  109. package/dist/services/mcp/MCPManager.js +650 -0
  110. package/dist/services/mcp/MCPManager.js.map +1 -0
  111. package/dist/services/mcp/MCPToolAdapter.d.ts +22 -0
  112. package/dist/services/mcp/MCPToolAdapter.d.ts.map +1 -0
  113. package/dist/services/mcp/MCPToolAdapter.js +177 -0
  114. package/dist/services/mcp/MCPToolAdapter.js.map +1 -0
  115. package/dist/services/plugins/customCommands.d.ts +29 -0
  116. package/dist/services/plugins/customCommands.d.ts.map +1 -0
  117. package/dist/services/plugins/customCommands.js +227 -0
  118. package/dist/services/plugins/customCommands.js.map +1 -0
  119. package/dist/services/skill/skillLoader.d.ts +17 -0
  120. package/dist/services/skill/skillLoader.d.ts.map +1 -0
  121. package/dist/services/skill/skillLoader.js +122 -0
  122. package/dist/services/skill/skillLoader.js.map +1 -0
  123. package/dist/services/skill/skillParser.d.ts +15 -0
  124. package/dist/services/skill/skillParser.d.ts.map +1 -0
  125. package/dist/services/skill/skillParser.js +66 -0
  126. package/dist/services/skill/skillParser.js.map +1 -0
  127. package/dist/services/skill/skillRegistry.d.ts +34 -0
  128. package/dist/services/skill/skillRegistry.d.ts.map +1 -0
  129. package/dist/services/skill/skillRegistry.js +98 -0
  130. package/dist/services/skill/skillRegistry.js.map +1 -0
  131. package/dist/tools/AskUserQuestion/AskUserQuestion.d.ts +179 -0
  132. package/dist/tools/AskUserQuestion/AskUserQuestion.d.ts.map +1 -0
  133. package/dist/tools/AskUserQuestion/AskUserQuestion.js +165 -0
  134. package/dist/tools/AskUserQuestion/AskUserQuestion.js.map +1 -0
  135. package/dist/tools/AskUserQuestion/prompt.d.ts +3 -0
  136. package/dist/tools/AskUserQuestion/prompt.d.ts.map +1 -0
  137. package/dist/tools/AskUserQuestion/prompt.js +17 -0
  138. package/dist/tools/AskUserQuestion/prompt.js.map +1 -0
  139. package/dist/tools/Bash/Bash.d.ts +75 -0
  140. package/dist/tools/Bash/Bash.d.ts.map +1 -0
  141. package/dist/tools/Bash/Bash.js +200 -0
  142. package/dist/tools/Bash/Bash.js.map +1 -0
  143. package/dist/tools/Bash/prompt.d.ts +8 -0
  144. package/dist/tools/Bash/prompt.d.ts.map +1 -0
  145. package/dist/tools/Bash/prompt.js +167 -0
  146. package/dist/tools/Bash/prompt.js.map +1 -0
  147. package/dist/tools/Bash/utils.d.ts +5 -0
  148. package/dist/tools/Bash/utils.d.ts.map +1 -0
  149. package/dist/tools/Bash/utils.js +21 -0
  150. package/dist/tools/Bash/utils.js.map +1 -0
  151. package/dist/tools/Edit/Edit.d.ts +110 -0
  152. package/dist/tools/Edit/Edit.d.ts.map +1 -0
  153. package/dist/tools/Edit/Edit.js +213 -0
  154. package/dist/tools/Edit/Edit.js.map +1 -0
  155. package/dist/tools/Edit/prompt.d.ts +3 -0
  156. package/dist/tools/Edit/prompt.d.ts.map +1 -0
  157. package/dist/tools/Edit/prompt.js +15 -0
  158. package/dist/tools/Edit/prompt.js.map +1 -0
  159. package/dist/tools/Edit/utils.d.ts +10 -0
  160. package/dist/tools/Edit/utils.d.ts.map +1 -0
  161. package/dist/tools/Edit/utils.js +51 -0
  162. package/dist/tools/Edit/utils.js.map +1 -0
  163. package/dist/tools/ExitPlanMode/ExitPlanMode.d.ts +42 -0
  164. package/dist/tools/ExitPlanMode/ExitPlanMode.d.ts.map +1 -0
  165. package/dist/tools/ExitPlanMode/ExitPlanMode.js +157 -0
  166. package/dist/tools/ExitPlanMode/ExitPlanMode.js.map +1 -0
  167. package/dist/tools/ExitPlanMode/prompt.d.ts +3 -0
  168. package/dist/tools/ExitPlanMode/prompt.d.ts.map +1 -0
  169. package/dist/tools/ExitPlanMode/prompt.js +28 -0
  170. package/dist/tools/ExitPlanMode/prompt.js.map +1 -0
  171. package/dist/tools/Glob/Glob.d.ts +44 -0
  172. package/dist/tools/Glob/Glob.d.ts.map +1 -0
  173. package/dist/tools/Glob/Glob.js +113 -0
  174. package/dist/tools/Glob/Glob.js.map +1 -0
  175. package/dist/tools/Glob/prompt.d.ts +3 -0
  176. package/dist/tools/Glob/prompt.d.ts.map +1 -0
  177. package/dist/tools/Glob/prompt.js +11 -0
  178. package/dist/tools/Glob/prompt.js.map +1 -0
  179. package/dist/tools/Grep/Grep.d.ts +106 -0
  180. package/dist/tools/Grep/Grep.d.ts.map +1 -0
  181. package/dist/tools/Grep/Grep.js +301 -0
  182. package/dist/tools/Grep/Grep.js.map +1 -0
  183. package/dist/tools/Grep/prompt.d.ts +3 -0
  184. package/dist/tools/Grep/prompt.d.ts.map +1 -0
  185. package/dist/tools/Grep/prompt.js +17 -0
  186. package/dist/tools/Grep/prompt.js.map +1 -0
  187. package/dist/tools/NotebookEdit/NotebookEdit.d.ts +98 -0
  188. package/dist/tools/NotebookEdit/NotebookEdit.d.ts.map +1 -0
  189. package/dist/tools/NotebookEdit/NotebookEdit.js +228 -0
  190. package/dist/tools/NotebookEdit/NotebookEdit.js.map +1 -0
  191. package/dist/tools/NotebookEdit/prompt.d.ts +3 -0
  192. package/dist/tools/NotebookEdit/prompt.d.ts.map +1 -0
  193. package/dist/tools/NotebookEdit/prompt.js +6 -0
  194. package/dist/tools/NotebookEdit/prompt.js.map +1 -0
  195. package/dist/tools/Read/Read.d.ts +107 -0
  196. package/dist/tools/Read/Read.d.ts.map +1 -0
  197. package/dist/tools/Read/Read.js +175 -0
  198. package/dist/tools/Read/Read.js.map +1 -0
  199. package/dist/tools/Read/prompt.d.ts +4 -0
  200. package/dist/tools/Read/prompt.d.ts.map +1 -0
  201. package/dist/tools/Read/prompt.js +21 -0
  202. package/dist/tools/Read/prompt.js.map +1 -0
  203. package/dist/tools/Skill/Skill.d.ts +62 -0
  204. package/dist/tools/Skill/Skill.d.ts.map +1 -0
  205. package/dist/tools/Skill/Skill.js +142 -0
  206. package/dist/tools/Skill/Skill.js.map +1 -0
  207. package/dist/tools/Skill/prompt.d.ts +3 -0
  208. package/dist/tools/Skill/prompt.d.ts.map +1 -0
  209. package/dist/tools/Skill/prompt.js +58 -0
  210. package/dist/tools/Skill/prompt.js.map +1 -0
  211. package/dist/tools/Task/Task.d.ts +59 -0
  212. package/dist/tools/Task/Task.d.ts.map +1 -0
  213. package/dist/tools/Task/Task.js +213 -0
  214. package/dist/tools/Task/Task.js.map +1 -0
  215. package/dist/tools/Task/prompt.d.ts +6 -0
  216. package/dist/tools/Task/prompt.d.ts.map +1 -0
  217. package/dist/tools/Task/prompt.js +75 -0
  218. package/dist/tools/Task/prompt.js.map +1 -0
  219. package/dist/tools/TodoWrite/TodoWrite.d.ts +92 -0
  220. package/dist/tools/TodoWrite/TodoWrite.d.ts.map +1 -0
  221. package/dist/tools/TodoWrite/TodoWrite.js +101 -0
  222. package/dist/tools/TodoWrite/TodoWrite.js.map +1 -0
  223. package/dist/tools/TodoWrite/prompt.d.ts +3 -0
  224. package/dist/tools/TodoWrite/prompt.d.ts.map +1 -0
  225. package/dist/tools/TodoWrite/prompt.js +187 -0
  226. package/dist/tools/TodoWrite/prompt.js.map +1 -0
  227. package/dist/tools/Write/Write.d.ts +77 -0
  228. package/dist/tools/Write/Write.d.ts.map +1 -0
  229. package/dist/tools/Write/Write.js +189 -0
  230. package/dist/tools/Write/Write.js.map +1 -0
  231. package/dist/tools/Write/prompt.d.ts +3 -0
  232. package/dist/tools/Write/prompt.d.ts.map +1 -0
  233. package/dist/tools/Write/prompt.js +13 -0
  234. package/dist/tools/Write/prompt.js.map +1 -0
  235. package/dist/tools/base/Tool.d.ts +36 -0
  236. package/dist/tools/base/Tool.d.ts.map +1 -0
  237. package/dist/tools/base/Tool.js +3 -0
  238. package/dist/tools/base/Tool.js.map +1 -0
  239. package/dist/tools/base/tools.d.ts +9 -0
  240. package/dist/tools/base/tools.d.ts.map +1 -0
  241. package/dist/tools/base/tools.js +105 -0
  242. package/dist/tools/base/tools.js.map +1 -0
  243. package/dist/types/agent.d.ts +30 -0
  244. package/dist/types/agent.d.ts.map +1 -0
  245. package/dist/types/agent.js +3 -0
  246. package/dist/types/agent.js.map +1 -0
  247. package/dist/types/command.d.ts +44 -0
  248. package/dist/types/command.d.ts.map +1 -0
  249. package/dist/types/command.js +6 -0
  250. package/dist/types/command.js.map +1 -0
  251. package/dist/types/config.d.ts +14 -0
  252. package/dist/types/config.d.ts.map +1 -0
  253. package/dist/types/config.js +3 -0
  254. package/dist/types/config.js.map +1 -0
  255. package/dist/types/errors.d.ts +18 -0
  256. package/dist/types/errors.d.ts.map +1 -0
  257. package/dist/types/errors.js +33 -0
  258. package/dist/types/errors.js.map +1 -0
  259. package/dist/types/index.d.ts +91 -0
  260. package/dist/types/index.d.ts.map +1 -0
  261. package/dist/types/index.js +18 -0
  262. package/dist/types/index.js.map +1 -0
  263. package/dist/types/mcp.d.ts +127 -0
  264. package/dist/types/mcp.d.ts.map +1 -0
  265. package/dist/types/mcp.js +6 -0
  266. package/dist/types/mcp.js.map +1 -0
  267. package/dist/types/message.d.ts +31 -0
  268. package/dist/types/message.d.ts.map +1 -0
  269. package/dist/types/message.js +3 -0
  270. package/dist/types/message.js.map +1 -0
  271. package/dist/types/model.d.ts +21 -0
  272. package/dist/types/model.d.ts.map +1 -0
  273. package/dist/types/model.js +3 -0
  274. package/dist/types/model.js.map +1 -0
  275. package/dist/types/notebook.d.ts +57 -0
  276. package/dist/types/notebook.d.ts.map +1 -0
  277. package/dist/types/notebook.js +3 -0
  278. package/dist/types/notebook.js.map +1 -0
  279. package/dist/types/skill.d.ts +34 -0
  280. package/dist/types/skill.d.ts.map +1 -0
  281. package/dist/types/skill.js +8 -0
  282. package/dist/types/skill.js.map +1 -0
  283. package/dist/types/uuid.d.ts +2 -0
  284. package/dist/types/uuid.d.ts.map +1 -0
  285. package/dist/types/uuid.js +3 -0
  286. package/dist/types/uuid.js.map +1 -0
  287. package/dist/util/adapter.d.ts +11 -0
  288. package/dist/util/adapter.d.ts.map +1 -0
  289. package/dist/util/adapter.js +75 -0
  290. package/dist/util/adapter.js.map +1 -0
  291. package/dist/util/agentStats.d.ts +11 -0
  292. package/dist/util/agentStats.d.ts.map +1 -0
  293. package/dist/util/agentStats.js +60 -0
  294. package/dist/util/agentStats.js.map +1 -0
  295. package/dist/util/cacheLLM.d.ts +47 -0
  296. package/dist/util/cacheLLM.d.ts.map +1 -0
  297. package/dist/util/cacheLLM.js +154 -0
  298. package/dist/util/cacheLLM.js.map +1 -0
  299. package/dist/util/commands.d.ts +16 -0
  300. package/dist/util/commands.d.ts.map +1 -0
  301. package/dist/util/commands.js +216 -0
  302. package/dist/util/commands.js.map +1 -0
  303. package/dist/util/compact.d.ts +25 -0
  304. package/dist/util/compact.d.ts.map +1 -0
  305. package/dist/util/compact.js +451 -0
  306. package/dist/util/compact.js.map +1 -0
  307. package/dist/util/cwd.d.ts +44 -0
  308. package/dist/util/cwd.d.ts.map +1 -0
  309. package/dist/util/cwd.js +84 -0
  310. package/dist/util/cwd.js.map +1 -0
  311. package/dist/util/diff.d.ts +10 -0
  312. package/dist/util/diff.d.ts.map +1 -0
  313. package/dist/util/diff.js +127 -0
  314. package/dist/util/diff.js.map +1 -0
  315. package/dist/util/directory.d.ts +37 -0
  316. package/dist/util/directory.d.ts.map +1 -0
  317. package/dist/util/directory.js +137 -0
  318. package/dist/util/directory.js.map +1 -0
  319. package/dist/util/env.d.ts +5 -0
  320. package/dist/util/env.d.ts.map +1 -0
  321. package/dist/util/env.js +39 -0
  322. package/dist/util/env.js.map +1 -0
  323. package/dist/util/exec.d.ts +6 -0
  324. package/dist/util/exec.d.ts.map +1 -0
  325. package/dist/util/exec.js +43 -0
  326. package/dist/util/exec.js.map +1 -0
  327. package/dist/util/file.d.ts +61 -0
  328. package/dist/util/file.d.ts.map +1 -0
  329. package/dist/util/file.js +365 -0
  330. package/dist/util/file.js.map +1 -0
  331. package/dist/util/filePermission.d.ts +14 -0
  332. package/dist/util/filePermission.d.ts.map +1 -0
  333. package/dist/util/filePermission.js +45 -0
  334. package/dist/util/filePermission.js.map +1 -0
  335. package/dist/util/fileReference.d.ts +40 -0
  336. package/dist/util/fileReference.d.ts.map +1 -0
  337. package/dist/util/fileReference.js +343 -0
  338. package/dist/util/fileReference.js.map +1 -0
  339. package/dist/util/format.d.ts +9 -0
  340. package/dist/util/format.d.ts.map +1 -0
  341. package/dist/util/format.js +61 -0
  342. package/dist/util/format.js.map +1 -0
  343. package/dist/util/frontmatter.d.ts +35 -0
  344. package/dist/util/frontmatter.d.ts.map +1 -0
  345. package/dist/util/frontmatter.js +119 -0
  346. package/dist/util/frontmatter.js.map +1 -0
  347. package/dist/util/git.d.ts +4 -0
  348. package/dist/util/git.d.ts.map +1 -0
  349. package/dist/util/git.js +55 -0
  350. package/dist/util/git.js.map +1 -0
  351. package/dist/util/history.d.ts +27 -0
  352. package/dist/util/history.d.ts.map +1 -0
  353. package/dist/util/history.js +248 -0
  354. package/dist/util/history.js.map +1 -0
  355. package/dist/util/log.d.ts +23 -0
  356. package/dist/util/log.d.ts.map +1 -0
  357. package/dist/util/log.js +246 -0
  358. package/dist/util/log.js.map +1 -0
  359. package/dist/util/logLLM.d.ts +20 -0
  360. package/dist/util/logLLM.d.ts.map +1 -0
  361. package/dist/util/logLLM.js +414 -0
  362. package/dist/util/logLLM.js.map +1 -0
  363. package/dist/util/message.d.ts +12 -0
  364. package/dist/util/message.d.ts.map +1 -0
  365. package/dist/util/message.js +156 -0
  366. package/dist/util/message.js.map +1 -0
  367. package/dist/util/model.d.ts +22 -0
  368. package/dist/util/model.d.ts.map +1 -0
  369. package/dist/util/model.js +61 -0
  370. package/dist/util/model.js.map +1 -0
  371. package/dist/util/notebook.d.ts +14 -0
  372. package/dist/util/notebook.d.ts.map +1 -0
  373. package/dist/util/notebook.js +104 -0
  374. package/dist/util/notebook.js.map +1 -0
  375. package/dist/util/ripgrep.d.ts +3 -0
  376. package/dist/util/ripgrep.d.ts.map +1 -0
  377. package/dist/util/ripgrep.js +187 -0
  378. package/dist/util/ripgrep.js.map +1 -0
  379. package/dist/util/rules.d.ts +6 -0
  380. package/dist/util/rules.d.ts.map +1 -0
  381. package/dist/util/rules.js +111 -0
  382. package/dist/util/rules.js.map +1 -0
  383. package/dist/util/savePath.d.ts +73 -0
  384. package/dist/util/savePath.d.ts.map +1 -0
  385. package/dist/util/savePath.js +189 -0
  386. package/dist/util/savePath.js.map +1 -0
  387. package/dist/util/secureFile.d.ts +136 -0
  388. package/dist/util/secureFile.d.ts.map +1 -0
  389. package/dist/util/secureFile.js +496 -0
  390. package/dist/util/secureFile.js.map +1 -0
  391. package/dist/util/session.d.ts +37 -0
  392. package/dist/util/session.d.ts.map +1 -0
  393. package/dist/util/session.js +120 -0
  394. package/dist/util/session.js.map +1 -0
  395. package/dist/util/shell.d.ts +40 -0
  396. package/dist/util/shell.d.ts.map +1 -0
  397. package/dist/util/shell.js +876 -0
  398. package/dist/util/shell.js.map +1 -0
  399. package/dist/util/time.d.ts +24 -0
  400. package/dist/util/time.d.ts.map +1 -0
  401. package/dist/util/time.js +53 -0
  402. package/dist/util/time.js.map +1 -0
  403. package/dist/util/tokens.d.ts +9 -0
  404. package/dist/util/tokens.d.ts.map +1 -0
  405. package/dist/util/tokens.js +79 -0
  406. package/dist/util/tokens.js.map +1 -0
  407. package/dist/util/topic.d.ts +9 -0
  408. package/dist/util/topic.d.ts.map +1 -0
  409. package/dist/util/topic.js +52 -0
  410. package/dist/util/topic.js.map +1 -0
  411. package/package.json +83 -0
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MAIN_QUERY_TEMPERATURE = void 0;
7
+ exports.queryAnthropic = queryAnthropic;
8
+ const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
9
+ const crypto_1 = require("crypto");
10
+ const tools_1 = require("../../../tools/base/tools");
11
+ const logLLM_1 = require("../../../util/logLLM");
12
+ const log_1 = require("../../../util/log");
13
+ const util_1 = require("./util");
14
+ Object.defineProperty(exports, "MAIN_QUERY_TEMPERATURE", { enumerable: true, get: function () { return util_1.MAIN_QUERY_TEMPERATURE; } });
15
+ // --- Core ---
16
+ async function streamChat(params, signal, emitChunkEvents = false) {
17
+ const { url, headers = {}, body } = params;
18
+ // 从 headers 里提取 apiKey
19
+ const apiKey = headers["x-api-key"] || headers["Authorization"]?.replace("Bearer ", "") || "sk-placeholder";
20
+ const client = new sdk_1.default({
21
+ apiKey,
22
+ baseURL: url,
23
+ defaultHeaders: headers,
24
+ });
25
+ // --- 累积 stream chunks ---
26
+ let accumulatedText = '';
27
+ let accumulatedThinking = '';
28
+ let thinkingSignature = '';
29
+ const contentBlocks = [];
30
+ let messageId = '';
31
+ let stopReason = null;
32
+ let usage = {
33
+ input_tokens: 0,
34
+ output_tokens: 0,
35
+ cache_creation_input_tokens: 0,
36
+ cache_read_input_tokens: 0,
37
+ };
38
+ const eventBus = (0, util_1.getChunkEventBus)(emitChunkEvents);
39
+ // 使用 stream 方法
40
+ const stream = client.messages.stream({
41
+ ...body,
42
+ stream: true,
43
+ });
44
+ try {
45
+ for await (const event of stream) {
46
+ if (signal?.aborted) {
47
+ break; // 返回已累积的部分内容,而非抛出异常
48
+ }
49
+ switch (event.type) {
50
+ case 'message_start':
51
+ messageId = event.message.id;
52
+ break;
53
+ case 'content_block_start':
54
+ if (event.content_block.type === 'tool_use') {
55
+ contentBlocks[event.index] = { ...event.content_block, input: '' };
56
+ }
57
+ break;
58
+ case 'content_block_delta': {
59
+ const delta = event.delta;
60
+ if (delta.type === 'thinking_delta') {
61
+ accumulatedThinking += delta.thinking;
62
+ if (eventBus) {
63
+ (0, util_1.emitChunkEvent)(eventBus, 'thinking', accumulatedThinking, delta.thinking);
64
+ }
65
+ }
66
+ else if (delta.type === 'text_delta') {
67
+ accumulatedText += delta.text;
68
+ if (eventBus) {
69
+ (0, util_1.emitChunkEvent)(eventBus, 'text', accumulatedText, delta.text);
70
+ }
71
+ }
72
+ else if (delta.type === 'input_json_delta') {
73
+ const block = contentBlocks[event.index];
74
+ if (block && block.type === 'tool_use') {
75
+ block.input = (block.input || '') + delta.partial_json;
76
+ }
77
+ }
78
+ else if (delta.type === 'signature_delta') {
79
+ thinkingSignature = delta.signature;
80
+ }
81
+ break;
82
+ }
83
+ case 'message_delta':
84
+ stopReason = event.delta.stop_reason;
85
+ if (event.usage) {
86
+ const deltaUsage = event.usage;
87
+ usage = {
88
+ input_tokens: deltaUsage.input_tokens || 0,
89
+ output_tokens: deltaUsage.output_tokens || 0,
90
+ cache_creation_input_tokens: deltaUsage.cache_creation_input_tokens || 0,
91
+ cache_read_input_tokens: deltaUsage.cache_read_input_tokens || 0,
92
+ };
93
+ }
94
+ break;
95
+ }
96
+ }
97
+ }
98
+ catch (error) {
99
+ if (signal?.aborted) {
100
+ // 中断时不抛出,返回已累积的部分内容
101
+ }
102
+ else {
103
+ throw error;
104
+ }
105
+ }
106
+ // --- 构建结果 ---
107
+ const finalContentBlocks = [];
108
+ // 添加 thinking block(如果有)
109
+ if (accumulatedThinking) {
110
+ finalContentBlocks.push({
111
+ type: 'thinking',
112
+ thinking: accumulatedThinking,
113
+ signature: thinkingSignature,
114
+ });
115
+ }
116
+ // 添加 text block(如果有)
117
+ if (accumulatedText) {
118
+ finalContentBlocks.push({
119
+ type: 'text',
120
+ text: accumulatedText,
121
+ });
122
+ }
123
+ // 添加 tool_use blocks(解析 JSON input)
124
+ for (const block of contentBlocks) {
125
+ if (block && block.type === 'tool_use') {
126
+ const toolBlock = block;
127
+ finalContentBlocks.push({
128
+ type: 'tool_use',
129
+ id: toolBlock.id,
130
+ name: toolBlock.name,
131
+ input: typeof toolBlock.input === 'string'
132
+ ? JSON.parse(toolBlock.input || '{}')
133
+ : toolBlock.input,
134
+ });
135
+ }
136
+ }
137
+ return {
138
+ id: messageId,
139
+ type: 'message',
140
+ role: 'assistant',
141
+ model: body.model,
142
+ content: finalContentBlocks,
143
+ stop_reason: stopReason,
144
+ stop_sequence: null,
145
+ usage,
146
+ };
147
+ }
148
+ // ============================================================================
149
+ // Anthropic 实现
150
+ // ============================================================================
151
+ async function queryAnthropic(messages, systemPromptContent, tools, signal, modelProfile, enableThinking, emitChunkEvents) {
152
+ const start = Date.now();
153
+ const baseURL = modelProfile.baseURL || 'https://api.anthropic.com';
154
+ // 构建 header
155
+ const headers = {
156
+ 'Content-Type': 'application/json',
157
+ };
158
+ const apiKey = modelProfile.apiKey;
159
+ if (apiKey) {
160
+ headers['x-api-key'] = apiKey;
161
+ }
162
+ // 构建消息列表
163
+ const anthropicMessages = buildAnthropicMessages(messages, enableThinking);
164
+ // 转换工具定义
165
+ const anthropicTools = tools.length > 0 ? (0, tools_1.buildTools)(tools) : undefined;
166
+ // 构建请求参数
167
+ const requestBody = {
168
+ model: modelProfile.modelName,
169
+ messages: anthropicMessages,
170
+ system: systemPromptContent,
171
+ max_tokens: modelProfile.maxTokens,
172
+ temperature: util_1.MAIN_QUERY_TEMPERATURE,
173
+ stream: true,
174
+ ...(anthropicTools && { tools: anthropicTools }),
175
+ };
176
+ // 如果启用了 thinking,添加相关参数
177
+ if (enableThinking) {
178
+ requestBody.thinking = {
179
+ type: 'enabled',
180
+ budget_tokens: Math.min(Math.floor(modelProfile.maxTokens / 2) || 8000, 4000)
181
+ };
182
+ }
183
+ (0, logLLM_1.logLLMRequest)(requestBody);
184
+ // 统一使用 streamChat 处理请求
185
+ const parsedMessage = await streamChat({
186
+ url: baseURL,
187
+ headers,
188
+ body: requestBody,
189
+ }, signal, emitChunkEvents);
190
+ const durationMs = Date.now() - start;
191
+ // 转换为 AssistantMessage
192
+ return convertToAssistantMessage(parsedMessage, durationMs);
193
+ }
194
+ function buildAnthropicMessages(messages, enableThinking = false) {
195
+ const result = [];
196
+ messages.forEach(message => {
197
+ const role = message.message.role;
198
+ const content = message.message.content;
199
+ if (Array.isArray(content)) {
200
+ // 启用 thinking 时,必须保留 assistant 消息中的 thinking block,否则 API 会报错
201
+ // 未启用 thinking 时,需要过滤掉 thinking block
202
+ const filteredContent = enableThinking
203
+ ? content
204
+ : content.filter((block) => block.type !== 'thinking');
205
+ if (filteredContent.length > 0) {
206
+ result.push({
207
+ role,
208
+ content: filteredContent,
209
+ });
210
+ }
211
+ }
212
+ else {
213
+ result.push({
214
+ role,
215
+ content: content,
216
+ });
217
+ }
218
+ });
219
+ (0, log_1.logDebug)(`转换后的 Anthropic Messages: ${JSON.stringify(result, null, 2)}`);
220
+ return result;
221
+ }
222
+ /**
223
+ * 将 Anthropic.Message 转换为 AssistantMessage
224
+ */
225
+ function convertToAssistantMessage(message, durationMs) {
226
+ return {
227
+ type: 'assistant',
228
+ uuid: (0, crypto_1.randomUUID)(),
229
+ durationMs,
230
+ message,
231
+ };
232
+ }
233
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../../src/services/api/adapt/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { UserMessage, AssistantMessage } from '../../../types/message';
2
+ import { ModelProfile } from '../../../types/model';
3
+ import { Tool } from '../../../tools/base/Tool';
4
+ export declare function queryOpenAI(messages: (UserMessage | AssistantMessage)[], systemPromptContent: Array<{
5
+ type: 'text';
6
+ text: string;
7
+ }>, tools: Tool[], signal: AbortSignal, modelProfile: ModelProfile, enableThinking: boolean, emitChunkEvents: boolean): Promise<AssistantMessage>;
8
+ //# sourceMappingURL=openai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../../src/services/api/adapt/openai.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAmK/C,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,CAAC,WAAW,GAAG,gBAAgB,CAAC,EAAE,EAC5C,mBAAmB,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1D,KAAK,EAAE,IAAI,EAAE,EACb,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,OAAO,EACvB,eAAe,EAAE,OAAO,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAwD3B"}
@@ -0,0 +1,412 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.queryOpenAI = queryOpenAI;
7
+ const openai_1 = __importDefault(require("openai"));
8
+ const crypto_1 = require("crypto");
9
+ const nanoid_1 = require("nanoid");
10
+ const tools_1 = require("../../../tools/base/tools");
11
+ const logLLM_1 = require("../../../util/logLLM");
12
+ const log_1 = require("../../../util/log");
13
+ const adapter_1 = require("../../../util/adapter");
14
+ const util_1 = require("./util");
15
+ // --- Core ---
16
+ async function streamChat(params, signal, emitChunkEvents = false) {
17
+ const { url, headers = {}, body } = params;
18
+ // 从 headers 里提取 apiKey,或直接用 Authorization
19
+ const apiKey = headers["Authorization"]?.replace("Bearer ", "") || "sk-placeholder";
20
+ const client = new openai_1.default({
21
+ apiKey,
22
+ baseURL: url,
23
+ defaultHeaders: headers,
24
+ });
25
+ // --- 累积 stream chunks ---
26
+ let accumulatedContent = '';
27
+ let accumulatedReasoning = '';
28
+ const toolCallsMap = new Map();
29
+ const eventBus = (0, util_1.getChunkEventBus)(emitChunkEvents);
30
+ // 使用 stream 方法,添加 stream_options 以获取 usage 信息
31
+ const stream = client.chat.completions.stream({
32
+ ...body,
33
+ stream: true,
34
+ stream_options: { include_usage: true },
35
+ });
36
+ try {
37
+ for await (const chunk of stream) {
38
+ if (signal?.aborted) {
39
+ break; // 返回已累积的部分内容,而非抛出异常
40
+ }
41
+ const delta = chunk.choices[0]?.delta;
42
+ if (!delta)
43
+ continue;
44
+ // content
45
+ if (delta.content) {
46
+ // 过滤 openrouter 的处理消息
47
+ if (delta.content.includes(':OPENROUTER PROCESSING')) {
48
+ continue;
49
+ }
50
+ accumulatedContent += delta.content;
51
+ if (eventBus) {
52
+ (0, util_1.emitChunkEvent)(eventBus, 'text', accumulatedContent, delta.content);
53
+ }
54
+ }
55
+ // reasoning_content(部分模型支持,如 o1/o3/deepseek)
56
+ if ("reasoning_content" in delta && delta.reasoning_content) {
57
+ accumulatedReasoning += delta.reasoning_content;
58
+ if (eventBus) {
59
+ (0, util_1.emitChunkEvent)(eventBus, 'thinking', accumulatedReasoning, delta.reasoning_content);
60
+ }
61
+ }
62
+ // tool_calls
63
+ if (delta.tool_calls) {
64
+ for (const tc of delta.tool_calls) {
65
+ const idx = tc.index;
66
+ if (!toolCallsMap.has(idx)) {
67
+ toolCallsMap.set(idx, { id: "", name: "", arguments: "" });
68
+ }
69
+ const entry = toolCallsMap.get(idx);
70
+ if (tc.id)
71
+ entry.id = tc.id;
72
+ if (tc.function?.name)
73
+ entry.name += tc.function.name;
74
+ if (tc.function?.arguments)
75
+ entry.arguments += tc.function.arguments;
76
+ }
77
+ }
78
+ }
79
+ }
80
+ catch (error) {
81
+ if (signal?.aborted) {
82
+ // 中断时不抛出,返回已累积的部分内容
83
+ }
84
+ else {
85
+ throw error;
86
+ }
87
+ }
88
+ // --- 获取最终响应信息(中断时跳过,避免挂起)---
89
+ let finalResponse = null;
90
+ if (!signal?.aborted) {
91
+ try {
92
+ finalResponse = await stream.finalChatCompletion();
93
+ }
94
+ catch {
95
+ // stream 已中断,忽略
96
+ }
97
+ }
98
+ // --- 构建结果,添加累积的 reasoning_content ---
99
+ const tool_calls = toolCallsMap.size
100
+ ? Array.from(toolCallsMap.entries())
101
+ .sort(([a], [b]) => a - b)
102
+ .map(([_index, tc]) => ({
103
+ id: tc.id,
104
+ type: "function",
105
+ function: { name: tc.name, arguments: tc.arguments },
106
+ }))
107
+ : undefined;
108
+ // 构建符合 OpenAI.ChatCompletion 格式的返回值
109
+ const message = {
110
+ role: 'assistant',
111
+ content: accumulatedContent || null,
112
+ refusal: null,
113
+ };
114
+ if (accumulatedReasoning) {
115
+ message.reasoning_content = accumulatedReasoning;
116
+ }
117
+ if (tool_calls && tool_calls.length > 0) {
118
+ message.tool_calls = tool_calls;
119
+ }
120
+ return {
121
+ id: finalResponse?.id || `chatcmpl-${(0, crypto_1.randomUUID)()}`,
122
+ object: 'chat.completion',
123
+ created: finalResponse?.created || Math.floor(Date.now() / 1000),
124
+ model: body.model,
125
+ choices: [{
126
+ index: 0,
127
+ message,
128
+ finish_reason: finalResponse?.choices[0]?.finish_reason || 'stop',
129
+ logprobs: null,
130
+ }],
131
+ usage: {
132
+ prompt_tokens: finalResponse?.usage?.prompt_tokens || 0,
133
+ completion_tokens: finalResponse?.usage?.completion_tokens || 0,
134
+ total_tokens: (finalResponse?.usage?.prompt_tokens || 0) + (finalResponse?.usage?.completion_tokens || 0),
135
+ },
136
+ };
137
+ }
138
+ // ============================================================================
139
+ // OpenAI 实现
140
+ // ============================================================================
141
+ async function queryOpenAI(messages, systemPromptContent, tools, signal, modelProfile, enableThinking, emitChunkEvents) {
142
+ const start = Date.now();
143
+ let baseURL = modelProfile.baseURL || 'https://api.openai.com/v1';
144
+ if (modelProfile.provider !== 'glm' && !baseURL.endsWith('/v1')) {
145
+ baseURL = baseURL.replace(/\/$/, '') + '/v1';
146
+ }
147
+ // 构建 header
148
+ const headers = {
149
+ 'Content-Type': 'application/json',
150
+ };
151
+ const apiKey = modelProfile.apiKey;
152
+ if (apiKey) {
153
+ headers['Authorization'] = `Bearer ${apiKey}`;
154
+ }
155
+ // 构建消息列表(Anthropic 转 OpenAI)
156
+ const openaiMessages = buildOpenAIMessages(messages, systemPromptContent, enableThinking);
157
+ // 转换工具定义
158
+ const openaiTools = tools.length > 0 ? convertToolsToOpenAI(tools) : undefined;
159
+ // 构建请求参数
160
+ const requestBody = {
161
+ model: modelProfile.modelName,
162
+ messages: openaiMessages,
163
+ stream: true,
164
+ ...(openaiTools && { tools: openaiTools }),
165
+ ...((0, adapter_1.useMaxCompletionTokens)(modelProfile.modelName)
166
+ ? { max_completion_tokens: modelProfile.maxTokens || 8000 }
167
+ : { max_tokens: modelProfile.maxTokens || 8000 }),
168
+ // 根据 provider 决定 reasoning 启用方式:
169
+ // - openai 官方:使用 reasoning_effort
170
+ // - 其他 provider(如 DeepSeek):使用 thinking 参数
171
+ ...(modelProfile.provider === 'openai'
172
+ ? (enableThinking ? { reasoning_effort: 'medium' } : {})
173
+ : (enableThinking
174
+ ? { thinking: { type: "enabled" } }
175
+ : { thinking: { type: "disabled" } })),
176
+ };
177
+ (0, logLLM_1.logLLMRequest)(requestBody);
178
+ // 统一使用 streamChat 处理请求
179
+ const chatCompletion = await streamChat({
180
+ url: baseURL,
181
+ headers,
182
+ body: requestBody,
183
+ }, signal, emitChunkEvents);
184
+ const durationMs = Date.now() - start;
185
+ // 转换为 AssistantMessage
186
+ return convertToAssistantMessage(chatCompletion, durationMs);
187
+ }
188
+ // ============================================================================
189
+ // 消息格式转换函数
190
+ // ============================================================================
191
+ function buildOpenAIMessages(messages, systemPromptContent, enableThinking = false) {
192
+ // 转换消息
193
+ const openaiMessages = convertAnthropicMessagesToOpenAI(messages, enableThinking);
194
+ // 加入系统提示
195
+ if (systemPromptContent.length > 0) {
196
+ const systemPrompt = systemPromptContent.map(item => item.text).filter(Boolean).join('\n\n');
197
+ if (systemPrompt) {
198
+ openaiMessages.unshift({
199
+ role: 'system',
200
+ content: systemPrompt
201
+ });
202
+ }
203
+ }
204
+ (0, log_1.logDebug)(`转换后的 OpenAI Messages: ${JSON.stringify(openaiMessages, null, 2)}`);
205
+ return openaiMessages;
206
+ }
207
+ function convertAnthropicMessagesToOpenAI(messages, enableThinking = false) {
208
+ const openaiMessages = [];
209
+ const toolResults = {};
210
+ function normalizeContentBlocks(content) {
211
+ if (typeof content === 'string') {
212
+ return [{ type: 'text', text: content }];
213
+ }
214
+ const blocks = Array.isArray(content) ? content : [content];
215
+ // 保留 thinking blocks,某些模型(如 DeepSeek)需要在历史消息中包含 reasoning_content
216
+ return blocks;
217
+ }
218
+ messages.forEach(message => {
219
+ const contentBlocks = normalizeContentBlocks(message.message.content);
220
+ if (message.message.role === 'assistant') {
221
+ processAssistantMessage(contentBlocks, openaiMessages, toolResults, enableThinking);
222
+ }
223
+ else {
224
+ processUserMessage(message, contentBlocks, openaiMessages, toolResults);
225
+ }
226
+ });
227
+ return buildFinalMessages(openaiMessages, toolResults);
228
+ }
229
+ function processAssistantMessage(contentBlocks, messages, toolResults, enableThinking = false) {
230
+ let textContent = '';
231
+ let reasoningContent = '';
232
+ const toolCalls = [];
233
+ contentBlocks.forEach(block => {
234
+ if (block.type === 'text') {
235
+ textContent += block.text;
236
+ }
237
+ else if (block.type === 'thinking' && enableThinking) {
238
+ // 启用 thinking 时,保留 reasoning_content,某些模型(如 DeepSeek)需要在历史消息中包含
239
+ reasoningContent += block.thinking;
240
+ }
241
+ else if (block.type === 'tool_use') {
242
+ toolCalls.push({
243
+ type: 'function',
244
+ function: {
245
+ name: block.name,
246
+ arguments: JSON.stringify(block.input),
247
+ },
248
+ id: block.id,
249
+ });
250
+ }
251
+ else if (block.type === 'tool_result') {
252
+ toolResults[block.tool_use_id] = createToolResultMessage(block);
253
+ }
254
+ });
255
+ if (textContent || toolCalls.length > 0 || reasoningContent) {
256
+ const message = { role: 'assistant' };
257
+ if (textContent) {
258
+ message.content = textContent;
259
+ }
260
+ // 某些模型(如 DeepSeek)要求历史消息中包含 reasoning_content
261
+ if (reasoningContent) {
262
+ message.reasoning_content = reasoningContent;
263
+ }
264
+ if (toolCalls.length > 0) {
265
+ message.tool_calls = toolCalls;
266
+ if (!textContent) {
267
+ message.content = null;
268
+ }
269
+ }
270
+ messages.push(message);
271
+ }
272
+ }
273
+ function processUserMessage(message, contentBlocks, messages, toolResults) {
274
+ const textBlocks = [];
275
+ contentBlocks.forEach(block => {
276
+ if (block.type === 'text') {
277
+ textBlocks.push(block.text);
278
+ }
279
+ else if (block.type === 'tool_result') {
280
+ toolResults[block.tool_use_id] = createToolResultMessage(block);
281
+ }
282
+ });
283
+ if (textBlocks.length > 0) {
284
+ messages.push({
285
+ role: message.message.role,
286
+ content: textBlocks.join('\n'),
287
+ });
288
+ }
289
+ }
290
+ function createToolResultMessage(block) {
291
+ const content = typeof block.content === 'string'
292
+ ? block.content
293
+ : JSON.stringify(block.content);
294
+ return {
295
+ role: 'tool',
296
+ content,
297
+ tool_call_id: block.tool_use_id,
298
+ };
299
+ }
300
+ function buildFinalMessages(messages, toolResults) {
301
+ const finalMessages = [];
302
+ messages.forEach(message => {
303
+ finalMessages.push(message);
304
+ if ('tool_calls' in message && message.tool_calls) {
305
+ message.tool_calls.forEach((toolCall) => {
306
+ if (toolResults[toolCall.id]) {
307
+ finalMessages.push(toolResults[toolCall.id]);
308
+ }
309
+ });
310
+ }
311
+ });
312
+ return finalMessages;
313
+ }
314
+ // ============================================================================
315
+ // 工具转换函数
316
+ // ============================================================================
317
+ function convertToolsToOpenAI(tools) {
318
+ const anthropicTools = (0, tools_1.buildTools)(tools);
319
+ return anthropicTools.map(tool => ({
320
+ type: 'function',
321
+ function: {
322
+ name: tool.name,
323
+ description: tool.description || '',
324
+ parameters: tool.input_schema
325
+ }
326
+ }));
327
+ }
328
+ // ============================================================================
329
+ // 响应转换函数
330
+ // ============================================================================
331
+ /**
332
+ * 将 OpenAI 的 finish_reason 映射为 Anthropic 的 stop_reason
333
+ */
334
+ function mapFinishReasonToStopReason(finishReason) {
335
+ switch (finishReason) {
336
+ case 'stop':
337
+ return 'end_turn';
338
+ case 'length':
339
+ return 'max_tokens';
340
+ case 'tool_calls':
341
+ return 'tool_use';
342
+ case 'content_filter':
343
+ return 'end_turn';
344
+ default:
345
+ return finishReason ? 'end_turn' : null;
346
+ }
347
+ }
348
+ /**
349
+ * 将 OpenAI.ChatCompletion 转换为 AssistantMessage
350
+ */
351
+ function convertToAssistantMessage(chatCompletion, durationMs) {
352
+ const contentBlocks = [];
353
+ const choice = chatCompletion.choices[0];
354
+ const message = choice?.message;
355
+ // 处理 thinking/reasoning 内容
356
+ if (message?.reasoning_content) {
357
+ contentBlocks.push({
358
+ type: 'thinking',
359
+ thinking: message.reasoning_content,
360
+ signature: '',
361
+ });
362
+ }
363
+ // 处理工具调用
364
+ if (message?.tool_calls) {
365
+ message.tool_calls.forEach((toolCall) => {
366
+ if (toolCall.type === 'function') {
367
+ contentBlocks.push({
368
+ type: 'tool_use',
369
+ input: safeParseJSON(toolCall.function.arguments),
370
+ name: toolCall.function.name,
371
+ id: toolCall.id || (0, nanoid_1.nanoid)(),
372
+ });
373
+ }
374
+ });
375
+ }
376
+ // 处理文本内容
377
+ if (message?.content) {
378
+ contentBlocks.push({
379
+ type: 'text',
380
+ text: message.content,
381
+ citations: null,
382
+ });
383
+ }
384
+ return {
385
+ type: 'assistant',
386
+ uuid: (0, crypto_1.randomUUID)(),
387
+ durationMs,
388
+ message: {
389
+ id: chatCompletion.id,
390
+ type: 'message',
391
+ role: 'assistant',
392
+ content: contentBlocks,
393
+ stop_reason: mapFinishReasonToStopReason(choice?.finish_reason),
394
+ stop_sequence: null,
395
+ usage: {
396
+ input_tokens: chatCompletion.usage?.prompt_tokens || 0,
397
+ output_tokens: chatCompletion.usage?.completion_tokens || 0,
398
+ },
399
+ },
400
+ };
401
+ }
402
+ function safeParseJSON(jsonString) {
403
+ if (!jsonString)
404
+ return {};
405
+ try {
406
+ return JSON.parse(jsonString);
407
+ }
408
+ catch {
409
+ return {};
410
+ }
411
+ }
412
+ //# sourceMappingURL=openai.js.map