foliko 1.0.74 → 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 -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 +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 +456 -106
  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 -249
  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
@@ -7,6 +7,8 @@ const { execSync } = require('child_process')
7
7
  const fs = require('fs')
8
8
  const path = require('path')
9
9
  const { Plugin } = require('../src/core/plugin-base')
10
+ const { logger } = require('../src/utils/logger')
11
+ const log = logger.child('InstallPlugin')
10
12
  const { z } = require('zod')
11
13
 
12
14
  class InstallPlugin extends Plugin {
@@ -85,7 +87,7 @@ class InstallPlugin extends Plugin {
85
87
  ? path.resolve(process.cwd(), targetPath)
86
88
  : this._agentDir
87
89
 
88
- console.log(`[InstallPlugin] Installing ${packageName} to ${installPath}...`)
90
+ log.info(` Installing ${packageName} to ${installPath}...`)
89
91
 
90
92
  // 确保目标目录存在
91
93
  if (!fs.existsSync(installPath)) {
@@ -98,7 +100,7 @@ class InstallPlugin extends Plugin {
98
100
  cwd: installPath
99
101
  })
100
102
 
101
- console.log(`[InstallPlugin] Successfully installed ${packageName}`)
103
+ log.info(` Successfully installed ${packageName}`)
102
104
 
103
105
  return {
104
106
  success: true,
@@ -125,7 +127,7 @@ class InstallPlugin extends Plugin {
125
127
  ? path.resolve(process.cwd(), targetPath)
126
128
  : pkgDir
127
129
 
128
- console.log(`[InstallPlugin] Installing dependencies from ${resolvedPkgPath} to ${installPath}...`)
130
+ log.info(` Installing dependencies from ${resolvedPkgPath} to ${installPath}...`)
129
131
 
130
132
  // 读取 package.json 获取要安装的包
131
133
  const pkg = JSON.parse(fs.readFileSync(resolvedPkgPath, 'utf-8'))
@@ -153,7 +155,7 @@ class InstallPlugin extends Plugin {
153
155
  cwd: pkgDir
154
156
  })
155
157
 
156
- console.log(`[InstallPlugin] Successfully installed ${packages.length} packages`)
158
+ log.info(` Successfully installed ${packages.length} packages`)
157
159
 
158
160
  return {
159
161
  success: true,
@@ -4,6 +4,8 @@
4
4
  */
5
5
 
6
6
  const { Plugin } = require('../src/core/plugin-base')
7
+ const { logger } = require('../src/utils/logger')
8
+ const log = logger.child('PythonExecutor')
7
9
  const { spawn } = require('child_process')
8
10
  const fs = require('fs')
9
11
  const path = require('path')
@@ -355,7 +357,7 @@ except Exception:
355
357
  try {
356
358
  fs.rmSync(this._tempDir, { recursive: true, force: true })
357
359
  } catch (e) {
358
- console.warn(`[PythonExecutor] Failed to cleanup temp dir: ${e.message}`)
360
+ log.warn(` Failed to cleanup temp dir: ${e.message}`)
359
361
  }
360
362
  }
361
363
  this._framework = null
@@ -6,6 +6,8 @@
6
6
  const fs = require('fs')
7
7
  const path = require('path')
8
8
  const { Plugin } = require('../src/core/plugin-base')
9
+ const { logger } = require('../src/utils/logger')
10
+ const log = logger.child('PythonPluginLoader')
9
11
  const { z } = require('zod')
10
12
 
11
13
  // 将 JSON Schema 转换为 Zod Schema
@@ -196,7 +198,7 @@ class PythonPluginLoader extends Plugin {
196
198
  info: pluginInfo,
197
199
  code: fs.readFileSync(pluginPath, 'utf-8')
198
200
  })
199
- console.log(`[PythonPluginLoader] Loaded: ${pluginName}`)
201
+ log.info(` Loaded: ${pluginName}`)
200
202
 
201
203
  // 注册插件的每个工具
202
204
  if (pluginInfo.tools && Array.isArray(pluginInfo.tools)) {
@@ -206,11 +208,11 @@ class PythonPluginLoader extends Plugin {
206
208
  }
207
209
  }
208
210
  } catch (err) {
209
- console.error(`[PythonPluginLoader] Failed to load ${file}:`, err.message)
211
+ log.error(` Failed to load ${file}:`, err.message)
210
212
  }
211
213
  }
