foliko 1.0.73 → 1.0.75

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 (237) 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 +157 -149
  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 +4 -4
  128. package/cli/src/commands/chat.js +53 -51
  129. package/cli/src/commands/list.js +40 -37
  130. package/cli/src/index.js +18 -18
  131. package/cli/src/ui/chat-ui.js +78 -76
  132. package/cli/src/utils/ansi.js +15 -15
  133. package/cli/src/utils/markdown.js +112 -116
  134. package/docker-compose.yml +1 -1
  135. package/docs/ai-sdk-optimization.md +655 -636
  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 +95 -97
  140. package/examples/basic.js +115 -110
  141. package/examples/bootstrap.js +52 -43
  142. package/examples/mcp-example.js +56 -53
  143. package/examples/skill-example.js +49 -49
  144. package/examples/test-chat.js +60 -58
  145. package/examples/test-mcp.js +49 -43
  146. package/examples/test-reload.js +38 -40
  147. package/examples/test-telegram.js +3 -3
  148. package/examples/test-tg-bot.js +7 -4
  149. package/examples/test-tg-simple.js +4 -3
  150. package/examples/test-tg.js +3 -3
  151. package/examples/test-think.js +13 -7
  152. package/examples/test-web-plugin.js +61 -56
  153. package/examples/test-weixin-feishu.js +40 -37
  154. package/examples/workflow.js +49 -49
  155. package/foliko-1.0.75.tgz +0 -0
  156. package/package.json +37 -3
  157. package/plugins/ai-plugin.js +7 -5
  158. package/plugins/ambient-agent/EventWatcher.js +113 -0
  159. package/plugins/ambient-agent/ExplorerLoop.js +640 -0
  160. package/plugins/ambient-agent/GoalManager.js +197 -0
  161. package/plugins/ambient-agent/Reflector.js +95 -0
  162. package/plugins/ambient-agent/StateStore.js +90 -0
  163. package/plugins/ambient-agent/constants.js +101 -0
  164. package/plugins/ambient-agent/index.js +579 -0
  165. package/plugins/default-plugins.js +62 -49
  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 +23 -19
  174. package/plugins/file-system-plugin.js +469 -120
  175. package/plugins/install-plugin.js +6 -4
  176. package/plugins/python-executor-plugin.js +3 -1
  177. package/plugins/python-plugin-loader.js +10 -8
  178. package/plugins/rules-plugin.js +5 -3
  179. package/plugins/scheduler-plugin.js +18 -16
  180. package/plugins/session-plugin.js +3 -1
  181. package/plugins/storage-plugin.js +5 -3
  182. package/plugins/subagent-plugin.js +152 -92
  183. package/plugins/telegram-plugin.js +26 -19
  184. package/plugins/think-plugin.js +4 -2
  185. package/plugins/tools-plugin.js +3 -1
  186. package/plugins/web-plugin.js +15 -13
  187. package/plugins/weixin-plugin.js +43 -36
  188. package/reports/system-health-report-20260401.md +79 -0
  189. package/skills/ambient-agent/SKILL.md +49 -39
  190. package/skills/foliko-dev/AGENTS.md +64 -61
  191. package/skills/foliko-dev/SKILL.md +125 -119
  192. package/skills/mcp-usage/SKILL.md +19 -17
  193. package/skills/python-plugin-dev/SKILL.md +16 -15
  194. package/skills/skill-guide/SKILL.md +12 -12
  195. package/skills/subagent-guide/SKILL.md +237 -0
  196. package/skills/workflow-guide/SKILL.md +90 -45
  197. package/skills/workflow-troubleshooting/DEBUGGING.md +36 -21
  198. package/skills/workflow-troubleshooting/SKILL.md +156 -79
  199. package/src/capabilities/index.js +4 -4
  200. package/src/capabilities/skill-manager.js +211 -197
  201. package/src/capabilities/workflow-engine.js +461 -547
  202. package/src/core/agent-chat.js +426 -279
  203. package/src/core/agent.js +453 -248
  204. package/src/core/framework.js +183 -149
  205. package/src/core/index.js +8 -8
  206. package/src/core/plugin-base.js +52 -52
  207. package/src/core/plugin-manager.js +377 -281
  208. package/src/core/provider.js +35 -32
  209. package/src/core/sub-agent-config.js +264 -0
  210. package/src/core/system-prompt-builder.js +120 -0
  211. package/src/core/tool-registry.js +416 -33
  212. package/src/core/tool-router.js +149 -68
  213. package/src/executors/executor-base.js +58 -58
  214. package/src/executors/mcp-executor.js +269 -257
  215. package/src/index.js +5 -17
  216. package/src/utils/circuit-breaker.js +301 -0
  217. package/src/utils/error-boundary.js +363 -0
  218. package/src/utils/error.js +374 -0
  219. package/src/utils/event-emitter.js +20 -20
  220. package/src/utils/id.js +133 -0
  221. package/src/utils/index.js +217 -3
  222. package/src/utils/logger.js +181 -0
  223. package/src/utils/plugin-helpers.js +90 -0
  224. package/src/utils/retry.js +122 -0
  225. package/src/utils/sandbox.js +292 -0
  226. package/test/tool-registry-validation.test.js +218 -0
  227. package/test_report.md +70 -0
  228. package/website/docs/api.html +169 -107
  229. package/website/docs/configuration.html +296 -144
  230. package/website/docs/plugin-development.html +154 -85
  231. package/website/docs/project-structure.html +110 -109
  232. package/website/docs/skill-development.html +117 -61
  233. package/website/index.html +209 -205
  234. package/website/script.js +20 -17
  235. package/website/styles.css +1 -1
  236. package/plugins/ambient-agent-plugin.js +0 -1565
  237. package/plugins/email.js +0 -1142
