foliko 1.0.74 → 1.0.76

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 (238) hide show
  1. package/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
  2. package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
  3. package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
  4. package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
  5. package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
  6. package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
  7. package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
  8. package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  9. package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  10. package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  11. package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  12. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  13. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  14. package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  15. package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  16. package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  17. package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  18. package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  19. package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  20. package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
  21. package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
  22. package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  23. package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  24. package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
  25. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
  26. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
  27. package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
  28. package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
  29. package/.agent/.shared/ui-ux-pro-max/scripts/search.py +106 -0
  30. package/.agent/ARCHITECTURE.md +288 -0
  31. package/.agent/agents/ambient-agent.md +57 -0
  32. package/.agent/agents/debugger.md +55 -0
  33. package/.agent/agents/email-assistant.md +49 -0
  34. package/.agent/agents/file-manager.md +42 -0
  35. package/.agent/agents/python-developer.md +60 -0
  36. package/.agent/agents/scheduler.md +59 -0
  37. package/.agent/agents/web-developer.md +45 -0
  38. package/.agent/data/default.json +29 -0
  39. package/.agent/data/plugins-state.json +255 -0
  40. package/.agent/mcp_config.json +4 -0
  41. package/.agent/mcp_config_updated.json +12 -0
  42. package/.agent/plugins.json +5 -0
  43. package/.agent/rules/GEMINI.md +273 -0
  44. package/.agent/rules/allow-rule.md +77 -0
  45. package/.agent/rules/log-rule.md +83 -0
  46. package/.agent/rules/security-rule.md +93 -0
  47. package/.agent/scripts/auto_preview.py +148 -0
  48. package/.agent/scripts/checklist.py +217 -0
  49. package/.agent/scripts/session_manager.py +120 -0
  50. package/.agent/scripts/verify_all.py +327 -0
  51. package/.agent/skills/api-patterns/SKILL.md +81 -0
  52. package/.agent/skills/api-patterns/api-style.md +42 -0
  53. package/.agent/skills/api-patterns/auth.md +24 -0
  54. package/.agent/skills/api-patterns/documentation.md +26 -0
  55. package/.agent/skills/api-patterns/graphql.md +41 -0
  56. package/.agent/skills/api-patterns/rate-limiting.md +31 -0
  57. package/.agent/skills/api-patterns/response.md +37 -0
  58. package/.agent/skills/api-patterns/rest.md +40 -0
  59. package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
  60. package/.agent/skills/api-patterns/security-testing.md +122 -0
  61. package/.agent/skills/api-patterns/trpc.md +41 -0
  62. package/.agent/skills/api-patterns/versioning.md +22 -0
  63. package/.agent/skills/app-builder/SKILL.md +75 -0
  64. package/.agent/skills/app-builder/agent-coordination.md +71 -0
  65. package/.agent/skills/app-builder/feature-building.md +53 -0
  66. package/.agent/skills/app-builder/project-detection.md +34 -0
  67. package/.agent/skills/app-builder/scaffolding.md +118 -0
  68. package/.agent/skills/app-builder/tech-stack.md +40 -0
  69. package/.agent/skills/app-builder/templates/SKILL.md +39 -0
  70. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  71. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  72. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  73. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  74. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  75. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  76. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  77. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
  78. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
  79. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
  80. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
  81. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  82. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
  83. package/.agent/skills/architecture/SKILL.md +55 -0
  84. package/.agent/skills/architecture/context-discovery.md +43 -0
  85. package/.agent/skills/architecture/examples.md +94 -0
  86. package/.agent/skills/architecture/pattern-selection.md +68 -0
  87. package/.agent/skills/architecture/patterns-reference.md +50 -0
  88. package/.agent/skills/architecture/trade-off-analysis.md +77 -0
  89. package/.agent/skills/clean-code/SKILL.md +201 -0
  90. package/.agent/skills/doc.md +177 -0
  91. package/.agent/skills/frontend-design/SKILL.md +418 -0
  92. package/.agent/skills/frontend-design/animation-guide.md +331 -0
  93. package/.agent/skills/frontend-design/color-system.md +311 -0
  94. package/.agent/skills/frontend-design/decision-trees.md +418 -0
  95. package/.agent/skills/frontend-design/motion-graphics.md +306 -0
  96. package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  97. package/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
  98. package/.agent/skills/frontend-design/typography-system.md +345 -0
  99. package/.agent/skills/frontend-design/ux-psychology.md +1116 -0
  100. package/.agent/skills/frontend-design/visual-effects.md +383 -0
  101. package/.agent/skills/i18n-localization/SKILL.md +154 -0
  102. package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  103. package/.agent/skills/mcp-builder/SKILL.md +176 -0
  104. package/.agent/skills/web-design-guidelines/SKILL.md +57 -0
  105. package/.agent/workflows/brainstorm.md +113 -0
  106. package/.agent/workflows/create.md +59 -0
  107. package/.agent/workflows/debug.md +103 -0
  108. package/.agent/workflows/deploy.md +176 -0
  109. package/.agent/workflows/enhance.md +63 -0
  110. package/.agent/workflows/orchestrate.md +237 -0
  111. package/.agent/workflows/plan.md +89 -0
  112. package/.agent/workflows/preview.md +81 -0
  113. package/.agent/workflows/simple-test.md +42 -0
  114. package/.agent/workflows/status.md +86 -0
  115. package/.agent/workflows/structured-orchestrate.md +180 -0
  116. package/.agent/workflows/test.md +144 -0
  117. package/.agent/workflows/ui-ux-pro-max.md +296 -0
  118. package/.claude/settings.local.json +11 -1
  119. package/.editorconfig +56 -0
  120. package/.husky/pre-commit +4 -0
  121. package/.lintstagedrc +7 -0
  122. package/.prettierignore +29 -0
  123. package/.prettierrc +11 -0
  124. package/CLAUDE.md +2 -0
  125. package/README.md +64 -55
  126. package/SPEC.md +102 -61
  127. package/cli/bin/foliko.js +11 -11
  128. package/cli/src/commands/chat.js +143 -141
  129. package/cli/src/commands/list.js +93 -90
  130. package/cli/src/index.js +75 -75
  131. package/cli/src/ui/chat-ui.js +201 -199
  132. package/cli/src/utils/ansi.js +40 -40
  133. package/cli/src/utils/markdown.js +292 -296
  134. package/docker-compose.yml +1 -1
  135. package/docs/ai-sdk-optimization.md +655 -643
  136. package/docs/features.md +80 -80
  137. package/docs/quick-reference.md +49 -46
  138. package/docs/user-manual.md +411 -380
  139. package/examples/ambient-example.js +194 -196
  140. package/examples/basic.js +50 -45
  141. package/examples/bootstrap.js +121 -112
  142. package/examples/mcp-example.js +19 -16
  143. package/examples/skill-example.js +20 -20
  144. package/examples/test-chat.js +137 -135
  145. package/examples/test-mcp.js +85 -79
  146. package/examples/test-reload.js +59 -61
  147. package/examples/test-telegram.js +50 -50
  148. package/examples/test-tg-bot.js +45 -42
  149. package/examples/test-tg-simple.js +47 -46
  150. package/examples/test-tg.js +62 -62
  151. package/examples/test-think.js +43 -37
  152. package/examples/test-web-plugin.js +103 -98
  153. package/examples/test-weixin-feishu.js +103 -100
  154. package/examples/workflow.js +158 -158
  155. package/package.json +37 -3
  156. package/plugins/ai-plugin.js +102 -100
  157. package/plugins/ambient-agent/EventWatcher.js +113 -0
  158. package/plugins/ambient-agent/ExplorerLoop.js +640 -0
  159. package/plugins/ambient-agent/GoalManager.js +197 -0
  160. package/plugins/ambient-agent/Reflector.js +95 -0
  161. package/plugins/ambient-agent/StateStore.js +90 -0
  162. package/plugins/ambient-agent/constants.js +101 -0
  163. package/plugins/ambient-agent/index.js +579 -0
  164. package/plugins/audit-plugin.js +187 -187
  165. package/plugins/default-plugins.js +662 -649
  166. package/plugins/email/constants.js +64 -0
  167. package/plugins/email/handlers.js +461 -0
  168. package/plugins/email/index.js +278 -0
  169. package/plugins/email/monitor.js +269 -0
  170. package/plugins/email/parser.js +138 -0
  171. package/plugins/email/reply.js +151 -0
  172. package/plugins/email/utils.js +124 -0
  173. package/plugins/feishu-plugin.js +481 -477
  174. package/plugins/file-system-plugin.js +826 -476
  175. package/plugins/install-plugin.js +199 -197
  176. package/plugins/python-executor-plugin.js +367 -365
  177. package/plugins/python-plugin-loader.js +481 -479
  178. package/plugins/rules-plugin.js +294 -292
  179. package/plugins/scheduler-plugin.js +691 -689
  180. package/plugins/session-plugin.js +369 -367
  181. package/plugins/shell-executor-plugin.js +197 -197
  182. package/plugins/storage-plugin.js +240 -238
  183. package/plugins/subagent-plugin.js +845 -785
  184. package/plugins/telegram-plugin.js +482 -475
  185. package/plugins/think-plugin.js +345 -343
  186. package/plugins/tools-plugin.js +196 -194
  187. package/plugins/web-plugin.js +606 -604
  188. package/plugins/weixin-plugin.js +545 -538
  189. package/reports/system-health-report-20260401.md +79 -0
  190. package/skills/ambient-agent/SKILL.md +49 -39
  191. package/skills/foliko-dev/AGENTS.md +64 -61
  192. package/skills/foliko-dev/SKILL.md +125 -119
  193. package/skills/mcp-usage/SKILL.md +19 -17
  194. package/skills/python-plugin-dev/SKILL.md +16 -15
  195. package/skills/skill-guide/SKILL.md +12 -12
  196. package/skills/subagent-guide/SKILL.md +237 -0
  197. package/skills/workflow-guide/SKILL.md +90 -45
  198. package/skills/workflow-troubleshooting/DEBUGGING.md +36 -21
  199. package/skills/workflow-troubleshooting/SKILL.md +156 -79
  200. package/src/capabilities/index.js +11 -11
  201. package/src/capabilities/skill-manager.js +609 -595
  202. package/src/capabilities/workflow-engine.js +1109 -1195
  203. package/src/core/agent-chat.js +882 -735
  204. package/src/core/agent.js +892 -688
  205. package/src/core/framework.js +465 -431
  206. package/src/core/index.js +19 -19
  207. package/src/core/plugin-base.js +219 -219
  208. package/src/core/plugin-manager.js +863 -767
  209. package/src/core/provider.js +114 -111
  210. package/src/core/sub-agent-config.js +264 -0
  211. package/src/core/system-prompt-builder.js +120 -0
  212. package/src/core/tool-registry.js +517 -134
  213. package/src/core/tool-router.js +297 -216
  214. package/src/executors/executor-base.js +12 -12
  215. package/src/executors/mcp-executor.js +741 -729
  216. package/src/index.js +25 -37
  217. package/src/utils/circuit-breaker.js +301 -0
  218. package/src/utils/error-boundary.js +363 -0
  219. package/src/utils/error.js +374 -0
  220. package/src/utils/event-emitter.js +97 -97
  221. package/src/utils/id.js +133 -0
  222. package/src/utils/index.js +217 -3
  223. package/src/utils/logger.js +181 -0
  224. package/src/utils/plugin-helpers.js +90 -0
  225. package/src/utils/retry.js +122 -0
  226. package/src/utils/sandbox.js +292 -0
  227. package/test/tool-registry-validation.test.js +218 -0
  228. package/test_report.md +70 -0
  229. package/website/docs/api.html +169 -107
  230. package/website/docs/configuration.html +296 -144
  231. package/website/docs/plugin-development.html +154 -85
  232. package/website/docs/project-structure.html +110 -109
  233. package/website/docs/skill-development.html +117 -61
  234. package/website/index.html +209 -205
  235. package/website/script.js +136 -133
  236. package/website/styles.css +1 -1
  237. package/plugins/ambient-agent-plugin.js +0 -1565
  238. package/plugins/email.js +0 -1142
