foliko 1.1.7 → 1.1.8

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 (250) 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 +412 -3
  39. package/.agent/data/plugins-state.json +172 -173
  40. package/.agent/data/puppeteer-sessions/undefined.json +6 -0
  41. package/.agent/data/weixin-media/2026-04-08/img_1775618677512.jpg +0 -0
  42. package/.agent/data/weixin-media/2026-04-08/img_1775619073340.jpg +0 -0
  43. package/.agent/data/weixin-media/2026-04-08/img_1775619097536.jpg +0 -0
  44. package/.agent/data/weixin-media/2026-04-08/img_1775619209388.jpg +0 -0
  45. package/.agent/mcp_config.json +11 -3
  46. package/.agent/memory/feedback/mnrdvj5i-ca3dkd.md +9 -0
  47. package/.agent/memory/feedback/mnre365e-7s4zax.md +9 -0
  48. package/.agent/memory/feedback/mnre36jn-nkfgmp.md +9 -0
  49. package/.agent/memory/feedback/mnre3805-kjiq6h.md +9 -0
  50. package/.agent/memory/feedback/mnsf66kp-b10rcd.md +9 -0
  51. package/.agent/memory/feedback/mnsi3sz8-p5g2cw.md +9 -0
  52. package/.agent/memory/feedback/mnsibe47-sv2ni1.md +9 -0
  53. package/.agent/memory/feedback/mnsic89w-nn228o.md +9 -0
  54. package/.agent/memory/feedback/mnsj1xe9-x83ba0.md +9 -0
  55. package/.agent/memory/feedback/mnsj21iv-wnwelx.md +9 -0
  56. package/.agent/memory/feedback/mnsj2g4a-cog7a2.md +9 -0
  57. package/.agent/memory/feedback/mnsj4js7-lktjp6.md +9 -0
  58. package/.agent/memory/feedback/mnsj5d4y-uglwvp.md +9 -0
  59. package/.agent/memory/feedback/mnslkuo9-uous66.md +24 -0
  60. package/.agent/memory/feedback/mnsm3vq0-megoil.md +9 -0
  61. package/.agent/memory/feedback/mnsnn5x2-sxcihd.md +9 -0
  62. package/.agent/memory/feedback/mnsnq17s-nabrn9.md +9 -0
  63. package/.agent/memory/feedback/mnsnybet-wz7rn3.md +9 -0
  64. package/.agent/memory/feedback/mnsrw0s7-7s9e30.md +9 -0
  65. package/.agent/memory/feedback/mnu5hpnd-tlm16q.md +9 -0
  66. package/.agent/memory/feedback/mnu60uqe-xuoxp4.md +9 -0
  67. package/.agent/memory/project/mnqx54u5-loqtoe.md +9 -0
  68. package/.agent/memory/project/mnqx84cv-mx6dmd.md +9 -0
  69. package/.agent/memory/project/mnsacuyr-hgtk5n.md +20 -0
  70. package/.agent/memory/project/mnu5hy2x-bjsg7u.md +9 -0
  71. package/.agent/memory/reference/mnre3cww-penbo1.md +9 -0
  72. package/.agent/memory/reference/mns9wn48-luerua.md +14 -0
  73. package/.agent/memory/reference/mns9yz5c-thc2s0.md +16 -0
  74. package/.agent/memory/reference/mnsfy4um-910f1o.md +23 -0
  75. package/.agent/memory/reference/mnsg37dp-lmfj18.md +32 -0
  76. package/.agent/memory/reference/mnsll60q-0j911u.md +36 -0
  77. package/.agent/memory/reference/mnsmlb5y-nej31u.md +16 -0
  78. package/.agent/memory/reference/mnssle72-yrot96.md +9 -0
  79. package/.agent/memory/user/mnsfuon6-l416q1.md +21 -0
  80. package/.agent/memory/user/mnsg9kut-95m7rf.md +20 -0
  81. package/.agent/memory/user/mnu2eo1v-yy6fhe.md +9 -0
  82. package/.agent/memory/user/mnu2etuo-8u8jk8.md +9 -0
  83. package/.agent/plugins/poster-plugin/fonts/NotoColorEmoji-Regular.ttf +0 -0
  84. package/.agent/plugins/poster-plugin/fonts/Symbola_hint.ttf +0 -0
  85. package/.agent/plugins/poster-plugin/package.json +3 -3
  86. package/.agent/plugins/poster-plugin/src/canvas.js +8 -0
  87. package/.agent/plugins/poster-plugin/src/components/barcode.js +5 -2
  88. package/.agent/plugins/poster-plugin/src/components/bubble.js +3 -2
  89. package/.agent/plugins/poster-plugin/src/components/button.js +74 -30
  90. package/.agent/plugins/poster-plugin/src/components/columns.js +97 -83
  91. package/.agent/plugins/poster-plugin/src/components/grid.js +104 -92
  92. package/.agent/plugins/poster-plugin/src/components/highlightText.js +2 -1
  93. package/.agent/plugins/poster-plugin/src/components/imageFrame.js +143 -93
  94. package/.agent/plugins/poster-plugin/src/components/quote.js +85 -13
  95. package/.agent/plugins/poster-plugin/src/components/ribbon.js +13 -9
  96. package/.agent/plugins/poster-plugin/src/components/seal.js +5 -3
  97. package/.agent/plugins/poster-plugin/src/components/star.js +3 -3
  98. package/.agent/plugins/poster-plugin/src/components/table.js +1 -1
  99. package/.agent/plugins/poster-plugin/src/components/watermark.js +4 -2
  100. package/.agent/plugins/poster-plugin/src/composer.js +181 -13
  101. package/.agent/plugins/poster-plugin/src/elements/artText.js +16 -7
  102. package/.agent/plugins/poster-plugin/src/elements/background.js +20 -5
  103. package/.agent/plugins/poster-plugin/src/elements/richText.js +160 -107
  104. package/.agent/plugins/poster-plugin/src/elements/text.js +48 -45
  105. package/.agent/plugins/poster-plugin/src/fonts.js +556 -125
  106. package/.agent/plugins/poster-plugin/src/index.js +46 -1
  107. package/.agent/plugins/poster-plugin/yarn.lock +186 -356
  108. package/.agent/plugins/puppeteer-plugin/README.md +147 -0
  109. package/.agent/plugins/puppeteer-plugin/index.js +1422 -0
  110. package/.agent/plugins/puppeteer-plugin/package.json +9 -0
  111. package/.agent/plugins.json +5 -11
  112. package/.agent/rules/GEMINI.md +273 -0
  113. package/.agent/rules/allow-rule.md +77 -0
  114. package/.agent/rules/log-rule.md +83 -0
  115. package/.agent/rules/security-rule.md +93 -0
  116. package/.agent/scripts/auto_preview.py +148 -0
  117. package/.agent/scripts/checklist.py +217 -0
  118. package/.agent/scripts/session_manager.py +120 -0
  119. package/.agent/scripts/verify_all.py +327 -0
  120. package/.agent/sessions/cli_default.json +122 -689
  121. package/.agent/skills/api-patterns/SKILL.md +81 -0
  122. package/.agent/skills/api-patterns/api-style.md +42 -0
  123. package/.agent/skills/api-patterns/auth.md +24 -0
  124. package/.agent/skills/api-patterns/documentation.md +26 -0
  125. package/.agent/skills/api-patterns/graphql.md +41 -0
  126. package/.agent/skills/api-patterns/rate-limiting.md +31 -0
  127. package/.agent/skills/api-patterns/response.md +37 -0
  128. package/.agent/skills/api-patterns/rest.md +40 -0
  129. package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
  130. package/.agent/skills/api-patterns/security-testing.md +122 -0
  131. package/.agent/skills/api-patterns/trpc.md +41 -0
  132. package/.agent/skills/api-patterns/versioning.md +22 -0
  133. package/.agent/skills/app-builder/SKILL.md +75 -0
  134. package/.agent/skills/app-builder/agent-coordination.md +71 -0
  135. package/.agent/skills/app-builder/feature-building.md +53 -0
  136. package/.agent/skills/app-builder/project-detection.md +34 -0
  137. package/.agent/skills/app-builder/scaffolding.md +118 -0
  138. package/.agent/skills/app-builder/tech-stack.md +40 -0
  139. package/.agent/skills/app-builder/templates/SKILL.md +39 -0
  140. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  141. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  142. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  143. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  144. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  145. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  146. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  147. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
  148. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
  149. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
  150. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
  151. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  152. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
  153. package/.agent/skills/architecture/SKILL.md +55 -0
  154. package/.agent/skills/architecture/context-discovery.md +43 -0
  155. package/.agent/skills/architecture/examples.md +94 -0
  156. package/.agent/skills/architecture/pattern-selection.md +68 -0
  157. package/.agent/skills/architecture/patterns-reference.md +50 -0
  158. package/.agent/skills/architecture/trade-off-analysis.md +77 -0
  159. package/.agent/skills/clean-code/SKILL.md +201 -0
  160. package/.agent/skills/doc.md +177 -0
  161. package/.agent/skills/frontend-design/SKILL.md +418 -0
  162. package/.agent/skills/frontend-design/animation-guide.md +331 -0
  163. package/.agent/skills/frontend-design/color-system.md +311 -0
  164. package/.agent/skills/frontend-design/decision-trees.md +418 -0
  165. package/.agent/skills/frontend-design/motion-graphics.md +306 -0
  166. package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  167. package/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
  168. package/.agent/skills/frontend-design/typography-system.md +345 -0
  169. package/.agent/skills/frontend-design/ux-psychology.md +1116 -0
  170. package/.agent/skills/frontend-design/visual-effects.md +383 -0
  171. package/.agent/skills/i18n-localization/SKILL.md +154 -0
  172. package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  173. package/.agent/skills/mcp-builder/SKILL.md +176 -0
  174. package/.agent/skills/poster-design/SKILL.md +385 -0
  175. package/.agent/skills/web-design-guidelines/SKILL.md +57 -0
  176. package/.agent/workflows/brainstorm.md +113 -0
  177. package/.agent/workflows/create.md +59 -0
  178. package/.agent/workflows/debug.md +103 -0
  179. package/.agent/workflows/deploy.md +176 -0
  180. package/.agent/workflows/enhance.md +63 -0
  181. package/.agent/workflows/orchestrate.md +237 -0
  182. package/.agent/workflows/plan.md +89 -0
  183. package/.agent/workflows/preview.md +81 -0
  184. package/.agent/workflows/simple-test.md +42 -0
  185. package/.agent/workflows/status.md +86 -0
  186. package/.agent/workflows/structured-orchestrate.md +180 -0
  187. package/.agent/workflows/test.md +144 -0
  188. package/.agent/workflows/ui-ux-pro-max.md +296 -0
  189. package/.claude/settings.local.json +1 -2
  190. package/.env.example +56 -56
  191. package/README.md +441 -441
  192. package/output/foliko-poster.png +0 -0
  193. package/outputs/emoji-font-showcase.png +0 -0
  194. package/outputs/foliko-muji-style.png +0 -0
  195. package/package.json +3 -2
  196. package/plugins/default-plugins.js +2 -1
  197. package/plugins/extension-executor-plugin.js +24 -1
  198. package/plugins/feishu-plugin.js +2 -2
  199. package/plugins/telegram-plugin.js +2 -2
  200. package/plugins/weixin-plugin.js +2 -2
  201. package/skills/find-skills/AGENTS.md +162 -162
  202. package/skills/find-skills/SKILL.md +133 -133
  203. package/src/core/agent.js +117 -29
  204. package/src/executors/mcp-executor.js +282 -26
  205. package/system.md +719 -570
  206. package/.agent/agents/code-assistant.json +0 -17
  207. package/.agent/agents/email-assistant.json +0 -14
  208. package/.agent/agents/file-assistant.json +0 -18
  209. package/.agent/agents/orchestrator-demo.md +0 -53
  210. package/.agent/agents/orchestrator.json +0 -7
  211. package/.agent/agents/system-assistant.json +0 -15
  212. package/.agent/agents/web-assistant.json +0 -12
  213. package/.agent/data/email/processed-emails.json +0 -1
  214. package/.agent/data/scheduler/tasks.json +0 -1
  215. package/.agent/data/web/web-config.json +0 -5
  216. package/.agent/memory/feedback/mnt7jrlt-d67qs7.md +0 -15
  217. package/.agent/memory/feedback/mnt88ja3-al4fuy.md +0 -9
  218. package/.agent/package.json +0 -8
  219. package/.agent/plugins/__pycache__/file_writer.cpython-312.pyc +0 -0
  220. package/.agent/plugins/daytona/README.md +0 -89
  221. package/.agent/plugins/daytona/index.js +0 -377
  222. package/.agent/plugins/daytona/package.json +0 -12
  223. package/.agent/plugins/marknative/README.md +0 -134
  224. package/.agent/plugins/marknative/fonts/SegoeUI Emoji.ttf +0 -0
  225. package/.agent/plugins/marknative/fonts.zip +0 -0
  226. package/.agent/plugins/marknative/index.js +0 -256
  227. package/.agent/plugins/marknative/package.json +0 -12
  228. package/.agent/plugins/poster-plugin/emojis/rocket.png +0 -1
  229. package/.agent/plugins/poster-plugin/test-background.svg +0 -1
  230. package/.agent/plugins/poster-plugin/test-full-poster.svg +0 -2
  231. package/.agent/plugins/poster-plugin/test-image.png +0 -0
  232. package/.agent/plugins/system-info/index.js +0 -387
  233. package/.agent/plugins/system-info/package.json +0 -4
  234. package/.agent/plugins/system-info/test.js +0 -40
  235. package/.agent/plugins/test-plugin.py +0 -108
  236. package/.agent/python-scripts/test_sample.py +0 -24
  237. package/.agent/skills/agent-browser/SKILL.md +0 -311
  238. package/.agent/skills/agent-browser/TEST_PLAN.md +0 -200
  239. package/.agent/skills/sysinfo/SKILL.md +0 -38
  240. package/.agent/skills/sysinfo/system-info.sh +0 -130
  241. package/.agent/skills/workflow/SKILL.md +0 -324
  242. package/.agent/test-agent.js +0 -35
  243. package/.agent/weixin.json +0 -6
  244. package/.agent/workflows/email-digest.json +0 -50
  245. package/.agent/workflows/file-backup.json +0 -21
  246. package/.agent/workflows/get-ip-notify.json +0 -32
  247. package/.agent/workflows/news-aggregator.json +0 -93
  248. package/.agent/workflows/news-dashboard-v2.json +0 -94
  249. package/.agent/workflows/notification-batch.json +0 -32
  250. package/output/zen_silence.png +0 -0