@@ -8,57 +8,57 @@ class Plugin {
8
8
  * 插件名称
9
9
  * @type {string}
10
10
  */
11
- name = 'unnamed-plugin'
11
+ name = 'unnamed-plugin';
12
12
 
13
13
  /**
14
14
  * 插件版本
15
15
  * @type {string}
16
16
  */
17
- version = '1.0.0'
17
+ version = '1.0.0';
18
18
 
19
19
  /**
20
20
  * 插件描述
21
21
  * @type {string}
22
22
  */
23
- description = ''
23
+ description = '';
24
24
 
25
25
  /**
26
26
  * 插件优先级,数值越小越先加载
27
27
  * @type {number}
28
28
  */
29
- priority = 100
29
+ priority = 100;
30
30
 
31
31
  /**
32
32
  * 子Agent配置数组 - 配置后自动注册子Agent
33
33
  * 格式: [{ name: 'xxx', role: '角色', tools: {...}, parentTools: [...] }]
34
34
  * @type {Array}
35
35
  */
36
- agents = []
36
+ agents = [];
37
37
 
38
38
  /**
39
39
  * 插件是否启用,默认为 true
40
40
  * 设置为 false 时插件不会被加载,但在列表中仍可见
41
41
  * @type {boolean}
42
42
  */
43
- enabled = true
43
+ enabled = true;
44
44
 
45
45
  /**
46
46
  * 是否为系统插件,默认为 false
47
47
  * 系统插件不能被禁用,始终启用
48
48
  * @type {boolean}
49
49
  */
50
- system = false
50
+ system = false;
51
51
 
52
- _framework = null
53
- _subAgents = []
52
+ _framework = null;
53
+ _subAgents = [];
54
54
 
55
55
  /**
56
56
  * 安装插件 - 注册工具/事件等
57
57
  * @param {Framework} framework - 框架实例
58
58
  */
59
59
  install(framework) {
60
- this._framework = framework
61
- return this
60
+ this._framework = framework;
61
+ return this;
62
62
  }
63
63
 
64
64
  /**
@@ -67,8 +67,8 @@ class Plugin {
67
67
  */
68
68
  start(framework) {
69
69
  // 自动注册配置的子Agent
70
- this._autoRegisterSubAgents()
71
- return this
70
+ this._autoRegisterSubAgents();
71
+ return this;
72
72
  }
73
73
 
74
74
  /**
@@ -77,39 +77,39 @@ class Plugin {
77
77
  */
78
78
  _autoRegisterSubAgents() {
79
79
  // 确定要注册的agent配置
80
- const agentsToRegister = this._deferredSubAgents || this.agents
80
+ const agentsToRegister = this._deferredSubAgents || this.agents;
81
81
  if (!agentsToRegister || !Array.isArray(agentsToRegister) || agentsToRegister.length === 0) {
82
- return
82
+ return;
83
83
  }
84
84
 
85
85
  // 获取父Agent
86
- const parentAgent = this._getParentAgent()
86
+ const parentAgent = this._getParentAgent();
87
87
 
88
88
  if (!parentAgent) {
89
89
  // 没有父Agent,推迟到框架准备好时再注册
90
90
  if (!this._deferredSubAgents) {
91
- console.log(`[Plugin:${this.name}] No parent agent found, deferring subagent registration`)
92
- this._deferredSubAgents = agentsToRegister
91
+ log.debug(` No parent agent found, deferring subagent registration`);
92
+ this._deferredSubAgents = agentsToRegister;
93
93
  // 监听框架准备好事件
94
94
  if (this._framework) {
95
95
  this._framework.once('framework:ready', () => {
96
96
  // 延迟注册,确保主Agent已创建
97
- setTimeout(() => this._autoRegisterSubAgents(), 100)
98
- })
97
+ setTimeout(() => this._autoRegisterSubAgents(), 100);
98
+ });
99
99
  }
100
100
  }
101
- return
101
+ return;
102
102
  }
103
103
 
104
104
  // 有父Agent了,清除延迟标记