@@ -1,79 +1,85 @@
1
- /**
2
- * MCP 插件测试脚本
3
- */
4
-
5
- const { Framework } = require('../src')
6
- const { MCPExecutorPlugin } = require('../src/executors/mcp-executor')
7
-
8
- async function test() {
9
- console.log('=== MCP Plugin Test ===\n')
10
-
11
- console.log('1. Creating framework...')
12
- const framework = new Framework({ debug: true })
13
-
14
- console.log('2. Creating MCP plugin with fetch server...')
15
- const mcpPlugin = new MCPExecutorPlugin({
16
- servers: [
17
- {
18
- name: 'fetch',
19
- command: 'uvx',
20
- args: ['mcp-server-fetch']
21
- }
22
- ]
23
- })
24
-
25
- console.log('3. Loading MCP plugin...')
26
- await framework.loadPlugin(mcpPlugin)
27
-
28
- console.log('4. Starting framework...')
29
- await framework.pluginManager.startAll()
30
-
31
- // 等待 MCP 服务器连接
32
- console.log('\n5. Waiting for MCP connection...')
33
- await new Promise(resolve => setTimeout(resolve, 2000))
34
-
35
- console.log('\n6. Listing MCP servers...')
36
- const servers = mcpPlugin.getServers()
37
- console.log('Servers:', JSON.stringify(servers, null, 2))
38
-
39
- console.log('\n7. Listing MCP tools...')
40
- const mcpTools = framework.getTools().filter(t => t.name.startsWith('mcp_'))
41
- console.log('MCP Tools:', mcpTools.map(t => t.name))
42
-
43
- if (mcpTools.length > 0) {
44
- console.log('\n8. Testing mcp_list_servers...')
45
- const listResult = await framework.executeTool('mcp_list_servers', {})
46
- console.log('List Servers Result:', JSON.stringify(listResult, null, 2))
47
-
48
- console.log('\n9. Testing mcp_tool_schema...')
49
- const schemaResult = await framework.executeTool('mcp_tool_schema', {
50
- server: 'fetch',
51
- tool: 'fetch'
52
- })
53
- console.log('Tool Schema:', JSON.stringify(schemaResult, null, 2))
54
-
55
- console.log('\n10. Testing mcp_call (fetch a webpage)...')
56
- const callResult = await framework.executeTool('mcp_call', {
57
- server: 'fetch',
58
- tool: 'fetch',
59
- args_json: JSON.stringify({ url: 'https://httpbin.org/get' })
60
- })
61
- console.log('Fetch Result (truncated):', JSON.stringify(callResult, null, 2).substring(0, 500) + '...')
62
- }
63
-
64
- console.log('\n11. Destroying framework...')
65
- await framework.destroy()
66
-
67
- console.log('\n=== Test Complete ===')
68
- }
69
-
70
- test()
71
- .then(() => {
72
- console.log('\n✓ Test completed successfully')
73
- process.exit(0)
74
- })
75
- .catch(err => {
76
- console.error('\n✗ Test failed:', err.message)
77
- console.error(err.stack)
78
- process.exit(1)
79
- })
1
+ /**
2
+ * MCP 插件测试脚本
3
+ */
4
+
5
+ const { Framework } = require('../src');
6
+ const { MCPExecutorPlugin } = require('../src/executors/mcp-executor');
7
+
8
+ async function test() {
9
+ console.log('=== MCP Plugin Test ===\n');
10
+
11
+ console.log('1. Creating framework...');
12
+ const framework = new Framework({ debug: true });
13
+
14
+ console.log('2. Creating MCP plugin with fetch server...');
15
+ const mcpPlugin = new MCPExecutorPlugin({
16
+ servers: [
17
+ {
18
+ name: 'fetch',
19
+ command: 'uvx',
20
+ args: ['mcp-server-fetch'],
21
+ },
22
+ ],
23
+ });
24
+
25
+ console.log('3. Loading MCP plugin...');
26
+ await framework.loadPlugin(mcpPlugin);
27
+
28
+ console.log('4. Starting framework...');
29
+ await framework.pluginManager.startAll();
30
+
31
+ // 等待 MCP 服务器连接
32
+ console.log('\n5. Waiting for MCP connection...');
33
+ await new Promise((resolve) => setTimeout(resolve, 2000));
34
+
35
+ console.log('\n6. Listing MCP servers...');
36
+ const servers = mcpPlugin.getServers();
37
+ console.log('Servers:', JSON.stringify(servers, null, 2));
38
+
39
+ console.log('\n7. Listing MCP tools...');
40
+ const mcpTools = framework.getTools().filter((t) => t.name.startsWith('mcp_'));
41
+ console.log(
42
+ 'MCP Tools:',
43
+ mcpTools.map((t) => t.name)
44
+ );
45
+
46
+ if (mcpTools.length > 0) {
47
+ console.log('\n8. Testing mcp_list_servers...');
48
+ const listResult = await framework.executeTool('mcp_list_servers', {});
49
+ console.log('List Servers Result:', JSON.stringify(listResult, null, 2));
50
+
51
+ console.log('\n9. Testing mcp_tool_schema...');
52
+ const schemaResult = await framework.executeTool('mcp_tool_schema', {
53
+ server: 'fetch',
54
+ tool: 'fetch',
55
+ });
56
+ console.log('Tool Schema:', JSON.stringify(schemaResult, null, 2));
57
+
58
+ console.log('\n10. Testing mcp_call (fetch a webpage)...');
59
+ const callResult = await framework.executeTool('mcp_call', {
60
+ server: 'fetch',
61
+ tool: 'fetch',
62
+ args_json: JSON.stringify({ url: 'https://httpbin.org/get' }),
63
+ });
64
+ console.log(
65
+ 'Fetch Result (truncated):',
66
+ JSON.stringify(callResult, null, 2).substring(0, 500) + '...'
67
+ );
68
+ }
69
+
70
+ console.log('\n11. Destroying framework...');
71
+ await framework.destroy();
72
+
73
+ console.log('\n=== Test Complete ===');
74
+ }
75
+
76
+ test()
77
+ .then(() => {
78
+ console.log('\n✓ Test completed successfully');
79
+ process.exit(0);
80
+ })
81
+ .catch((err) => {
82
+ console.error('\n✗ Test failed:', err.message);
83
+ console.error(err.stack);
84
+ process.exit(1);
85
+ });
@@ -1,61 +1,59 @@
1
- /**
2
- * MCP mcp_reload 功能测试
3
- */
4
-
5
- const { Framework } = require('../src')
6
- const { MCPExecutorPlugin } = require('../src/executors/mcp-executor')
7
- const fs = require('fs')
8
- const path = require('path')
9
-
10
- async function test() {
11
- console.log('=== Testing mcp_reload ===\n')
12
-
13
- // 创建框架
14
- const framework = new Framework({ debug: true })
15
-
16
- // 创建 MCP 插件
17
- const mcpPlugin = new MCPExecutorPlugin({
18
- servers: [
19
- { name: 'fetch', command: 'uvx', args: ['mcp-server-fetch'] }
20
- ]
21
- })
22
-
23
- // 加载并启动
24
- await framework.loadPlugin(mcpPlugin)
25
- await framework.pluginManager.startAll()
26
-
27
- // 等待连接
28
- await new Promise(r => setTimeout(r, 2000))
29
-
30
- console.log('\n1. 初始服务器列表:')
31
- const initialServers = mcpPlugin.getServers()
32
- console.log(JSON.stringify(initialServers, null, 2))
33
-
34
- // 测试 mcp_reload
35
- console.log('\n2. 调用 mcp_reload...')
36
- const result = await framework.executeTool('mcp_reload', {})
37
- console.log('mcp_reload 结果:')
38
- console.log(JSON.stringify(result, null, 2))
39
-
40
- // 检查配置
41
- console.log('\n3. 当前配置文件:')
42
- const configPath = path.resolve('.agent/mcp_config.json')
43
- if (fs.existsSync(configPath)) {
44
- const config = JSON.parse(fs.readFileSync(configPath, 'utf8'))
45
- console.log(JSON.stringify(config, null, 2))
46
- } else {
47
- console.log('配置文件不存在: ' + configPath)
48
- }
49
-
50
- // 清理
51
- await framework.destroy()
52
-
53
- console.log('\n=== 测试完成 ===')
54
- }
55
-
56
- test()
57
- .then(() => process.exit(0))
58
- .catch(err => {
59
- console.error('测试失败:', err)
60
- process.exit(1)
61
- })
1
+ /**
2
+ * MCP mcp_reload 功能测试
3
+ */
4
+
5
+ const { Framework } = require('../src');
6
+ const { MCPExecutorPlugin } = require('../src/executors/mcp-executor');
7
+ const fs = require('fs');
8
+ const path = require('path');
9
+
10
+ async function test() {
11
+ console.log('=== Testing mcp_reload ===\n');
12
+
13
+ // 创建框架
14
+ const framework = new Framework({ debug: true });
15
+
16
+ // 创建 MCP 插件
17
+ const mcpPlugin = new MCPExecutorPlugin({
18
+ servers: [{ name: 'fetch', command: 'uvx', args: ['mcp-server-fetch'] }],
19
+ });
20
+
21
+ // 加载并启动
22
+ await framework.loadPlugin(mcpPlugin);
23
+ await framework.pluginManager.startAll();
24
+
25
+ // 等待连接
26
+ await new Promise((r) => setTimeout(r, 2000));
27
+
28
+ console.log('\n1. 初始服务器列表:');
29
+ const initialServers = mcpPlugin.getServers();
30
+ console.log(JSON.stringify(initialServers, null, 2));
31
+
32
+ // 测试 mcp_reload
33
+ console.log('\n2. 调用 mcp_reload...');
34
+ const result = await framework.executeTool('mcp_reload', {});
35
+ console.log('mcp_reload 结果:');
36
+ console.log(JSON.stringify(result, null, 2));
37
+
38
+ // 检查配置
39
+ console.log('\n3. 当前配置文件:');
40
+ const configPath = path.resolve('.agent/mcp_config.json');
41
+ if (fs.existsSync(configPath)) {
42
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
43
+ console.log(JSON.stringify(config, null, 2));
44
+ } else {
45
+ console.log('配置文件不存在: ' + configPath);
46
+ }
47
+
48
+ // 清理
49
+ await framework.destroy();
50
+
51
+ console.log('\n=== 测试完成 ===');
52
+ }
53
+
54
+ test()
55
+ .then(() => process.exit(0))
56
+ .catch((err) => {
57
+ console.error('测试失败:', err);
58
+ process.exit(1);
59
+ });
@@ -1,50 +1,50 @@
1
- require('dotenv').config();
2
- const { Framework } = require('../src');
3
-
4
- async function main() {
5
- const framework = new Framework({ debug: false });
6
-
7
- await framework.bootstrap({
8
- agentDir: process.cwd() + '/.agent',
9
- aiConfig: {
10
- provider: process.env.FOLIKO_PROVIDER || 'minimax',
11
- model: process.env.FOLIKO_MODEL || 'MiniMax-M2.7',
12
- baseURL: process.env.FOLIKO_BASE_URL || 'https://api.minimaxi.com/v1',
13
- apiKey: process.env.MINIMAX_API_KEY || process.env.DEEPSEEK_API_KEY
14
- }
15
- });
16
-
17
- // 检查 telegram 插件
18
- const tgPlugin = framework.pluginManager.get('telegram');
19
- console.log('Telegram plugin loaded:', !!tgPlugin);
20
-
21
- if (tgPlugin) {
22
- const status = tgPlugin.getStatus();
23
- console.log('Telegram status:', status);
24
-
25
- // 检查 Bot 状态
26
- if (tgPlugin._bot) {
27
- console.log('Bot is running');
28
-
29
- // 添加一个测试处理器来查看接收到的消息
30
- tgPlugin._bot.on('message', (msg) => {
31
- console.log('=== Received message ===');
32
- console.log('Chat ID:', msg.chat?.id);
33
- console.log('Chat type:', msg.chat?.type);
34
- console.log('From:', msg.from?.username);
35
- console.log('Text:', msg.text);
36
- console.log('=========================');
37
- });
38
- } else {
39
- console.log('Bot is NOT running');
40
- }
41
- }
42
-
43
- console.log('\nBot is running. Send a message to test...');
44
- console.log('Press Ctrl+C to stop.\n');
45
-
46
- // 保持进程运行
47
- await new Promise(() => {});
48
- }
49
-
50
- main().catch(console.error);
1
+ require('dotenv').config();
2
+ const { Framework } = require('../src');
3
+
4
+ async function main() {
5
+ const framework = new Framework({ debug: false });
6
+
7
+ await framework.bootstrap({
8
+ agentDir: process.cwd() + '/.agent',
9
+ aiConfig: {
10
+ provider: process.env.FOLIKO_PROVIDER || 'minimax',
11
+ model: process.env.FOLIKO_MODEL || 'MiniMax-M2.7',
12
+ baseURL: process.env.FOLIKO_BASE_URL || 'https://api.minimaxi.com/v1',
13
+ apiKey: process.env.MINIMAX_API_KEY || process.env.DEEPSEEK_API_KEY,
14
+ },
15
+ });
16
+
17
+ // 检查 telegram 插件
18
+ const tgPlugin = framework.pluginManager.get('telegram');
19
+ console.log('Telegram plugin loaded:', !!tgPlugin);
20
+
21
+ if (tgPlugin) {
22
+ const status = tgPlugin.getStatus();
23
+ console.log('Telegram status:', status);
24
+
25
+ // 检查 Bot 状态
26
+ if (tgPlugin._bot) {
27
+ console.log('Bot is running');
28
+
29
+ // 添加一个测试处理器来查看接收到的消息
30
+ tgPlugin._bot.on('message', (msg) => {
31
+ console.log('=== Received message ===');
32
+ console.log('Chat ID:', msg.chat?.id);
33
+ console.log('Chat type:', msg.chat?.type);
34
+ console.log('From:', msg.from?.username);
35
+ console.log('Text:', msg.text);
36
+ console.log('=========================');
37
+ });
38
+ } else {
39
+ console.log('Bot is NOT running');
40
+ }
41
+ }
42
+
43
+ console.log('\nBot is running. Send a message to test...');
44
+ console.log('Press Ctrl+C to stop.\n');
45
+
46
+ // 保持进程运行
47
+ await new Promise(() => {});
48
+ }
49
+
50
+ main().catch(console.error);
@@ -1,42 +1,45 @@
1
- require('dotenv').config();
2
- const { Framework } = require('../src');
3
-
4
- async function main() {
5
- console.log('Starting test...\n');
6
-
7
- const framework = new Framework({ debug: false });
8
-
9
- await framework.bootstrap({
10
- agentDir: process.cwd() + '/.agent',
11
- aiConfig: {
12
- provider: process.env.FOLIKO_PROVIDER || 'minimax',
13
- model: process.env.FOLIKO_MODEL || 'MiniMax-M2.7',
14
- baseURL: process.env.FOLIKO_BASE_URL || 'https://api.minimaxi.com/v1',
15
- apiKey: process.env.MINIMAX_API_KEY || process.env.DEEPSEEK_API_KEY
16
- }
17
- });
18
-
19
- // 检查主 Agent
20
- const mainAgent = framework._mainAgent;
21
- console.log('Main Agent:', mainAgent ? mainAgent.name : 'NOT FOUND');
22
- console.log('Agent apiKey:', mainAgent?.apiKey ? 'set' : 'NOT SET');
23
- console.log('Agent _chatHandler:', mainAgent?._chatHandler ? 'exists' : 'NOT EXISTS');
24
- console.log('Agent _chatHandler._aiClient:', mainAgent?._chatHandler?._aiClient ? 'exists' : 'NOT EXISTS');
25
-
26
- // 检查 Telegram 插件
27
- const tgPlugin = framework.pluginManager.get('telegram');
28
- console.log('\nTelegram Plugin:', tgPlugin ? 'loaded' : 'NOT LOADED');
29
-
30
- if (tgPlugin) {
31
- console.log('Telegram _bot:', tgPlugin._bot ? 'exists' : 'NOT EXISTS');
32
- }
33
-
34
- console.log('\n========================================');
35
- console.log('Bot is running. Send a message to test!');
36
- console.log('========================================\n');
37
-
38
- // 保持运行
39
- await new Promise(() => {});
40
- }
41
-
42
- main().catch(console.error);
1
+ require('dotenv').config();
2
+ const { Framework } = require('../src');
3
+
4
+ async function main() {
5
+ console.log('Starting test...\n');
6
+
7
+ const framework = new Framework({ debug: false });
8
+
9
+ await framework.bootstrap({
10
+ agentDir: process.cwd() + '/.agent',
11
+ aiConfig: {
12
+ provider: process.env.FOLIKO_PROVIDER || 'minimax',
13
+ model: process.env.FOLIKO_MODEL || 'MiniMax-M2.7',
14
+ baseURL: process.env.FOLIKO_BASE_URL || 'https://api.minimaxi.com/v1',
15
+ apiKey: process.env.MINIMAX_API_KEY || process.env.DEEPSEEK_API_KEY,
16
+ },
17
+ });
18
+
19
+ // 检查主 Agent
20
+ const mainAgent = framework._mainAgent;
21
+ console.log('Main Agent:', mainAgent ? mainAgent.name : 'NOT FOUND');
22
+ console.log('Agent apiKey:', mainAgent?.apiKey ? 'set' : 'NOT SET');
23
+ console.log('Agent _chatHandler:', mainAgent?._chatHandler ? 'exists' : 'NOT EXISTS');
24
+ console.log(
25
+ 'Agent _chatHandler._aiClient:',
26
+ mainAgent?._chatHandler?._aiClient ? 'exists' : 'NOT EXISTS'
27
+ );
28
+
29
+ // 检查 Telegram 插件
30
+ const tgPlugin = framework.pluginManager.get('telegram');
31
+ console.log('\nTelegram Plugin:', tgPlugin ? 'loaded' : 'NOT LOADED');
32
+
33
+ if (tgPlugin) {
34
+ console.log('Telegram _bot:', tgPlugin._bot ? 'exists' : 'NOT EXISTS');
35
+ }
36
+
37
+ console.log('\n========================================');
38
+ console.log('Bot is running. Send a message to test!');
39
+ console.log('========================================\n');
40
+
41
+ // 保持运行
42
+ await new Promise(() => {});
43
+ }
44
+
45
+ main().catch(console.error);
@@ -1,46 +1,47 @@
1
- require('dotenv').config();
2
-
3
- // 添加 .agent/node_modules 到搜索路径
4
- const path = require('path');
5
- const agentNodeModules = path.join(process.cwd(), '.agent', 'node_modules');
6
- if (!module.paths.includes(agentNodeModules)) {
7
- module.paths.unshift(agentNodeModules);
8
- }
9
-
10
- const TelegramBot = require('node-telegram-bot-api');
11
-
12
- const token = process.env.TELEGRAM_BOT_TOKEN;
13
-
14
- console.log('Token:', token ? token.substring(0, 10) + '...' : 'NOT SET');
15
-
16
- if (!token) {
17
- console.log('ERROR: No token!');
18
- process.exit(1);
19
- }
20
-
21
- const bot = new TelegramBot(token, { polling: true });
22
-
23
- console.log('Bot created, starting polling...');
24
-
25
- bot.on('polling_error', (err) => {
26
- console.log('Polling error:', err.message);
27
- });
28
-
29
- bot.on('error', (err) => {
30
- console.log('Error:', err.message);
31
- });
32
-
33
- bot.on('message', (msg) => {
34
- console.log('\n=== MESSAGE RECEIVED ===');
35
- console.log('Chat ID:', msg.chat.id);
36
- console.log('From:', msg.from.username);
37
- console.log('Text:', msg.text);
38
- console.log('========================\n');
39
-
40
- // 回复测试
41
- bot.sendMessage(msg.chat.id, 'Bot is working! Received: ' + msg.text)
42
- .then(() => console.log('Reply sent'))
43
- .catch(err => console.log('Reply error:', err.message));
44
- });
45
-
46
- console.log('Waiting for messages...');
1
+ require('dotenv').config();
2
+
3
+ // 添加 .agent/node_modules 到搜索路径
4
+ const path = require('path');
5
+ const agentNodeModules = path.join(process.cwd(), '.agent', 'node_modules');
6
+ if (!module.paths.includes(agentNodeModules)) {
7
+ module.paths.unshift(agentNodeModules);
8
+ }
9
+
10
+ const TelegramBot = require('node-telegram-bot-api');
11
+
12
+ const token = process.env.TELEGRAM_BOT_TOKEN;
13
+
14
+ console.log('Token:', token ? token.substring(0, 10) + '...' : 'NOT SET');
15
+
16
+ if (!token) {
17
+ console.log('ERROR: No token!');
18
+ process.exit(1);
19
+ }
20
+
21
+ const bot = new TelegramBot(token, { polling: true });
22
+
23
+ console.log('Bot created, starting polling...');
24
+
25
+ bot.on('polling_error', (err) => {
26
+ console.log('Polling error:', err.message);
27
+ });
28
+
29
+ bot.on('error', (err) => {
30
+ console.log('Error:', err.message);
31
+ });
32
+
33
+ bot.on('message', (msg) => {
34
+ console.log('\n=== MESSAGE RECEIVED ===');
35
+ console.log('Chat ID:', msg.chat.id);
36
+ console.log('From:', msg.from.username);
37
+ console.log('Text:', msg.text);
38
+ console.log('========================\n');
39
+
40
+ // 回复测试
41
+ bot
42
+ .sendMessage(msg.chat.id, 'Bot is working! Received: ' + msg.text)
43
+ .then(() => console.log('Reply sent'))
44
+ .catch((err) => console.log('Reply error:', err.message));
45
+ });
46
+
47
+ console.log('Waiting for messages...');