openmcp-sdk 0.0.4 → 0.0.6

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 (172) hide show
  1. package/README.md +37 -15
  2. package/icons/openmcp-sdk.svg +34 -0
  3. package/main.js +85 -0
  4. package/package.json +5 -2
  5. package/renderer/CascadiaCode.woff2 +0 -0
  6. package/renderer/animation.css +121 -0
  7. package/renderer/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  8. package/renderer/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  9. package/renderer/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  10. package/renderer/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  11. package/renderer/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  12. package/renderer/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  13. package/renderer/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  14. package/renderer/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  15. package/renderer/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  16. package/renderer/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  17. package/renderer/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  18. package/renderer/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  19. package/renderer/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  20. package/renderer/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  21. package/renderer/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  22. package/renderer/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  23. package/renderer/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  24. package/renderer/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  25. package/renderer/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  26. package/renderer/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  27. package/renderer/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  28. package/renderer/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  29. package/renderer/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  30. package/renderer/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  31. package/renderer/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  32. package/renderer/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  33. package/renderer/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  34. package/renderer/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  35. package/renderer/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  36. package/renderer/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  37. package/renderer/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  38. package/renderer/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  39. package/renderer/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  40. package/renderer/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  41. package/renderer/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  42. package/renderer/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  43. package/renderer/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  44. package/renderer/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  45. package/renderer/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  46. package/renderer/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  47. package/renderer/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  48. package/renderer/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  49. package/renderer/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  50. package/renderer/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  51. package/renderer/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  52. package/renderer/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  53. package/renderer/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  54. package/renderer/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  55. package/renderer/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  56. package/renderer/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  57. package/renderer/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  58. package/renderer/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  59. package/renderer/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  60. package/renderer/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  61. package/renderer/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  62. package/renderer/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  63. package/renderer/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  64. package/renderer/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  65. package/renderer/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  66. package/renderer/assets/index-DfIBlLbZ.js +447 -0
  67. package/renderer/assets/style-DX4gh5fe.css +1 -0
  68. package/renderer/default-dark.css +772 -0
  69. package/renderer/default-light.css +777 -0
  70. package/renderer/favicon.png +0 -0
  71. package/renderer/iconfont.css +219 -0
  72. package/renderer/iconfont.woff2 +0 -0
  73. package/renderer/images/deepseek.com.ico +0 -0
  74. package/renderer/images/grok.com.png +0 -0
  75. package/renderer/images/gstatic.com.svg +22 -0
  76. package/renderer/images/kimichat.cn.png +0 -0
  77. package/renderer/images/mistral.ai.ico +0 -0
  78. package/renderer/images/ollama.png +0 -0
  79. package/renderer/images/openai.com.ico +0 -0
  80. package/renderer/images/openmcp-qq-qrcode.jpg +0 -0
  81. package/renderer/images/openmcp.png +0 -0
  82. package/renderer/images/openmcp.svg +22 -0
  83. package/renderer/images/perplexity.ai.ico +0 -0
  84. package/renderer/index.html +19 -0
  85. package/renderer/mcp.css +230 -0
  86. package/renderer/sf-mono-regular.woff2 +0 -0
  87. package/renderer/vscode.css +149 -0
  88. package/service/common/index.d.ts +1 -2
  89. package/service/common/index.d.ts.map +1 -1
  90. package/service/common/index.dto.d.ts +7 -3
  91. package/service/common/index.dto.d.ts.map +1 -1
  92. package/service/common/index.dto.js +1 -2
  93. package/service/common/index.js +4 -8
  94. package/service/common/router.d.ts +7 -7
  95. package/service/common/router.d.ts.map +1 -1
  96. package/service/common/router.js +18 -22
  97. package/service/hook/adapter.d.ts +10 -17
  98. package/service/hook/adapter.d.ts.map +1 -1
  99. package/service/hook/adapter.js +31 -51
  100. package/service/hook/axios-fetch.d.ts +7 -0
  101. package/service/hook/axios-fetch.d.ts.map +1 -0
  102. package/service/hook/axios-fetch.js +162 -0
  103. package/service/hook/db.d.ts.map +1 -1
  104. package/service/hook/db.js +11 -50
  105. package/service/hook/llm.d.ts.map +1 -1
  106. package/service/hook/llm.js +49 -4
  107. package/service/hook/setting.js +6 -11
  108. package/service/hook/types.js +1 -2
  109. package/service/hook/util.d.ts +2 -0
  110. package/service/hook/util.d.ts.map +1 -0
  111. package/service/hook/util.js +1 -0
  112. package/service/index.d.ts +4 -4
  113. package/service/index.d.ts.map +1 -1
  114. package/service/index.js +4 -14
  115. package/service/llm/llm.controller.d.ts +9 -4
  116. package/service/llm/llm.controller.d.ts.map +1 -1
  117. package/service/llm/llm.controller.js +27 -20
  118. package/service/llm/llm.dto.d.ts +15 -0
  119. package/service/llm/llm.dto.d.ts.map +1 -1
  120. package/service/llm/llm.dto.js +1 -2
  121. package/service/llm/llm.service.d.ts +3 -3
  122. package/service/llm/llm.service.d.ts.map +1 -1
  123. package/service/llm/llm.service.js +53 -28
  124. package/service/main.d.ts +7 -0
  125. package/service/main.d.ts.map +1 -0
  126. package/service/main.js +107 -0
  127. package/service/mcp/auth.service.d.ts +23 -0
  128. package/service/mcp/auth.service.d.ts.map +1 -0
  129. package/service/mcp/auth.service.js +158 -0
  130. package/service/mcp/client.controller.d.ts +146 -40
  131. package/service/mcp/client.controller.d.ts.map +1 -1
  132. package/service/mcp/client.controller.js +34 -31
  133. package/service/mcp/client.dto.d.ts +4 -3
  134. package/service/mcp/client.dto.d.ts.map +1 -1
  135. package/service/mcp/client.dto.js +1 -2
  136. package/service/mcp/client.service.d.ts +140 -32
  137. package/service/mcp/client.service.d.ts.map +1 -1
  138. package/service/mcp/client.service.js +55 -22
  139. package/service/mcp/connect.controller.d.ts +5 -5
  140. package/service/mcp/connect.controller.d.ts.map +1 -1
  141. package/service/mcp/connect.controller.js +28 -15
  142. package/service/mcp/connect.service.d.ts +7 -5
  143. package/service/mcp/connect.service.d.ts.map +1 -1
  144. package/service/mcp/connect.service.js +235 -27
  145. package/service/mcp/ocr.controller.d.ts +3 -4
  146. package/service/mcp/ocr.controller.d.ts.map +1 -1
  147. package/service/mcp/ocr.controller.js +11 -15
  148. package/service/mcp/ocr.dto.js +1 -2
  149. package/service/mcp/ocr.service.d.ts +2 -2
  150. package/service/mcp/ocr.service.d.ts.map +1 -1
  151. package/service/mcp/ocr.service.js +21 -64
  152. package/service/panel/panel.controller.d.ts +9 -9
  153. package/service/panel/panel.controller.d.ts.map +1 -1
  154. package/service/panel/panel.controller.js +28 -26
  155. package/service/panel/panel.dto.js +1 -2
  156. package/service/panel/panel.service.d.ts +3 -3
  157. package/service/panel/panel.service.d.ts.map +1 -1
  158. package/service/panel/panel.service.js +7 -44
  159. package/service/server.d.ts +7 -0
  160. package/service/server.d.ts.map +1 -0
  161. package/service/server.js +131 -0
  162. package/service/setting/setting.controller.d.ts +7 -7
  163. package/service/setting/setting.controller.d.ts.map +1 -1
  164. package/service/setting/setting.controller.js +15 -21
  165. package/service/setting/setting.dto.js +1 -2
  166. package/service/setting/setting.service.d.ts +1 -1
  167. package/service/setting/setting.service.d.ts.map +1 -1
  168. package/service/setting/setting.service.js +14 -49
  169. package/task-loop.d.ts +35 -0
  170. package/task-loop.js +8480 -205
  171. package/tools.js +8 -1
  172. package/task-loop.js.map +0 -1