@@ -1,17 +0,0 @@
1
- {
2
- "name": "code-assistant",
3
- "description": "代码助手 - 专业的编程和代码分析助手",
4
- "instructions": "你是一个专业的代码助手,精通多种编程语言和开发技术。\n\n【核心能力】\n- 代码编写、调试和优化\n- 代码审查和重构建议\n- 多种编程语言支持(Python、JavaScript、TypeScript、Java等)\n- 代码问题诊断和解决\n- 解释复杂代码逻辑\n\n【工作原则】\n- 提供清晰、规范的代码\n- 包含必要的注释说明\n- 考虑代码性能和安全性\n- 遵循最佳实践",
5
- "tools": [
6
- "read_file",
7
- "write_file",
8
- "modify_file",
9
- "search_file",
10
- "python-execute",
11
- "execute_command",
12
- "shell",
13
- "subagent_list",
14
- "subagent_call",
15
- "file-assistant"
16
- ]
17
- }
@@ -1,14 +0,0 @@
1
- {
2
- "name": "email-assistant",
3
- "description": "邮件助手 - 专业的邮件管理助手",
4
- "instructions": "你是一个专业的邮件助手,擅长邮件的读写、筛选和管理。\n\n【核心能力】\n- 读取和回复邮件\n- 发送新邮件(支持附件)\n- 邮件搜索和筛选\n- 邮件摘要生成\n- 批量邮件处理\n\n【工作原则】\n- 保持邮件格式规范\n- 回复内容专业得体\n- 保护隐私信息\n- 及时处理重要邮件",
5
- "tools": [
6
- "email_read",
7
- "email_send",
8
- "email_mark_read",
9
- "email_delete",
10
- "email_unread_count",
11
- "email_configure",
12
- "notification_send"
13
- ]
14
- }
@@ -1,18 +0,0 @@
1
- {
2
- "name": "file-assistant",
3
- "description": "文件助手 - 专业的文件管理和操作助手",
4
- "instructions": "你是一个专业的文件助手,擅长文件操作、目录管理、文件搜索和内容编辑。\n\n【核心能力】\n- 读取、创建、编辑、删除文件和目录\n- 搜索文件内容和文件名称\n- 批量文件操作\n- 文件内容分析和提取\n\n【工作原则】\n- 执行操作前确认路径正确\n- 危险操作(如删除)需要谨慎\n- 保持文件编码一致性\n- 重要文件操作前可创建备份",
5
- "tools": [
6
- "read_file",
7
- "write_file",
8
- "delete_file",
9
- "modify_file",
10
- "search_file",
11
- "read_directory",
12
- "create_directory",
13
- "execute_command",
14
- "subagent_list",
15
- "subagent_call",
16
- "code-assistant"
17
- ]
18
- }
@@ -1,53 +0,0 @@
1
- ---
2
- name: orchestrator-demo
3
- type: demo
4
- description: 演示任务 - 子Agent调用子Agent的完整流程
5
- ---
6
-
7
- # 演示任务:子Agent调用子Agent
8
-
9
- ## 任务场景
10
-
11
- 用户请求:分析 Foliko 项目的代码质量,并生成一份报告
12
-
13
- ## 执行流程
14
-
15
- ```
16
- 主Agent → orchestrator (任务编排者)
17
- ↓ 分解任务
18
- ├→ file-assistant (扫描项目结构)
19
- │ ↓ 发现文件
20
- └→ code-assistant (分析代码质量)
21
- ↓ 分析完成
22
- ← orchestrator (汇总报告)
23
- ```
24
-
25
- ## 测试步骤
26
-
27
- ### 1. 查看所有子Agent
28
-
29
- ```bash
30
- # 调用 subagent_list 工具
31
- ```
32
-
33
- ### 2. 委托给 orchestrator
34
-
35
- ```
36
- 请分析 Foliko 项目(位于 D:\Code\foliko)的代码质量:
37
- 1. 首先扫描项目结构
38
- 2. 然后分析核心代码
39
- 3. 最后汇总报告
40
- ```
41
-
42
- ### 3. 直接测试子Agent调用链
43
-
44
- ```
45
- 请使用 file-assistant 分析项目目录结构,然后使用 code-assistant 分析其中某个核心文件的代码质量。
46
- ```
47
-
48
- ## 预期结果
49
-
50
- - orchestrator 能列出所有子Agent
51
- - orchestrator 能调用 file-assistant 和 code-assistant
52
- - code-assistant 能调用 file-assistant(查看代码)
53
- - 最终返回完整的分析报告
@@ -1,7 +0,0 @@
1
- {
2
- "name": "orchestrator",
3
- "role": "任务编排者",
4
- "description": "任务编排专家 - 负责分解复杂任务并协调多个子Agent工作",
5
- "parentTools": ["subagent_list", "subagent_call", "read_file"],
6
- "tools": {}
7
- }
@@ -1,15 +0,0 @@
1
- {
2
- "name": "system-assistant",
3
- "description": "系统助手 - 专业的系统信息监控和管理助手",
4
- "instructions": "你是一个专业的系统助手,精通系统信息监控和基础管理。\n\n【核心能力】\n- CPU、内存、磁盘使用情况监控\n- 网络接口信息查询\n- 系统运行状态分析\n- 性能问题诊断\n- 定时监控和报告\n\n【工作原则】\n- 提供清晰的数据展示\n- 发现异常及时提醒\n- 给出合理的优化建议\n- 保护系统安全",
5
- "tools": [
6
- "get_basic_info",
7
- "get_cpu_info",
8
- "get_memory_info",
9
- "get_disk_info",
10
- "get_network_info",
11
- "get_full_system_info",
12
- "notification_send",
13
- "schedule_task"
14
- ]
15
- }
@@ -1,12 +0,0 @@
1
- {
2
- "name": "web-assistant",
3
- "description": "网络助手 - 专业的网络数据获取和处理助手",
4
- "instructions": "你是一个专业的网络助手,精通网络数据获取和处理。\n\n【核心能力】\n- HTTP请求发送(GET/POST/PUT/DELETE等)\n- 网页内容抓取和解析\n- API调用和数据处理\n- JSON/XML数据解析\n- 网络问题诊断\n\n【工作原则】\n- 遵守网站使用协议\n- 合理控制请求频率\n- 数据处理规范\n- 异常情况妥善处理",
5
- "tools": [
6
- "fetch",
7
- "web_request",
8
- "execute_command",
9
- "python-execute",
10
- "notification_send"
11
- ]
12
- }
@@ -1 +0,0 @@
1
- ["<709921775831304@mail.yandex.ru>","<164041775831815@mail.yandex.ru>","<1453131775832337@mail.yandex.ru>","1224161775832900@mail.yandex.ru","659171775833135@mail.yandex.ru","300181775834203@mail.yandex.ru","2939231775834764@mail.yandex.ru","1443171775835448@mail.yandex.ru","1647161775839441@mail.yandex.ru","807111775840146@mail.yandex.ru","1317101775840554@mail.yandex.ru","859941775840854@mail.yandex.ru","41131775841292@mail.yandex.ru","341691775841865@mail.yandex.ru","170181775842337@mail.yandex.ru","18581775842668@mail.yandex.ru","3899221775842970@mail.yandex.ru","386541775843216@mail.yandex.ru","408111775843932@mail.yandex.ru","<408111775843932@mail.yandex.ru>","2304111775844462@mail.yandex.ru","<2304111775844462@mail.yandex.ru>"]
@@ -1 +0,0 @@
1
- []
@@ -1,5 +0,0 @@
1
- {
2
- "routes": [],
3
- "webhooks": [],
4
- "statics": []
5
- }
@@ -1,15 +0,0 @@
1
- ---
2
- id: "mnt7jrlt-d67qs7"
3
- name: "【避免指南】避免在动作参数中使用未正确解析的模板变量"
4
- type: "feedback"
5
- project: "null"
6
- tags: [error, avoid, email, template-variable]
7
- created: "2026-04-10"
8
- ---
9
- 【下次这样做】在 Ambient Agent 动作参数中使用模板变量时,必须确保变量能正确解析。错误原因:${event.from} 模板变量未被解析为实际邮箱地址 'chnak@yandex.ru',导致 email_auto_reply 工具收到空的 to 参数。
10
-
11
- 【避免方法】
12
- 1. 在动作 args 中使用模板变量时,需检查变量路径是否正确,如 ${event.from} 应解析为发件人邮箱
13
- 2. 对于嵌套在 _eventRaw 中的数据,需使用正确的变量路径(如 ${event._eventRaw.data.email.from})
14
- 3. 建议在动作执行前添加日志或调试步骤验证变量是否正确解析
15
- 4. 对于 email_auto_reply,to 参数必须为有效的邮箱地址字符串,不能是未解析的模板变量
@@ -1,9 +0,0 @@
1
- ---
2
- id: "mnt88ja3-al4fuy"
3
- name: "【避免指南】避免重复启动已运行的服务或资源"
4
- type: "feedback"
5
- project: "null"
6
- tags: [error, avoid, duplicate-operation, state-conflict]
7
- created: "2026-04-10"
8
- ---
9
- 【下次这样做】在启动服务前应先检查其当前状态。如果服务已在运行,应跳过启动操作或返回明确提示,而非直接调用启动命令。错误原因:重复启动已运行中的邮件监控服务(email_watch),导致状态冲突。建议在启动前调用 status 接口确认服务状态,或确保工具本身实现幂等性。
@@ -1,8 +0,0 @@
1
- {
2
- "dependencies": {
3
- "imap": "^0.8.19",
4
- "mailparser": "^3.9.4",
5
- "node-telegram-bot-api": "^0.67.0",
6
- "nodemailer": "^8.0.3"
7
- }
8
- }
@@ -1,89 +0,0 @@
1
- # Daytona Plugin
2
-
3
- Daytona 云开发环境管理插件,用于在 Foliko 中创建和管理云开发环境(Sandbox)。
4
-
5
- ## 功能特性
6
-
7
- - **沙箱管理**: 创建、启动、停止、删除沙箱环境
8
- - **代码执行**: 在沙箱中执行 JavaScript/TypeScript 代码
9
- - **文件操作**: 在沙箱中读写文件
10
- - **临时沙箱**: 支持创建临时沙箱(自动清理)
11
- - **多语言支持**: JavaScript、TypeScript、Python 等
12
-
13
- ## 安装
14
-
15
- ```bash
16
- cd .agent/plugins/daytona
17
- npm install
18
- ```
19
-
20
- ## 配置
21
-
22
- 首次使用需要配置 API 密钥:
23
-
24
- ```javascript
25
- daytona_configure({
26
- apiKey: "your-daytona-api-key",
27
- apiUrl: "https://app.daytona.io/api",
28
- target: "default"
29
- })
30
- ```
31
-
32
- ## 工具列表
33
-
34
- ### daytona_configure
35
- 配置 Daytona API 密钥和连接信息。
36
-
37
- ### daytona_create_sandbox
38
- 创建新的沙箱环境。
39
-
40
- ### daytona_get_sandbox
41
- 获取指定沙箱信息。
42
-
43
- ### daytona_list_sandboxes
44
- 列出所有沙箱。
45
-
46
- ### daytona_start_sandbox
47
- 启动沙箱。
48
-
49
- ### daytona_stop_sandbox
50
- 停止沙箱。
51
-
52
- ### daytona_delete_sandbox
53
- 删除沙箱。
54
-
55
- ### daytona_execute_code
56
- 在沙箱中执行代码。
57
-
58
- ### daytona_write_file
59
- 在沙箱中写入文件。
60
-
61
- ### daytona_read_file
62
- 在沙箱中读取文件。
63
-
64
- ### daytona_create_ephemeral_sandbox
65
- 创建临时沙箱(5分钟后自动删除)。
66
-
67
- ## 使用示例
68
-
69
- ```javascript
70
- // 1. 配置 API
71
- daytona_configure({ apiKey: "your-key" })
72
-
73
- // 2. 创建沙箱
74
- daytona_create_sandbox({ language: "javascript" })
75
-
76
- // 3. 执行代码
77
- daytona_execute_code({ code: "console.log('Hello!')" })
78
-
79
- // 4. 读写文件
80
- daytona_write_file({ path: "/tmp/test.js", content: "..." })
81
- daytona_read_file({ path: "/tmp/test.js" })
82
-
83
- // 5. 清理
84
- daytona_delete_sandbox({ sandboxId: "sandbox-id" })
85
- ```
86
-
87
- ## 许可证
88
-
89
- Apache-2.0
@@ -1,377 +0,0 @@
1
- const { z } = require('zod');
2
-
3
- module.exports = function (Plugin) {
4
- return class DaytonaPlugin extends Plugin {
5
- constructor(config = {}) {
6
- super();
7
- this.name = 'daytona';
8
- this.version = '1.0.0';
9
- this.description = 'Daytona 云开发环境管理插件';
10
- this.priority = 10;
11
- this.daytona = null;
12
- this.currentSandbox = null;
13
- this.config = {};
14
- }
15
-
16
- start(framework) {
17
- this._framework = framework;
18
- this._loadConfig();
19
- return this;
20
- }
21
-
22
- _loadConfig() {
23
- try {
24
- const storage = this._framework.pluginManager.get('storage');
25
- if (storage) {
26
- const store = storage.getStore();
27
- const entry = store.get('daytona:config');
28
- if (entry && entry.value) {
29
- this.config = entry.value;
30
- if (this.config.apiKey) {
31
- const { Daytona } = require('@daytonaio/sdk');
32
- this.daytona = new Daytona(this.config);
33
- }
34
- }
35
- }
36
- } catch (error) {
37
- // 配置加载失败,忽略
38
- }
39
- }
40
-
41
- tools = {
42
- daytona_configure: {
43
- description: '配置 Daytona API 密钥和连接信息(配置会持久化保存)',
44
- inputSchema: z.object({
45
- apiKey: z.string().describe('Daytona API Key'),
46
- apiUrl: z.string().optional().describe('Daytona API URL,默认为 https://app.daytona.io/api'),
47
- target: z.string().optional().describe('目标区域,如 us, eu 等'),
48
- organizationId: z.string().optional().describe('组织 ID(JWT 认证时需要)'),
49
- }),
50
- execute: async (args, framework) => {
51
- try {
52
- const { Daytona } = require('@daytonaio/sdk');
53
- this.config = {
54
- apiKey: args.apiKey,
55
- };
56
- if (args.apiUrl) this.config.apiUrl = args.apiUrl;
57
- if (args.target) this.config.target = args.target;
58
- if (args.organizationId) this.config.organizationId = args.organizationId;
59
-
60
- this.daytona = new Daytona(this.config);
61
-
62
- const storage = framework.pluginManager.get('storage');
63
- if (storage) {
64
- storage.setDirect('daytona:config', {
65
- value: this.config,
66
- updatedAt: new Date()
67
- });
68
- }
69
-
70
- return {
71
- success: true,
72
- message: 'Daytona 配置已保存',
73
- config: {
74
- apiUrl: this.config.apiUrl || 'https://app.daytona.io/api',
75
- target: this.config.target || 'default',
76
- hasApiKey: true
77
- },
78
- };
79
- } catch (error) {
80
- return { success: false, error: error.message };
81
- }
82
- },
83
- },
84
-
85
- daytona_create_sandbox: {
86
- description: '创建 Daytona 沙箱环境',
87
- inputSchema: z.object({
88
- language: z.string().optional().describe('编程语言:javascript, typescript, python(默认 javascript)'),
89
- name: z.string().optional().describe('沙箱名称'),
90
- resources: z.object({
91
- cpu: z.number().optional().describe('CPU 核心数'),
92
- memory: z.number().optional().describe('内存大小(GiB)'),
93
- disk: z.number().optional().describe('磁盘大小(GiB)'),
94
- }).optional().describe('资源配置'),
95
- envVars: z.record(z.string()).optional().describe('环境变量'),
96
- ephemeral: z.boolean().optional().describe('是否临时沙箱(停止后自动删除)'),
97
- autoStopInterval: z.number().optional().describe('自动停止间隔(分钟,0 禁用)'),
98
- }),
99
- execute: async (args) => {
100
- try {
101
- if (!this.daytona) {
102
- return { success: false, error: '请先调用 daytona_configure 配置 API' };
103
- }
104
- const params = {
105
- language: args.language || 'javascript',
106
- };
107
- if (args.name) params.name = args.name;
108
- if (args.resources) params.resources = args.resources;
109
- if (args.envVars) params.envVars = args.envVars;
110
- if (args.ephemeral !== undefined) params.ephemeral = args.ephemeral;
111
- if (args.autoStopInterval !== undefined) params.autoStopInterval = args.autoStopInterval;
112
- const sandbox = await this.daytona.create(params);
113
- this.currentSandbox = sandbox;
114
- return {
115
- success: true,
116
- sandbox: {
117
- id: sandbox.id,
118
- name: sandbox.name,
119
- state: sandbox.state,
120
- language: sandbox.language,
121
- },
122
- };
123
- } catch (error) {
124
- return { success: false, error: error.message };
125
- }
126
- },
127
- },
128
-
129
- daytona_get_sandbox: {
130
- description: '获取指定沙箱信息',
131
- inputSchema: z.object({
132
- sandboxId: z.string().describe('沙箱 ID 或名称'),
133
- }),
134
- execute: async (args) => {
135
- try {
136
- if (!this.daytona) {
137
- return { success: false, error: '请先调用 daytona_configure 配置 API' };
138
- }
139
- const sandbox = await this.daytona.get(args.sandboxId);
140
- return {
141
- success: true,
142
- sandbox: {
143
- id: sandbox.id,
144
- name: sandbox.name,
145
- state: sandbox.state,
146
- language: sandbox.language,
147
- createdAt: sandbox.createdAt,
148
- },
149
- };
150
- } catch (error) {
151
- return { success: false, error: error.message };
152
- }
153
- },
154
- },
155
-
156
- daytona_list_sandboxes: {
157
- description: '列出所有沙箱',
158
- inputSchema: z.object({
159
- labels: z.record(z.string()).optional().describe('标签过滤'),
160
- page: z.number().optional().describe('页码'),
161
- limit: z.number().optional().describe('每页数量'),
162
- }),
163
- execute: async (args) => {
164
- try {
165
- if (!this.daytona) {
166
- return { success: false, error: '请先调用 daytona_configure 配置 API' };
167
- }
168
- const result = await this.daytona.list(args.labels, args.page, args.limit);
169
- return {
170
- success: true,
171
- total: result.total,
172
- page: result.page,
173
- sandboxes: result.items.map((s) => ({
174
- id: s.id,
175
- name: s.name,
176
- state: s.state,
177
- language: s.language,
178
- })),
179
- };
180
- } catch (error) {
181
- return { success: false, error: error.message };
182
- }
183
- },
184
- },
185
-
186
- daytona_start_sandbox: {
187
- description: '启动沙箱',
188
- inputSchema: z.object({
189
- sandboxId: z.string().describe('沙箱 ID 或名称'),
190
- timeout: z.number().optional().describe('超时时间(秒)'),
191
- }),
192
- execute: async (args) => {
193
- try {
194
- if (!this.daytona) {
195
- return { success: false, error: '请先调用 daytona_configure 配置 API' };
196
- }
197
- const sandbox = await this.daytona.get(args.sandboxId);
198
- await this.daytona.start(sandbox, args.timeout || 60);
199
- return { success: true, message: `沙箱 ${args.sandboxId} 启动成功` };
200
- } catch (error) {
201
- return { success: false, error: error.message };
202
- }
203
- },
204
- },
205
-
206
- daytona_stop_sandbox: {
207
- description: '停止沙箱',
208
- inputSchema: z.object({
209
- sandboxId: z.string().describe('沙箱 ID 或名称'),
210
- }),
211
- execute: async (args) => {
212
- try {
213
- if (!this.daytona) {
214
- return { success: false, error: '请先调用 daytona_configure 配置 API' };
215
- }
216
- const sandbox = await this.daytona.get(args.sandboxId);
217
- await this.daytona.stop(sandbox);
218
- return { success: true, message: `沙箱 ${args.sandboxId} 已停止` };
219
- } catch (error) {
220
- return { success: false, error: error.message };
221
- }
222
- },
223
- },
224
-
225
- daytona_delete_sandbox: {
226
- description: '删除沙箱',
227
- inputSchema: z.object({
228
- sandboxId: z.string().describe('沙箱 ID 或名称'),
229
- timeout: z.number().optional().describe('超时时间(秒)'),
230
- }),
231
- execute: async (args) => {
232
- try {
233
- if (!this.daytona) {
234
- return { success: false, error: '请先调用 daytona_configure 配置 API' };
235
- }
236
- const sandbox = await this.daytona.get(args.sandboxId);
237
- await this.daytona.delete(sandbox, args.timeout || 60);
238
- if (this.currentSandbox?.id === sandbox.id) {
239
- this.currentSandbox = null;
240
- }
241
- return { success: true, message: `沙箱 ${args.sandboxId} 已删除` };
242
- } catch (error) {
243
- return { success: false, error: error.message };
244
- }
245
- },
246
- },
247
-
248
- daytona_execute_code: {
249
- description: '在沙箱中执行代码',
250
- inputSchema: z.object({
251
- code: z.string().describe('要执行的代码'),
252
- sandboxId: z.string().optional().describe('沙箱 ID(不填使用当前沙箱)'),
253
- }),
254
- execute: async (args) => {
255
- try {
256
- if (!this.daytona) {
257
- return { success: false, error: '请先调用 daytona_configure 配置 API' };
258
- }
259
- let sandbox = this.currentSandbox;
260
- if (args.sandboxId) {
261
- sandbox = await this.daytona.get(args.sandboxId);
262
- }
263
- if (!sandbox) {
264
- return { success: false, error: '没有活动的沙箱,请先创建或指定沙箱' };
265
- }
266
- const result = await sandbox.process.executeCommand(args.code);
267
- return {
268
- success: true,
269
- stdout: result.result,
270
- stderr: result.stderr,
271
- exitCode: result.exitCode,
272
- };
273
- } catch (error) {
274
- return { success: false, error: error.message };
275
- }
276
- },
277
- },
278
-
279
- daytona_write_file: {
280
- description: '在沙箱中写入文件',
281
- inputSchema: z.object({
282
- path: z.string().describe('文件路径'),
283
- content: z.string().describe('文件内容'),
284
- sandboxId: z.string().optional().describe('沙箱 ID(不填使用当前沙箱)'),
285
- }),
286
- execute: async (args) => {
287
- try {
288
- if (!this.daytona) {
289
- return { success: false, error: '请先调用 daytona_configure 配置 API' };
290
- }
291
- let sandbox = this.currentSandbox;
292
- if (args.sandboxId) {
293
- sandbox = await this.daytona.get(args.sandboxId);
294
- }
295
- if (!sandbox) {
296
- return { success: false, error: '没有活动的沙箱,请先创建或指定沙箱' };
297
- }
298
- await sandbox.fs.uploadFiles([{ source: Buffer.from(args.content), destination: args.path }]);
299
- return { success: true, message: `文件 ${args.path} 写入成功` };
300
- } catch (error) {
301
- return { success: false, error: error.message };
302
- }
303
- },
304
- },
305
-
306
- daytona_read_file: {
307
- description: '在沙箱中读取文件',
308
- inputSchema: z.object({
309
- path: z.string().describe('文件路径'),
310
- sandboxId: z.string().optional().describe('沙箱 ID(不填使用当前沙箱)'),
311
- }),
312
- execute: async (args) => {
313
- try {
314
- if (!this.daytona) {
315
- return { success: false, error: '请先调用 daytona_configure 配置 API' };
316
- }
317
- let sandbox = this.currentSandbox;
318
- if (args.sandboxId) {
319
- sandbox = await this.daytona.get(args.sandboxId);
320
- }
321
- if (!sandbox) {
322
- return { success: false, error: '没有活动的沙箱,请先创建或指定沙箱' };
323
- }
324
- const result = await sandbox.process.executeCommand(`cat "${args.path}"`);
325
- return { success: true, path: args.path, content: result.result || '' };
326
- } catch (error) {
327
- return { success: false, error: error.message };
328
- }
329
- },
330
- },
331
-
332
- daytona_create_ephemeral_sandbox: {
333
- description: '创建临时沙箱(停止后自动删除)',
334
- inputSchema: z.object({
335
- language: z.string().optional().describe('编程语言(默认 javascript)'),
336
- timeout: z.number().optional().describe('创建超时时间(秒,默认 60)'),
337
- }),
338
- execute: async (args) => {
339
- try {
340
- if (!this.daytona) {
341
- return { success: false, error: '请先调用 daytona_configure 配置 API' };
342
- }
343
- const params = {
344
- language: args.language || 'javascript',
345
- ephemeral: true,
346
- autoStopInterval: 5,
347
- };
348
- const sandbox = await this.daytona.create(params, { timeout: args.timeout || 60 });
349
- this.currentSandbox = sandbox;
350
- return {
351
- success: true,
352
- message: '临时沙箱创建成功(5分钟后自动停止并删除)',
353
- sandbox: {
354
- id: sandbox.id,
355
- name: sandbox.name,
356
- state: sandbox.state,
357
- language: sandbox.language,
358
- },
359
- };
360
- } catch (error) {
361
- return { success: false, error: error.message };
362
- }
363
- },
364
- },
365
- };
366
-
367
- install(framework) {
368
- return this;
369
- }
370
-
371
- uninstall(framework) {
372
- if (this.currentSandbox && this.daytona) {
373
- this.daytona.delete(this.currentSandbox).catch(() => {});
374
- }
375
- }
376
- };
377
- };
@@ -1,12 +0,0 @@
1
- {
2
- "name": "daytona-plugin",
3
- "version": "1.0.0",
4
- "description": "Daytona 云开发环境管理插件",
5
- "main": "index.js",
6
- "keywords": ["daytona", "sandbox", "cloud", "foliko", "plugin"],
7
- "author": "",
8
- "license": "Apache-2.0",
9
- "dependencies": {
10
- "@daytonaio/sdk": "^0.161.0"
11
- }
12
- }