212
214
 
213
- console.log(`[PythonPluginLoader] Total Python plugins: ${this._pythonPlugins.size}`)
215
+ log.info(` Total Python plugins: ${this._pythonPlugins.size}`)
214
216
  }
215
217
 
216
218
  /**
@@ -228,9 +230,9 @@ class PythonPluginLoader extends Plugin {
228
230
  return this._executePythonTool(pluginName, tool.name, args)
229
231
  }
230
232
  })
231
- //console.log(`[PythonPluginLoader] Registered tool: ${tool.name}`)
233
+ //log.info(` Registered tool: ${tool.name}`)
232
234
  } catch (err) {
233
- console.error(`[PythonPluginLoader] Failed to register tool ${tool.name}:`, err.message)
235
+ log.error(` Failed to register tool ${tool.name}:`, err.message)
234
236
  }
235
237
  }
236
238
 
@@ -275,7 +277,7 @@ class PythonPluginLoader extends Plugin {
275
277
  // 找到 plugin_info = {
276
278
  const startIdx = code.indexOf('plugin_info')
277
279
  if (startIdx === -1) {
278
- console.warn(`[PythonPluginLoader] ${path.basename(pluginPath)}: no plugin_info found`)
280
+ log.warn(` ${path.basename(pluginPath)}: no plugin_info found`)
279
281
  return null
280
282
  }
281
283
 
@@ -298,7 +300,7 @@ class PythonPluginLoader extends Plugin {
298
300
  }
299
301
 
300
302
  if (endIdx === -1) {
301
- console.warn(`[PythonPluginLoader] ${path.basename(pluginPath)}: unclosed brace`)
303
+ log.warn(` ${path.basename(pluginPath)}: unclosed brace`)
302
304
  return null
303
305
  }
304
306
 
@@ -319,7 +321,7 @@ class PythonPluginLoader extends Plugin {
319
321
  const info = JSON.parse(infoStr)
320
322
  return info
321
323
  } catch (err) {
322
- console.warn(`[PythonPluginLoader] Failed to parse ${path.basename(pluginPath)}:`, err.message)
324
+ log.warn(` Failed to parse ${path.basename(pluginPath)}:`, err.message)
323
325
  return null
324
326
  }
325
327
  }
@@ -4,6 +4,8 @@
4
4
  */
5
5
 
6
6
  const { Plugin } = require('../src/core/plugin-base')
7
+ const { logger } = require('../src/utils/logger')
8
+ const log = logger.child('RulesPlugin')
7
9
  const { z } = require('zod')
8
10
  const fs = require('fs')
9
11
  const path = require('path')
@@ -169,7 +171,7 @@ class RulesPlugin extends Plugin {
169
171
  const resolvedDir = path.resolve(process.cwd(), rulesDir)
170
172
 
171
173
  if (!fs.existsSync(resolvedDir)) {
172
- console.log(`[RulesPlugin] Rules directory not found: ${resolvedDir}`)
174
+ log.info(` Rules directory not found: ${resolvedDir}`)
173
175
  return
174
176
  }
175
177
 
@@ -189,10 +191,10 @@ class RulesPlugin extends Plugin {
189
191
  this._rules.push(rule)
190
192
  }
191
193
 
192
- console.log(`[RulesPlugin] Loaded ${rules.length} rules from ${file}`)
194
+ log.info(` Loaded ${rules.length} rules from ${file}`)
193
195
  }
194
196
  } catch (err) {
195
- console.error(`[RulesPlugin] Failed to load rules: ${err.message}`)
197
+ log.error(` Failed to load rules: ${err.message}`)
196
198
  }
197
199
  }
198
200
 
@@ -5,6 +5,8 @@
5
5
  */
6
6
 
7
7
  const { Plugin } = require('../src/core/plugin-base')