package/README.md CHANGED
@@ -1,13 +1,14 @@
1
1
  <div align="center">
2
2
 
3
- <img src="./icons/openmcp.png" height="200px"/>
3
+ <img src="./icons/openmcp-sdk.svg" height="200px"/>
4
4
 
5
- <h3>OpenMCP: 一体化 MCP Server 调试器</h3>
5
+ <h3>openmcp-sdk : 适用于 openmcp 的部署框架</h3>
6
+ <h4>闪电般将您的 agent 从实验室部署到生产环境</h4>
6
7
 
7
- <a href="https://qm.qq.com/cgi-bin/qm/qr?k=C6ZUTZvfqWoI12lWe7L93cWa1hUsuVT0&jump_from=webapi&authKey=McW6B1ogTPjPDrCyGttS890tMZGQ1KB3QLuG4aqVNRaYp4vlTSgf2c6dMcNjMuBD" target="_blank" style="display: inline-block; padding: 8px 16px; background-color: #CB81DA; color: white; border-radius: .5em; text-decoration: none;">👉 加入 OpenMCP正式级技术组</a>
8
+ <a href="https://kirigaya.cn/openmcp" target="_blank" style="display: inline-block; padding: 8px 16px; background-color: #7D3FF8; color: white; border-radius: .5em; text-decoration: none;">📄 OpenMCP 官方文档</a>
8
9
 
