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.
- package/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
- package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
- package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
- package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/search.py +106 -0
- package/.agent/ARCHITECTURE.md +288 -0
- package/.agent/agents/ambient-agent.md +57 -0
- package/.agent/agents/debugger.md +55 -0
- package/.agent/agents/email-assistant.md +49 -0
- package/.agent/agents/file-manager.md +42 -0
- package/.agent/agents/python-developer.md +60 -0
- package/.agent/agents/scheduler.md +59 -0
- package/.agent/agents/web-developer.md +45 -0
- package/.agent/data/default.json +29 -0
- package/.agent/data/plugins-state.json +255 -0
- package/.agent/mcp_config.json +4 -0
- package/.agent/mcp_config_updated.json +12 -0
- package/.agent/plugins.json +5 -0
- package/.agent/rules/GEMINI.md +273 -0
- package/.agent/rules/allow-rule.md +77 -0
- package/.agent/rules/log-rule.md +83 -0
- package/.agent/rules/security-rule.md +93 -0
- package/.agent/scripts/auto_preview.py +148 -0
- package/.agent/scripts/checklist.py +217 -0
- package/.agent/scripts/session_manager.py +120 -0
- package/.agent/scripts/verify_all.py +327 -0
- package/.agent/skills/api-patterns/SKILL.md +81 -0
- package/.agent/skills/api-patterns/api-style.md +42 -0
- package/.agent/skills/api-patterns/auth.md +24 -0
- package/.agent/skills/api-patterns/documentation.md +26 -0
- package/.agent/skills/api-patterns/graphql.md +41 -0
- package/.agent/skills/api-patterns/rate-limiting.md +31 -0
- package/.agent/skills/api-patterns/response.md +37 -0
- package/.agent/skills/api-patterns/rest.md +40 -0
- package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
- package/.agent/skills/api-patterns/security-testing.md +122 -0
- package/.agent/skills/api-patterns/trpc.md +41 -0
- package/.agent/skills/api-patterns/versioning.md +22 -0
- package/.agent/skills/app-builder/SKILL.md +75 -0
- package/.agent/skills/app-builder/agent-coordination.md +71 -0
- package/.agent/skills/app-builder/feature-building.md +53 -0
- package/.agent/skills/app-builder/project-detection.md +34 -0
- package/.agent/skills/app-builder/scaffolding.md +118 -0
- package/.agent/skills/app-builder/tech-stack.md +40 -0
- package/.agent/skills/app-builder/templates/SKILL.md +39 -0
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
- package/.agent/skills/architecture/SKILL.md +55 -0
- package/.agent/skills/architecture/context-discovery.md +43 -0
- package/.agent/skills/architecture/examples.md +94 -0
- package/.agent/skills/architecture/pattern-selection.md +68 -0
- package/.agent/skills/architecture/patterns-reference.md +50 -0
- package/.agent/skills/architecture/trade-off-analysis.md +77 -0
- package/.agent/skills/clean-code/SKILL.md +201 -0
- package/.agent/skills/doc.md +177 -0
- package/.agent/skills/frontend-design/SKILL.md +418 -0
- package/.agent/skills/frontend-design/animation-guide.md +331 -0
- package/.agent/skills/frontend-design/color-system.md +311 -0
- package/.agent/skills/frontend-design/decision-trees.md +418 -0
- package/.agent/skills/frontend-design/motion-graphics.md +306 -0
- package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
- package/.agent/skills/frontend-design/typography-system.md +345 -0
- package/.agent/skills/frontend-design/ux-psychology.md +1116 -0
- package/.agent/skills/frontend-design/visual-effects.md +383 -0
- package/.agent/skills/i18n-localization/SKILL.md +154 -0
- package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/.agent/skills/mcp-builder/SKILL.md +176 -0
- package/.agent/skills/web-design-guidelines/SKILL.md +57 -0
- package/.agent/workflows/brainstorm.md +113 -0
- package/.agent/workflows/create.md +59 -0
- package/.agent/workflows/debug.md +103 -0
- package/.agent/workflows/deploy.md +176 -0
- package/.agent/workflows/enhance.md +63 -0
- package/.agent/workflows/orchestrate.md +237 -0
- package/.agent/workflows/plan.md +89 -0
- package/.agent/workflows/preview.md +81 -0
- package/.agent/workflows/simple-test.md +42 -0
- package/.agent/workflows/status.md +86 -0
- package/.agent/workflows/structured-orchestrate.md +180 -0
- package/.agent/workflows/test.md +144 -0
- package/.agent/workflows/ui-ux-pro-max.md +296 -0
- package/.claude/settings.local.json +11 -1
- package/.editorconfig +56 -0
- package/.husky/pre-commit +4 -0
- package/.lintstagedrc +7 -0
- package/.prettierignore +29 -0
- package/.prettierrc +11 -0
- package/CLAUDE.md +2 -0
- package/README.md +64 -55
- package/SPEC.md +102 -61
- package/cli/bin/foliko.js +11 -11
- package/cli/src/commands/chat.js +143 -141
- package/cli/src/commands/list.js +93 -90
- package/cli/src/index.js +75 -75
- package/cli/src/ui/chat-ui.js +201 -199
- package/cli/src/utils/ansi.js +40 -40
- package/cli/src/utils/markdown.js +292 -296
- package/docker-compose.yml +1 -1
- package/docs/ai-sdk-optimization.md +655 -643
- package/docs/features.md +80 -80
- package/docs/quick-reference.md +49 -46
- package/docs/user-manual.md +411 -380
- package/examples/ambient-example.js +194 -196
- package/examples/basic.js +50 -45
- package/examples/bootstrap.js +121 -112
- package/examples/mcp-example.js +19 -16
- package/examples/skill-example.js +20 -20
- package/examples/test-chat.js +137 -135
- package/examples/test-mcp.js +85 -79
- package/examples/test-reload.js +59 -61
- package/examples/test-telegram.js +50 -50
- package/examples/test-tg-bot.js +45 -42
- package/examples/test-tg-simple.js +47 -46
- package/examples/test-tg.js +62 -62
- package/examples/test-think.js +43 -37
- package/examples/test-web-plugin.js +103 -98
- package/examples/test-weixin-feishu.js +103 -100
- package/examples/workflow.js +158 -158
- package/package.json +37 -3
- package/plugins/ai-plugin.js +102 -100
- package/plugins/ambient-agent/EventWatcher.js +113 -0
- package/plugins/ambient-agent/ExplorerLoop.js +640 -0
- package/plugins/ambient-agent/GoalManager.js +197 -0
- package/plugins/ambient-agent/Reflector.js +95 -0
- package/plugins/ambient-agent/StateStore.js +90 -0
- package/plugins/ambient-agent/constants.js +101 -0
- package/plugins/ambient-agent/index.js +579 -0
- package/plugins/audit-plugin.js +187 -187
- package/plugins/default-plugins.js +662 -649
- package/plugins/email/constants.js +64 -0
- package/plugins/email/handlers.js +461 -0
- package/plugins/email/index.js +278 -0
- package/plugins/email/monitor.js +269 -0
- package/plugins/email/parser.js +138 -0
- package/plugins/email/reply.js +151 -0
- package/plugins/email/utils.js +124 -0
- package/plugins/feishu-plugin.js +481 -477
- package/plugins/file-system-plugin.js +826 -476
- package/plugins/install-plugin.js +199 -197
- package/plugins/python-executor-plugin.js +367 -365
- package/plugins/python-plugin-loader.js +481 -479
- package/plugins/rules-plugin.js +294 -292
- package/plugins/scheduler-plugin.js +691 -689
- package/plugins/session-plugin.js +369 -367
- package/plugins/shell-executor-plugin.js +197 -197
- package/plugins/storage-plugin.js +240 -238
- package/plugins/subagent-plugin.js +845 -785
- package/plugins/telegram-plugin.js +482 -475
- package/plugins/think-plugin.js +345 -343
- package/plugins/tools-plugin.js +196 -194
- package/plugins/web-plugin.js +606 -604
- package/plugins/weixin-plugin.js +545 -538
- package/reports/system-health-report-20260401.md +79 -0
- package/skills/ambient-agent/SKILL.md +49 -39
- package/skills/foliko-dev/AGENTS.md +64 -61
- package/skills/foliko-dev/SKILL.md +125 -119
- package/skills/mcp-usage/SKILL.md +19 -17
- package/skills/python-plugin-dev/SKILL.md +16 -15
- package/skills/skill-guide/SKILL.md +12 -12
- package/skills/subagent-guide/SKILL.md +237 -0
- package/skills/workflow-guide/SKILL.md +90 -45
- package/skills/workflow-troubleshooting/DEBUGGING.md +36 -21
- package/skills/workflow-troubleshooting/SKILL.md +156 -79
- package/src/capabilities/index.js +11 -11
- package/src/capabilities/skill-manager.js +609 -595
- package/src/capabilities/workflow-engine.js +1109 -1195
- package/src/core/agent-chat.js +882 -735
- package/src/core/agent.js +892 -688
- package/src/core/framework.js +465 -431
- package/src/core/index.js +19 -19
- package/src/core/plugin-base.js +219 -219
- package/src/core/plugin-manager.js +863 -767
- package/src/core/provider.js +114 -111
- package/src/core/sub-agent-config.js +264 -0
- package/src/core/system-prompt-builder.js +120 -0
- package/src/core/tool-registry.js +517 -134
- package/src/core/tool-router.js +297 -216
- package/src/executors/executor-base.js +12 -12
- package/src/executors/mcp-executor.js +741 -729
- package/src/index.js +25 -37
- package/src/utils/circuit-breaker.js +301 -0
- package/src/utils/error-boundary.js +363 -0
- package/src/utils/error.js +374 -0
- package/src/utils/event-emitter.js +97 -97
- package/src/utils/id.js +133 -0
- package/src/utils/index.js +217 -3
- package/src/utils/logger.js +181 -0
- package/src/utils/plugin-helpers.js +90 -0
- package/src/utils/retry.js +122 -0
- package/src/utils/sandbox.js +292 -0
- package/test/tool-registry-validation.test.js +218 -0
- package/test_report.md +70 -0
- package/website/docs/api.html +169 -107
- package/website/docs/configuration.html +296 -144
- package/website/docs/plugin-development.html +154 -85
- package/website/docs/project-structure.html +110 -109
- package/website/docs/skill-development.html +117 -61
- package/website/index.html +209 -205
- package/website/script.js +136 -133
- package/website/styles.css +1 -1
- package/plugins/ambient-agent-plugin.js +0 -1565
- package/plugins/email.js +0 -1142
package/examples/test-mcp.js
CHANGED
|
@@ -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(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
.
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
+
});
|
package/examples/test-reload.js
CHANGED
|
@@ -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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
console.log(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
console.log('
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
console.log(
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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);
|
package/examples/test-tg-bot.js
CHANGED
|
@@ -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(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
|
42
|
-
.
|
|
43
|
-
.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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...');
|