@pcircle/memesh 2.10.0 → 2.11.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 (773) hide show
  1. package/.mcp.json +2 -5
  2. package/README.md +48 -248
  3. package/dist/cli/view.d.ts +3 -0
  4. package/dist/cli/view.d.ts.map +1 -0
  5. package/dist/cli/view.js +484 -0
  6. package/dist/cli/view.js.map +1 -0
  7. package/dist/db.d.ts +5 -0
  8. package/dist/db.d.ts.map +1 -0
  9. package/dist/db.js +80 -0
  10. package/dist/db.js.map +1 -0
  11. package/dist/index.d.ts +3 -6
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +2 -33
  14. package/dist/index.js.map +1 -1
  15. package/dist/knowledge-graph.d.ts +48 -0
  16. package/dist/knowledge-graph.d.ts.map +1 -0
  17. package/dist/knowledge-graph.js +186 -0
  18. package/dist/knowledge-graph.js.map +1 -0
  19. package/dist/mcp/server.d.ts +1 -25
  20. package/dist/mcp/server.d.ts.map +1 -1
  21. package/dist/mcp/server.js +33 -319
  22. package/dist/mcp/server.js.map +1 -1
  23. package/dist/mcp/tools.d.ts +93 -0
  24. package/dist/mcp/tools.d.ts.map +1 -0
  25. package/dist/mcp/tools.js +183 -0
  26. package/dist/mcp/tools.js.map +1 -0
  27. package/hooks/hooks.json +1 -41
  28. package/package.json +8 -91
  29. package/plugin.json +5 -8
  30. package/scripts/hooks/post-commit.js +132 -299
  31. package/scripts/hooks/session-start.js +84 -629
  32. package/.claude-plugin/plugin.json +0 -15
  33. package/README.de.md +0 -212
  34. package/README.es.md +0 -212
  35. package/README.fr.md +0 -212
  36. package/README.id.md +0 -212
  37. package/README.ja.md +0 -212
  38. package/README.ko.md +0 -212
  39. package/README.th.md +0 -212
  40. package/README.vi.md +0 -212
  41. package/README.zh-CN.md +0 -212
  42. package/README.zh-TW.md +0 -286
  43. package/dist/cli/config.d.ts +0 -36
  44. package/dist/cli/config.d.ts.map +0 -1
  45. package/dist/cli/config.js +0 -398
  46. package/dist/cli/config.js.map +0 -1
  47. package/dist/cli/credentials.d.ts +0 -12
  48. package/dist/cli/credentials.d.ts.map +0 -1
  49. package/dist/cli/credentials.js +0 -44
  50. package/dist/cli/credentials.js.map +0 -1
  51. package/dist/cli/daemon.d.ts +0 -3
  52. package/dist/cli/daemon.d.ts.map +0 -1
  53. package/dist/cli/daemon.js +0 -413
  54. package/dist/cli/daemon.js.map +0 -1
  55. package/dist/cli/dashboard.d.ts +0 -2
  56. package/dist/cli/dashboard.d.ts.map +0 -1
  57. package/dist/cli/dashboard.js +0 -300
  58. package/dist/cli/dashboard.js.map +0 -1
  59. package/dist/cli/index.d.ts +0 -3
  60. package/dist/cli/index.d.ts.map +0 -1
  61. package/dist/cli/index.js +0 -188
  62. package/dist/cli/index.js.map +0 -1
  63. package/dist/cli/login.d.ts +0 -4
  64. package/dist/cli/login.d.ts.map +0 -1
  65. package/dist/cli/login.js +0 -230
  66. package/dist/cli/login.js.map +0 -1
  67. package/dist/cli/logout.d.ts +0 -3
  68. package/dist/cli/logout.d.ts.map +0 -1
  69. package/dist/cli/logout.js +0 -23
  70. package/dist/cli/logout.js.map +0 -1
  71. package/dist/cli/setup-wizard.d.ts +0 -18
  72. package/dist/cli/setup-wizard.d.ts.map +0 -1
  73. package/dist/cli/setup-wizard.js +0 -267
  74. package/dist/cli/setup-wizard.js.map +0 -1
  75. package/dist/cli/stats.d.ts +0 -34
  76. package/dist/cli/stats.d.ts.map +0 -1
  77. package/dist/cli/stats.js +0 -479
  78. package/dist/cli/stats.js.map +0 -1
  79. package/dist/cli/tutorial.d.ts +0 -27
  80. package/dist/cli/tutorial.d.ts.map +0 -1
  81. package/dist/cli/tutorial.js +0 -430
  82. package/dist/cli/tutorial.js.map +0 -1
  83. package/dist/cloud/MeMeshCloudClient.d.ts +0 -88
  84. package/dist/cloud/MeMeshCloudClient.d.ts.map +0 -1
  85. package/dist/cloud/MeMeshCloudClient.js +0 -177
  86. package/dist/cloud/MeMeshCloudClient.js.map +0 -1
  87. package/dist/cloud/index.d.ts +0 -3
  88. package/dist/cloud/index.d.ts.map +0 -1
  89. package/dist/cloud/index.js +0 -2
  90. package/dist/cloud/index.js.map +0 -1
  91. package/dist/config/index.d.ts +0 -61
  92. package/dist/config/index.d.ts.map +0 -1
  93. package/dist/config/index.js +0 -105
  94. package/dist/config/index.js.map +0 -1
  95. package/dist/config/models.d.ts +0 -47
  96. package/dist/config/models.d.ts.map +0 -1
  97. package/dist/config/models.js +0 -57
  98. package/dist/config/models.js.map +0 -1
  99. package/dist/config/simple-config.d.ts +0 -35
  100. package/dist/config/simple-config.d.ts.map +0 -1
  101. package/dist/config/simple-config.js +0 -246
  102. package/dist/config/simple-config.js.map +0 -1
  103. package/dist/core/AgentRegistry.d.ts +0 -31
  104. package/dist/core/AgentRegistry.d.ts.map +0 -1
  105. package/dist/core/AgentRegistry.js +0 -281
  106. package/dist/core/AgentRegistry.js.map +0 -1
  107. package/dist/core/CheckpointDetector.d.ts +0 -25
  108. package/dist/core/CheckpointDetector.d.ts.map +0 -1
  109. package/dist/core/CheckpointDetector.js +0 -67
  110. package/dist/core/CheckpointDetector.js.map +0 -1
  111. package/dist/core/GitCommandParser.d.ts +0 -11
  112. package/dist/core/GitCommandParser.d.ts.map +0 -1
  113. package/dist/core/GitCommandParser.js +0 -43
  114. package/dist/core/GitCommandParser.js.map +0 -1
  115. package/dist/core/HealthCheck.d.ts +0 -39
  116. package/dist/core/HealthCheck.d.ts.map +0 -1
  117. package/dist/core/HealthCheck.js +0 -219
  118. package/dist/core/HealthCheck.js.map +0 -1
  119. package/dist/core/HookIntegration.d.ts +0 -47
  120. package/dist/core/HookIntegration.d.ts.map +0 -1
  121. package/dist/core/HookIntegration.js +0 -275
  122. package/dist/core/HookIntegration.js.map +0 -1
  123. package/dist/core/MCPToolInterface.d.ts +0 -120
  124. package/dist/core/MCPToolInterface.d.ts.map +0 -1
  125. package/dist/core/MCPToolInterface.js +0 -376
  126. package/dist/core/MCPToolInterface.js.map +0 -1
  127. package/dist/core/MistakePatternManager.d.ts +0 -31
  128. package/dist/core/MistakePatternManager.d.ts.map +0 -1
  129. package/dist/core/MistakePatternManager.js +0 -137
  130. package/dist/core/MistakePatternManager.js.map +0 -1
  131. package/dist/core/ResourceMonitor.d.ts +0 -32
  132. package/dist/core/ResourceMonitor.d.ts.map +0 -1
  133. package/dist/core/ResourceMonitor.js +0 -243
  134. package/dist/core/ResourceMonitor.js.map +0 -1
  135. package/dist/core/ServiceLocator.d.ts +0 -10
  136. package/dist/core/ServiceLocator.d.ts.map +0 -1
  137. package/dist/core/ServiceLocator.js +0 -30
  138. package/dist/core/ServiceLocator.js.map +0 -1
  139. package/dist/core/TestOutputParser.d.ts +0 -20
  140. package/dist/core/TestOutputParser.d.ts.map +0 -1
  141. package/dist/core/TestOutputParser.js +0 -144
  142. package/dist/core/TestOutputParser.js.map +0 -1
  143. package/dist/core/types.d.ts +0 -66
  144. package/dist/core/types.d.ts.map +0 -1
  145. package/dist/core/types.js +0 -11
  146. package/dist/core/types.js.map +0 -1
  147. package/dist/db/ConnectionPool.d.ts +0 -50
  148. package/dist/db/ConnectionPool.d.ts.map +0 -1
  149. package/dist/db/ConnectionPool.js +0 -569
  150. package/dist/db/ConnectionPool.js.map +0 -1
  151. package/dist/db/IDatabaseAdapter.d.ts +0 -25
  152. package/dist/db/IDatabaseAdapter.d.ts.map +0 -1
  153. package/dist/db/IDatabaseAdapter.js +0 -2
  154. package/dist/db/IDatabaseAdapter.js.map +0 -1
  155. package/dist/db/QueryCache.d.ts +0 -46
  156. package/dist/db/QueryCache.d.ts.map +0 -1
  157. package/dist/db/QueryCache.js +0 -232
  158. package/dist/db/QueryCache.js.map +0 -1
  159. package/dist/db/adapters/BetterSqlite3Adapter.d.ts +0 -15
  160. package/dist/db/adapters/BetterSqlite3Adapter.d.ts.map +0 -1
  161. package/dist/db/adapters/BetterSqlite3Adapter.js +0 -127
  162. package/dist/db/adapters/BetterSqlite3Adapter.js.map +0 -1
  163. package/dist/embeddings/EmbeddingService.d.ts +0 -23
  164. package/dist/embeddings/EmbeddingService.d.ts.map +0 -1
  165. package/dist/embeddings/EmbeddingService.js +0 -131
  166. package/dist/embeddings/EmbeddingService.js.map +0 -1
  167. package/dist/embeddings/InMemoryVectorAdapter.d.ts +0 -15
  168. package/dist/embeddings/InMemoryVectorAdapter.d.ts.map +0 -1
  169. package/dist/embeddings/InMemoryVectorAdapter.js +0 -58
  170. package/dist/embeddings/InMemoryVectorAdapter.js.map +0 -1
  171. package/dist/embeddings/ModelManager.d.ts +0 -18
  172. package/dist/embeddings/ModelManager.d.ts.map +0 -1
  173. package/dist/embeddings/ModelManager.js +0 -84
  174. package/dist/embeddings/ModelManager.js.map +0 -1
  175. package/dist/embeddings/SqliteVecAdapter.d.ts +0 -15
  176. package/dist/embeddings/SqliteVecAdapter.d.ts.map +0 -1
  177. package/dist/embeddings/SqliteVecAdapter.js +0 -107
  178. package/dist/embeddings/SqliteVecAdapter.js.map +0 -1
  179. package/dist/embeddings/VectorExtension.d.ts +0 -17
  180. package/dist/embeddings/VectorExtension.d.ts.map +0 -1
  181. package/dist/embeddings/VectorExtension.js +0 -107
  182. package/dist/embeddings/VectorExtension.js.map +0 -1
  183. package/dist/embeddings/VectorSearchAdapter.d.ts +0 -17
  184. package/dist/embeddings/VectorSearchAdapter.d.ts.map +0 -1
  185. package/dist/embeddings/VectorSearchAdapter.js +0 -2
  186. package/dist/embeddings/VectorSearchAdapter.js.map +0 -1
  187. package/dist/embeddings/index.d.ts +0 -9
  188. package/dist/embeddings/index.d.ts.map +0 -1
  189. package/dist/embeddings/index.js +0 -7
  190. package/dist/embeddings/index.js.map +0 -1
  191. package/dist/errors/ErrorClassifier.d.ts +0 -60
  192. package/dist/errors/ErrorClassifier.d.ts.map +0 -1
  193. package/dist/errors/ErrorClassifier.js +0 -415
  194. package/dist/errors/ErrorClassifier.js.map +0 -1
  195. package/dist/errors/index.d.ts +0 -63
  196. package/dist/errors/index.d.ts.map +0 -1
  197. package/dist/errors/index.js +0 -127
  198. package/dist/errors/index.js.map +0 -1
  199. package/dist/i18n/index.d.ts +0 -9
  200. package/dist/i18n/index.d.ts.map +0 -1
  201. package/dist/i18n/index.js +0 -78
  202. package/dist/i18n/index.js.map +0 -1
  203. package/dist/i18n/locales/en.d.ts +0 -3
  204. package/dist/i18n/locales/en.d.ts.map +0 -1
  205. package/dist/i18n/locales/en.js +0 -32
  206. package/dist/i18n/locales/en.js.map +0 -1
  207. package/dist/i18n/locales/index.d.ts +0 -5
  208. package/dist/i18n/locales/index.d.ts.map +0 -1
  209. package/dist/i18n/locales/index.js +0 -5
  210. package/dist/i18n/locales/index.js.map +0 -1
  211. package/dist/i18n/locales/ja.d.ts +0 -3
  212. package/dist/i18n/locales/ja.d.ts.map +0 -1
  213. package/dist/i18n/locales/ja.js +0 -30
  214. package/dist/i18n/locales/ja.js.map +0 -1
  215. package/dist/i18n/locales/zh-CN.d.ts +0 -3
  216. package/dist/i18n/locales/zh-CN.d.ts.map +0 -1
  217. package/dist/i18n/locales/zh-CN.js +0 -30
  218. package/dist/i18n/locales/zh-CN.js.map +0 -1
  219. package/dist/i18n/locales/zh-TW.d.ts +0 -3
  220. package/dist/i18n/locales/zh-TW.d.ts.map +0 -1
  221. package/dist/i18n/locales/zh-TW.js +0 -30
  222. package/dist/i18n/locales/zh-TW.js.map +0 -1
  223. package/dist/i18n/types.d.ts +0 -11
  224. package/dist/i18n/types.d.ts.map +0 -1
  225. package/dist/i18n/types.js +0 -3
  226. package/dist/i18n/types.js.map +0 -1
  227. package/dist/integrations/session-memory/SessionContextInjector.d.ts +0 -30
  228. package/dist/integrations/session-memory/SessionContextInjector.d.ts.map +0 -1
  229. package/dist/integrations/session-memory/SessionContextInjector.js +0 -192
  230. package/dist/integrations/session-memory/SessionContextInjector.js.map +0 -1
  231. package/dist/integrations/session-memory/SessionMemoryIngester.d.ts +0 -15
  232. package/dist/integrations/session-memory/SessionMemoryIngester.d.ts.map +0 -1
  233. package/dist/integrations/session-memory/SessionMemoryIngester.js +0 -229
  234. package/dist/integrations/session-memory/SessionMemoryIngester.js.map +0 -1
  235. package/dist/integrations/session-memory/SessionMemoryParser.d.ts +0 -16
  236. package/dist/integrations/session-memory/SessionMemoryParser.d.ts.map +0 -1
  237. package/dist/integrations/session-memory/SessionMemoryParser.js +0 -271
  238. package/dist/integrations/session-memory/SessionMemoryParser.js.map +0 -1
  239. package/dist/integrations/session-memory/SessionMemoryPipeline.d.ts +0 -20
  240. package/dist/integrations/session-memory/SessionMemoryPipeline.d.ts.map +0 -1
  241. package/dist/integrations/session-memory/SessionMemoryPipeline.js +0 -60
  242. package/dist/integrations/session-memory/SessionMemoryPipeline.js.map +0 -1
  243. package/dist/integrations/session-memory/SessionMemoryWatcher.d.ts +0 -27
  244. package/dist/integrations/session-memory/SessionMemoryWatcher.d.ts.map +0 -1
  245. package/dist/integrations/session-memory/SessionMemoryWatcher.js +0 -145
  246. package/dist/integrations/session-memory/SessionMemoryWatcher.js.map +0 -1
  247. package/dist/integrations/session-memory/index.d.ts +0 -9
  248. package/dist/integrations/session-memory/index.d.ts.map +0 -1
  249. package/dist/integrations/session-memory/index.js +0 -6
  250. package/dist/integrations/session-memory/index.js.map +0 -1
  251. package/dist/integrations/session-memory/types.d.ts +0 -74
  252. package/dist/integrations/session-memory/types.d.ts.map +0 -1
  253. package/dist/integrations/session-memory/types.js +0 -22
  254. package/dist/integrations/session-memory/types.js.map +0 -1
  255. package/dist/knowledge-graph/ContentHasher.d.ts +0 -4
  256. package/dist/knowledge-graph/ContentHasher.d.ts.map +0 -1
  257. package/dist/knowledge-graph/ContentHasher.js +0 -8
  258. package/dist/knowledge-graph/ContentHasher.js.map +0 -1
  259. package/dist/knowledge-graph/KGSearchEngine.d.ts +0 -37
  260. package/dist/knowledge-graph/KGSearchEngine.d.ts.map +0 -1
  261. package/dist/knowledge-graph/KGSearchEngine.js +0 -257
  262. package/dist/knowledge-graph/KGSearchEngine.js.map +0 -1
  263. package/dist/knowledge-graph/index.d.ts +0 -64
  264. package/dist/knowledge-graph/index.d.ts.map +0 -1
  265. package/dist/knowledge-graph/index.js +0 -681
  266. package/dist/knowledge-graph/index.js.map +0 -1
  267. package/dist/knowledge-graph/types.d.ts +0 -38
  268. package/dist/knowledge-graph/types.d.ts.map +0 -1
  269. package/dist/knowledge-graph/types.js +0 -2
  270. package/dist/knowledge-graph/types.js.map +0 -1
  271. package/dist/management/UninstallManager.d.ts +0 -23
  272. package/dist/management/UninstallManager.d.ts.map +0 -1
  273. package/dist/management/UninstallManager.js +0 -186
  274. package/dist/management/UninstallManager.js.map +0 -1
  275. package/dist/management/index.d.ts +0 -3
  276. package/dist/management/index.d.ts.map +0 -1
  277. package/dist/management/index.js +0 -2
  278. package/dist/management/index.js.map +0 -1
  279. package/dist/mcp/BuddyCommands.d.ts +0 -24
  280. package/dist/mcp/BuddyCommands.d.ts.map +0 -1
  281. package/dist/mcp/BuddyCommands.js +0 -423
  282. package/dist/mcp/BuddyCommands.js.map +0 -1
  283. package/dist/mcp/ClaudeMdReloader.d.ts +0 -37
  284. package/dist/mcp/ClaudeMdReloader.d.ts.map +0 -1
  285. package/dist/mcp/ClaudeMdReloader.js +0 -92
  286. package/dist/mcp/ClaudeMdReloader.js.map +0 -1
  287. package/dist/mcp/HumanInLoopUI.d.ts +0 -23
  288. package/dist/mcp/HumanInLoopUI.d.ts.map +0 -1
  289. package/dist/mcp/HumanInLoopUI.js +0 -92
  290. package/dist/mcp/HumanInLoopUI.js.map +0 -1
  291. package/dist/mcp/ProgressReporter.d.ts +0 -14
  292. package/dist/mcp/ProgressReporter.d.ts.map +0 -1
  293. package/dist/mcp/ProgressReporter.js +0 -22
  294. package/dist/mcp/ProgressReporter.js.map +0 -1
  295. package/dist/mcp/SamplingClient.d.ts +0 -32
  296. package/dist/mcp/SamplingClient.d.ts.map +0 -1
  297. package/dist/mcp/SamplingClient.js +0 -63
  298. package/dist/mcp/SamplingClient.js.map +0 -1
  299. package/dist/mcp/ServerInitializer.d.ts +0 -40
  300. package/dist/mcp/ServerInitializer.d.ts.map +0 -1
  301. package/dist/mcp/ServerInitializer.js +0 -147
  302. package/dist/mcp/ServerInitializer.js.map +0 -1
  303. package/dist/mcp/SessionBootstrapper.d.ts +0 -13
  304. package/dist/mcp/SessionBootstrapper.d.ts.map +0 -1
  305. package/dist/mcp/SessionBootstrapper.js +0 -82
  306. package/dist/mcp/SessionBootstrapper.js.map +0 -1
  307. package/dist/mcp/StdinBufferManager.d.ts +0 -11
  308. package/dist/mcp/StdinBufferManager.d.ts.map +0 -1
  309. package/dist/mcp/StdinBufferManager.js +0 -62
  310. package/dist/mcp/StdinBufferManager.js.map +0 -1
  311. package/dist/mcp/ToolDefinitions.d.ts +0 -44
  312. package/dist/mcp/ToolDefinitions.d.ts.map +0 -1
  313. package/dist/mcp/ToolDefinitions.js +0 -445
  314. package/dist/mcp/ToolDefinitions.js.map +0 -1
  315. package/dist/mcp/ToolRouter.d.ts +0 -27
  316. package/dist/mcp/ToolRouter.d.ts.map +0 -1
  317. package/dist/mcp/ToolRouter.js +0 -179
  318. package/dist/mcp/ToolRouter.js.map +0 -1
  319. package/dist/mcp/daemon/DaemonBootstrap.d.ts +0 -33
  320. package/dist/mcp/daemon/DaemonBootstrap.d.ts.map +0 -1
  321. package/dist/mcp/daemon/DaemonBootstrap.js +0 -155
  322. package/dist/mcp/daemon/DaemonBootstrap.js.map +0 -1
  323. package/dist/mcp/daemon/DaemonLockManager.d.ts +0 -47
  324. package/dist/mcp/daemon/DaemonLockManager.d.ts.map +0 -1
  325. package/dist/mcp/daemon/DaemonLockManager.js +0 -417
  326. package/dist/mcp/daemon/DaemonLockManager.js.map +0 -1
  327. package/dist/mcp/daemon/DaemonProtocol.d.ts +0 -127
  328. package/dist/mcp/daemon/DaemonProtocol.d.ts.map +0 -1
  329. package/dist/mcp/daemon/DaemonProtocol.js +0 -452
  330. package/dist/mcp/daemon/DaemonProtocol.js.map +0 -1
  331. package/dist/mcp/daemon/DaemonSocketServer.d.ts +0 -71
  332. package/dist/mcp/daemon/DaemonSocketServer.d.ts.map +0 -1
  333. package/dist/mcp/daemon/DaemonSocketServer.js +0 -384
  334. package/dist/mcp/daemon/DaemonSocketServer.js.map +0 -1
  335. package/dist/mcp/daemon/GracefulShutdownCoordinator.d.ts +0 -67
  336. package/dist/mcp/daemon/GracefulShutdownCoordinator.d.ts.map +0 -1
  337. package/dist/mcp/daemon/GracefulShutdownCoordinator.js +0 -206
  338. package/dist/mcp/daemon/GracefulShutdownCoordinator.js.map +0 -1
  339. package/dist/mcp/daemon/IpcTransport.d.ts +0 -42
  340. package/dist/mcp/daemon/IpcTransport.d.ts.map +0 -1
  341. package/dist/mcp/daemon/IpcTransport.js +0 -231
  342. package/dist/mcp/daemon/IpcTransport.js.map +0 -1
  343. package/dist/mcp/daemon/StdioProxyClient.d.ts +0 -84
  344. package/dist/mcp/daemon/StdioProxyClient.d.ts.map +0 -1
  345. package/dist/mcp/daemon/StdioProxyClient.js +0 -574
  346. package/dist/mcp/daemon/StdioProxyClient.js.map +0 -1
  347. package/dist/mcp/daemon/VersionManager.d.ts +0 -35
  348. package/dist/mcp/daemon/VersionManager.d.ts.map +0 -1
  349. package/dist/mcp/daemon/VersionManager.js +0 -169
  350. package/dist/mcp/daemon/VersionManager.js.map +0 -1
  351. package/dist/mcp/daemon/index.d.ts +0 -9
  352. package/dist/mcp/daemon/index.d.ts.map +0 -1
  353. package/dist/mcp/daemon/index.js +0 -9
  354. package/dist/mcp/daemon/index.js.map +0 -1
  355. package/dist/mcp/handlers/BuddyHandlers.d.ts +0 -18
  356. package/dist/mcp/handlers/BuddyHandlers.d.ts.map +0 -1
  357. package/dist/mcp/handlers/BuddyHandlers.js +0 -179
  358. package/dist/mcp/handlers/BuddyHandlers.js.map +0 -1
  359. package/dist/mcp/handlers/BuddyRecordMistake.d.ts +0 -17
  360. package/dist/mcp/handlers/BuddyRecordMistake.d.ts.map +0 -1
  361. package/dist/mcp/handlers/BuddyRecordMistake.js +0 -147
  362. package/dist/mcp/handlers/BuddyRecordMistake.js.map +0 -1
  363. package/dist/mcp/handlers/HookToolHandler.d.ts +0 -10
  364. package/dist/mcp/handlers/HookToolHandler.d.ts.map +0 -1
  365. package/dist/mcp/handlers/HookToolHandler.js +0 -92
  366. package/dist/mcp/handlers/HookToolHandler.js.map +0 -1
  367. package/dist/mcp/handlers/MemoryToolHandler.d.ts +0 -21
  368. package/dist/mcp/handlers/MemoryToolHandler.d.ts.map +0 -1
  369. package/dist/mcp/handlers/MemoryToolHandler.js +0 -433
  370. package/dist/mcp/handlers/MemoryToolHandler.js.map +0 -1
  371. package/dist/mcp/handlers/ResourceHandlers.d.ts +0 -3
  372. package/dist/mcp/handlers/ResourceHandlers.d.ts.map +0 -1
  373. package/dist/mcp/handlers/ResourceHandlers.js +0 -133
  374. package/dist/mcp/handlers/ResourceHandlers.js.map +0 -1
  375. package/dist/mcp/handlers/SystemToolHandler.d.ts +0 -14
  376. package/dist/mcp/handlers/SystemToolHandler.d.ts.map +0 -1
  377. package/dist/mcp/handlers/SystemToolHandler.js +0 -224
  378. package/dist/mcp/handlers/SystemToolHandler.js.map +0 -1
  379. package/dist/mcp/handlers/ToolHandlers.d.ts +0 -26
  380. package/dist/mcp/handlers/ToolHandlers.d.ts.map +0 -1
  381. package/dist/mcp/handlers/ToolHandlers.js +0 -41
  382. package/dist/mcp/handlers/ToolHandlers.js.map +0 -1
  383. package/dist/mcp/handlers/index.d.ts +0 -7
  384. package/dist/mcp/handlers/index.d.ts.map +0 -1
  385. package/dist/mcp/handlers/index.js +0 -7
  386. package/dist/mcp/handlers/index.js.map +0 -1
  387. package/dist/mcp/index.d.ts +0 -5
  388. package/dist/mcp/index.d.ts.map +0 -1
  389. package/dist/mcp/index.js +0 -3
  390. package/dist/mcp/index.js.map +0 -1
  391. package/dist/mcp/resources/ResourceRegistry.d.ts +0 -23
  392. package/dist/mcp/resources/ResourceRegistry.d.ts.map +0 -1
  393. package/dist/mcp/resources/ResourceRegistry.js +0 -26
  394. package/dist/mcp/resources/ResourceRegistry.js.map +0 -1
  395. package/dist/mcp/resources/URITemplateHandler.d.ts +0 -8
  396. package/dist/mcp/resources/URITemplateHandler.d.ts.map +0 -1
  397. package/dist/mcp/resources/URITemplateHandler.js +0 -29
  398. package/dist/mcp/resources/URITemplateHandler.js.map +0 -1
  399. package/dist/mcp/resources/best-practices.md +0 -53
  400. package/dist/mcp/resources/buddy-do-skill.md +0 -84
  401. package/dist/mcp/resources/ccb-complete-guide.md +0 -247
  402. package/dist/mcp/resources/examples.md +0 -47
  403. package/dist/mcp/resources/handlers/AgentStatusHandler.d.ts +0 -7
  404. package/dist/mcp/resources/handlers/AgentStatusHandler.d.ts.map +0 -1
  405. package/dist/mcp/resources/handlers/AgentStatusHandler.js +0 -41
  406. package/dist/mcp/resources/handlers/AgentStatusHandler.js.map +0 -1
  407. package/dist/mcp/resources/handlers/TaskLogsHandler.d.ts +0 -7
  408. package/dist/mcp/resources/handlers/TaskLogsHandler.d.ts.map +0 -1
  409. package/dist/mcp/resources/handlers/TaskLogsHandler.js +0 -35
  410. package/dist/mcp/resources/handlers/TaskLogsHandler.js.map +0 -1
  411. package/dist/mcp/resources/quick-reference.md +0 -71
  412. package/dist/mcp/resources/usage-guide.md +0 -74
  413. package/dist/mcp/schemas/OutputSchemas.d.ts +0 -437
  414. package/dist/mcp/schemas/OutputSchemas.d.ts.map +0 -1
  415. package/dist/mcp/schemas/OutputSchemas.js +0 -215
  416. package/dist/mcp/schemas/OutputSchemas.js.map +0 -1
  417. package/dist/mcp/server-bootstrap.d.ts +0 -3
  418. package/dist/mcp/server-bootstrap.d.ts.map +0 -1
  419. package/dist/mcp/server-bootstrap.js +0 -391
  420. package/dist/mcp/server-bootstrap.js.map +0 -1
  421. package/dist/mcp/tools/add-observations.d.ts +0 -48
  422. package/dist/mcp/tools/add-observations.d.ts.map +0 -1
  423. package/dist/mcp/tools/add-observations.js +0 -64
  424. package/dist/mcp/tools/add-observations.js.map +0 -1
  425. package/dist/mcp/tools/buddy-do.d.ts +0 -15
  426. package/dist/mcp/tools/buddy-do.d.ts.map +0 -1
  427. package/dist/mcp/tools/buddy-do.js +0 -191
  428. package/dist/mcp/tools/buddy-do.js.map +0 -1
  429. package/dist/mcp/tools/buddy-help.d.ts +0 -13
  430. package/dist/mcp/tools/buddy-help.d.ts.map +0 -1
  431. package/dist/mcp/tools/buddy-help.js +0 -44
  432. package/dist/mcp/tools/buddy-help.js.map +0 -1
  433. package/dist/mcp/tools/buddy-remember.d.ts +0 -24
  434. package/dist/mcp/tools/buddy-remember.d.ts.map +0 -1
  435. package/dist/mcp/tools/buddy-remember.js +0 -304
  436. package/dist/mcp/tools/buddy-remember.js.map +0 -1
  437. package/dist/mcp/tools/create-entities.d.ts +0 -66
  438. package/dist/mcp/tools/create-entities.d.ts.map +0 -1
  439. package/dist/mcp/tools/create-entities.js +0 -224
  440. package/dist/mcp/tools/create-entities.js.map +0 -1
  441. package/dist/mcp/tools/create-relations.d.ts +0 -60
  442. package/dist/mcp/tools/create-relations.d.ts.map +0 -1
  443. package/dist/mcp/tools/create-relations.js +0 -84
  444. package/dist/mcp/tools/create-relations.js.map +0 -1
  445. package/dist/mcp/tools/generate-tests.d.ts +0 -11
  446. package/dist/mcp/tools/generate-tests.d.ts.map +0 -1
  447. package/dist/mcp/tools/generate-tests.js +0 -19
  448. package/dist/mcp/tools/generate-tests.js.map +0 -1
  449. package/dist/mcp/tools/health-check.d.ts +0 -10
  450. package/dist/mcp/tools/health-check.d.ts.map +0 -1
  451. package/dist/mcp/tools/health-check.js +0 -37
  452. package/dist/mcp/tools/health-check.js.map +0 -1
  453. package/dist/mcp/tools/memesh-agent-register.d.ts +0 -20
  454. package/dist/mcp/tools/memesh-agent-register.d.ts.map +0 -1
  455. package/dist/mcp/tools/memesh-agent-register.js +0 -80
  456. package/dist/mcp/tools/memesh-agent-register.js.map +0 -1
  457. package/dist/mcp/tools/memesh-cloud-sync.d.ts +0 -30
  458. package/dist/mcp/tools/memesh-cloud-sync.d.ts.map +0 -1
  459. package/dist/mcp/tools/memesh-cloud-sync.js +0 -257
  460. package/dist/mcp/tools/memesh-cloud-sync.js.map +0 -1
  461. package/dist/mcp/tools/memesh-metrics.d.ts +0 -13
  462. package/dist/mcp/tools/memesh-metrics.d.ts.map +0 -1
  463. package/dist/mcp/tools/memesh-metrics.js +0 -193
  464. package/dist/mcp/tools/memesh-metrics.js.map +0 -1
  465. package/dist/mcp/tools/recall-memory.d.ts +0 -31
  466. package/dist/mcp/tools/recall-memory.d.ts.map +0 -1
  467. package/dist/mcp/tools/recall-memory.js +0 -31
  468. package/dist/mcp/tools/recall-memory.js.map +0 -1
  469. package/dist/mcp/validation.d.ts +0 -76
  470. package/dist/mcp/validation.d.ts.map +0 -1
  471. package/dist/mcp/validation.js +0 -106
  472. package/dist/mcp/validation.js.map +0 -1
  473. package/dist/memory/AutoMemoryRecorder.d.ts +0 -35
  474. package/dist/memory/AutoMemoryRecorder.d.ts.map +0 -1
  475. package/dist/memory/AutoMemoryRecorder.js +0 -164
  476. package/dist/memory/AutoMemoryRecorder.js.map +0 -1
  477. package/dist/memory/AutoTagger.d.ts +0 -9
  478. package/dist/memory/AutoTagger.d.ts.map +0 -1
  479. package/dist/memory/AutoTagger.js +0 -149
  480. package/dist/memory/AutoTagger.js.map +0 -1
  481. package/dist/memory/BuiltInRules.d.ts +0 -54
  482. package/dist/memory/BuiltInRules.d.ts.map +0 -1
  483. package/dist/memory/BuiltInRules.js +0 -161
  484. package/dist/memory/BuiltInRules.js.map +0 -1
  485. package/dist/memory/EnhancedRetrieval.d.ts +0 -22
  486. package/dist/memory/EnhancedRetrieval.d.ts.map +0 -1
  487. package/dist/memory/EnhancedRetrieval.js +0 -63
  488. package/dist/memory/EnhancedRetrieval.js.map +0 -1
  489. package/dist/memory/EntityTypes.d.ts +0 -14
  490. package/dist/memory/EntityTypes.d.ts.map +0 -1
  491. package/dist/memory/EntityTypes.js +0 -19
  492. package/dist/memory/EntityTypes.js.map +0 -1
  493. package/dist/memory/MemorySearchEngine.d.ts +0 -17
  494. package/dist/memory/MemorySearchEngine.d.ts.map +0 -1
  495. package/dist/memory/MemorySearchEngine.js +0 -88
  496. package/dist/memory/MemorySearchEngine.js.map +0 -1
  497. package/dist/memory/MistakePatternEngine.d.ts +0 -15
  498. package/dist/memory/MistakePatternEngine.d.ts.map +0 -1
  499. package/dist/memory/MistakePatternEngine.js +0 -99
  500. package/dist/memory/MistakePatternEngine.js.map +0 -1
  501. package/dist/memory/PreventionHook.d.ts +0 -28
  502. package/dist/memory/PreventionHook.d.ts.map +0 -1
  503. package/dist/memory/PreventionHook.js +0 -21
  504. package/dist/memory/PreventionHook.js.map +0 -1
  505. package/dist/memory/ProactiveRecaller.d.ts +0 -26
  506. package/dist/memory/ProactiveRecaller.d.ts.map +0 -1
  507. package/dist/memory/ProactiveRecaller.js +0 -96
  508. package/dist/memory/ProactiveRecaller.js.map +0 -1
  509. package/dist/memory/ProjectAutoTracker.d.ts +0 -80
  510. package/dist/memory/ProjectAutoTracker.d.ts.map +0 -1
  511. package/dist/memory/ProjectAutoTracker.js +0 -386
  512. package/dist/memory/ProjectAutoTracker.js.map +0 -1
  513. package/dist/memory/ProjectMemoryCleanup.d.ts +0 -17
  514. package/dist/memory/ProjectMemoryCleanup.d.ts.map +0 -1
  515. package/dist/memory/ProjectMemoryCleanup.js +0 -57
  516. package/dist/memory/ProjectMemoryCleanup.js.map +0 -1
  517. package/dist/memory/ProjectMemoryManager.d.ts +0 -19
  518. package/dist/memory/ProjectMemoryManager.d.ts.map +0 -1
  519. package/dist/memory/ProjectMemoryManager.js +0 -62
  520. package/dist/memory/ProjectMemoryManager.js.map +0 -1
  521. package/dist/memory/SmartMemoryQuery.d.ts +0 -9
  522. package/dist/memory/SmartMemoryQuery.d.ts.map +0 -1
  523. package/dist/memory/SmartMemoryQuery.js +0 -66
  524. package/dist/memory/SmartMemoryQuery.js.map +0 -1
  525. package/dist/memory/UnifiedMemoryStore.d.ts +0 -27
  526. package/dist/memory/UnifiedMemoryStore.d.ts.map +0 -1
  527. package/dist/memory/UnifiedMemoryStore.js +0 -536
  528. package/dist/memory/UnifiedMemoryStore.js.map +0 -1
  529. package/dist/memory/UserPreferenceEngine.d.ts +0 -18
  530. package/dist/memory/UserPreferenceEngine.d.ts.map +0 -1
  531. package/dist/memory/UserPreferenceEngine.js +0 -117
  532. package/dist/memory/UserPreferenceEngine.js.map +0 -1
  533. package/dist/memory/config/semantic-groups.d.ts +0 -9
  534. package/dist/memory/config/semantic-groups.d.ts.map +0 -1
  535. package/dist/memory/config/semantic-groups.js +0 -22
  536. package/dist/memory/config/semantic-groups.js.map +0 -1
  537. package/dist/memory/index.d.ts +0 -16
  538. package/dist/memory/index.d.ts.map +0 -1
  539. package/dist/memory/index.js +0 -12
  540. package/dist/memory/index.js.map +0 -1
  541. package/dist/memory/types/index.d.ts +0 -7
  542. package/dist/memory/types/index.d.ts.map +0 -1
  543. package/dist/memory/types/index.js +0 -4
  544. package/dist/memory/types/index.js.map +0 -1
  545. package/dist/memory/types/memory-scope.d.ts +0 -27
  546. package/dist/memory/types/memory-scope.d.ts.map +0 -1
  547. package/dist/memory/types/memory-scope.js +0 -67
  548. package/dist/memory/types/memory-scope.js.map +0 -1
  549. package/dist/memory/types/pattern-types.d.ts +0 -66
  550. package/dist/memory/types/pattern-types.d.ts.map +0 -1
  551. package/dist/memory/types/pattern-types.js +0 -2
  552. package/dist/memory/types/pattern-types.js.map +0 -1
  553. package/dist/memory/types/preference-types.d.ts +0 -28
  554. package/dist/memory/types/preference-types.d.ts.map +0 -1
  555. package/dist/memory/types/preference-types.js +0 -2
  556. package/dist/memory/types/preference-types.js.map +0 -1
  557. package/dist/memory/types/unified-memory.d.ts +0 -29
  558. package/dist/memory/types/unified-memory.d.ts.map +0 -1
  559. package/dist/memory/types/unified-memory.js +0 -21
  560. package/dist/memory/types/unified-memory.js.map +0 -1
  561. package/dist/prompts/templates/PromptTemplates.d.ts +0 -11
  562. package/dist/prompts/templates/PromptTemplates.d.ts.map +0 -1
  563. package/dist/prompts/templates/PromptTemplates.js +0 -942
  564. package/dist/prompts/templates/PromptTemplates.js.map +0 -1
  565. package/dist/prompts/templates/index.d.ts +0 -2
  566. package/dist/prompts/templates/index.d.ts.map +0 -1
  567. package/dist/prompts/templates/index.js +0 -2
  568. package/dist/prompts/templates/index.js.map +0 -1
  569. package/dist/skills/SkillManager.d.ts +0 -33
  570. package/dist/skills/SkillManager.d.ts.map +0 -1
  571. package/dist/skills/SkillManager.js +0 -153
  572. package/dist/skills/SkillManager.js.map +0 -1
  573. package/dist/skills/index.d.ts +0 -3
  574. package/dist/skills/index.d.ts.map +0 -1
  575. package/dist/skills/index.js +0 -2
  576. package/dist/skills/index.js.map +0 -1
  577. package/dist/telemetry/TelemetryCollector.d.ts +0 -19
  578. package/dist/telemetry/TelemetryCollector.d.ts.map +0 -1
  579. package/dist/telemetry/TelemetryCollector.js +0 -62
  580. package/dist/telemetry/TelemetryCollector.js.map +0 -1
  581. package/dist/telemetry/TelemetryStore.d.ts +0 -20
  582. package/dist/telemetry/TelemetryStore.d.ts.map +0 -1
  583. package/dist/telemetry/TelemetryStore.js +0 -127
  584. package/dist/telemetry/TelemetryStore.js.map +0 -1
  585. package/dist/telemetry/index.d.ts +0 -8
  586. package/dist/telemetry/index.d.ts.map +0 -1
  587. package/dist/telemetry/index.js +0 -33
  588. package/dist/telemetry/index.js.map +0 -1
  589. package/dist/telemetry/sanitization.d.ts +0 -6
  590. package/dist/telemetry/sanitization.d.ts.map +0 -1
  591. package/dist/telemetry/sanitization.js +0 -180
  592. package/dist/telemetry/sanitization.js.map +0 -1
  593. package/dist/telemetry/types.d.ts +0 -73
  594. package/dist/telemetry/types.d.ts.map +0 -1
  595. package/dist/telemetry/types.js +0 -16
  596. package/dist/telemetry/types.js.map +0 -1
  597. package/dist/tools/TestGenerator.d.ts +0 -8
  598. package/dist/tools/TestGenerator.d.ts.map +0 -1
  599. package/dist/tools/TestGenerator.js +0 -54
  600. package/dist/tools/TestGenerator.js.map +0 -1
  601. package/dist/types/AgentClassification.d.ts +0 -30
  602. package/dist/types/AgentClassification.d.ts.map +0 -1
  603. package/dist/types/AgentClassification.js +0 -19
  604. package/dist/types/AgentClassification.js.map +0 -1
  605. package/dist/types/Checkpoint.d.ts +0 -12
  606. package/dist/types/Checkpoint.d.ts.map +0 -1
  607. package/dist/types/Checkpoint.js +0 -13
  608. package/dist/types/Checkpoint.js.map +0 -1
  609. package/dist/types/toonify.d.ts +0 -91
  610. package/dist/types/toonify.d.ts.map +0 -1
  611. package/dist/types/toonify.js +0 -18
  612. package/dist/types/toonify.js.map +0 -1
  613. package/dist/ui/AsciiProgressBar.d.ts +0 -29
  614. package/dist/ui/AsciiProgressBar.d.ts.map +0 -1
  615. package/dist/ui/AsciiProgressBar.js +0 -130
  616. package/dist/ui/AsciiProgressBar.js.map +0 -1
  617. package/dist/ui/AttributionManager.d.ts +0 -19
  618. package/dist/ui/AttributionManager.d.ts.map +0 -1
  619. package/dist/ui/AttributionManager.js +0 -107
  620. package/dist/ui/AttributionManager.js.map +0 -1
  621. package/dist/ui/Dashboard.d.ts +0 -24
  622. package/dist/ui/Dashboard.d.ts.map +0 -1
  623. package/dist/ui/Dashboard.js +0 -135
  624. package/dist/ui/Dashboard.js.map +0 -1
  625. package/dist/ui/LoadingIndicator.d.ts +0 -53
  626. package/dist/ui/LoadingIndicator.d.ts.map +0 -1
  627. package/dist/ui/LoadingIndicator.js +0 -211
  628. package/dist/ui/LoadingIndicator.js.map +0 -1
  629. package/dist/ui/MetricsStore.d.ts +0 -15
  630. package/dist/ui/MetricsStore.d.ts.map +0 -1
  631. package/dist/ui/MetricsStore.js +0 -131
  632. package/dist/ui/MetricsStore.js.map +0 -1
  633. package/dist/ui/ProgressIndicator.d.ts +0 -35
  634. package/dist/ui/ProgressIndicator.d.ts.map +0 -1
  635. package/dist/ui/ProgressIndicator.js +0 -177
  636. package/dist/ui/ProgressIndicator.js.map +0 -1
  637. package/dist/ui/ProgressRenderer.d.ts +0 -24
  638. package/dist/ui/ProgressRenderer.d.ts.map +0 -1
  639. package/dist/ui/ProgressRenderer.js +0 -143
  640. package/dist/ui/ProgressRenderer.js.map +0 -1
  641. package/dist/ui/ResponseFormatter.d.ts +0 -57
  642. package/dist/ui/ResponseFormatter.d.ts.map +0 -1
  643. package/dist/ui/ResponseFormatter.js +0 -513
  644. package/dist/ui/ResponseFormatter.js.map +0 -1
  645. package/dist/ui/UIEventBus.d.ts +0 -38
  646. package/dist/ui/UIEventBus.d.ts.map +0 -1
  647. package/dist/ui/UIEventBus.js +0 -173
  648. package/dist/ui/UIEventBus.js.map +0 -1
  649. package/dist/ui/accessibility.d.ts +0 -28
  650. package/dist/ui/accessibility.d.ts.map +0 -1
  651. package/dist/ui/accessibility.js +0 -97
  652. package/dist/ui/accessibility.js.map +0 -1
  653. package/dist/ui/design-tokens.d.ts +0 -36
  654. package/dist/ui/design-tokens.d.ts.map +0 -1
  655. package/dist/ui/design-tokens.js +0 -94
  656. package/dist/ui/design-tokens.js.map +0 -1
  657. package/dist/ui/index.d.ts +0 -8
  658. package/dist/ui/index.d.ts.map +0 -1
  659. package/dist/ui/index.js +0 -6
  660. package/dist/ui/index.js.map +0 -1
  661. package/dist/ui/theme.d.ts +0 -313
  662. package/dist/ui/theme.d.ts.map +0 -1
  663. package/dist/ui/theme.js +0 -198
  664. package/dist/ui/theme.js.map +0 -1
  665. package/dist/ui/types.d.ts +0 -146
  666. package/dist/ui/types.d.ts.map +0 -1
  667. package/dist/ui/types.js +0 -16
  668. package/dist/ui/types.js.map +0 -1
  669. package/dist/utils/ILogger.d.ts +0 -7
  670. package/dist/utils/ILogger.d.ts.map +0 -1
  671. package/dist/utils/ILogger.js +0 -2
  672. package/dist/utils/ILogger.js.map +0 -1
  673. package/dist/utils/MinHeap.d.ts +0 -15
  674. package/dist/utils/MinHeap.d.ts.map +0 -1
  675. package/dist/utils/MinHeap.js +0 -69
  676. package/dist/utils/MinHeap.js.map +0 -1
  677. package/dist/utils/PathResolver.d.ts +0 -13
  678. package/dist/utils/PathResolver.d.ts.map +0 -1
  679. package/dist/utils/PathResolver.js +0 -77
  680. package/dist/utils/PathResolver.js.map +0 -1
  681. package/dist/utils/RateLimiter.d.ts +0 -28
  682. package/dist/utils/RateLimiter.d.ts.map +0 -1
  683. package/dist/utils/RateLimiter.js +0 -115
  684. package/dist/utils/RateLimiter.js.map +0 -1
  685. package/dist/utils/SystemResources.d.ts +0 -40
  686. package/dist/utils/SystemResources.d.ts.map +0 -1
  687. package/dist/utils/SystemResources.js +0 -216
  688. package/dist/utils/SystemResources.js.map +0 -1
  689. package/dist/utils/errorHandler.d.ts +0 -49
  690. package/dist/utils/errorHandler.d.ts.map +0 -1
  691. package/dist/utils/errorHandler.js +0 -397
  692. package/dist/utils/errorHandler.js.map +0 -1
  693. package/dist/utils/index.d.ts +0 -17
  694. package/dist/utils/index.d.ts.map +0 -1
  695. package/dist/utils/index.js +0 -15
  696. package/dist/utils/index.js.map +0 -1
  697. package/dist/utils/json.d.ts +0 -13
  698. package/dist/utils/json.d.ts.map +0 -1
  699. package/dist/utils/json.js +0 -95
  700. package/dist/utils/json.js.map +0 -1
  701. package/dist/utils/logger.d.ts +0 -16
  702. package/dist/utils/logger.d.ts.map +0 -1
  703. package/dist/utils/logger.js +0 -125
  704. package/dist/utils/logger.js.map +0 -1
  705. package/dist/utils/lru-cache.d.ts +0 -47
  706. package/dist/utils/lru-cache.d.ts.map +0 -1
  707. package/dist/utils/lru-cache.js +0 -239
  708. package/dist/utils/lru-cache.js.map +0 -1
  709. package/dist/utils/memory.d.ts +0 -20
  710. package/dist/utils/memory.d.ts.map +0 -1
  711. package/dist/utils/memory.js +0 -53
  712. package/dist/utils/memory.js.map +0 -1
  713. package/dist/utils/money.d.ts +0 -10
  714. package/dist/utils/money.d.ts.map +0 -1
  715. package/dist/utils/money.js +0 -25
  716. package/dist/utils/money.js.map +0 -1
  717. package/dist/utils/pathValidation.d.ts +0 -2
  718. package/dist/utils/pathValidation.d.ts.map +0 -1
  719. package/dist/utils/pathValidation.js +0 -62
  720. package/dist/utils/pathValidation.js.map +0 -1
  721. package/dist/utils/paths.d.ts +0 -4
  722. package/dist/utils/paths.d.ts.map +0 -1
  723. package/dist/utils/paths.js +0 -28
  724. package/dist/utils/paths.js.map +0 -1
  725. package/dist/utils/requestId.d.ts +0 -4
  726. package/dist/utils/requestId.d.ts.map +0 -1
  727. package/dist/utils/requestId.js +0 -17
  728. package/dist/utils/requestId.js.map +0 -1
  729. package/dist/utils/retry.d.ts +0 -20
  730. package/dist/utils/retry.d.ts.map +0 -1
  731. package/dist/utils/retry.js +0 -226
  732. package/dist/utils/retry.js.map +0 -1
  733. package/dist/utils/safeMath.d.ts +0 -11
  734. package/dist/utils/safeMath.d.ts.map +0 -1
  735. package/dist/utils/safeMath.js +0 -92
  736. package/dist/utils/safeMath.js.map +0 -1
  737. package/dist/utils/toonify-adapter.d.ts +0 -77
  738. package/dist/utils/toonify-adapter.d.ts.map +0 -1
  739. package/dist/utils/toonify-adapter.js +0 -282
  740. package/dist/utils/toonify-adapter.js.map +0 -1
  741. package/dist/utils/tracing/TraceContext.d.ts +0 -23
  742. package/dist/utils/tracing/TraceContext.d.ts.map +0 -1
  743. package/dist/utils/tracing/TraceContext.js +0 -127
  744. package/dist/utils/tracing/TraceContext.js.map +0 -1
  745. package/dist/utils/tracing/index.d.ts +0 -2
  746. package/dist/utils/tracing/index.d.ts.map +0 -1
  747. package/dist/utils/tracing/index.js +0 -2
  748. package/dist/utils/tracing/index.js.map +0 -1
  749. package/dist/utils/tracing/middleware.d.ts +0 -15
  750. package/dist/utils/tracing/middleware.d.ts.map +0 -1
  751. package/dist/utils/tracing/middleware.js +0 -49
  752. package/dist/utils/tracing/middleware.js.map +0 -1
  753. package/dist/utils/validation.d.ts +0 -12
  754. package/dist/utils/validation.d.ts.map +0 -1
  755. package/dist/utils/validation.js +0 -87
  756. package/dist/utils/validation.js.map +0 -1
  757. package/scripts/health-check.js +0 -255
  758. package/scripts/hooks/README.md +0 -230
  759. package/scripts/hooks/__tests__/hook-test-harness.js +0 -218
  760. package/scripts/hooks/__tests__/hooks.test.js +0 -267
  761. package/scripts/hooks/__tests__/post-tool-use-recall.test.js +0 -192
  762. package/scripts/hooks/__tests__/session-start-recall.test.js +0 -86
  763. package/scripts/hooks/hook-utils.js +0 -899
  764. package/scripts/hooks/post-tool-use-recall-utils.js +0 -74
  765. package/scripts/hooks/post-tool-use.js +0 -895
  766. package/scripts/hooks/pre-tool-use.js +0 -491
  767. package/scripts/hooks/session-start-recall-utils.js +0 -40
  768. package/scripts/hooks/stop.js +0 -673
  769. package/scripts/hooks/subagent-stop.js +0 -184
  770. package/scripts/hooks/templates/planning-template.md +0 -46
  771. package/scripts/postinstall-lib.js +0 -242
  772. package/scripts/postinstall-new.js +0 -191
  773. package/skills/comprehensive-code-review/SKILL.md +0 -276