9
10
 
10
- <a href="https://discord.gg/af5cfB9a" target="_blank" style="display: inline-block; padding: 8px 16px; background-color: rgb(84, 176, 84); color: white; border-radius: .5em; text-decoration: none;"> 加入 OpenMCP Discord频道</a>
11
+ <a href="https://qm.qq.com/cgi-bin/qm/qr?k=C6ZUTZvfqWoI12lWe7L93cWa1hUsuVT0&jump_from=webapi&authKey=McW6B1ogTPjPDrCyGttS890tMZGQ1KB3QLuG4aqVNRaYp4vlTSgf2c6dMcNjMuBD" target="_blank" style="display: inline-block; padding: 8px 16px; background-color: #CB81DA; color: white; border-radius: .5em; text-decoration: none;">QQ 讨论群</a><a href="https://discord.gg/af5cfB9a" target="_blank" style="display: inline-block; padding: 8px 16px; background-color: rgb(84, 176, 84); color: white; border-radius: .5em; text-decoration: none; margin-left: 5px;">Discord频道</a>
11
12
 
12
13
  </div>
13
14
 
@@ -18,6 +19,8 @@
18
19
  npm install openmcp-sdk
19
20
  ```
20
21
 
22
+ > 目前 openmcp-sdk 只支持 esm 模式的导入
23
+
21
24
  ## 使用
22
25
 
23
26
  文件名:main.ts
@@ -25,26 +28,29 @@ npm install openmcp-sdk
25
28
  ```typescript
26
29
  import { TaskLoop } from 'openmcp-sdk/task-loop';
27
30
  import { TaskLoopAdapter } from 'openmcp-sdk/service';
