@pcircle/memesh 2.6.6 → 2.7.0

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 (430) hide show
  1. package/README.md +116 -54
  2. package/README.zh-TW.md +198 -33
  3. package/dist/a2a/client/A2AClient.d.ts +7 -1
  4. package/dist/a2a/client/A2AClient.d.ts.map +1 -1
  5. package/dist/a2a/client/A2AClient.js +197 -61
  6. package/dist/a2a/client/A2AClient.js.map +1 -1
  7. package/dist/a2a/constants.d.ts +34 -0
  8. package/dist/a2a/constants.d.ts.map +1 -0
  9. package/dist/a2a/constants.js +34 -0
  10. package/dist/a2a/constants.js.map +1 -0
  11. package/dist/a2a/delegator/MCPTaskDelegator.d.ts +19 -0
  12. package/dist/a2a/delegator/MCPTaskDelegator.d.ts.map +1 -0
  13. package/dist/a2a/delegator/MCPTaskDelegator.js +184 -0
  14. package/dist/a2a/delegator/MCPTaskDelegator.js.map +1 -0
  15. package/dist/a2a/delegator/index.d.ts +3 -0
  16. package/dist/a2a/delegator/index.d.ts.map +1 -0
  17. package/dist/a2a/delegator/index.js +2 -0
  18. package/dist/a2a/delegator/index.js.map +1 -0
  19. package/dist/a2a/delegator/types.d.ts +9 -0
  20. package/dist/a2a/delegator/types.d.ts.map +1 -0
  21. package/dist/a2a/delegator/types.js +2 -0
  22. package/dist/a2a/delegator/types.js.map +1 -0
  23. package/dist/a2a/errors/ErrorCodes.d.ts +26 -0
  24. package/dist/a2a/errors/ErrorCodes.d.ts.map +1 -0
  25. package/dist/a2a/errors/ErrorCodes.js +25 -0
  26. package/dist/a2a/errors/ErrorCodes.js.map +1 -0
  27. package/dist/a2a/errors/ErrorMessages.d.ts +28 -0
  28. package/dist/a2a/errors/ErrorMessages.d.ts.map +1 -0
  29. package/dist/a2a/errors/ErrorMessages.js +51 -0
  30. package/dist/a2a/errors/ErrorMessages.js.map +1 -0
  31. package/dist/a2a/errors/index.d.ts +3 -0
  32. package/dist/a2a/errors/index.d.ts.map +1 -0
  33. package/dist/a2a/errors/index.js +3 -0
  34. package/dist/a2a/errors/index.js.map +1 -0
  35. package/dist/a2a/executor/TaskExecutor.d.ts +6 -4
  36. package/dist/a2a/executor/TaskExecutor.d.ts.map +1 -1
  37. package/dist/a2a/executor/TaskExecutor.js +8 -47
  38. package/dist/a2a/executor/TaskExecutor.js.map +1 -1
  39. package/dist/a2a/jobs/TimeoutChecker.d.ts +49 -0
  40. package/dist/a2a/jobs/TimeoutChecker.d.ts.map +1 -0
  41. package/dist/a2a/jobs/TimeoutChecker.js +176 -0
  42. package/dist/a2a/jobs/TimeoutChecker.js.map +1 -0
  43. package/dist/a2a/metrics/A2AMetrics.d.ts +38 -0
  44. package/dist/a2a/metrics/A2AMetrics.d.ts.map +1 -0
  45. package/dist/a2a/metrics/A2AMetrics.js +142 -0
  46. package/dist/a2a/metrics/A2AMetrics.js.map +1 -0
  47. package/dist/a2a/metrics/index.d.ts +3 -0
  48. package/dist/a2a/metrics/index.d.ts.map +1 -0
  49. package/dist/a2a/metrics/index.js +2 -0
  50. package/dist/a2a/metrics/index.js.map +1 -0
  51. package/dist/a2a/server/A2AServer.d.ts +2 -0
  52. package/dist/a2a/server/A2AServer.d.ts.map +1 -1
  53. package/dist/a2a/server/A2AServer.js +48 -8
  54. package/dist/a2a/server/A2AServer.js.map +1 -1
  55. package/dist/a2a/server/middleware/auth.d.ts +6 -0
  56. package/dist/a2a/server/middleware/auth.d.ts.map +1 -0
  57. package/dist/a2a/server/middleware/auth.js +64 -0
  58. package/dist/a2a/server/middleware/auth.js.map +1 -0
  59. package/dist/a2a/server/middleware/csrf.d.ts +7 -0
  60. package/dist/a2a/server/middleware/csrf.d.ts.map +1 -0
  61. package/dist/a2a/server/middleware/csrf.js +169 -0
  62. package/dist/a2a/server/middleware/csrf.js.map +1 -0
  63. package/dist/a2a/server/middleware/rateLimit.d.ts +9 -0
  64. package/dist/a2a/server/middleware/rateLimit.d.ts.map +1 -0
  65. package/dist/a2a/server/middleware/rateLimit.js +192 -0
  66. package/dist/a2a/server/middleware/rateLimit.js.map +1 -0
  67. package/dist/a2a/server/middleware/resourceProtection.d.ts +17 -0
  68. package/dist/a2a/server/middleware/resourceProtection.d.ts.map +1 -0
  69. package/dist/a2a/server/middleware/resourceProtection.js +258 -0
  70. package/dist/a2a/server/middleware/resourceProtection.js.map +1 -0
  71. package/dist/a2a/server/middleware/timeout.d.ts +4 -0
  72. package/dist/a2a/server/middleware/timeout.d.ts.map +1 -0
  73. package/dist/a2a/server/middleware/timeout.js +56 -0
  74. package/dist/a2a/server/middleware/timeout.js.map +1 -0
  75. package/dist/a2a/server/middleware.d.ts.map +1 -1
  76. package/dist/a2a/server/middleware.js +9 -6
  77. package/dist/a2a/server/middleware.js.map +1 -1
  78. package/dist/a2a/server/routes.d.ts +3 -0
  79. package/dist/a2a/server/routes.d.ts.map +1 -1
  80. package/dist/a2a/server/routes.js +24 -7
  81. package/dist/a2a/server/routes.js.map +1 -1
  82. package/dist/a2a/server/validation/index.d.ts +2 -0
  83. package/dist/a2a/server/validation/index.d.ts.map +1 -0
  84. package/dist/a2a/server/validation/index.js +2 -0
  85. package/dist/a2a/server/validation/index.js.map +1 -0
  86. package/dist/a2a/server/validation/sendMessageSchema.d.ts +112 -0
  87. package/dist/a2a/server/validation/sendMessageSchema.d.ts.map +1 -0
  88. package/dist/a2a/server/validation/sendMessageSchema.js +143 -0
  89. package/dist/a2a/server/validation/sendMessageSchema.js.map +1 -0
  90. package/dist/a2a/storage/AgentRegistry.d.ts +7 -0
  91. package/dist/a2a/storage/AgentRegistry.d.ts.map +1 -1
  92. package/dist/a2a/storage/AgentRegistry.js +95 -38
  93. package/dist/a2a/storage/AgentRegistry.js.map +1 -1
  94. package/dist/a2a/storage/TaskQueue.d.ts +3 -0
  95. package/dist/a2a/storage/TaskQueue.d.ts.map +1 -1
  96. package/dist/a2a/storage/TaskQueue.js +80 -18
  97. package/dist/a2a/storage/TaskQueue.js.map +1 -1
  98. package/dist/a2a/storage/inputValidation.d.ts +18 -0
  99. package/dist/a2a/storage/inputValidation.d.ts.map +1 -0
  100. package/dist/a2a/storage/inputValidation.js +101 -0
  101. package/dist/a2a/storage/inputValidation.js.map +1 -0
  102. package/dist/a2a/storage/schemas.sql +11 -1
  103. package/dist/a2a/types/index.d.ts +1 -0
  104. package/dist/a2a/types/index.d.ts.map +1 -1
  105. package/dist/a2a/types/rateLimit.d.ts +26 -0
  106. package/dist/a2a/types/rateLimit.d.ts.map +1 -0
  107. package/dist/a2a/types/rateLimit.js +2 -0
  108. package/dist/a2a/types/rateLimit.js.map +1 -0
  109. package/dist/a2a/types/task.d.ts +1 -1
  110. package/dist/a2a/types/task.d.ts.map +1 -1
  111. package/dist/agents/E2EHealingAgent.js +1 -1
  112. package/dist/agents/E2EHealingAgent.js.map +1 -1
  113. package/dist/agents/knowledge/storage/KnowledgeGraphStore.d.ts.map +1 -1
  114. package/dist/agents/knowledge/storage/KnowledgeGraphStore.js +5 -3
  115. package/dist/agents/knowledge/storage/KnowledgeGraphStore.js.map +1 -1
  116. package/dist/cli/config.d.ts +36 -0
  117. package/dist/cli/config.d.ts.map +1 -0
  118. package/dist/cli/config.js +398 -0
  119. package/dist/cli/config.js.map +1 -0
  120. package/dist/cli/daemon.d.ts +3 -0
  121. package/dist/cli/daemon.d.ts.map +1 -0
  122. package/dist/cli/daemon.js +413 -0
  123. package/dist/cli/daemon.js.map +1 -0
  124. package/dist/cli/dashboard.d.ts +2 -0
  125. package/dist/cli/dashboard.d.ts.map +1 -0
  126. package/dist/cli/dashboard.js +300 -0
  127. package/dist/cli/dashboard.js.map +1 -0
  128. package/dist/cli/index.d.ts +3 -0
  129. package/dist/cli/index.d.ts.map +1 -0
  130. package/dist/cli/index.js +182 -0
  131. package/dist/cli/index.js.map +1 -0
  132. package/dist/cli/setup-wizard.d.ts +18 -0
  133. package/dist/cli/setup-wizard.d.ts.map +1 -0
  134. package/dist/cli/setup-wizard.js +308 -0
  135. package/dist/cli/setup-wizard.js.map +1 -0
  136. package/dist/cli/stats.d.ts +34 -0
  137. package/dist/cli/stats.d.ts.map +1 -0
  138. package/dist/cli/stats.js +479 -0
  139. package/dist/cli/stats.js.map +1 -0
  140. package/dist/cli/tutorial.d.ts +27 -0
  141. package/dist/cli/tutorial.d.ts.map +1 -0
  142. package/dist/cli/tutorial.js +430 -0
  143. package/dist/cli/tutorial.js.map +1 -0
  144. package/dist/config/index.d.ts.map +1 -1
  145. package/dist/config/index.js +8 -7
  146. package/dist/config/index.js.map +1 -1
  147. package/dist/config/simple-config.js.map +1 -1
  148. package/dist/core/BackgroundExecutor.d.ts +6 -0
  149. package/dist/core/BackgroundExecutor.d.ts.map +1 -1
  150. package/dist/core/BackgroundExecutor.js +152 -44
  151. package/dist/core/BackgroundExecutor.js.map +1 -1
  152. package/dist/core/ClaudeMdRuleExtractor.d.ts.map +1 -1
  153. package/dist/core/ClaudeMdRuleExtractor.js +9 -14
  154. package/dist/core/ClaudeMdRuleExtractor.js.map +1 -1
  155. package/dist/core/MistakePatternManager.d.ts.map +1 -1
  156. package/dist/core/MistakePatternManager.js +29 -3
  157. package/dist/core/MistakePatternManager.js.map +1 -1
  158. package/dist/core/ResourceMonitor.d.ts.map +1 -1
  159. package/dist/core/ResourceMonitor.js +64 -2
  160. package/dist/core/ResourceMonitor.js.map +1 -1
  161. package/dist/core/ResultHandler.d.ts.map +1 -1
  162. package/dist/core/ResultHandler.js +12 -0
  163. package/dist/core/ResultHandler.js.map +1 -1
  164. package/dist/core/SessionContextMonitor.d.ts.map +1 -1
  165. package/dist/core/SessionContextMonitor.js +4 -1
  166. package/dist/core/SessionContextMonitor.js.map +1 -1
  167. package/dist/core/SessionTokenTracker.d.ts.map +1 -1
  168. package/dist/core/SessionTokenTracker.js +58 -2
  169. package/dist/core/SessionTokenTracker.js.map +1 -1
  170. package/dist/db/ConnectionPool.d.ts.map +1 -1
  171. package/dist/db/ConnectionPool.js +111 -37
  172. package/dist/db/ConnectionPool.js.map +1 -1
  173. package/dist/db/QueryCache.d.ts.map +1 -1
  174. package/dist/db/QueryCache.js +8 -5
  175. package/dist/db/QueryCache.js.map +1 -1
  176. package/dist/errors/ErrorClassifier.d.ts +60 -0
  177. package/dist/errors/ErrorClassifier.d.ts.map +1 -0
  178. package/dist/errors/ErrorClassifier.js +443 -0
  179. package/dist/errors/ErrorClassifier.js.map +1 -0
  180. package/dist/errors/index.d.ts +1 -0
  181. package/dist/errors/index.d.ts.map +1 -1
  182. package/dist/errors/index.js +3 -0
  183. package/dist/errors/index.js.map +1 -1
  184. package/dist/evolution/ABTestManager.d.ts.map +1 -1
  185. package/dist/evolution/ABTestManager.js +80 -1
  186. package/dist/evolution/ABTestManager.js.map +1 -1
  187. package/dist/evolution/EvolutionBootstrap.d.ts.map +1 -1
  188. package/dist/evolution/EvolutionBootstrap.js +4 -4
  189. package/dist/evolution/EvolutionBootstrap.js.map +1 -1
  190. package/dist/evolution/FeedbackCollector.d.ts.map +1 -1
  191. package/dist/evolution/FeedbackCollector.js +6 -0
  192. package/dist/evolution/FeedbackCollector.js.map +1 -1
  193. package/dist/evolution/LearningManager.d.ts.map +1 -1
  194. package/dist/evolution/LearningManager.js +16 -0
  195. package/dist/evolution/LearningManager.js.map +1 -1
  196. package/dist/evolution/MultiObjectiveOptimizer.d.ts.map +1 -1
  197. package/dist/evolution/MultiObjectiveOptimizer.js +18 -3
  198. package/dist/evolution/MultiObjectiveOptimizer.js.map +1 -1
  199. package/dist/evolution/PerformanceTracker.d.ts.map +1 -1
  200. package/dist/evolution/PerformanceTracker.js +83 -13
  201. package/dist/evolution/PerformanceTracker.js.map +1 -1
  202. package/dist/evolution/StatisticalAnalyzer.d.ts +1 -0
  203. package/dist/evolution/StatisticalAnalyzer.d.ts.map +1 -1
  204. package/dist/evolution/StatisticalAnalyzer.js +126 -9
  205. package/dist/evolution/StatisticalAnalyzer.js.map +1 -1
  206. package/dist/evolution/instrumentation/withEvolutionTracking.d.ts.map +1 -1
  207. package/dist/evolution/instrumentation/withEvolutionTracking.js +0 -2
  208. package/dist/evolution/instrumentation/withEvolutionTracking.js.map +1 -1
  209. package/dist/evolution/storage/SQLiteStore.d.ts +1 -0
  210. package/dist/evolution/storage/SQLiteStore.d.ts.map +1 -1
  211. package/dist/evolution/storage/SQLiteStore.js +59 -12
  212. package/dist/evolution/storage/SQLiteStore.js.map +1 -1
  213. package/dist/evolution/storage/validation.d.ts +2 -3
  214. package/dist/evolution/storage/validation.d.ts.map +1 -1
  215. package/dist/evolution/storage/validation.js +2 -6
  216. package/dist/evolution/storage/validation.js.map +1 -1
  217. package/dist/hooks/a2a-collaboration.d.ts +30 -0
  218. package/dist/hooks/a2a-collaboration.d.ts.map +1 -0
  219. package/dist/hooks/a2a-collaboration.js +400 -0
  220. package/dist/hooks/a2a-collaboration.js.map +1 -0
  221. package/dist/knowledge-graph/index.d.ts +7 -1
  222. package/dist/knowledge-graph/index.d.ts.map +1 -1
  223. package/dist/knowledge-graph/index.js +335 -52
  224. package/dist/knowledge-graph/index.js.map +1 -1
  225. package/dist/knowledge-graph/types.d.ts +1 -0
  226. package/dist/knowledge-graph/types.d.ts.map +1 -1
  227. package/dist/management/UninstallManager.d.ts.map +1 -1
  228. package/dist/management/UninstallManager.js.map +1 -1
  229. package/dist/mcp/BuddyCommands.d.ts +15 -2
  230. package/dist/mcp/BuddyCommands.d.ts.map +1 -1
  231. package/dist/mcp/BuddyCommands.js +635 -52
  232. package/dist/mcp/BuddyCommands.js.map +1 -1
  233. package/dist/mcp/ServerInitializer.d.ts +7 -1
  234. package/dist/mcp/ServerInitializer.d.ts.map +1 -1
  235. package/dist/mcp/ServerInitializer.js +121 -69
  236. package/dist/mcp/ServerInitializer.js.map +1 -1
  237. package/dist/mcp/ToolDefinitions.d.ts.map +1 -1
  238. package/dist/mcp/ToolDefinitions.js +109 -18
  239. package/dist/mcp/ToolDefinitions.js.map +1 -1
  240. package/dist/mcp/ToolRouter.d.ts +6 -0
  241. package/dist/mcp/ToolRouter.d.ts.map +1 -1
  242. package/dist/mcp/ToolRouter.js +90 -2
  243. package/dist/mcp/ToolRouter.js.map +1 -1
  244. package/dist/mcp/daemon/DaemonBootstrap.d.ts +33 -0
  245. package/dist/mcp/daemon/DaemonBootstrap.d.ts.map +1 -0
  246. package/dist/mcp/daemon/DaemonBootstrap.js +155 -0
  247. package/dist/mcp/daemon/DaemonBootstrap.js.map +1 -0
  248. package/dist/mcp/daemon/DaemonLockManager.d.ts +47 -0
  249. package/dist/mcp/daemon/DaemonLockManager.d.ts.map +1 -0
  250. package/dist/mcp/daemon/DaemonLockManager.js +417 -0
  251. package/dist/mcp/daemon/DaemonLockManager.js.map +1 -0
  252. package/dist/mcp/daemon/DaemonProtocol.d.ts +127 -0
  253. package/dist/mcp/daemon/DaemonProtocol.d.ts.map +1 -0
  254. package/dist/mcp/daemon/DaemonProtocol.js +452 -0
  255. package/dist/mcp/daemon/DaemonProtocol.js.map +1 -0
  256. package/dist/mcp/daemon/DaemonSocketServer.d.ts +71 -0
  257. package/dist/mcp/daemon/DaemonSocketServer.d.ts.map +1 -0
  258. package/dist/mcp/daemon/DaemonSocketServer.js +384 -0
  259. package/dist/mcp/daemon/DaemonSocketServer.js.map +1 -0
  260. package/dist/mcp/daemon/GracefulShutdownCoordinator.d.ts +67 -0
  261. package/dist/mcp/daemon/GracefulShutdownCoordinator.d.ts.map +1 -0
  262. package/dist/mcp/daemon/GracefulShutdownCoordinator.js +206 -0
  263. package/dist/mcp/daemon/GracefulShutdownCoordinator.js.map +1 -0
  264. package/dist/mcp/daemon/IpcTransport.d.ts +42 -0
  265. package/dist/mcp/daemon/IpcTransport.d.ts.map +1 -0
  266. package/dist/mcp/daemon/IpcTransport.js +231 -0
  267. package/dist/mcp/daemon/IpcTransport.js.map +1 -0
  268. package/dist/mcp/daemon/StdioProxyClient.d.ts +84 -0
  269. package/dist/mcp/daemon/StdioProxyClient.d.ts.map +1 -0
  270. package/dist/mcp/daemon/StdioProxyClient.js +560 -0
  271. package/dist/mcp/daemon/StdioProxyClient.js.map +1 -0
  272. package/dist/mcp/daemon/VersionManager.d.ts +35 -0
  273. package/dist/mcp/daemon/VersionManager.d.ts.map +1 -0
  274. package/dist/mcp/daemon/VersionManager.js +169 -0
  275. package/dist/mcp/daemon/VersionManager.js.map +1 -0
  276. package/dist/mcp/daemon/index.d.ts +9 -0
  277. package/dist/mcp/daemon/index.d.ts.map +1 -0
  278. package/dist/mcp/daemon/index.js +9 -0
  279. package/dist/mcp/daemon/index.js.map +1 -0
  280. package/dist/mcp/handlers/A2AToolHandlers.d.ts.map +1 -1
  281. package/dist/mcp/handlers/A2AToolHandlers.js +24 -4
  282. package/dist/mcp/handlers/A2AToolHandlers.js.map +1 -1
  283. package/dist/mcp/handlers/ToolHandlers.d.ts.map +1 -1
  284. package/dist/mcp/handlers/ToolHandlers.js.map +1 -1
  285. package/dist/mcp/resources/best-practices.md +1 -1
  286. package/dist/mcp/resources/buddy-do-skill.md +1 -1
  287. package/dist/mcp/resources/examples.md +1 -1
  288. package/dist/mcp/resources/quick-reference.md +1 -1
  289. package/dist/mcp/resources/usage-guide.md +2 -2
  290. package/dist/mcp/schemas/OutputSchemas.d.ts +16 -0
  291. package/dist/mcp/schemas/OutputSchemas.d.ts.map +1 -1
  292. package/dist/mcp/schemas/OutputSchemas.js +12 -0
  293. package/dist/mcp/schemas/OutputSchemas.js.map +1 -1
  294. package/dist/mcp/server-bootstrap.js +245 -29
  295. package/dist/mcp/server-bootstrap.js.map +1 -1
  296. package/dist/mcp/server.d.ts +11 -1
  297. package/dist/mcp/server.d.ts.map +1 -1
  298. package/dist/mcp/server.js +196 -9
  299. package/dist/mcp/server.js.map +1 -1
  300. package/dist/mcp/tools/a2a-list-tasks.d.ts +13 -0
  301. package/dist/mcp/tools/a2a-list-tasks.d.ts.map +1 -0
  302. package/dist/mcp/tools/a2a-list-tasks.js +24 -0
  303. package/dist/mcp/tools/a2a-list-tasks.js.map +1 -0
  304. package/dist/mcp/tools/a2a-report-result.d.ts +35 -0
  305. package/dist/mcp/tools/a2a-report-result.d.ts.map +1 -0
  306. package/dist/mcp/tools/a2a-report-result.js +73 -0
  307. package/dist/mcp/tools/a2a-report-result.js.map +1 -0
  308. package/dist/mcp/tools/buddy-do.d.ts.map +1 -1
  309. package/dist/mcp/tools/buddy-do.js +10 -2
  310. package/dist/mcp/tools/buddy-do.js.map +1 -1
  311. package/dist/mcp/tools/buddy-help.d.ts.map +1 -1
  312. package/dist/mcp/tools/buddy-help.js +6 -14
  313. package/dist/mcp/tools/buddy-help.js.map +1 -1
  314. package/dist/mcp/validation.d.ts +1 -1
  315. package/dist/memory/AutoMemoryRecorder.d.ts +35 -0
  316. package/dist/memory/AutoMemoryRecorder.d.ts.map +1 -0
  317. package/dist/memory/AutoMemoryRecorder.js +164 -0
  318. package/dist/memory/AutoMemoryRecorder.js.map +1 -0
  319. package/dist/memory/AutoTagger.d.ts +9 -0
  320. package/dist/memory/AutoTagger.d.ts.map +1 -0
  321. package/dist/memory/AutoTagger.js +149 -0
  322. package/dist/memory/AutoTagger.js.map +1 -0
  323. package/dist/memory/MistakePatternEngine.d.ts.map +1 -1
  324. package/dist/memory/MistakePatternEngine.js.map +1 -1
  325. package/dist/memory/ProjectMemoryCleanup.js +1 -1
  326. package/dist/memory/SecretManager.d.ts.map +1 -1
  327. package/dist/memory/SecretManager.js +48 -15
  328. package/dist/memory/SecretManager.js.map +1 -1
  329. package/dist/memory/SmartMemoryQuery.d.ts +9 -0
  330. package/dist/memory/SmartMemoryQuery.d.ts.map +1 -0
  331. package/dist/memory/SmartMemoryQuery.js +65 -0
  332. package/dist/memory/SmartMemoryQuery.js.map +1 -0
  333. package/dist/memory/UnifiedMemoryStore.d.ts +1 -0
  334. package/dist/memory/UnifiedMemoryStore.d.ts.map +1 -1
  335. package/dist/memory/UnifiedMemoryStore.js +211 -38
  336. package/dist/memory/UnifiedMemoryStore.js.map +1 -1
  337. package/dist/memory/UserPreferenceEngine.d.ts.map +1 -1
  338. package/dist/memory/UserPreferenceEngine.js +6 -5
  339. package/dist/memory/UserPreferenceEngine.js.map +1 -1
  340. package/dist/memory/types/unified-memory.d.ts +2 -0
  341. package/dist/memory/types/unified-memory.d.ts.map +1 -1
  342. package/dist/memory/types/unified-memory.js +2 -0
  343. package/dist/memory/types/unified-memory.js.map +1 -1
  344. package/dist/orchestrator/AgentRouter.d.ts.map +1 -1
  345. package/dist/orchestrator/AgentRouter.js +5 -4
  346. package/dist/orchestrator/AgentRouter.js.map +1 -1
  347. package/dist/orchestrator/CostTracker.d.ts.map +1 -1
  348. package/dist/orchestrator/CostTracker.js.map +1 -1
  349. package/dist/orchestrator/GlobalResourcePool.d.ts.map +1 -1
  350. package/dist/orchestrator/GlobalResourcePool.js +70 -3
  351. package/dist/orchestrator/GlobalResourcePool.js.map +1 -1
  352. package/dist/ui/AsciiProgressBar.d.ts.map +1 -1
  353. package/dist/ui/AsciiProgressBar.js +0 -1
  354. package/dist/ui/AsciiProgressBar.js.map +1 -1
  355. package/dist/ui/AttributionManager.js +2 -2
  356. package/dist/ui/AttributionManager.js.map +1 -1
  357. package/dist/ui/Dashboard.d.ts.map +1 -1
  358. package/dist/ui/Dashboard.js +2 -2
  359. package/dist/ui/Dashboard.js.map +1 -1
  360. package/dist/ui/MetricsStore.d.ts.map +1 -1
  361. package/dist/ui/MetricsStore.js +2 -2
  362. package/dist/ui/MetricsStore.js.map +1 -1
  363. package/dist/ui/ProgressIndicator.d.ts +35 -0
  364. package/dist/ui/ProgressIndicator.d.ts.map +1 -0
  365. package/dist/ui/ProgressIndicator.js +177 -0
  366. package/dist/ui/ProgressIndicator.js.map +1 -0
  367. package/dist/ui/ResponseFormatter.d.ts +8 -0
  368. package/dist/ui/ResponseFormatter.d.ts.map +1 -1
  369. package/dist/ui/ResponseFormatter.js +220 -35
  370. package/dist/ui/ResponseFormatter.js.map +1 -1
  371. package/dist/ui/design-tokens.d.ts +37 -0
  372. package/dist/ui/design-tokens.d.ts.map +1 -0
  373. package/dist/ui/design-tokens.js +105 -0
  374. package/dist/ui/design-tokens.js.map +1 -0
  375. package/dist/ui/theme.d.ts +14 -4
  376. package/dist/ui/theme.d.ts.map +1 -1
  377. package/dist/ui/theme.js +7 -2
  378. package/dist/ui/theme.js.map +1 -1
  379. package/dist/utils/PathResolver.d.ts.map +1 -1
  380. package/dist/utils/PathResolver.js +3 -2
  381. package/dist/utils/PathResolver.js.map +1 -1
  382. package/dist/utils/SystemResources.d.ts.map +1 -1
  383. package/dist/utils/SystemResources.js +9 -14
  384. package/dist/utils/SystemResources.js.map +1 -1
  385. package/dist/utils/errorHandler.d.ts +6 -0
  386. package/dist/utils/errorHandler.d.ts.map +1 -1
  387. package/dist/utils/errorHandler.js +50 -1
  388. package/dist/utils/errorHandler.js.map +1 -1
  389. package/dist/utils/index.d.ts +19 -0
  390. package/dist/utils/index.d.ts.map +1 -0
  391. package/dist/utils/index.js +17 -0
  392. package/dist/utils/index.js.map +1 -0
  393. package/dist/utils/json.d.ts.map +1 -1
  394. package/dist/utils/json.js +11 -1
  395. package/dist/utils/json.js.map +1 -1
  396. package/dist/utils/logger.d.ts.map +1 -1
  397. package/dist/utils/logger.js +65 -3
  398. package/dist/utils/logger.js.map +1 -1
  399. package/dist/utils/lru-cache.d.ts +7 -0
  400. package/dist/utils/lru-cache.d.ts.map +1 -1
  401. package/dist/utils/lru-cache.js +37 -7
  402. package/dist/utils/lru-cache.js.map +1 -1
  403. package/dist/utils/safeMath.d.ts +11 -0
  404. package/dist/utils/safeMath.d.ts.map +1 -0
  405. package/dist/utils/safeMath.js +92 -0
  406. package/dist/utils/safeMath.js.map +1 -0
  407. package/dist/utils/toonify-adapter.d.ts.map +1 -1
  408. package/dist/utils/toonify-adapter.js.map +1 -1
  409. package/dist/utils/tracing/TraceContext.d.ts +23 -0
  410. package/dist/utils/tracing/TraceContext.d.ts.map +1 -0
  411. package/dist/utils/tracing/TraceContext.js +127 -0
  412. package/dist/utils/tracing/TraceContext.js.map +1 -0
  413. package/dist/utils/tracing/index.d.ts +3 -0
  414. package/dist/utils/tracing/index.d.ts.map +1 -0
  415. package/dist/utils/tracing/index.js +3 -0
  416. package/dist/utils/tracing/index.js.map +1 -0
  417. package/dist/utils/tracing/middleware.d.ts +15 -0
  418. package/dist/utils/tracing/middleware.d.ts.map +1 -0
  419. package/dist/utils/tracing/middleware.js +49 -0
  420. package/dist/utils/tracing/middleware.js.map +1 -0
  421. package/dist/utils/validation.d.ts +12 -0
  422. package/dist/utils/validation.d.ts.map +1 -0
  423. package/dist/utils/validation.js +87 -0
  424. package/dist/utils/validation.js.map +1 -0
  425. package/mcp.json +10 -0
  426. package/package.json +10 -2
  427. package/plugin.json +2 -12
  428. package/scripts/postinstall.js +192 -21
  429. package/README.md.backup +0 -536
  430. package/README.zh-TW.md.backup +0 -446