@@ -1,895 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * PostToolUse Hook - Claude Code Event-Driven Hooks
5
- *
6
- * Triggered after each tool execution in Claude Code.
7
- *
8
- * Features (Silent Observer):
9
- * - Reads tool execution data from stdin
10
- * - Detects patterns (READ_BEFORE_EDIT, Git workflows, Frontend work, Search patterns)
11
- * - Detects anomalies (slow execution, high tokens, failures, quota warnings)
12
- * - Updates recommendations.json incrementally
13
- * - Updates current-session.json
14
- * - Auto-saves key points to MeMesh when token threshold reached
15
- * - Runs silently (no console output - non-intrusive)
16
- */
17
-
18
- import {
19
- STATE_DIR,
20
- MEMESH_DB_PATH,
21
- THRESHOLDS,
22
- readJSONFile,
23
- writeJSONFile,
24
- writeJSONFileAsync,
25
- sqliteBatchEntity,
26
- readStdin,
27
- logError,
28
- logMemorySave,
29
- getDateString,
30
- isPlanFile,
31
- parsePlanSteps,
32
- derivePlanName,
33
- sqliteQueryJSON,
34
- updateEntityMetadata,
35
- addObservation,
36
- } from './hook-utils.js';
37
- import { isTestCommand, extractTestFailureContext, buildTestFailureQuery, buildErrorQuery } from './post-tool-use-recall-utils.js';
38
- import fs from 'fs';
39
- import path from 'path';
40
-
41
- // ============================================================================
42
- // File Paths
43
- // ============================================================================
44
-
45
- const RECOMMENDATIONS_FILE = path.join(STATE_DIR, 'recommendations.json');
46
- const CURRENT_SESSION_FILE = path.join(STATE_DIR, 'current-session.json');
47
- const SESSION_CONTEXT_FILE = path.join(STATE_DIR, 'session-context.json');
48
-
49
- // ============================================================================
50
- // Pattern Detection
51
- // ============================================================================
52
-
53
- /**
54
- * Pattern Detector - Analyzes tool usage patterns
55
- */
56
- class PatternDetector {
57
- constructor() {
58
- this.recentTools = [];
59
- }
60
-
61
- /**
62
- * Add a tool call to the recent tools list
63
- * @param {Object} toolData - Tool execution data
64
- */
65
- addToolCall(toolData) {
66
- this.recentTools.push({
67
- toolName: toolData.toolName,
68
- args: toolData.arguments,
69
- timestamp: new Date().toISOString(),
70
- });
71
-
72
- // Keep only last 10 (using slice instead of shift for better performance)
73
- if (this.recentTools.length > 10) {
74
- this.recentTools = this.recentTools.slice(-10);
75
- }
76
- }
77
-
78
- /**
79
- * Detect patterns in recent tool usage
80
- * @param {Object} currentTool - Current tool execution data
81
- * @returns {Array} Detected patterns
82
- */
83
- detectPatterns(currentTool) {
84
- const patterns = [];
85
-
86
- if (!currentTool || !currentTool.toolName) {
87
- return patterns;
88
- }
89
-
90
- const toolArgs = currentTool.arguments || {};
91
-
92
- // Pattern 1: READ_BEFORE_EDIT
93
- if (currentTool.toolName === 'Edit') {
94
- const filePath = toolArgs.file_path;
95
- if (filePath) {
96
- const recentReads = this.recentTools.filter(t =>
97
- t.toolName === 'Read' && t.args?.file_path === filePath
98
- );
99
- if (recentReads.length > 0) {
100
- patterns.push({
101
- type: 'READ_BEFORE_EDIT',
102
- description: 'Read before Edit - correct behavior',
103
- severity: 'info',
104
- });
105
- } else {
106
- patterns.push({
107
- type: 'EDIT_WITHOUT_READ',
108
- description: `Edit ${path.basename(filePath)} without prior Read`,
109
- severity: 'warning',
110
- });
111
- }
112
- }
113
- }
114
-
115
- // Pattern 2: Git Workflow
116
- const gitCommands = ['git add', 'git commit', 'git push', 'git branch', 'git checkout'];
117
- if (currentTool.toolName === 'Bash' && toolArgs.command) {
118
- const cmd = toolArgs.command;
119
- if (gitCommands.some(gitCmd => cmd.includes(gitCmd))) {
120
- const recentGitOps = this.recentTools.filter(t =>
121
- t.toolName === 'Bash' && gitCommands.some(gc => t.args?.command?.includes(gc))
122
- ).length;
123
-
124
- if (recentGitOps >= 2) {
125
- patterns.push({
126
- type: 'GIT_WORKFLOW',
127
- description: `Git workflow detected (${recentGitOps + 1} operations)`,
128
- severity: 'info',
129
- suggestion: 'Consider loading devops-git-workflows skill',
130
- });
131
- }
132
- }
133
- }
134
-
135
- // Pattern 3: Frontend Work
136
- const frontendExtensions = ['.tsx', '.jsx', '.vue', '.svelte', '.css', '.scss'];
137
- if (['Edit', 'Write', 'Read'].includes(currentTool.toolName)) {
138
- const filePath = toolArgs.file_path;
139
- if (filePath && frontendExtensions.some(ext => filePath.endsWith(ext))) {
140
- const recentFrontendOps = this.recentTools.filter(t =>
141
- ['Edit', 'Write', 'Read'].includes(t.toolName) &&
142
- frontendExtensions.some(ext => t.args?.file_path?.endsWith(ext))
143
- ).length;
144
-
145
- if (recentFrontendOps >= 2) {
146
- patterns.push({
147
- type: 'FRONTEND_WORK',
148
- description: `Frontend work detected (${recentFrontendOps + 1} files)`,
149
- severity: 'info',
150
- suggestion: 'Consider loading frontend-design skill',
151
- });
152
- }
153
- }
154
- }
155
-
156
- // Pattern 4: Intensive Search
157
- if (['Grep', 'Glob'].includes(currentTool.toolName)) {
158
- const recentSearches = this.recentTools.filter(t =>
159
- ['Grep', 'Glob'].includes(t.toolName)
160
- ).length;
161
-
162
- if (recentSearches >= 3) {
163
- patterns.push({
164
- type: 'INTENSIVE_SEARCH',
165
- description: `Multiple search operations (${recentSearches + 1} times)`,
166
- severity: 'info',
167
- });
168
- }
169
- }
170
-
171
- return patterns;
172
- }
173
- }
174
-
175
- // ============================================================================
176
- // Anomaly Detection
177
- // ============================================================================
178
-
179
- /**
180
- * Detect anomalies in tool execution
181
- * @param {Object} toolData - Tool execution data
182
- * @param {Object} sessionContext - Session context with quota info
183
- * @returns {Array} Detected anomalies
184
- */
185
- function detectAnomalies(toolData, sessionContext) {
186
- const anomalies = [];
187
-
188
- // Anomaly 1: Slow Execution
189
- if (toolData.duration && toolData.duration > THRESHOLDS.SLOW_EXECUTION) {
190
- anomalies.push({
191
- type: 'SLOW_EXECUTION',
192
- description: `${toolData.toolName} took ${(toolData.duration / 1000).toFixed(1)}s (slow)`,
193
- severity: 'warning',
194
- });
195
- }
196
-
197
- // Anomaly 2: High Token Usage
198
- if (toolData.tokensUsed && toolData.tokensUsed > THRESHOLDS.HIGH_TOKENS) {
199
- anomalies.push({
200
- type: 'HIGH_TOKENS',
201
- description: `${toolData.toolName} used ${toolData.tokensUsed} tokens (high usage)`,
202
- severity: 'warning',
203
- });
204
- }
205
-
206
- // Anomaly 3: Execution Failure
207
- if (toolData.success === false) {
208
- anomalies.push({
209
- type: 'EXECUTION_FAILURE',
210
- description: `${toolData.toolName} execution failed`,
211
- severity: 'error',
212
- });
213
- }
214
-
215
- // Anomaly 4: Quota Warning
216
- if (sessionContext.tokenQuota) {
217
- const quotaUsed = sessionContext.tokenQuota.used + (toolData.tokensUsed || 0);
218
- const quotaPercentage = quotaUsed / sessionContext.tokenQuota.limit;
219
-
220
- if (quotaPercentage > THRESHOLDS.QUOTA_WARNING) {
221
- anomalies.push({
222
- type: 'QUOTA_WARNING',
223
- description: `Token quota at ${(quotaPercentage * 100).toFixed(1)}%`,
224
- severity: 'warning',
225
- });
226
- }
227
- }
228
-
229
- return anomalies;
230
- }
231
-
232
- // ============================================================================
233
- // Recommendations Update
234
- // ============================================================================
235
-
236
- /**
237
- * Update recommendations based on detected patterns and anomalies
238
- * @param {Array} patterns - Detected patterns
239
- * @param {Array} anomalies - Detected anomalies
240
- */
241
- function updateRecommendations(patterns, anomalies) {
242
- const recommendations = readJSONFile(RECOMMENDATIONS_FILE, {
243
- recommendedSkills: [],
244
- detectedPatterns: [],
245
- warnings: [],
246
- lastUpdated: null,
247
- });
248
-
249
- // Add new skills based on patterns
250
- patterns.forEach(pattern => {
251
- if (pattern.suggestion && pattern.suggestion.includes('skill')) {
252
- const skillMatch = pattern.suggestion.match(/loading\s+(.+?)\s+skill/);
253
- if (skillMatch) {
254
- const skillName = skillMatch[1];
255
- const existing = recommendations.recommendedSkills.find(s => s.name === skillName);
256
- if (!existing) {
257
- recommendations.recommendedSkills.push({
258
- name: skillName,
259
- reason: pattern.description,
260
- priority: 'medium',
261
- });
262
- }
263
- }
264
- }
265
- });
266
-
267
- // Add detected patterns (keep last 10)
268
- patterns.forEach(pattern => {
269
- if (pattern && pattern.description) {
270
- recommendations.detectedPatterns.unshift({
271
- description: pattern.description,
272
- suggestion: pattern.suggestion || '',
273
- timestamp: new Date().toISOString(),
274
- });
275
- }
276
- });
277
- recommendations.detectedPatterns = recommendations.detectedPatterns.slice(0, 10);
278
-
279
- // Add warnings from anomalies (keep last 5)
280
- anomalies
281
- .filter(a => a.severity === 'warning' || a.severity === 'error')
282
- .forEach(anomaly => {
283
- recommendations.warnings.unshift(anomaly.description);
284
- });
285
- recommendations.warnings = recommendations.warnings.slice(0, 5);
286
-
287
- recommendations.lastUpdated = new Date().toISOString();
288
-
289
- // Async write — non-blocking, caller awaits via pendingWrites
290
- return writeJSONFileAsync(RECOMMENDATIONS_FILE, recommendations);
291
- }
292
-
293
- // ============================================================================
294
- // Session Update
295
- // ============================================================================
296
-
297
- /**
298
- * Update current session with tool call data
299
- * @param {Object} toolData - Tool execution data
300
- * @param {Array} patterns - Detected patterns
301
- * @param {Array} anomalies - Detected anomalies
302
- */
303
- function updateCurrentSession(toolData, patterns, anomalies) {
304
- const currentSession = readJSONFile(CURRENT_SESSION_FILE, {
305
- startTime: new Date().toISOString(),
306
- toolCalls: [],
307
- patterns: [],
308
- });
309
-
310
- // Add tool call record
311
- currentSession.toolCalls.push({
312
- timestamp: new Date().toISOString(),
313
- toolName: toolData.toolName,
314
- arguments: toolData.arguments,
315
- duration: toolData.duration,
316
- success: toolData.success,
317
- tokenUsage: toolData.tokensUsed,
318
- });
319
-
320
- // Cap toolCalls to prevent unbounded growth in long sessions
321
- const MAX_TOOL_CALLS = 1000;
322
- if (currentSession.toolCalls.length > MAX_TOOL_CALLS) {
323
- currentSession.toolCalls = currentSession.toolCalls.slice(-MAX_TOOL_CALLS);
324
- }
325
-
326
- // Track file modifications and test executions (for dry-run gate)
327
- trackFileModifications(toolData, currentSession);
328
- trackTestExecutions(toolData, currentSession);
329
-
330
- // Update pattern counts
331
- patterns.forEach(pattern => {
332
- const existing = currentSession.patterns.find(p => p.type === pattern.type);
333
- if (!existing) {
334
- currentSession.patterns.push({
335
- type: pattern.type,
336
- count: 1,
337
- firstDetected: new Date().toISOString(),
338
- });
339
- } else {
340
- existing.count++;
341
- }
342
- });
343
-
344
- // Async write — session file is read on next call, eventual consistency is fine
345
- // Return promise so caller can track it in pendingWrites
346
- const writePromise = writeJSONFileAsync(CURRENT_SESSION_FILE, currentSession);
347
-
348
- return { session: currentSession, writePromise };
349
- }
350
-
351
- /**
352
- * Update session context (quota tracking)
353
- * @param {Object} toolData - Tool execution data
354
- * @returns {{ sessionContext: Object, writePromise: Promise<boolean> }}
355
- */
356
- function updateSessionContext(toolData) {
357
- const sessionContext = readJSONFile(SESSION_CONTEXT_FILE, {
358
- tokenQuota: { used: 0, limit: 200000 },
359
- learnedPatterns: [],
360
- lastSessionDate: null,
361
- lastSaveTokens: 0,
362
- });
363
-
364
- // Update token usage
365
- if (toolData.tokensUsed) {
366
- sessionContext.tokenQuota.used += toolData.tokensUsed;
367
- }
368
-
369
- sessionContext.lastSessionDate = new Date().toISOString();
370
-
371
- const writePromise = writeJSONFileAsync(SESSION_CONTEXT_FILE, sessionContext);
372
-
373
- return { sessionContext, writePromise };
374
- }
375
-
376
- // ============================================================================
377
- // MeMesh Key Points Auto-Save
378
- // ============================================================================
379
-
380
- /**
381
- * Extract key points from session state
382
- * @param {Object} sessionState - Current session state
383
- * @returns {Array<string>} Extracted key points
384
- */
385
- function extractKeyPoints(sessionState) {
386
- const keyPoints = [];
387
-
388
- if (!sessionState?.toolCalls?.length) {
389
- return keyPoints;
390
- }
391
-
392
- // 1. Identify completed file operations
393
- const fileOps = {};
394
- sessionState.toolCalls.forEach(tc => {
395
- if (['Edit', 'Write'].includes(tc.toolName) && tc.arguments?.file_path) {
396
- const filePath = tc.arguments.file_path;
397
- fileOps[filePath] = (fileOps[filePath] || 0) + 1;
398
- }
399
- });
400
-
401
- const modifiedFiles = Object.keys(fileOps);
402
- if (modifiedFiles.length > 0) {
403
- const summary = modifiedFiles.length > 5
404
- ? `${modifiedFiles.slice(0, 5).map(f => path.basename(f)).join(', ')} (+${modifiedFiles.length - 5} more)`
405
- : modifiedFiles.map(f => path.basename(f)).join(', ');
406
- keyPoints.push(`[TASK] Modified files: ${summary}`);
407
- }
408
-
409
- // 2. Identify failures
410
- const failures = sessionState.toolCalls.filter(tc => tc.success === false);
411
- if (failures.length > 0) {
412
- const failedTools = [...new Set(failures.map(f => f.toolName))];
413
- keyPoints.push(`[PROBLEM] ${failures.length} tool failures: ${failedTools.join(', ')}`);
414
- }
415
-
416
- // 3. Git operations
417
- const gitCommits = sessionState.toolCalls.filter(tc =>
418
- tc.toolName === 'Bash' && tc.arguments?.command?.includes('git commit')
419
- );
420
- if (gitCommits.length > 0) {
421
- keyPoints.push(`[DECISION] Made ${gitCommits.length} git commit(s)`);
422
- }
423
-
424
- // 4. Detected patterns
425
- if (sessionState.patterns?.length > 0) {
426
- const patternSummary = sessionState.patterns
427
- .filter(p => p.count > 2)
428
- .map(p => `${p.type}(${p.count})`)
429
- .join(', ');
430
- if (patternSummary) {
431
- keyPoints.push(`[PATTERN] Recurring patterns: ${patternSummary}`);
432
- }
433
- }
434
-
435
- // 5. Work scope indicator
436
- const toolCounts = {};
437
- sessionState.toolCalls.forEach(tc => {
438
- toolCounts[tc.toolName] = (toolCounts[tc.toolName] || 0) + 1;
439
- });
440
- const topTools = Object.entries(toolCounts)
441
- .sort((a, b) => b[1] - a[1])
442
- .slice(0, 3)
443
- .map(([tool, count]) => `${tool}:${count}`)
444
- .join(', ');
445
- keyPoints.push(`[SCOPE] Tool usage: ${topTools}, total: ${sessionState.toolCalls.length}`);
446
-
447
- return keyPoints;
448
- }
449
-
450
- /**
451
- * Save conversation key points to MeMesh knowledge graph.
452
- * Uses sqliteBatchEntity for performance (3 spawns instead of N).
453
- * @param {Object} sessionState - Current session state
454
- * @param {Object} sessionContext - Session context
455
- * @returns {boolean} True if saved successfully
456
- */
457
- function saveConversationKeyPoints(sessionState, sessionContext) {
458
- try {
459
- if (!fs.existsSync(MEMESH_DB_PATH)) {
460
- logError('saveConversationKeyPoints', `MeMesh DB not found: ${MEMESH_DB_PATH}`);
461
- return false;
462
- }
463
-
464
- const keyPoints = extractKeyPoints(sessionState);
465
- if (keyPoints.length === 0) {
466
- return false;
467
- }
468
-
469
- const entityName = `session_keypoints_${Date.now()}`;
470
-
471
- const metadata = JSON.stringify({
472
- tokensSaved: sessionContext.tokenQuota?.used || 0,
473
- toolCount: sessionState.toolCalls?.length || 0,
474
- saveReason: 'token_threshold',
475
- });
476
-
477
- const tags = ['auto_saved', 'token_trigger', getDateString()];
478
-
479
- const entityId = sqliteBatchEntity(
480
- MEMESH_DB_PATH,
481
- { name: entityName, type: 'session_keypoint', metadata },
482
- keyPoints,
483
- tags
484
- );
485
-
486
- if (entityId === null) {
487
- return false;
488
- }
489
-
490
- logMemorySave(`🧠 MeMesh: Saved ${keyPoints.length} key points (tokens: ${sessionContext.tokenQuota?.used})`);
491
-
492
- return true;
493
- } catch (error) {
494
- logError('saveConversationKeyPoints', error);
495
- return false;
496
- }
497
- }
498
-
499
- /**
500
- * Check if token threshold reached and save key points
501
- * @param {Object} sessionState - Current session state
502
- * @param {Object} sessionContext - Session context
503
- * @returns {boolean} True if saved
504
- */
505
- function checkAndSaveKeyPoints(sessionState, sessionContext) {
506
- try {
507
- const lastSaveTokens = sessionContext.lastSaveTokens || 0;
508
- const currentTokens = sessionContext.tokenQuota?.used || 0;
509
- const tokensSinceLastSave = currentTokens - lastSaveTokens;
510
-
511
- if (tokensSinceLastSave >= THRESHOLDS.TOKEN_SAVE) {
512
- const saved = saveConversationKeyPoints(sessionState, sessionContext);
513
-
514
- if (saved) {
515
- sessionContext.lastSaveTokens = currentTokens;
516
- writeJSONFile(SESSION_CONTEXT_FILE, sessionContext);
517
- }
518
-
519
- return saved;
520
- }
521
-
522
- return false;
523
- } catch (error) {
524
- logError('checkAndSaveKeyPoints', error);
525
- return false;
526
- }
527
- }
528
-
529
- // ============================================================================
530
- // File Modification & Test Tracking (for dry-run gate in pre-tool-use.js)
531
- // ============================================================================
532
-
533
- /**
534
- * Track file modifications from Write/Edit tool calls.
535
- * Stores modified file paths in session state.
536
- * @param {Object} toolData - Normalized tool data
537
- * @param {Object} currentSession - Current session state (mutated in place)
538
- */
539
- function trackFileModifications(toolData, currentSession) {
540
- if (!['Edit', 'Write'].includes(toolData.toolName)) return;
541
-
542
- const filePath = toolData.arguments?.file_path;
543
- if (!filePath) return;
544
-
545
- if (!currentSession.modifiedFiles) {
546
- currentSession.modifiedFiles = [];
547
- }
548
-
549
- const MAX_MODIFIED_FILES = 100;
550
- if (!currentSession.modifiedFiles.includes(filePath)) {
551
- if (currentSession.modifiedFiles.length >= MAX_MODIFIED_FILES) {
552
- currentSession.modifiedFiles.shift(); // Remove oldest entry
553
- }
554
- currentSession.modifiedFiles.push(filePath);
555
- }
556
- }
557
-
558
- /** Patterns that indicate test execution in a Bash command */
559
- const TEST_PATTERNS = [
560
- /vitest\s+(run|watch)?/,
561
- /jest\b/,
562
- /npm\s+test/,
563
- /npm\s+run\s+test/,
564
- /npx\s+vitest/,
565
- /npx\s+jest/,
566
- /tsc\s+--noEmit/,
567
- /node\s+--check\s/,
568
- /bun\s+test/,
569
- /pytest\b/,
570
- ];
571
-
572
- /**
573
- * Track test executions from Bash tool calls.
574
- * Marks tested files/directories in session state.
575
- * @param {Object} toolData - Normalized tool data
576
- * @param {Object} currentSession - Current session state (mutated in place)
577
- */
578
- function trackTestExecutions(toolData, currentSession) {
579
- if (toolData.toolName !== 'Bash') return;
580
- if (!toolData.success) return;
581
-
582
- const cmd = toolData.arguments?.command || '';
583
- const isTest = TEST_PATTERNS.some(pattern => pattern.test(cmd));
584
- if (!isTest) return;
585
-
586
- if (!currentSession.testedFiles) {
587
- currentSession.testedFiles = [];
588
- }
589
-
590
- currentSession.lastTestRun = new Date().toISOString();
591
-
592
- // Extract test target path if provided
593
- // e.g., "vitest run src/auth" → mark all modified files under src/auth/ as tested
594
- const pathMatch = cmd.match(/(?:vitest|jest|node\s+--check)\s+(?:run\s+)?(\S+)/);
595
- const testTarget = pathMatch ? pathMatch[1] : null;
596
-
597
- if (testTarget && currentSession.modifiedFiles) {
598
- // Mark files under the test target directory/path as tested
599
- // Use path-prefix match: "src/auth" matches "src/auth/middleware.ts" but NOT "src/auth-utils/helper.ts"
600
- for (const modFile of currentSession.modifiedFiles) {
601
- const isMatch = modFile === testTarget ||
602
- modFile.startsWith(testTarget + '/') ||
603
- modFile.startsWith(testTarget + path.sep);
604
- if (isMatch && !currentSession.testedFiles.includes(modFile)) {
605
- currentSession.testedFiles.push(modFile);
606
- }
607
- }
608
- } else if (!testTarget && currentSession.modifiedFiles) {
609
- // Full test run (no specific target) — mark all modified files as tested
610
- for (const modFile of currentSession.modifiedFiles) {
611
- if (!currentSession.testedFiles.includes(modFile)) {
612
- currentSession.testedFiles.push(modFile);
613
- }
614
- }
615
- }
616
- }
617
-
618
- // ============================================================================
619
- // Code Review Tracking
620
- // ============================================================================
621
-
622
- /**
623
- * Check if this tool call is a code review invocation.
624
- * Detects both Skill tool usage and Task tool dispatching code reviewers.
625
- * @param {Object} toolData - Normalized tool data
626
- * @returns {boolean}
627
- */
628
- function isCodeReviewInvocation(toolData) {
629
- // Skill tool with code review
630
- if (toolData.toolName === 'Skill') {
631
- const name = toolData.arguments?.name || toolData.arguments?.skill_name || '';
632
- return /code.?review|comprehensive.?code.?review/i.test(name);
633
- }
634
-
635
- // Task tool dispatching code reviewer subagent
636
- if (toolData.toolName === 'Task') {
637
- const subagentType = toolData.arguments?.subagent_type || '';
638
- return /code.?review/i.test(subagentType);
639
- }
640
-
641
- return false;
642
- }
643
-
644
- /**
645
- * Mark code review as done in session state.
646
- * This flag is checked by pre-tool-use.js before git commits.
647
- */
648
- function markCodeReviewDone() {
649
- const session = readJSONFile(CURRENT_SESSION_FILE, {});
650
- session.codeReviewDone = true;
651
- session.codeReviewTimestamp = new Date().toISOString();
652
- writeJSONFile(CURRENT_SESSION_FILE, session);
653
- }
654
-
655
- // ============================================================================
656
- // Tool Data Normalization
657
- // ============================================================================
658
-
659
- /**
660
- * Normalize tool data from Claude Code format
661
- * @param {Object} raw - Raw tool data from stdin
662
- * @returns {Object} Normalized tool data
663
- */
664
- function normalizeToolData(raw) {
665
- return {
666
- toolName: raw.tool_name || raw.toolName || 'unknown',
667
- arguments: raw.tool_input || raw.arguments || {},
668
- duration: raw.duration_ms || raw.duration || 0,
669
- success: raw.success !== false,
670
- tokensUsed: raw.tokens_used || raw.tokensUsed || 0,
671
- _raw: raw,
672
- };
673
- }
674
-
675
- // ============================================================================
676
- // Plan File Detection (Beta)
677
- // ============================================================================
678
-
679
- /**
680
- * Detect plan file creation and save to KG.
681
- * Triggered when Write tool targets a plan file path.
682
- * @param {Object} toolData - Normalized tool data
683
- */
684
- function detectPlanFile(toolData) {
685
- if (toolData.toolName !== 'Write') return;
686
-
687
- const filePath = toolData.arguments?.file_path;
688
- if (!isPlanFile(filePath)) return;
689
-
690
- try {
691
- // Read the file content
692
- if (!fs.existsSync(filePath)) return;
693
- const content = fs.readFileSync(filePath, 'utf-8');
694
-
695
- const steps = parsePlanSteps(content);
696
- if (steps.length === 0) return;
697
-
698
- if (!fs.existsSync(MEMESH_DB_PATH)) return;
699
-
700
- const planName = derivePlanName(filePath);
701
- const entityName = `Plan: ${planName}`;
702
-
703
- const newMetadata = {
704
- sourceFile: filePath,
705
- totalSteps: steps.length,
706
- completed: steps.filter(s => s.completed).length,
707
- status: 'active',
708
- stepsDetail: steps,
709
- };
710
-
711
- // Check if plan entity already exists (re-save scenario)
712
- const existing = sqliteQueryJSON(MEMESH_DB_PATH,
713
- 'SELECT id FROM entities WHERE name = ?', [entityName]);
714
-
715
- if (existing && existing.length > 0) {
716
- // Upsert: update metadata and add observation for the re-save
717
- updateEntityMetadata(MEMESH_DB_PATH, entityName, newMetadata);
718
- addObservation(MEMESH_DB_PATH, entityName,
719
- `Plan re-saved: ${steps.length} steps (${steps.filter(s => s.completed).length} completed)`);
720
- logMemorySave(`Plan updated: ${planName} (${steps.length} steps)`);
721
- } else {
722
- // First save: create entity with observations and tags
723
- const observations = steps.map(s => `Step ${s.number}: ${s.description}`);
724
- const tags = ['plan', 'active', `plan:${planName}`, 'scope:project'];
725
-
726
- sqliteBatchEntity(MEMESH_DB_PATH,
727
- { name: entityName, type: 'workflow_checkpoint', metadata: JSON.stringify(newMetadata) },
728
- observations, tags
729
- );
730
- logMemorySave(`Plan detected: ${planName} (${steps.length} steps)`);
731
- }
732
- } catch (error) {
733
- logError('detectPlanFile', error);
734
- }
735
- }
736
-
737
- // ============================================================================
738
- // Proactive Recall on Test Failure / Error Detection
739
- // ============================================================================
740
-
741
- /**
742
- * Trigger proactive recall on test failure or error detection.
743
- * Writes results to proactive-recall.json for HookToolHandler.
744
- * @param {Object} toolData - Normalized tool data
745
- */
746
- function triggerProactiveRecall(toolData) {
747
- try {
748
- const recallFile = path.join(STATE_DIR, 'proactive-recall.json');
749
- let query = null;
750
- let trigger = null;
751
-
752
- // Test failure detection
753
- if (toolData.toolName === 'Bash' && toolData.arguments?.command) {
754
- if (isTestCommand(toolData.arguments.command) && !toolData.success) {
755
- const ctx = extractTestFailureContext(toolData._raw?.output || '');
756
- if (ctx) {
757
- query = buildTestFailureQuery(ctx.testName, ctx.errorMessage);
758
- trigger = 'test-failure';
759
- }
760
- }
761
- }
762
-
763
- // Error detection (non-test failures)
764
- if (!trigger && !toolData.success && toolData._raw?.output) {
765
- const errorMatch = toolData._raw.output.match(/(\w*Error):\s*(.+)/);
766
- if (errorMatch) {
767
- query = buildErrorQuery(errorMatch[1], errorMatch[2]);
768
- trigger = 'error-detection';
769
- }
770
- }
771
-
772
- if (!query || !trigger) return;
773
-
774
- // Build FTS5 query
775
- const ftsTokens = query.split(/\s+/)
776
- .filter(t => t.length > 2)
777
- .slice(0, 8)
778
- .map(t => `"${t.replace(/"/g, '""')}"*`)
779
- .join(' OR ');
780
-
781
- if (!ftsTokens) return;
782
-
783
- const sql = `
784
- SELECT e.name,
785
- (SELECT json_group_array(content) FROM observations o WHERE o.entity_id = e.id) as observations_json
786
- FROM entities e
787
- JOIN entities_fts ON entities_fts.rowid = e.id
788
- WHERE entities_fts MATCH ?
789
- ORDER BY bm25(entities_fts, 10.0, 5.0)
790
- LIMIT 3
791
- `;
792
-
793
- const result = sqliteQueryJSON(MEMESH_DB_PATH, sql, [ftsTokens]);
794
- if (!result || result.length === 0) return;
795
-
796
- const recallData = {
797
- trigger,
798
- query,
799
- timestamp: Date.now(),
800
- results: result.map(r => ({
801
- name: r.name,
802
- observations: JSON.parse(r.observations_json || '[]').filter(Boolean).slice(0, 2),
803
- })),
804
- };
805
-
806
- writeJSONFile(recallFile, recallData);
807
- } catch (error) {
808
- logError('proactive-recall-trigger', error);
809
- }
810
- }
811
-
812
- // ============================================================================
813
- // Main PostToolUse Logic
814
- // ============================================================================
815
-
816
- async function postToolUse() {
817
- try {
818
- // Read stdin with timeout
819
- const input = await readStdin(3000);
820
-
821
- if (!input || input.trim() === '') {
822
- process.exit(0);
823
- }
824
-
825
- // Parse and normalize tool data
826
- const rawData = JSON.parse(input);
827
- const toolData = normalizeToolData(rawData);
828
-
829
- // Track code review invocations (for pre-commit enforcement)
830
- if (isCodeReviewInvocation(toolData)) {
831
- markCodeReviewDone();
832
- }
833
-
834
- // Detect plan file creation (beta)
835
- detectPlanFile(toolData);
836
-
837
- // Initialize pattern detector
838
- const detector = new PatternDetector();
839
-
840
- // Load recent tools from current session
841
- const currentSession = readJSONFile(CURRENT_SESSION_FILE, { toolCalls: [] });
842
- currentSession.toolCalls.slice(-10).forEach(tc => {
843
- detector.addToolCall({
844
- toolName: tc.toolName,
845
- arguments: tc.arguments || {},
846
- });
847
- });
848
-
849
- // Add current tool
850
- detector.addToolCall(toolData);
851
-
852
- // Detect patterns
853
- const patterns = detector.detectPatterns(toolData);
854
-
855
- // Update session context (for quota tracking) — returns sync data + async write promise
856
- const { sessionContext, writePromise: contextWritePromise } = updateSessionContext(toolData);
857
-
858
- // Detect anomalies
859
- const anomalies = detectAnomalies(toolData, sessionContext);
860
-
861
- // Trigger proactive recall on test failure or error
862
- triggerProactiveRecall(toolData);
863
-
864
- // Fire async writes in parallel
865
- const pendingWrites = [contextWritePromise];
866
-
867
- // Update recommendations incrementally
868
- if (patterns.length > 0 || anomalies.length > 0) {
869
- pendingWrites.push(updateRecommendations(patterns, anomalies));
870
- }
871
-
872
- // Update current session (async write)
873
- const { session: updatedSession, writePromise: sessionWritePromise } =
874
- updateCurrentSession(toolData, patterns, anomalies);
875
- pendingWrites.push(sessionWritePromise);
876
-
877
- // Check token threshold and save key points if needed
878
- checkAndSaveKeyPoints(updatedSession, sessionContext);
879
-
880
- // Wait for all async writes to complete before exit
881
- await Promise.all(pendingWrites);
882
-
883
- // Silent exit
884
- process.exit(0);
885
- } catch (error) {
886
- logError('PostToolUse', error);
887
- process.exit(0); // Never block Claude Code on hook errors
888
- }
889
- }
890
-
891
- // ============================================================================
892
- // Execute
893
- // ============================================================================
894
-
895
- postToolUse();