28
-
29
31
  async function main() {
30
32
  // 创建适配器,负责通信和 mcp 连接
31
33
  const adapter = new TaskLoopAdapter();
32
34
 
33
- // 连接 mcp 服务器
34
- await adapter.connectMcpServer({
35
+ // 添加 mcp 服务器
36
+ adapter.addMcp({
35
37
  connectionType: 'STDIO',
36
- command: 'node',
37
- args: [
38
- '~/projects/mcp/servers/src/puppeteer/dist/index.js'
39
- ]
38
+ commandString: 'uv run mcp run main.py',
39
+ cwd: '~/projects/openmcp-tutorial/crawl4ai-mcp'
40
40
  });
41
41
 
42
- // 获取工具列表
43
- const tools = await adapter.listTools();
42
+ adapter.addMcp({
43
+ connectionType: 'STDIO',
44
+ commandString: 'node index.js',
45
+ cwd: '~/projects/openmcp-tutorial/my-browser/dist'
46
+ });
44
47
 
45
48
  // 创建事件循环驱动器
46
49
  const taskLoop = new TaskLoop({ adapter });
47
50
 
51
+ // 获取所有工具
52
+ const tools = await taskLoop.getTools();
53
+
48
54
  // 配置改次事件循环使用的大模型
49
55
  taskLoop.setLlmConfig({
50
56
  id: 'deepseek',
@@ -58,8 +64,11 @@ async function main() {
58
64
  messages: [],
59
65
  settings: {
60
66
  temperature: 0.7,
67
+ // 在本次对话使用所有工具
61
68
  enableTools: tools,
69
+ // 系统提示词
62
70
  systemPrompt: 'you are a clever bot',
71
+ // 对话上下文的轮数
63
72
  contextLength: 20
64
73
  }
65
74
  };
@@ -82,14 +91,27 @@ async function main() {
82
91
  console.log('taskLoop epoch');
83
92
  });
84
93
 
94
+ // 每一次工具调用前
95
+ taskLoop.registerOnToolCall((toolCall) => {
96
+ return toolCall;
97
+ });
98
+
99
+ // 每一次工具调用完后的结果
100
+ taskLoop.registerOnToolCalled((result) => {
101
+ return result;
102
+ });
103
+
85
104
  // 开启事件循环
86
105
  await taskLoop.start(storage, message);
87
106
 
88
107
  // 打印上下文,最终的回答在 messages.at(-1) 中
89
- console.log(storage.messages);
90
- }
108
+ const content = storage.messages.at(-1).content;
109
+ console.log('最终回答:', content);
110
+ }
91
111
 
92
112
  main();
93
113
  ```
94
114
 
115
+ 更多使用请看官方文档:https://kirigaya.cn/openmcp/sdk-tutorial/
116
+
95
117
  star 我们的项目:https://github.com/LSTM-Kirigaya/openmcp-client
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <svg width="600" height="674" viewBox="0 0 600 674" fill="none" xmlns="http://www.w3.org/2000/svg">
3
+ <defs>
4
+ <linearGradient id="gradient_1" gradientUnits="userSpaceOnUse" x1="300" y1="0" x2="300" y2="600">
5
+ <stop offset="0" stop-color="#A1A7F6" />
6
+ <stop offset="1" stop-color="#FFFFFF" stop-opacity="0.2" />
7
+ </linearGradient>
8
+ <linearGradient id="gradient_2" gradientUnits="userSpaceOnUse" x1="110.5" y1="0" x2="110.5" y2="221">
9
+ <stop offset="0.441" stop-color="#A8A3FF" />
10
+ <stop offset="1" stop-color="#FFFFFF" />
11
+ </linearGradient>
12
+ <linearGradient id="gradient_3" gradientUnits="userSpaceOnUse" x1="55.5" y1="0" x2="55.5" y2="111">
13
+ <stop offset="0" stop-color="#FFFFFF" />
14
+ <stop offset="1" stop-color="#A489FB" />
15
+ </linearGradient>
16
+ <linearGradient id="gradient_5" gradientUnits="userSpaceOnUse" x1="126" y1="0" x2="126" y2="647">
17
+ <stop offset="0" stop-color="#FFF2B0" />
18
+ <stop offset="0.461" stop-color="#F2B63A" />
19
+ </linearGradient>
20
+ </defs>
21
+ <g>
22
+ <g>
23
+ <g transform="translate(0 74)">
24
+ <path d="M300 0C465.708 0 600 134.292 600 300C600 300 600 300 600 300C600 465.708 465.708 600 300 600C300 600 300 600 300 600C134.292 600 0 465.708 0 300C0 300 0 300 0 300C0 134.292 134.292 0 300 0Z" fill="#5A00FF" fill-rule="evenodd" />
25
+ <path d="M300 0C465.708 0 600 134.292 600 300C600 300 600 300 600 300C600 465.708 465.708 600 300 600C300 600 300 600 300 600C134.292 600 0 465.708 0 300C0 300 0 300 0 300C0 134.292 134.292 0 300 0Z" fill="url(#gradient_1)" fill-rule="evenodd" />
26
+ </g>
27
+ <path d="M0 110.5C0 49.4725 49.4725 0 110.5 0C171.527 0 221 49.4725 221 110.5C221 171.527 171.527 221 110.5 221C49.4725 221 0 171.527 0 110.5Z" fill="url(#gradient_2)" fill-rule="evenodd" transform="translate(284 417)" />
28
+ <path d="M0 55.5C0 24.8482 24.8482 0 55.5 0C86.1518 0 111 24.8482 111 55.5C111 86.1518 86.1518 111 55.5 111C24.8482 111 0 86.1518 0 55.5Z" fill="url(#gradient_3)" fill-rule="evenodd" transform="translate(49 374)" />
29
+ <path d="M0 182.5C0 81.708 81.708 0 182.5 0C283.292 0 365 81.708 365 182.5C365 283.292 283.292 365 182.5 365C81.708 365 0 283.292 0 182.5Z" fill="url(#gradient_4)" fill-rule="evenodd" transform="translate(179 108)" />
30
+ <path d="M215.354 294.309L24.8044 647C24.8044 647 80.3091 362.484 80.3091 362.484C80.9377 359.199 79.5325 355.85 77.4987 355.85C77.4987 355.85 23.6951 355.85 23.6951 355.85C6.50011 355.85 -4.96321 325.459 2.13664 298.669C2.13664 298.669 75.28 23.6938 75.28 23.6938C79.1258 9.28799 87.5569 0 96.8384 0C96.8384 0 252 0 252 0C252 0 178.82 218.868 178.82 218.868C177.71 222.217 179.115 226.45 181.371 226.45C181.371 226.45 197.938 226.45 197.938 226.45C218.571 226.45 229.332 268.404 215.354 294.309C215.354 294.309 215.354 294.309 215.354 294.309Z" fill="url(#gradient_5)" transform="translate(193 0)" />
31
+ </g>
32
+ <rect width="432" height="432" transform="translate(84 107)" />
33
+ </g>
34
+ </svg>
package/main.js ADDED
@@ -0,0 +1,85 @@
1
+ const { TaskLoop } = require('../../openmcp-sdk/task-loop');
2
+ const { TaskLoopAdapter } = require('../../openmcp-sdk/service');
3
+
4
+ async function main() {
5
+ // 创建适配器,负责通信和 mcp 连接
6
+ const adapter = new TaskLoopAdapter();
7
+
8
+ // 添加 mcp 服务器
9
+ adapter.addMcp({
10
+ connectionType: 'STDIO',
11
+ commandString: 'uv run mcp run main.py',
12
+ cwd: '~/projects/openmcp-tutorial/crawl4ai-mcp'
13
+ });
14
+
15
+ adapter.addMcp({
16
+ connectionType: 'STDIO',
17
+ commandString: 'node index.js',
18
+ cwd: '~/projects/openmcp-tutorial/my-browser/dist'
19
+ });
20
+
21
+ // 创建事件循环驱动器
22
+ const taskLoop = new TaskLoop({ adapter });
23
+
24
+ // 获取所有工具
25
+ const tools = await taskLoop.getTools();
26
+
27
+ // 配置改次事件循环使用的大模型
28
+ taskLoop.setLlmConfig({
29
+ id: 'deepseek',
30
+ baseUrl: 'https://api.deepseek.com/v1',
31
+ userToken: process.env['DEEPSEEK_API_TOKEN'],
32
+ userModel: 'deepseek-chat'
33
+ });
34
+
35
+ // 创建当前事件循环对应的上下文,并且配置当前上下文的设置
36
+ const storage = {
37
+ messages: [],
38
+ settings: {
39
+ temperature: 0.7,
40
+ // 在本次对话使用所有工具
41
+ enableTools: tools,
42
+ // 系统提示词
43
+ systemPrompt: 'you are a clever bot',
44
+ // 对话上下文的轮数
45
+ contextLength: 20
46
+ }
47
+ };
48
+
49
+ // 本次发出的问题
50
+ const message = 'hello world';
51
+
52
+ // 事件循环结束的句柄
53
+ taskLoop.registerOnDone(() => {
54
+ console.log('taskLoop done');
55
+ });
56
+
57
+ // 事件循环每一次 epoch 开始的句柄
58
+ taskLoop.registerOnError((error) => {
59
+ console.log('taskLoop error', error);
60
+ });
61
+
62
+ // 事件循环出现 error 时的句柄(出现 error 不一定会停止事件循环)
63
+ taskLoop.registerOnEpoch(() => {
64
+ console.log('taskLoop epoch');
65
+ });
66
+
67
+ // 每一次工具调用前
68
+ taskLoop.registerOnToolCall((toolCall) => {
69
+ return toolCall;
70
+ });
71
+
72
+ // 每一次工具调用完后的结果
73
+ taskLoop.registerOnToolCalled((result) => {
74
+ return result;
75
+ });
76
+
77
+ // 开启事件循环
78
+ await taskLoop.start(storage, message);
79
+
80
+ // 打印上下文,最终的回答在 messages.at(-1) 中
81
+ const content = storage.messages.at(-1).content;
82
+ console.log('最终回答:', content);
83
+ }
84
+
85
+ main();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openmcp-sdk",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "description": "openmcp-sdk",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -33,6 +33,9 @@
33
33
  "pako": "^2.1.0",
34
34
  "tesseract.js": "^6.0.1",
35
35
  "uuid": "^11.1.0",
36
- "ws": "^8.18.1"
36
+ "open": "^10.1.2",
37
+ "ws": "^8.18.1",
38
+ "cli-table3": "^0.6.5",
39
+ "https-proxy-agent": "^7.0.6"
37
40
  }
38
41
  }
Binary file
@@ -0,0 +1,121 @@
1
+ :root {
2
+ --main-during: 0.35s;
3
+ --fade-during: .5s;
4
+ }
5
+
6
+ .fade-animation-effect {
7
+ transition: var(--animation-5s);
8
+ -webkit-transition: var(--animation-5s);
9
+ -ms-transition: var(--animation-5s);
10
+ }
11
+
12
+ .easy-hidden {
13
+ visibility: hidden;
14
+ }
15
+
16
+ .main-fade-enter-from,
17
+ .main-fade-leave-to {
18
+ opacity: 0;
19
+ }
20
+ .main-fade-enter-to,
21
+ .main-fade-leave-from {
22
+ opacity: 1;
23
+ }
24
+ .main-fade-enter-active,
25
+ .main-fade-leave-active {
26
+ transition: opacity var(--main-during);
27
+ -moz-transition: opacity var(--main-during);
28
+ -webkit-transition: opacity var(--main-during);
29
+ }
30
+
31
+ .slide-enter-active,
32
+ .slide-leave-active {
33
+ transition: all .5s ease-out;
34
+ -moz-transition: all .5s ease-out;
35
+ -webkit-transition: all .5s ease-out;
36
+ }
37
+ .slide-enter-from {
38
+ position: relative;
39
+ transform: translateY(-100px);
40
+ opacity: 0%;
41
+ }
42
+ .slide-leave-to {
43
+ transform: translateY(100px);
44
+ opacity: 0%;
45
+ }
46
+
47
+
48
+ .slide-down-enter-active,
49
+ .slide-down-leave-active {
50
+ transition: all .5s ease-out;
51
+ -moz-transition: all .5s ease-out;
52
+ -webkit-transition: all .5s ease-out;
53
+ }
54
+ .slide-down-enter-from {
55
+ position: relative;
56
+ transform: translateY(100px);
57
+ opacity: 0%;
58
+ }
59
+ .slide-down-leave-to {
60
+ transform: translateY(100px);
61
+ opacity: 0%;
62
+ }
63
+
64
+ .slide-up-enter-active,
65
+ .slide-up-leave-active {
66
+ transition: all .5s ease-out;
67
+ -moz-transition: all .5s ease-out;
68
+ -webkit-transition: all .5s ease-out;
69
+ }
70
+ .slide-up-enter-from {
71
+ position: relative;
72
+ transform: translateY(-100px);
73
+ opacity: 0%;
74
+ }
75
+ .slide-up-leave-to {
76
+ transform: translateY(-100px);
77
+ opacity: 0%;
78
+ }
79
+
80
+ .right-nav-enter-active,
81
+ .right-nav-leave-active {
82
+ transition: all .5s ease-out;
83
+ -moz-transition: all .5s ease-out;
84
+ -webkit-transition: all .5s ease-out;
85
+ }
86
+ .right-nav-enter-from {
87
+ position: relative;
88
+ transform: translateX(-100px);
89
+ opacity: 0%;
90
+ }
91
+ .right-nav-leave-to {
92
+ transform: translateX(-100px);
93
+ opacity: 0%;
94
+ }
95
+
96
+ .collapse-from-top-enter-active,
97
+ .collapse-from-top-leave-active {
98
+ transition: var(--animation-3s);
99
+ -moz-transition: var(--animation-3s);
100
+ -webkit-transition: var(--animation-3s);
101
+ }
102
+
103
+ .collapse-from-top-enter-from {
104
+ transform: scaleY(0);
105
+ transform-origin: center top;
106
+ opacity: 0%;
107
+ }
108
+ .collapse-from-top-leave-to {
109
+ transform: scaleY(0);
110
+ transform-origin: center top;
111
+ opacity: 0%;
112
+ }
113
+
114
+ @keyframes loading-mask {
115
+ 0% {
116
+ background-position: 100% 50%;
117
+ }
118
+ 100% {
119
+ background-position: 0 50%;
120
+ }
121
+ }