8
+ const { logger } = require('../src/utils/logger')
9
+ const log = logger.child('Scheduler')
8
10
  const { z } = require('zod')
9
11
  const fs = require('fs')
10
12
  const path = require('path')
@@ -14,7 +16,7 @@ let cron = null
14
16
  try {
15
17
  cron = require('node-cron')
16
18
  } catch (e) {
17
- console.warn('[Scheduler] node-cron not installed, cron tasks will not work')
19
+ log.warn(' node-cron not installed, cron tasks will not work')
18
20
  }
19
21
 
20
22
  // ============================================================================
@@ -57,7 +59,7 @@ class TaskStore {
57
59
  }))
58
60
  fs.writeFileSync(this._getTasksPath(), JSON.stringify(serializable, null, 2))
59
61
  } catch (err) {
60
- console.error('[Scheduler] 保存任务失败:', err.message)
62
+ log.error(' 保存任务失败:', err.message)
61
63
  }
62
64
  }
63
65
 
@@ -69,7 +71,7 @@ class TaskStore {
69
71
  return JSON.parse(data)
70
72
  }
71
73
  } catch (err) {
72
- console.error('[Scheduler] 加载任务失败:', err.message)
74
+ log.error(' 加载任务失败:', err.message)
73
75
  }
74
76
  return []
75
77
  }
@@ -210,7 +212,7 @@ class SchedulerPlugin extends Plugin {
210
212
  return bTime - aTime
211
213
  })
212
214
  targetSessionId = sessions[0].id
213
- //console.log(`[Scheduler] Auto-detected active session: ${targetSessionId}`)
215
+ //log.info(` Auto-detected active session: ${targetSessionId}`)
214
216
  }
215
217
  }
216
218
  }
@@ -467,12 +469,12 @@ class SchedulerPlugin extends Plugin {
467
469
  const savedTasks = this._taskStore.loadTasks()
468
470
  if (!savedTasks || savedTasks.length === 0) return
469
471
 
470
- console.log(`[Scheduler] 加载 ${savedTasks.length} 个持久化任务...`)
472
+ log.info(` 加载 ${savedTasks.length} 个持久化任务...`)
471
473
 
472
474
  for (const saved of savedTasks) {
473
475
  // 跳过已过期的任务或已清理的任务
474
476
  if (saved.type === 'once' && saved.runCount > 0) {
475
- console.log(`[Scheduler] 跳过已完成的一次性任务: ${saved.name}`)
477
+ log.info(` 跳过已完成的一次性任务: ${saved.name}`)
476
478
  continue
477
479
  }
478
480
 
@@ -486,9 +488,9 @@ class SchedulerPlugin extends Plugin {
486
488
  })
487
489
  this._tasks.set(task.id, task)
488
490
  this._taskStats.total++
489
- console.log(`[Scheduler] 已恢复 Cron 任务: ${task.name}`)
491
+ log.info(` 已恢复 Cron 任务: ${task.name}`)
490
492
  } catch (err) {
491
- console.error(`[Scheduler] 恢复 Cron 任务失败: ${task.name}`, err.message)
493
+ log.error(` 恢复 Cron 任务失败: ${task.name}`, err.message)
492
494
  }
493
495
  }
494
496
  // 重新调度相对时间任务(计算新的执行时间)
@@ -501,7 +503,7 @@ class SchedulerPlugin extends Plugin {
501
503
  }, newDelay)
502
504
  this._tasks.set(task.id, task)
503
505
  this._taskStats.total++
504
- console.log(`[Scheduler] 已恢复一次性任务: ${task.name},将在 ${newDelay}ms 后执行`)
506
+ log.info(` 已恢复一次性任务: ${task.name},将在 ${newDelay}ms 后执行`)
505
507
  }
506
508
  }
507
509
  // 重新调度绝对时间任务
@@ -514,9 +516,9 @@ class SchedulerPlugin extends Plugin {
514
516
  }, delay)
515
517
  this._tasks.set(task.id, task)
516
518
  this._taskStats.total++