105
- this._deferredSubAgents = null
105
+ this._deferredSubAgents = null;
106
106
 
107
107
  for (const agentConfig of agentsToRegister) {
108
108
  try {
109
- const plugin = this.registerSubAgent(agentConfig)
110
- this._subAgents.push(plugin)
109
+ const plugin = this.registerSubAgent(agentConfig);
110
+ this._subAgents.push(plugin);
111
111
  } catch (err) {
112
- console.error(`[Plugin:${this.name}] Failed to register subagent ${agentConfig.name}:`, err.message)
112
+ log.error(` Failed to register subagent ${agentConfig.name}:`, err.message);
113
113
  }
114
114
  }
115
115
  }
@@ -119,10 +119,10 @@ class Plugin {
119
119
  * @private
120
120
  */
121
121
  _getParentAgent() {
122
- if (!this._framework) return null
123
- if (this._framework._mainAgent) return this._framework._mainAgent
124
- const agents = this._framework._agents || []
125
- return agents.length > 0 ? agents[agents.length - 1] : null
122
+ if (!this._framework) return null;
123
+ if (this._framework._mainAgent) return this._framework._mainAgent;
124
+ const agents = this._framework._agents || [];
125
+ return agents.length > 0 ? agents[agents.length - 1] : null;
126
126
  }
127
127
 
128
128
  /**
@@ -137,11 +137,11 @@ class Plugin {
137
137
  */
138
138
  registerSubAgent(config) {
139
139
  if (!this._framework) {
140
- throw new Error('Plugin not installed, call install(framework) first')
140
+ throw new Error('Plugin not installed, call install(framework) first');
141
141
  }
142
142
 
143
143
  // 动态导入避免循环依赖
144
- const { SubAgentPlugin } = require('../../plugins/subagent-plugin')
144
+ const { SubAgentPlugin } = require('../../plugins/subagent-plugin');
145
145
 
146
146
  const plugin = new SubAgentPlugin({
147
147
  ...config,
@@ -149,18 +149,18 @@ class Plugin {
149
149
  _parentAgentGetter: () => {
150
150
  // 尝试获取主Agent
151
151
  if (this._framework._mainAgent) {
152
- return this._framework._mainAgent
152
+ return this._framework._mainAgent;
153
153
  }
154
- const agents = this._framework._agents || []
155
- return agents.length > 0 ? agents[agents.length - 1] : null
156
- }
157
- })
154
+ const agents = this._framework._agents || [];
155
+ return agents.length > 0 ? agents[agents.length - 1] : null;
156
+ },
157
+ });
158
158
 
159
- plugin.install(this._framework)
160
- plugin.start(this._framework)
159
+ plugin.install(this._framework);
160
+ plugin.start(this._framework);
161
161
 
162
- console.log(`[Plugin:${this.name}] Registered subagent: ${config.name}`)
163
- return plugin
162
+ log.debug(` Registered subagent: ${config.name}`);
163
+ return plugin;
164
164
  }
165
165
 
166
166
  /**
@@ -168,11 +168,11 @@ class Plugin {
168
168
  * @param {Framework} framework - 框架实例
169
169
  */
170
170
  reload(framework) {
171
- this._framework = framework
171
+ this._framework = framework;
172
172
  // 清除之前的延迟注册
173
- this._deferredSubAgents = null
173
+ this._deferredSubAgents = null;
174
174
  // 重新注册子Agent
175
- this._autoRegisterSubAgents()
175
+ this._autoRegisterSubAgents();
176
176
  }
177
177
 
178
178
  /**
@@ -183,13 +183,13 @@ class Plugin {
183
183
  // 销毁所有子Agent
184
184
  for (const plugin of this._subAgents) {
185
185
  try {
186
- plugin.uninstall(framework)
186
+ plugin.uninstall(framework);
187
187
  } catch (err) {
188
- console.error(`[Plugin:${this.name}] Failed to uninstall subagent:`, err.message)
188
+ log.error(` Failed to uninstall subagent:`, err.message);
189
189
  }
190
190
  }
191
- this._subAgents = []
192
- this._framework = null
191
+ this._subAgents = [];
192
+ this._framework = null;
193
193
  }
194
194
 
195
195
  /**
@@ -201,8 +201,8 @@ class Plugin {
201
201
  name: this.name,
202
202
  version: this.version,
203
203
  description: this.description,
204
- priority: this.priority
205
- }
204
+ priority: this.priority,
205
+ };
206
206
  }
207
207
  }
208
208
 
@@ -213,7 +213,7 @@ const PluginType = {
213
213
  AI: 'ai',
214
214
  TOOLS: 'tools',
215
215
  EXECUTOR: 'executor',
216
- CAPABILITY: 'capability'
217
- }
216
+ CAPABILITY: 'capability',
217
+ };
218
218
 
219
- module.exports = { Plugin, PluginType }
219
+ module.exports = { Plugin, PluginType };