@@ -0,0 +1,177 @@
1
+ import ora from 'ora';
2
+ import chalk from 'chalk';
3
+ export class ProgressIndicator {
4
+ spinner = null;
5
+ steps = [];
6
+ currentStepIndex = 0;
7
+ startTime = 0;
8
+ options;
9
+ constructor(options = {}) {
10
+ this.options = {
11
+ showElapsed: true,
12
+ showEstimate: true,
13
+ spinner: 'dots',
14
+ ...options,
15
+ };
16
+ }
17
+ start(steps) {
18
+ this.steps = steps.map((name) => ({
19
+ name,
20
+ status: 'pending',
21
+ }));
22
+ this.currentStepIndex = 0;
23
+ this.startTime = Date.now();
24
+ if (this.steps.length > 0) {
25
+ this.steps[0].status = 'in_progress';
26
+ }
27
+ this.updateSpinner();
28
+ }
29
+ nextStep() {
30
+ if (this.currentStepIndex < this.steps.length) {
31
+ this.steps[this.currentStepIndex].status = 'completed';
32
+ this.currentStepIndex++;
33
+ if (this.currentStepIndex < this.steps.length) {
34
+ this.steps[this.currentStepIndex].status = 'in_progress';
35
+ this.updateSpinner();
36
+ }
37
+ }
38
+ }
39
+ fail(error) {
40
+ if (this.currentStepIndex < this.steps.length) {
41
+ this.steps[this.currentStepIndex].status = 'failed';
42
+ }
43
+ if (this.spinner) {
44
+ this.spinner.fail(chalk.red(error || 'Task failed'));
45
+ this.spinner = null;
46
+ }
47
+ }
48
+ complete(message) {
49
+ for (let i = this.currentStepIndex; i < this.steps.length; i++) {
50
+ this.steps[i].status = 'completed';
51
+ }
52
+ if (this.spinner) {
53
+ const elapsed = this.formatElapsedTime();
54
+ const successMessage = message || 'Complete!';
55
+ this.spinner.succeed(chalk.green(`${successMessage} ${elapsed}`));
56
+ this.spinner = null;
57
+ }
58
+ }
59
+ stop() {
60
+ if (this.spinner) {
61
+ this.spinner.stop();
62
+ this.spinner = null;
63
+ }
64
+ }
65
+ updateSpinner() {
66
+ const currentStep = this.steps[this.currentStepIndex];
67
+ if (!currentStep)
68
+ return;
69
+ const stepText = this.formatStepText();
70
+ const timeText = this.formatTimeText();
71
+ const text = `${stepText}${timeText}`;
72
+ if (this.spinner) {
73
+ this.spinner.text = text;
74
+ }
75
+ else {
76
+ this.spinner = ora({
77
+ text,
78
+ spinner: this.options.spinner,
79
+ }).start();
80
+ }
81
+ }
82
+ formatStepText() {
83
+ const lines = [];
84
+ for (let i = 0; i < this.steps.length; i++) {
85
+ const step = this.steps[i];
86
+ let icon;
87
+ let color;
88
+ switch (step.status) {
89
+ case 'completed':
90
+ icon = '✓';
91
+ color = chalk.green;
92
+ break;
93
+ case 'in_progress':
94
+ icon = '◐';
95
+ color = chalk.cyan;
96
+ break;
97
+ case 'failed':
98
+ icon = '✗';
99
+ color = chalk.red;
100
+ break;
101
+ default:
102
+ icon = '○';
103
+ color = chalk.dim;
104
+ }
105
+ lines.push(`${color(icon)} ${step.name}`);
106
+ }
107
+ const progress = `(${this.currentStepIndex + 1}/${this.steps.length})`;
108
+ return `${chalk.cyan(progress)} ${lines[this.currentStepIndex]}`;
109
+ }
110
+ formatTimeText() {
111
+ const parts = [];
112
+ if (this.options.showElapsed) {
113
+ const elapsed = this.formatElapsedTime();
114
+ parts.push(chalk.dim(elapsed));
115
+ }
116
+ if (this.options.showEstimate && this.currentStepIndex > 0) {
117
+ const estimated = this.estimateCompletion();
118
+ if (estimated) {
119
+ parts.push(chalk.dim(`Est: ${estimated}`));
120
+ }
121
+ }
122
+ return parts.length > 0 ? ` │ ${parts.join(' │ ')}` : '';
123
+ }
124
+ formatElapsedTime() {
125
+ const elapsed = Date.now() - this.startTime;
126
+ const seconds = Math.floor(elapsed / 1000);
127
+ const ms = elapsed % 1000;
128
+ if (seconds > 60) {
129
+ const minutes = Math.floor(seconds / 60);
130
+ const remainingSeconds = seconds % 60;
131
+ return `${minutes}m ${remainingSeconds}s`;
132
+ }
133
+ else if (seconds > 0) {
134
+ return `${seconds}s`;
135
+ }
136
+ else {
137
+ return `${ms}ms`;
138
+ }
139
+ }
140
+ estimateCompletion() {
141
+ if (this.currentStepIndex === 0)
142
+ return null;
143
+ const elapsed = Date.now() - this.startTime;
144
+ const avgTimePerStep = elapsed / this.currentStepIndex;
145
+ const remainingSteps = this.steps.length - this.currentStepIndex;
146
+ const estimatedRemaining = avgTimePerStep * remainingSteps;
147
+ const seconds = Math.floor(estimatedRemaining / 1000);
148
+ if (seconds < 1)
149
+ return null;
150
+ if (seconds > 60) {
151
+ const minutes = Math.floor(seconds / 60);
152
+ return `~${minutes}m`;
153
+ }
154
+ else {
155
+ return `~${seconds}s`;
156
+ }
157
+ }
158
+ static simple(message, spinner = 'dots') {
159
+ return ora({
160
+ text: chalk.cyan(message),
161
+ spinner,
162
+ }).start();
163
+ }
164
+ static success(message) {
165
+ ora().succeed(chalk.green(message));
166
+ }
167
+ static error(message) {
168
+ ora().fail(chalk.red(message));
169
+ }
170
+ static warn(message) {
171
+ ora().warn(chalk.yellow(message));
172
+ }
173
+ static info(message) {
174
+ ora().info(chalk.cyan(message));
175
+ }
176
+ }
177
+ //# sourceMappingURL=ProgressIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressIndicator.js","sourceRoot":"","sources":["../../src/ui/ProgressIndicator.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,8 @@ export declare class ResponseFormatter {
21
21
  private readonly MAX_PROMPT_LENGTH;