517
- console.log(`[Scheduler] 已恢复一次性任务: ${task.name},将在 ${runAt} 执行`)
519
+ log.info(` 已恢复一次性任务: ${task.name},将在 ${runAt} 执行`)
518
520
  } else {
519
- console.log(`[Scheduler] 跳过已过期的任务: ${task.name}`)
521
+ log.info(` 跳过已过期的任务: ${task.name}`)
520
522
  }
521
523
  }
522
524
  }
@@ -541,12 +543,12 @@ class SchedulerPlugin extends Plugin {
541
543
  * 执行任务
542
544
  */
543
545
  async _executeTask(task) {
544
- // console.log(`[Scheduler] Executing task: ${task.name} (${task.id})`)
545
- // console.log(`[Scheduler] Message: ${task.message}`)
546
+ // log.info(` Executing task: ${task.name} (${task.id})`)
547
+ // log.info(` Message: ${task.message}`)
546
548
  // if (task.sessionId) {
547
- // console.log(`[Scheduler] Target session: ${task.sessionId}`)
549
+ // log.info(` Target session: ${task.sessionId}`)
548
550
  // }
549
- // console.log(`[Scheduler] LLM mode: ${task.llm ? 'enabled' : 'disabled'}`)
551
+ // log.info(` LLM mode: ${task.llm ? 'enabled' : 'disabled'}`)
550
552
 
551
553
  task.lastRun = new Date()
552
554
  task.runCount++
@@ -610,7 +612,7 @@ class SchedulerPlugin extends Plugin {
610
612
  return { success: true }
611
613
  } catch (err) {
612
614
  this._taskStats.failed++
613
- console.error(`[Scheduler] Task ${task.name} failed: ${err.message}`)
615
+ log.error(` Task ${task.name} failed: ${err.message}`)
614
616
 
615
617
  // 发送统一的通知事件
616
618
  this._framework.emit('notification', {
@@ -4,6 +4,8 @@
4
4
  */
5
5
 
6
6
  const { Plugin } = require('../src/core/plugin-base')
7
+ const { logger } = require('../src/utils/logger')
8
+ const log = logger.child('Session')
7
9
  const { z } = require('zod')
8
10
  const { EventEmitter } = require('events')
9
11
 
@@ -345,7 +347,7 @@ class SessionPlugin extends Plugin {
345
347
  this._cleanupTimer = setInterval(() => {
346
348
  const cleaned = this.cleanup()
347
349
  if (cleaned > 0) {
348
- console.log(`[SessionPlugin] Cleaned up ${cleaned} expired sessions`)
350
+ log.info(` Cleaned up ${cleaned} expired sessions`)
349
351
  }
350
352
  }, this.config.cleanupInterval)
351
353
  }
@@ -4,6 +4,8 @@
4
4
  */
5
5
 
6
6
  const { Plugin } = require('../src/core/plugin-base')
7
+ const { logger } = require('../src/utils/logger')
8
+ const log = logger.child('Storage')
7
9
  const { z } = require('zod')
8
10
  const fs = require('fs')
9
11
  const path = require('path')
@@ -193,9 +195,9 @@ class StoragePlugin extends Plugin {
193
195
  this._store.set(key, entry)
194
196
  }
195
197
 
196
- console.log(`[Storage] Loaded ${this._store.size} entries from ${this._filePath}`)
198
+ log.info(` Loaded ${this._store.size} entries from ${this._filePath}`)
197
199
  } catch (err) {
198
- console.warn(`[Storage] Failed to load storage file: ${err.message}`)
200
+ log.warn(` Failed to load storage file: ${err.message}`)
199
201
  }
200
202
  }
201
203
  }
@@ -210,7 +212,7 @@ class StoragePlugin extends Plugin {
210
212
  const data = Object.fromEntries(this._store)
211
213
  fs.writeFileSync(this._filePath, JSON.stringify(data, null, 2), 'utf-8')
212
214
  } catch (err) {
213
- console.error(`[Storage] Failed to persist: ${err.message}`)
215
+ log.error(` Failed to persist: ${err.message}`)
214
216
  }
215
217
  }
216
218