22
22
  private readonly MAX_STACK_LENGTH;
23
23
  private readonly LARGE_RESULT_THRESHOLD;
24
+ private readonly errorClassifier;
25
+ constructor();
24
26
  format(response: AgentResponse): string;
25
27
  private detectComplexity;
26
28
  private formatSimple;
@@ -28,13 +30,19 @@ export declare class ResponseFormatter {
28
30
  private formatComplex;
29
31
  private resultsToString;
30
32
  private shouldShowAttribution;
33
+ private formatMinimalHeader;
34
+ private getResultSummary;
31
35
  private formatHeader;
32
36
  private formatTaskDescription;
37
+ private formatSection;
38
+ private formatDivider;
39
+ private generateNextSteps;
33
40
  private formatEnhancedPrompt;
34
41
  private extractGuardrails;
35
42
  private stripGuardrails;
36
43
  private formatResults;
37
44
  private formatError;
45
+ private getSeverityBadge;
38
46
  private formatMetadata;
39
47
  private formatAttribution;
40
48
  private formatArray;
@@ -1 +1 @@
1
- {"version":3,"file":"ResponseFormatter.d.ts","sourceRoot":"","sources":["../../src/ui/ResponseFormatter.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5D,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAMD,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAOD,qBAAa,iBAAiB;IAE5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAO;IACzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAO;IACxC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAO;IAO9C,MAAM,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM;IAsBvC,OAAO,CAAC,gBAAgB;IAmCxB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,YAAY;IAsCpB,OAAO,CAAC,aAAa;IAoErB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,cAAc;IAuBtB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,WAAW;IA+BnB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,YAAY;CAGrB"}
1
+ {"version":3,"file":"ResponseFormatter.d.ts","sourceRoot":"","sources":["../../src/ui/ResponseFormatter.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5D,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAMD,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAOD,qBAAa,iBAAiB;IAE5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAO;IACzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAO;IACxC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAO;IAG9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;;IAWlD,MAAM,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM;IAsBvC,OAAO,CAAC,gBAAgB;IAmCxB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,YAAY;IAiDpB,OAAO,CAAC,aAAa;IA4FrB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,gBAAgB;IAgDxB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,iBAAiB;IAkDzB,OAAO,CAAC,oBAAoB;IAoC5B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,WAAW;IA6FnB,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,cAAc;IAuBtB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,WAAW;IA+BnB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,YAAY;CAGrB"}
@@ -1,11 +1,16 @@
1
1
  import chalk from 'chalk';
2
- import boxen from 'boxen';
3
2
  import Table from 'cli-table3';
4
3
  import { icons } from './theme.js';
4
+ import { ErrorClassifier } from '../errors/ErrorClassifier.js';
5
+ import { getOperationDisplayName } from './design-tokens.js';
5
6
  export class ResponseFormatter {
6
7
  MAX_PROMPT_LENGTH = 300;
7
8
  MAX_STACK_LENGTH = 500;
8
9
  LARGE_RESULT_THRESHOLD = 500;
10
+ errorClassifier;
11
+ constructor() {
12
+ this.errorClassifier = new ErrorClassifier();
13
+ }
9
14
  format(response) {
10
15
  const complexity = this.detectComplexity(response);
11
16
  switch (complexity) {
@@ -20,7 +25,7 @@ export class ResponseFormatter {
20
25
  }
21
26
  }
22
27
  detectComplexity(response) {
23
- if (response.error) {
28
+ if (response.status === 'error') {
24
29
  return 'complex';
25
30
  }
26
31
  if (response.enhancedPrompt) {
@@ -38,13 +43,12 @@ export class ResponseFormatter {
38
43
  return 'simple';
39
44
  }
40
45
  formatSimple(response) {
41
- const statusIcon = this.getStatusIcon(response.status);
42
- return `${statusIcon} ${response.taskDescription}`;
46
+ return this.formatMinimalHeader(response);
43
47
  }
44
48
  formatMedium(response) {
45
49
  const sections = [];
46
- const statusIcon = this.getStatusIcon(response.status);
47
- sections.push(chalk.bold(`${statusIcon} ${response.taskDescription}`));
50
+ sections.push(this.formatMinimalHeader(response));
51
+ sections.push(this.formatDivider());
48
52
  if (response.results && response.status === 'success') {
49
53
  try {
50
54
  sections.push('');
@@ -54,6 +58,15 @@ export class ResponseFormatter {
54
58
  sections.push(chalk.green('Results: [Error formatting results]'));
55
59
  }
56
60
  }
61
+ const nextSteps = this.generateNextSteps(response);
62
+ if (nextSteps) {
63
+ try {
64
+ sections.push('');
65
+ sections.push(nextSteps);
66
+ }
67
+ catch (error) {
68
+ }
69
+ }
57
70
  if (response.metadata) {
58
71
  try {
59
72
  const metadataStr = this.formatMetadata(response.metadata);
@@ -76,13 +89,14 @@ export class ResponseFormatter {
76
89
  sections.push(chalk.red('[Error formatting header]'));
77
90
  }
78
91
  try {
79
- sections.push(this.formatTaskDescription(response.taskDescription));
92
+ sections.push(this.formatSection(icons.task || '📋', 'Task', response.taskDescription));
80
93
  }
81
94
  catch (error) {
82
95
  sections.push(chalk.gray('Task: [Error formatting description]'));
83
96
  }
84
97
  if (response.enhancedPrompt) {
85
98
  try {
99
+ sections.push(this.formatDivider());
86
100
  sections.push(this.formatEnhancedPrompt(response.enhancedPrompt));
87
101
  }
88
102
  catch (error) {
@@ -91,23 +105,39 @@ export class ResponseFormatter {
91
105
  }
92
106
  if (response.results && response.status === 'success') {
93
107
  try {
108
+ sections.push(this.formatDivider());
94
109
  sections.push(this.formatResults(response.results));
95
110
  }
96
111
  catch (error) {
97
112
  sections.push(chalk.green('Results: [Error formatting results]'));
98
113
  }
99
114
  }
100
- if (response.error && response.status === 'error') {
115
+ if (response.status === 'error') {
101
116
  try {
102
- sections.push(this.formatError(response.error));
117
+ sections.push(this.formatDivider());
118
+ const errorToFormat = response.error || new Error('Unknown error occurred');
119
+ sections.push(this.formatError(errorToFormat));
103
120
  }
104
121
  catch (error) {
105
122
  sections.push(chalk.red('[Error formatting error details]'));
106
123
  }
107
124
  }
125
+ const nextSteps = this.generateNextSteps(response);
126
+ if (nextSteps) {
127
+ try {
128
+ sections.push(this.formatDivider());
129
+ sections.push(nextSteps);
130
+ }
131
+ catch (error) {
132
+ }
133
+ }
108
134
  if (response.metadata) {
109
135
  try {
110
- sections.push(this.formatMetadata(response.metadata));
136
+ const metadataStr = this.formatMetadata(response.metadata);
137
+ if (metadataStr) {
138
+ sections.push('');
139
+ sections.push(metadataStr);
140
+ }
111
141
  }
112
142
  catch (error) {
113
143
  }
@@ -119,7 +149,7 @@ export class ResponseFormatter {
119
149
  catch (error) {
120
150
  }
121
151
  }
122
- return sections.join('\n\n');
152
+ return sections.join('\n');
123
153
  }
124
154
  resultsToString(results) {
125
155
  if (typeof results === 'string') {
@@ -139,36 +169,122 @@ export class ResponseFormatter {
139
169
  const complexity = this.detectComplexity(response);
140
170
  return complexity === 'complex';
141
171
  }
142
- formatHeader(response) {
172
+ formatMinimalHeader(response) {
173
+ const sections = [];
174
+ const operationName = getOperationDisplayName(response.agentType);
143
175
  const statusIcon = this.getStatusIcon(response.status);
144
- const statusColor = this.getStatusColor(response.status);
145
- const agentName = chalk.bold.cyan(response.agentType.toUpperCase());
146
- const headerText = `${statusIcon} ${agentName} ${statusColor(response.status.toUpperCase())}`;
147
- return boxen(headerText, {
148
- padding: { top: 0, bottom: 0, left: 2, right: 2 },
149
- borderColor: 'cyan',
150
- borderStyle: 'round',
151
- });
176
+ const resultSummary = this.getResultSummary(response);
177
+ sections.push(`${statusIcon} ${operationName}`);
178
+ if (resultSummary) {
179
+ sections.push(` ${resultSummary}`);
180
+ }
181
+ return sections.join('\n');
182
+ }
183
+ getResultSummary(response) {
184
+ if (response.status !== 'success' || !response.results) {
185
+ return '';
186
+ }
187
+ const results = response.results;
188
+ if (response.agentType.includes('remember')) {
189
+ if (typeof results === 'object' && 'count' in results) {
190
+ const count = results.count;
191
+ return count > 0
192
+ ? `Found ${count} ${count === 1 ? 'memory' : 'memories'}`
193
+ : 'No memories found';
194
+ }
195
+ }
196
+ if (response.agentType.includes('list-agents')) {
197
+ if (typeof results === 'object' && 'agents' in results) {
198
+ const agents = results.agents;
199
+ return `${agents.length} ${agents.length === 1 ? 'agent' : 'agents'} available`;
200
+ }
201
+ }
202
+ if (response.agentType.includes('create-entities')) {
203
+ if (typeof results === 'object' && 'created' in results) {
204
+ const count = results.created;
205
+ return `Created ${count} ${count === 1 ? 'entity' : 'entities'}`;
206
+ }
207
+ }
208
+ if (response.agentType.includes('do')) {
209
+ if (typeof results === 'object' && 'agent' in results) {
210
+ const agent = results.agent;
211
+ return `Routed to ${agent}`;
212
+ }
213
+ }
214
+ return 'Completed successfully';
215
+ }
216
+ formatHeader(response) {
217
+ return this.formatMinimalHeader(response);
152
218
  }
153
219
  formatTaskDescription(description) {
154
220
  return chalk.gray('Task: ') + chalk.white(description);
155
221
  }
222
+ formatSection(icon, title, content) {
223
+ const header = `${icon} ${chalk.bold(title)}`;
224
+ return `${header}\n${chalk.white(content)}`;
225
+ }
226
+ formatDivider() {
227
+ return chalk.dim('─'.repeat(60));
228
+ }
229
+ generateNextSteps(response) {
230
+ const suggestions = [];
231
+ if (response.status === 'error' && response.error) {
232
+ suggestions.push('Review the error message and stack trace above');
233
+ suggestions.push('Check recent changes that might have caused this error');
234
+ suggestions.push('Try: buddy-remember "similar errors" to find past solutions');
235
+ }
236
+ if (response.status === 'success') {
237
+ switch (response.agentType) {
238
+ case 'buddy-do':
239
+ suggestions.push('Verify the implementation meets requirements');
240
+ suggestions.push('Run tests to ensure nothing broke');
241
+ suggestions.push('Consider: buddy-remember "this implementation" to store decision');
242
+ break;
243
+ case 'buddy-remember':
244
+ const hasResults = response.results &&
245
+ typeof response.results === 'object' &&
246
+ 'count' in response.results &&
247
+ response.results.count > 0;
248
+ if (!hasResults) {
249
+ suggestions.push('Try a broader search term');
250
+ suggestions.push('Use buddy-do to create new memories for this topic');
251
+ }
252
+ else {
253
+ suggestions.push('Review the memories above for relevant context');
254
+ suggestions.push('Apply these learnings to your current task');
255
+ }
256
+ break;
257
+ }
258
+ }
259
+ if (suggestions.length === 0) {
260
+ return null;
261
+ }
262
+ const header = `${icons.lightbulb || '💡'} ${chalk.bold.cyan('Next Steps')}`;
263
+ const items = suggestions.map((s, i) => ` ${i + 1}. ${chalk.white(s)}`).join('\n');
264
+ return `${header}\n${items}`;
265
+ }
156
266
  formatEnhancedPrompt(prompt) {
157
- const sections = [chalk.bold.magenta('Enhanced Prompt:')];
158
- sections.push(chalk.gray('System:'));
267
+ const icon = icons.rocket || '🚀';
268
+ const header = `${chalk.magenta(icon)} ${chalk.bold.magenta('Enhanced Prompt')}`;
269
+ const sections = [header];
270
+ sections.push('');
271
+ sections.push(chalk.bold('System:'));
159
272
  sections.push(chalk.white(this.truncateText(prompt.systemPrompt, this.MAX_PROMPT_LENGTH)));
160
273
  const guardrails = this.extractGuardrails(prompt.metadata);
161
274
  const userPrompt = guardrails
162
275
  ? this.stripGuardrails(prompt.userPrompt, guardrails)
163
276
  : prompt.userPrompt;
164
- sections.push(chalk.gray('User:'));
277
+ sections.push('');
278
+ sections.push(chalk.bold('User:'));
165
279
  sections.push(chalk.white(this.truncateText(userPrompt, this.MAX_PROMPT_LENGTH)));
166
280
  if (guardrails) {
167
- sections.push(chalk.bold.yellow('Guardrails:'));
281
+ sections.push('');
282
+ sections.push(chalk.bold.yellow(`${icons.warning || '⚠️'} Guardrails:`));
168
283
  sections.push(chalk.white(guardrails));
169
284
  }
170
285
  if (prompt.suggestedModel) {
171
- sections.push(chalk.gray('Suggested Model: ') + chalk.cyan(prompt.suggestedModel));
286
+ sections.push('');
287
+ sections.push(chalk.dim('Suggested Model: ') + chalk.cyan(prompt.suggestedModel));
172
288
  }
173
289
  return sections.join('\n');
174
290
  }
@@ -187,7 +303,9 @@ export class ResponseFormatter {
187
303
  return userPrompt.slice(0, index).trimEnd();
188
304
  }
189
305
  formatResults(results) {
190
- const sections = [chalk.bold.green('Results:')];
306
+ const icon = icons.success || '';
307
+ const header = `${chalk.green(icon)} ${chalk.bold.green('Results')}`;
308
+ const sections = [header];
191
309
  if (typeof results === 'string') {
192
310
  sections.push(chalk.white(results));
193
311
  }
@@ -203,28 +321,95 @@ export class ResponseFormatter {
203
321
  return sections.join('\n');
204
322
  }
205
323
  formatError(error) {
206
- const sections = [chalk.bold.red('Error:')];
207
- sections.push(chalk.red(`${icons.error} ${error.name}: ${error.message}`));
208
- if (error.stack) {
209
- sections.push(chalk.gray('Stack Trace:'));
210
- sections.push(chalk.gray(this.truncateText(error.stack, this.MAX_STACK_LENGTH)));
324
+ if (!error) {
325
+ error = new Error('Unknown error occurred');
211
326
  }
327
+ const classified = this.errorClassifier.classify(error, {});
328
+ const sections = [];
329
+ const errorIcon = icons.error || '❌';
330
+ const header = `${chalk.red(errorIcon)} ${chalk.bold.red(classified.title)}`;
331
+ sections.push(header);
332
+ sections.push('');
333
+ const severityBadge = this.getSeverityBadge(classified.severity);
334
+ sections.push(`${severityBadge} ${chalk.bold(classified.category.toUpperCase())}`);
335
+ sections.push('');
336
+ sections.push(chalk.white(classified.description));
337
+ sections.push('');
338
+ sections.push(chalk.bold('Root Cause:'));
339
+ sections.push(chalk.yellow(` ${classified.rootCause}`));
340
+ sections.push('');
341
+ if (classified.fixSteps.length > 0) {
342
+ sections.push(chalk.bold('Fix Steps:'));
343
+ classified.fixSteps.forEach((step, i) => {
344
+ sections.push(chalk.white(` ${i + 1}. ${step}`));
345
+ });
346
+ sections.push('');
347
+ }
348
+ if (classified.autoFixAvailable) {
349
+ sections.push(chalk.cyan(`${icons.lightbulb || '💡'} Auto-fix available!`));
350
+ sections.push(chalk.dim(' Run: buddy-fix --auto'));
351
+ sections.push('');
352
+ }
353
+ if (classified.relatedDocs.length > 0) {
354
+ sections.push(chalk.bold('Related Documentation:'));
355
+ classified.relatedDocs.forEach((doc) => {
356
+ sections.push(chalk.cyan(` • ${doc.title}: ${chalk.underline(doc.url)}`));
357
+ });
358
+ sections.push('');
359
+ }
360
+ if (classified.relatedCommands.length > 0) {
361
+ sections.push(chalk.bold('Related Commands:'));
362
+ classified.relatedCommands.forEach((cmd) => {
363
+ sections.push(chalk.cyan(` $ ${cmd}`));
364
+ });
365
+ sections.push('');
366
+ }
367
+ if (classified.troubleshootingTips.length > 0) {
368
+ sections.push(chalk.bold('Troubleshooting Tips:'));
369
+ classified.troubleshootingTips.forEach((tip) => {
370
+ sections.push(chalk.dim(` • ${tip}`));
371
+ });
372
+ sections.push('');
373
+ }
374
+ if (error.stack && process.env.DEBUG) {
375
+ sections.push(chalk.dim('Stack Trace (DEBUG):'));
376
+ sections.push(chalk.dim(this.truncateText(error.stack, this.MAX_STACK_LENGTH)));
377
+ sections.push('');
378
+ }
379
+ sections.push(chalk.dim('─'.repeat(60)));
380
+ sections.push(chalk.dim('Need more help?'));
381
+ sections.push(chalk.cyan(' $ memesh report-issue'));
382
+ sections.push(chalk.dim(' https://github.com/PCIRCLE-AI/claude-code-buddy/issues'));
212
383
  return sections.join('\n');
213
384
  }
385
+ getSeverityBadge(severity) {
386
+ switch (severity) {
387
+ case 'critical':
388
+ return chalk.red.bold('[CRITICAL]');
389
+ case 'high':
390
+ return chalk.red('[HIGH]');
391
+ case 'medium':
392
+ return chalk.yellow('[MEDIUM]');
393
+ case 'low':
394
+ return chalk.gray('[LOW]');
395
+ default:
396
+ return chalk.gray('[UNKNOWN]');
397
+ }
398
+ }
214
399
  formatMetadata(metadata) {
215
400
  const items = [];
216
401
  if (metadata?.duration !== undefined) {
217
402
  const duration = this.formatDuration(metadata.duration);
218
- items.push(chalk.gray('Duration: ') + chalk.cyan(duration));
403
+ items.push(chalk.dim(`Duration: ${duration}`));
219
404
  }
220
405
  if (metadata?.tokensUsed !== undefined) {
221
406
  const tokens = this.formatNumber(metadata.tokensUsed);
222
- items.push(chalk.gray('Tokens: ') + chalk.cyan(tokens));
407
+ items.push(chalk.dim(`Tokens: ${tokens}`));
223
408
  }
224
409
  if (metadata?.model) {
225
- items.push(chalk.gray('Model: ') + chalk.cyan(metadata.model));
410
+ items.push(chalk.dim(`Model: ${metadata.model}`));
226
411
  }
227
- return items.length > 0 ? items.join(' | ') : '';
412
+ return items.length > 0 ? chalk.dim(items.join(' ')) : '';
228
413
  }
229
414
  formatAttribution() {
230
415
  return chalk.gray('─'.repeat(60)) + '\n' +