@pcircle/memesh 2.10.1 → 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 (771) 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 -90
  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/README.de.md +0 -212
  33. package/README.es.md +0 -212
  34. package/README.fr.md +0 -212
  35. package/README.id.md +0 -212
  36. package/README.ja.md +0 -212
  37. package/README.ko.md +0 -212
  38. package/README.th.md +0 -212
  39. package/README.vi.md +0 -212
  40. package/README.zh-CN.md +0 -212
  41. package/README.zh-TW.md +0 -286
  42. package/dist/cli/config.d.ts +0 -36
  43. package/dist/cli/config.d.ts.map +0 -1
  44. package/dist/cli/config.js +0 -398
  45. package/dist/cli/config.js.map +0 -1
  46. package/dist/cli/credentials.d.ts +0 -12
  47. package/dist/cli/credentials.d.ts.map +0 -1
  48. package/dist/cli/credentials.js +0 -44
  49. package/dist/cli/credentials.js.map +0 -1
  50. package/dist/cli/daemon.d.ts +0 -3
  51. package/dist/cli/daemon.d.ts.map +0 -1
  52. package/dist/cli/daemon.js +0 -413
  53. package/dist/cli/daemon.js.map +0 -1
  54. package/dist/cli/dashboard.d.ts +0 -2
  55. package/dist/cli/dashboard.d.ts.map +0 -1
  56. package/dist/cli/dashboard.js +0 -300
  57. package/dist/cli/dashboard.js.map +0 -1
  58. package/dist/cli/index.d.ts +0 -3
  59. package/dist/cli/index.d.ts.map +0 -1
  60. package/dist/cli/index.js +0 -188
  61. package/dist/cli/index.js.map +0 -1
  62. package/dist/cli/login.d.ts +0 -4
  63. package/dist/cli/login.d.ts.map +0 -1
  64. package/dist/cli/login.js +0 -230
  65. package/dist/cli/login.js.map +0 -1
  66. package/dist/cli/logout.d.ts +0 -3
  67. package/dist/cli/logout.d.ts.map +0 -1
  68. package/dist/cli/logout.js +0 -23
  69. package/dist/cli/logout.js.map +0 -1
  70. package/dist/cli/setup-wizard.d.ts +0 -18
  71. package/dist/cli/setup-wizard.d.ts.map +0 -1
  72. package/dist/cli/setup-wizard.js +0 -267
  73. package/dist/cli/setup-wizard.js.map +0 -1
  74. package/dist/cli/stats.d.ts +0 -34
  75. package/dist/cli/stats.d.ts.map +0 -1
  76. package/dist/cli/stats.js +0 -479
  77. package/dist/cli/stats.js.map +0 -1
  78. package/dist/cli/tutorial.d.ts +0 -27
  79. package/dist/cli/tutorial.d.ts.map +0 -1
  80. package/dist/cli/tutorial.js +0 -430
  81. package/dist/cli/tutorial.js.map +0 -1
  82. package/dist/cloud/MeMeshCloudClient.d.ts +0 -88
  83. package/dist/cloud/MeMeshCloudClient.d.ts.map +0 -1
  84. package/dist/cloud/MeMeshCloudClient.js +0 -177
  85. package/dist/cloud/MeMeshCloudClient.js.map +0 -1
  86. package/dist/cloud/index.d.ts +0 -3
  87. package/dist/cloud/index.d.ts.map +0 -1
  88. package/dist/cloud/index.js +0 -2
  89. package/dist/cloud/index.js.map +0 -1
  90. package/dist/config/index.d.ts +0 -61
  91. package/dist/config/index.d.ts.map +0 -1
  92. package/dist/config/index.js +0 -105
  93. package/dist/config/index.js.map +0 -1
  94. package/dist/config/models.d.ts +0 -47
  95. package/dist/config/models.d.ts.map +0 -1
  96. package/dist/config/models.js +0 -57
  97. package/dist/config/models.js.map +0 -1
  98. package/dist/config/simple-config.d.ts +0 -35
  99. package/dist/config/simple-config.d.ts.map +0 -1
  100. package/dist/config/simple-config.js +0 -246
  101. package/dist/config/simple-config.js.map +0 -1
  102. package/dist/core/AgentRegistry.d.ts +0 -31
  103. package/dist/core/AgentRegistry.d.ts.map +0 -1
  104. package/dist/core/AgentRegistry.js +0 -281
  105. package/dist/core/AgentRegistry.js.map +0 -1
  106. package/dist/core/CheckpointDetector.d.ts +0 -25
  107. package/dist/core/CheckpointDetector.d.ts.map +0 -1
  108. package/dist/core/CheckpointDetector.js +0 -67
  109. package/dist/core/CheckpointDetector.js.map +0 -1
  110. package/dist/core/GitCommandParser.d.ts +0 -11
  111. package/dist/core/GitCommandParser.d.ts.map +0 -1
  112. package/dist/core/GitCommandParser.js +0 -43
  113. package/dist/core/GitCommandParser.js.map +0 -1
  114. package/dist/core/HealthCheck.d.ts +0 -39
  115. package/dist/core/HealthCheck.d.ts.map +0 -1
  116. package/dist/core/HealthCheck.js +0 -219
  117. package/dist/core/HealthCheck.js.map +0 -1
  118. package/dist/core/HookIntegration.d.ts +0 -47
  119. package/dist/core/HookIntegration.d.ts.map +0 -1
  120. package/dist/core/HookIntegration.js +0 -275
  121. package/dist/core/HookIntegration.js.map +0 -1
  122. package/dist/core/MCPToolInterface.d.ts +0 -120
  123. package/dist/core/MCPToolInterface.d.ts.map +0 -1
  124. package/dist/core/MCPToolInterface.js +0 -376
  125. package/dist/core/MCPToolInterface.js.map +0 -1
  126. package/dist/core/MistakePatternManager.d.ts +0 -31
  127. package/dist/core/MistakePatternManager.d.ts.map +0 -1
  128. package/dist/core/MistakePatternManager.js +0 -137
  129. package/dist/core/MistakePatternManager.js.map +0 -1
  130. package/dist/core/ResourceMonitor.d.ts +0 -32
  131. package/dist/core/ResourceMonitor.d.ts.map +0 -1
  132. package/dist/core/ResourceMonitor.js +0 -243
  133. package/dist/core/ResourceMonitor.js.map +0 -1
  134. package/dist/core/ServiceLocator.d.ts +0 -10
  135. package/dist/core/ServiceLocator.d.ts.map +0 -1
  136. package/dist/core/ServiceLocator.js +0 -30
  137. package/dist/core/ServiceLocator.js.map +0 -1
  138. package/dist/core/TestOutputParser.d.ts +0 -20
  139. package/dist/core/TestOutputParser.d.ts.map +0 -1
  140. package/dist/core/TestOutputParser.js +0 -144
  141. package/dist/core/TestOutputParser.js.map +0 -1
  142. package/dist/core/types.d.ts +0 -66
  143. package/dist/core/types.d.ts.map +0 -1
  144. package/dist/core/types.js +0 -11
  145. package/dist/core/types.js.map +0 -1
  146. package/dist/db/ConnectionPool.d.ts +0 -50
  147. package/dist/db/ConnectionPool.d.ts.map +0 -1
  148. package/dist/db/ConnectionPool.js +0 -569
  149. package/dist/db/ConnectionPool.js.map +0 -1
  150. package/dist/db/IDatabaseAdapter.d.ts +0 -25
  151. package/dist/db/IDatabaseAdapter.d.ts.map +0 -1
  152. package/dist/db/IDatabaseAdapter.js +0 -2
  153. package/dist/db/IDatabaseAdapter.js.map +0 -1
  154. package/dist/db/QueryCache.d.ts +0 -46
  155. package/dist/db/QueryCache.d.ts.map +0 -1
  156. package/dist/db/QueryCache.js +0 -232
  157. package/dist/db/QueryCache.js.map +0 -1
  158. package/dist/db/adapters/BetterSqlite3Adapter.d.ts +0 -15
  159. package/dist/db/adapters/BetterSqlite3Adapter.d.ts.map +0 -1
  160. package/dist/db/adapters/BetterSqlite3Adapter.js +0 -127
  161. package/dist/db/adapters/BetterSqlite3Adapter.js.map +0 -1
  162. package/dist/embeddings/EmbeddingService.d.ts +0 -23
  163. package/dist/embeddings/EmbeddingService.d.ts.map +0 -1
  164. package/dist/embeddings/EmbeddingService.js +0 -131
  165. package/dist/embeddings/EmbeddingService.js.map +0 -1
  166. package/dist/embeddings/InMemoryVectorAdapter.d.ts +0 -15
  167. package/dist/embeddings/InMemoryVectorAdapter.d.ts.map +0 -1
  168. package/dist/embeddings/InMemoryVectorAdapter.js +0 -58
  169. package/dist/embeddings/InMemoryVectorAdapter.js.map +0 -1
  170. package/dist/embeddings/ModelManager.d.ts +0 -18
  171. package/dist/embeddings/ModelManager.d.ts.map +0 -1
  172. package/dist/embeddings/ModelManager.js +0 -84
  173. package/dist/embeddings/ModelManager.js.map +0 -1
  174. package/dist/embeddings/SqliteVecAdapter.d.ts +0 -15
  175. package/dist/embeddings/SqliteVecAdapter.d.ts.map +0 -1
  176. package/dist/embeddings/SqliteVecAdapter.js +0 -107
  177. package/dist/embeddings/SqliteVecAdapter.js.map +0 -1
  178. package/dist/embeddings/VectorExtension.d.ts +0 -17
  179. package/dist/embeddings/VectorExtension.d.ts.map +0 -1
  180. package/dist/embeddings/VectorExtension.js +0 -107
  181. package/dist/embeddings/VectorExtension.js.map +0 -1
  182. package/dist/embeddings/VectorSearchAdapter.d.ts +0 -17
  183. package/dist/embeddings/VectorSearchAdapter.d.ts.map +0 -1
  184. package/dist/embeddings/VectorSearchAdapter.js +0 -2
  185. package/dist/embeddings/VectorSearchAdapter.js.map +0 -1
  186. package/dist/embeddings/index.d.ts +0 -9
  187. package/dist/embeddings/index.d.ts.map +0 -1
  188. package/dist/embeddings/index.js +0 -7
  189. package/dist/embeddings/index.js.map +0 -1
  190. package/dist/errors/ErrorClassifier.d.ts +0 -60
  191. package/dist/errors/ErrorClassifier.d.ts.map +0 -1
  192. package/dist/errors/ErrorClassifier.js +0 -415
  193. package/dist/errors/ErrorClassifier.js.map +0 -1
  194. package/dist/errors/index.d.ts +0 -63
  195. package/dist/errors/index.d.ts.map +0 -1
  196. package/dist/errors/index.js +0 -127
  197. package/dist/errors/index.js.map +0 -1
  198. package/dist/i18n/index.d.ts +0 -9
  199. package/dist/i18n/index.d.ts.map +0 -1
  200. package/dist/i18n/index.js +0 -78
  201. package/dist/i18n/index.js.map +0 -1
  202. package/dist/i18n/locales/en.d.ts +0 -3
  203. package/dist/i18n/locales/en.d.ts.map +0 -1
  204. package/dist/i18n/locales/en.js +0 -32
  205. package/dist/i18n/locales/en.js.map +0 -1
  206. package/dist/i18n/locales/index.d.ts +0 -5
  207. package/dist/i18n/locales/index.d.ts.map +0 -1
  208. package/dist/i18n/locales/index.js +0 -5
  209. package/dist/i18n/locales/index.js.map +0 -1
  210. package/dist/i18n/locales/ja.d.ts +0 -3
  211. package/dist/i18n/locales/ja.d.ts.map +0 -1
  212. package/dist/i18n/locales/ja.js +0 -30
  213. package/dist/i18n/locales/ja.js.map +0 -1
  214. package/dist/i18n/locales/zh-CN.d.ts +0 -3
  215. package/dist/i18n/locales/zh-CN.d.ts.map +0 -1
  216. package/dist/i18n/locales/zh-CN.js +0 -30
  217. package/dist/i18n/locales/zh-CN.js.map +0 -1
  218. package/dist/i18n/locales/zh-TW.d.ts +0 -3
  219. package/dist/i18n/locales/zh-TW.d.ts.map +0 -1
  220. package/dist/i18n/locales/zh-TW.js +0 -30
  221. package/dist/i18n/locales/zh-TW.js.map +0 -1
  222. package/dist/i18n/types.d.ts +0 -11
  223. package/dist/i18n/types.d.ts.map +0 -1
  224. package/dist/i18n/types.js +0 -3
  225. package/dist/i18n/types.js.map +0 -1
  226. package/dist/integrations/session-memory/SessionContextInjector.d.ts +0 -30
  227. package/dist/integrations/session-memory/SessionContextInjector.d.ts.map +0 -1
  228. package/dist/integrations/session-memory/SessionContextInjector.js +0 -192
  229. package/dist/integrations/session-memory/SessionContextInjector.js.map +0 -1
  230. package/dist/integrations/session-memory/SessionMemoryIngester.d.ts +0 -15
  231. package/dist/integrations/session-memory/SessionMemoryIngester.d.ts.map +0 -1
  232. package/dist/integrations/session-memory/SessionMemoryIngester.js +0 -229
  233. package/dist/integrations/session-memory/SessionMemoryIngester.js.map +0 -1
  234. package/dist/integrations/session-memory/SessionMemoryParser.d.ts +0 -16
  235. package/dist/integrations/session-memory/SessionMemoryParser.d.ts.map +0 -1
  236. package/dist/integrations/session-memory/SessionMemoryParser.js +0 -271
  237. package/dist/integrations/session-memory/SessionMemoryParser.js.map +0 -1
  238. package/dist/integrations/session-memory/SessionMemoryPipeline.d.ts +0 -20
  239. package/dist/integrations/session-memory/SessionMemoryPipeline.d.ts.map +0 -1
  240. package/dist/integrations/session-memory/SessionMemoryPipeline.js +0 -60
  241. package/dist/integrations/session-memory/SessionMemoryPipeline.js.map +0 -1
  242. package/dist/integrations/session-memory/SessionMemoryWatcher.d.ts +0 -27
  243. package/dist/integrations/session-memory/SessionMemoryWatcher.d.ts.map +0 -1
  244. package/dist/integrations/session-memory/SessionMemoryWatcher.js +0 -145
  245. package/dist/integrations/session-memory/SessionMemoryWatcher.js.map +0 -1
  246. package/dist/integrations/session-memory/index.d.ts +0 -9
  247. package/dist/integrations/session-memory/index.d.ts.map +0 -1
  248. package/dist/integrations/session-memory/index.js +0 -6
  249. package/dist/integrations/session-memory/index.js.map +0 -1
  250. package/dist/integrations/session-memory/types.d.ts +0 -74
  251. package/dist/integrations/session-memory/types.d.ts.map +0 -1
  252. package/dist/integrations/session-memory/types.js +0 -22
  253. package/dist/integrations/session-memory/types.js.map +0 -1
  254. package/dist/knowledge-graph/ContentHasher.d.ts +0 -4
  255. package/dist/knowledge-graph/ContentHasher.d.ts.map +0 -1
  256. package/dist/knowledge-graph/ContentHasher.js +0 -8
  257. package/dist/knowledge-graph/ContentHasher.js.map +0 -1
  258. package/dist/knowledge-graph/KGSearchEngine.d.ts +0 -37
  259. package/dist/knowledge-graph/KGSearchEngine.d.ts.map +0 -1
  260. package/dist/knowledge-graph/KGSearchEngine.js +0 -257
  261. package/dist/knowledge-graph/KGSearchEngine.js.map +0 -1
  262. package/dist/knowledge-graph/index.d.ts +0 -64
  263. package/dist/knowledge-graph/index.d.ts.map +0 -1
  264. package/dist/knowledge-graph/index.js +0 -681
  265. package/dist/knowledge-graph/index.js.map +0 -1
  266. package/dist/knowledge-graph/types.d.ts +0 -38
  267. package/dist/knowledge-graph/types.d.ts.map +0 -1
  268. package/dist/knowledge-graph/types.js +0 -2
  269. package/dist/knowledge-graph/types.js.map +0 -1
  270. package/dist/management/UninstallManager.d.ts +0 -23
  271. package/dist/management/UninstallManager.d.ts.map +0 -1
  272. package/dist/management/UninstallManager.js +0 -186
  273. package/dist/management/UninstallManager.js.map +0 -1
  274. package/dist/management/index.d.ts +0 -3
  275. package/dist/management/index.d.ts.map +0 -1
  276. package/dist/management/index.js +0 -2
  277. package/dist/management/index.js.map +0 -1
  278. package/dist/mcp/BuddyCommands.d.ts +0 -24
  279. package/dist/mcp/BuddyCommands.d.ts.map +0 -1
  280. package/dist/mcp/BuddyCommands.js +0 -423
  281. package/dist/mcp/BuddyCommands.js.map +0 -1
  282. package/dist/mcp/ClaudeMdReloader.d.ts +0 -37
  283. package/dist/mcp/ClaudeMdReloader.d.ts.map +0 -1
  284. package/dist/mcp/ClaudeMdReloader.js +0 -92
  285. package/dist/mcp/ClaudeMdReloader.js.map +0 -1
  286. package/dist/mcp/HumanInLoopUI.d.ts +0 -23
  287. package/dist/mcp/HumanInLoopUI.d.ts.map +0 -1
  288. package/dist/mcp/HumanInLoopUI.js +0 -92
  289. package/dist/mcp/HumanInLoopUI.js.map +0 -1
  290. package/dist/mcp/ProgressReporter.d.ts +0 -14
  291. package/dist/mcp/ProgressReporter.d.ts.map +0 -1
  292. package/dist/mcp/ProgressReporter.js +0 -22
  293. package/dist/mcp/ProgressReporter.js.map +0 -1
  294. package/dist/mcp/SamplingClient.d.ts +0 -32
  295. package/dist/mcp/SamplingClient.d.ts.map +0 -1
  296. package/dist/mcp/SamplingClient.js +0 -63
  297. package/dist/mcp/SamplingClient.js.map +0 -1
  298. package/dist/mcp/ServerInitializer.d.ts +0 -40
  299. package/dist/mcp/ServerInitializer.d.ts.map +0 -1
  300. package/dist/mcp/ServerInitializer.js +0 -147
  301. package/dist/mcp/ServerInitializer.js.map +0 -1
  302. package/dist/mcp/SessionBootstrapper.d.ts +0 -13
  303. package/dist/mcp/SessionBootstrapper.d.ts.map +0 -1
  304. package/dist/mcp/SessionBootstrapper.js +0 -82
  305. package/dist/mcp/SessionBootstrapper.js.map +0 -1
  306. package/dist/mcp/StdinBufferManager.d.ts +0 -11
  307. package/dist/mcp/StdinBufferManager.d.ts.map +0 -1
  308. package/dist/mcp/StdinBufferManager.js +0 -62
  309. package/dist/mcp/StdinBufferManager.js.map +0 -1
  310. package/dist/mcp/ToolDefinitions.d.ts +0 -44
  311. package/dist/mcp/ToolDefinitions.d.ts.map +0 -1
  312. package/dist/mcp/ToolDefinitions.js +0 -445
  313. package/dist/mcp/ToolDefinitions.js.map +0 -1
  314. package/dist/mcp/ToolRouter.d.ts +0 -27
  315. package/dist/mcp/ToolRouter.d.ts.map +0 -1
  316. package/dist/mcp/ToolRouter.js +0 -179
  317. package/dist/mcp/ToolRouter.js.map +0 -1
  318. package/dist/mcp/daemon/DaemonBootstrap.d.ts +0 -33
  319. package/dist/mcp/daemon/DaemonBootstrap.d.ts.map +0 -1
  320. package/dist/mcp/daemon/DaemonBootstrap.js +0 -155
  321. package/dist/mcp/daemon/DaemonBootstrap.js.map +0 -1
  322. package/dist/mcp/daemon/DaemonLockManager.d.ts +0 -47
  323. package/dist/mcp/daemon/DaemonLockManager.d.ts.map +0 -1
  324. package/dist/mcp/daemon/DaemonLockManager.js +0 -417
  325. package/dist/mcp/daemon/DaemonLockManager.js.map +0 -1
  326. package/dist/mcp/daemon/DaemonProtocol.d.ts +0 -127
  327. package/dist/mcp/daemon/DaemonProtocol.d.ts.map +0 -1
  328. package/dist/mcp/daemon/DaemonProtocol.js +0 -452
  329. package/dist/mcp/daemon/DaemonProtocol.js.map +0 -1
  330. package/dist/mcp/daemon/DaemonSocketServer.d.ts +0 -71
  331. package/dist/mcp/daemon/DaemonSocketServer.d.ts.map +0 -1
  332. package/dist/mcp/daemon/DaemonSocketServer.js +0 -384
  333. package/dist/mcp/daemon/DaemonSocketServer.js.map +0 -1
  334. package/dist/mcp/daemon/GracefulShutdownCoordinator.d.ts +0 -67
  335. package/dist/mcp/daemon/GracefulShutdownCoordinator.d.ts.map +0 -1
  336. package/dist/mcp/daemon/GracefulShutdownCoordinator.js +0 -206
  337. package/dist/mcp/daemon/GracefulShutdownCoordinator.js.map +0 -1
  338. package/dist/mcp/daemon/IpcTransport.d.ts +0 -42
  339. package/dist/mcp/daemon/IpcTransport.d.ts.map +0 -1
  340. package/dist/mcp/daemon/IpcTransport.js +0 -231
  341. package/dist/mcp/daemon/IpcTransport.js.map +0 -1
  342. package/dist/mcp/daemon/StdioProxyClient.d.ts +0 -84
  343. package/dist/mcp/daemon/StdioProxyClient.d.ts.map +0 -1
  344. package/dist/mcp/daemon/StdioProxyClient.js +0 -574
  345. package/dist/mcp/daemon/StdioProxyClient.js.map +0 -1
  346. package/dist/mcp/daemon/VersionManager.d.ts +0 -35
  347. package/dist/mcp/daemon/VersionManager.d.ts.map +0 -1
  348. package/dist/mcp/daemon/VersionManager.js +0 -169
  349. package/dist/mcp/daemon/VersionManager.js.map +0 -1
  350. package/dist/mcp/daemon/index.d.ts +0 -9
  351. package/dist/mcp/daemon/index.d.ts.map +0 -1
  352. package/dist/mcp/daemon/index.js +0 -9
  353. package/dist/mcp/daemon/index.js.map +0 -1
  354. package/dist/mcp/handlers/BuddyHandlers.d.ts +0 -18
  355. package/dist/mcp/handlers/BuddyHandlers.d.ts.map +0 -1
  356. package/dist/mcp/handlers/BuddyHandlers.js +0 -179
  357. package/dist/mcp/handlers/BuddyHandlers.js.map +0 -1
  358. package/dist/mcp/handlers/BuddyRecordMistake.d.ts +0 -17
  359. package/dist/mcp/handlers/BuddyRecordMistake.d.ts.map +0 -1
  360. package/dist/mcp/handlers/BuddyRecordMistake.js +0 -147
  361. package/dist/mcp/handlers/BuddyRecordMistake.js.map +0 -1
  362. package/dist/mcp/handlers/HookToolHandler.d.ts +0 -10
  363. package/dist/mcp/handlers/HookToolHandler.d.ts.map +0 -1
  364. package/dist/mcp/handlers/HookToolHandler.js +0 -92
  365. package/dist/mcp/handlers/HookToolHandler.js.map +0 -1
  366. package/dist/mcp/handlers/MemoryToolHandler.d.ts +0 -21
  367. package/dist/mcp/handlers/MemoryToolHandler.d.ts.map +0 -1
  368. package/dist/mcp/handlers/MemoryToolHandler.js +0 -433
  369. package/dist/mcp/handlers/MemoryToolHandler.js.map +0 -1
  370. package/dist/mcp/handlers/ResourceHandlers.d.ts +0 -3
  371. package/dist/mcp/handlers/ResourceHandlers.d.ts.map +0 -1
  372. package/dist/mcp/handlers/ResourceHandlers.js +0 -133
  373. package/dist/mcp/handlers/ResourceHandlers.js.map +0 -1
  374. package/dist/mcp/handlers/SystemToolHandler.d.ts +0 -14
  375. package/dist/mcp/handlers/SystemToolHandler.d.ts.map +0 -1
  376. package/dist/mcp/handlers/SystemToolHandler.js +0 -224
  377. package/dist/mcp/handlers/SystemToolHandler.js.map +0 -1
  378. package/dist/mcp/handlers/ToolHandlers.d.ts +0 -26
  379. package/dist/mcp/handlers/ToolHandlers.d.ts.map +0 -1
  380. package/dist/mcp/handlers/ToolHandlers.js +0 -41
  381. package/dist/mcp/handlers/ToolHandlers.js.map +0 -1
  382. package/dist/mcp/handlers/index.d.ts +0 -7
  383. package/dist/mcp/handlers/index.d.ts.map +0 -1
  384. package/dist/mcp/handlers/index.js +0 -7
  385. package/dist/mcp/handlers/index.js.map +0 -1
  386. package/dist/mcp/index.d.ts +0 -5
  387. package/dist/mcp/index.d.ts.map +0 -1
  388. package/dist/mcp/index.js +0 -3
  389. package/dist/mcp/index.js.map +0 -1
  390. package/dist/mcp/resources/ResourceRegistry.d.ts +0 -23
  391. package/dist/mcp/resources/ResourceRegistry.d.ts.map +0 -1
  392. package/dist/mcp/resources/ResourceRegistry.js +0 -26
  393. package/dist/mcp/resources/ResourceRegistry.js.map +0 -1
  394. package/dist/mcp/resources/URITemplateHandler.d.ts +0 -8
  395. package/dist/mcp/resources/URITemplateHandler.d.ts.map +0 -1
  396. package/dist/mcp/resources/URITemplateHandler.js +0 -29
  397. package/dist/mcp/resources/URITemplateHandler.js.map +0 -1
  398. package/dist/mcp/resources/best-practices.md +0 -53
  399. package/dist/mcp/resources/buddy-do-skill.md +0 -84
  400. package/dist/mcp/resources/ccb-complete-guide.md +0 -247
  401. package/dist/mcp/resources/examples.md +0 -47
  402. package/dist/mcp/resources/handlers/AgentStatusHandler.d.ts +0 -7
  403. package/dist/mcp/resources/handlers/AgentStatusHandler.d.ts.map +0 -1
  404. package/dist/mcp/resources/handlers/AgentStatusHandler.js +0 -41
  405. package/dist/mcp/resources/handlers/AgentStatusHandler.js.map +0 -1
  406. package/dist/mcp/resources/handlers/TaskLogsHandler.d.ts +0 -7
  407. package/dist/mcp/resources/handlers/TaskLogsHandler.d.ts.map +0 -1
  408. package/dist/mcp/resources/handlers/TaskLogsHandler.js +0 -35
  409. package/dist/mcp/resources/handlers/TaskLogsHandler.js.map +0 -1
  410. package/dist/mcp/resources/quick-reference.md +0 -71
  411. package/dist/mcp/resources/usage-guide.md +0 -74
  412. package/dist/mcp/schemas/OutputSchemas.d.ts +0 -437
  413. package/dist/mcp/schemas/OutputSchemas.d.ts.map +0 -1
  414. package/dist/mcp/schemas/OutputSchemas.js +0 -215
  415. package/dist/mcp/schemas/OutputSchemas.js.map +0 -1
  416. package/dist/mcp/server-bootstrap.d.ts +0 -3
  417. package/dist/mcp/server-bootstrap.d.ts.map +0 -1
  418. package/dist/mcp/server-bootstrap.js +0 -391
  419. package/dist/mcp/server-bootstrap.js.map +0 -1
  420. package/dist/mcp/tools/add-observations.d.ts +0 -48
  421. package/dist/mcp/tools/add-observations.d.ts.map +0 -1
  422. package/dist/mcp/tools/add-observations.js +0 -64
  423. package/dist/mcp/tools/add-observations.js.map +0 -1
  424. package/dist/mcp/tools/buddy-do.d.ts +0 -15
  425. package/dist/mcp/tools/buddy-do.d.ts.map +0 -1
  426. package/dist/mcp/tools/buddy-do.js +0 -191
  427. package/dist/mcp/tools/buddy-do.js.map +0 -1
  428. package/dist/mcp/tools/buddy-help.d.ts +0 -13
  429. package/dist/mcp/tools/buddy-help.d.ts.map +0 -1
  430. package/dist/mcp/tools/buddy-help.js +0 -44
  431. package/dist/mcp/tools/buddy-help.js.map +0 -1
  432. package/dist/mcp/tools/buddy-remember.d.ts +0 -24
  433. package/dist/mcp/tools/buddy-remember.d.ts.map +0 -1
  434. package/dist/mcp/tools/buddy-remember.js +0 -304
  435. package/dist/mcp/tools/buddy-remember.js.map +0 -1
  436. package/dist/mcp/tools/create-entities.d.ts +0 -66
  437. package/dist/mcp/tools/create-entities.d.ts.map +0 -1
  438. package/dist/mcp/tools/create-entities.js +0 -224
  439. package/dist/mcp/tools/create-entities.js.map +0 -1
  440. package/dist/mcp/tools/create-relations.d.ts +0 -60
  441. package/dist/mcp/tools/create-relations.d.ts.map +0 -1
  442. package/dist/mcp/tools/create-relations.js +0 -84
  443. package/dist/mcp/tools/create-relations.js.map +0 -1
  444. package/dist/mcp/tools/generate-tests.d.ts +0 -11
  445. package/dist/mcp/tools/generate-tests.d.ts.map +0 -1
  446. package/dist/mcp/tools/generate-tests.js +0 -19
  447. package/dist/mcp/tools/generate-tests.js.map +0 -1
  448. package/dist/mcp/tools/health-check.d.ts +0 -10
  449. package/dist/mcp/tools/health-check.d.ts.map +0 -1
  450. package/dist/mcp/tools/health-check.js +0 -37
  451. package/dist/mcp/tools/health-check.js.map +0 -1
  452. package/dist/mcp/tools/memesh-agent-register.d.ts +0 -20
  453. package/dist/mcp/tools/memesh-agent-register.d.ts.map +0 -1
  454. package/dist/mcp/tools/memesh-agent-register.js +0 -80
  455. package/dist/mcp/tools/memesh-agent-register.js.map +0 -1
  456. package/dist/mcp/tools/memesh-cloud-sync.d.ts +0 -30
  457. package/dist/mcp/tools/memesh-cloud-sync.d.ts.map +0 -1
  458. package/dist/mcp/tools/memesh-cloud-sync.js +0 -257
  459. package/dist/mcp/tools/memesh-cloud-sync.js.map +0 -1
  460. package/dist/mcp/tools/memesh-metrics.d.ts +0 -13
  461. package/dist/mcp/tools/memesh-metrics.d.ts.map +0 -1
  462. package/dist/mcp/tools/memesh-metrics.js +0 -193
  463. package/dist/mcp/tools/memesh-metrics.js.map +0 -1
  464. package/dist/mcp/tools/recall-memory.d.ts +0 -31
  465. package/dist/mcp/tools/recall-memory.d.ts.map +0 -1
  466. package/dist/mcp/tools/recall-memory.js +0 -31
  467. package/dist/mcp/tools/recall-memory.js.map +0 -1
  468. package/dist/mcp/validation.d.ts +0 -76
  469. package/dist/mcp/validation.d.ts.map +0 -1
  470. package/dist/mcp/validation.js +0 -106
  471. package/dist/mcp/validation.js.map +0 -1
  472. package/dist/memory/AutoMemoryRecorder.d.ts +0 -35
  473. package/dist/memory/AutoMemoryRecorder.d.ts.map +0 -1
  474. package/dist/memory/AutoMemoryRecorder.js +0 -164
  475. package/dist/memory/AutoMemoryRecorder.js.map +0 -1
  476. package/dist/memory/AutoTagger.d.ts +0 -9
  477. package/dist/memory/AutoTagger.d.ts.map +0 -1
  478. package/dist/memory/AutoTagger.js +0 -149
  479. package/dist/memory/AutoTagger.js.map +0 -1
  480. package/dist/memory/BuiltInRules.d.ts +0 -54
  481. package/dist/memory/BuiltInRules.d.ts.map +0 -1
  482. package/dist/memory/BuiltInRules.js +0 -161
  483. package/dist/memory/BuiltInRules.js.map +0 -1
  484. package/dist/memory/EnhancedRetrieval.d.ts +0 -22
  485. package/dist/memory/EnhancedRetrieval.d.ts.map +0 -1
  486. package/dist/memory/EnhancedRetrieval.js +0 -63
  487. package/dist/memory/EnhancedRetrieval.js.map +0 -1
  488. package/dist/memory/EntityTypes.d.ts +0 -14
  489. package/dist/memory/EntityTypes.d.ts.map +0 -1
  490. package/dist/memory/EntityTypes.js +0 -19
  491. package/dist/memory/EntityTypes.js.map +0 -1
  492. package/dist/memory/MemorySearchEngine.d.ts +0 -17
  493. package/dist/memory/MemorySearchEngine.d.ts.map +0 -1
  494. package/dist/memory/MemorySearchEngine.js +0 -88
  495. package/dist/memory/MemorySearchEngine.js.map +0 -1
  496. package/dist/memory/MistakePatternEngine.d.ts +0 -15
  497. package/dist/memory/MistakePatternEngine.d.ts.map +0 -1
  498. package/dist/memory/MistakePatternEngine.js +0 -99
  499. package/dist/memory/MistakePatternEngine.js.map +0 -1
  500. package/dist/memory/PreventionHook.d.ts +0 -28
  501. package/dist/memory/PreventionHook.d.ts.map +0 -1
  502. package/dist/memory/PreventionHook.js +0 -21
  503. package/dist/memory/PreventionHook.js.map +0 -1
  504. package/dist/memory/ProactiveRecaller.d.ts +0 -26
  505. package/dist/memory/ProactiveRecaller.d.ts.map +0 -1
  506. package/dist/memory/ProactiveRecaller.js +0 -96
  507. package/dist/memory/ProactiveRecaller.js.map +0 -1
  508. package/dist/memory/ProjectAutoTracker.d.ts +0 -80
  509. package/dist/memory/ProjectAutoTracker.d.ts.map +0 -1
  510. package/dist/memory/ProjectAutoTracker.js +0 -386
  511. package/dist/memory/ProjectAutoTracker.js.map +0 -1
  512. package/dist/memory/ProjectMemoryCleanup.d.ts +0 -17
  513. package/dist/memory/ProjectMemoryCleanup.d.ts.map +0 -1
  514. package/dist/memory/ProjectMemoryCleanup.js +0 -57
  515. package/dist/memory/ProjectMemoryCleanup.js.map +0 -1
  516. package/dist/memory/ProjectMemoryManager.d.ts +0 -19
  517. package/dist/memory/ProjectMemoryManager.d.ts.map +0 -1
  518. package/dist/memory/ProjectMemoryManager.js +0 -62
  519. package/dist/memory/ProjectMemoryManager.js.map +0 -1
  520. package/dist/memory/SmartMemoryQuery.d.ts +0 -9
  521. package/dist/memory/SmartMemoryQuery.d.ts.map +0 -1
  522. package/dist/memory/SmartMemoryQuery.js +0 -66
  523. package/dist/memory/SmartMemoryQuery.js.map +0 -1
  524. package/dist/memory/UnifiedMemoryStore.d.ts +0 -27
  525. package/dist/memory/UnifiedMemoryStore.d.ts.map +0 -1
  526. package/dist/memory/UnifiedMemoryStore.js +0 -536
  527. package/dist/memory/UnifiedMemoryStore.js.map +0 -1
  528. package/dist/memory/UserPreferenceEngine.d.ts +0 -18
  529. package/dist/memory/UserPreferenceEngine.d.ts.map +0 -1
  530. package/dist/memory/UserPreferenceEngine.js +0 -117
  531. package/dist/memory/UserPreferenceEngine.js.map +0 -1
  532. package/dist/memory/config/semantic-groups.d.ts +0 -9
  533. package/dist/memory/config/semantic-groups.d.ts.map +0 -1
  534. package/dist/memory/config/semantic-groups.js +0 -22
  535. package/dist/memory/config/semantic-groups.js.map +0 -1
  536. package/dist/memory/index.d.ts +0 -16
  537. package/dist/memory/index.d.ts.map +0 -1
  538. package/dist/memory/index.js +0 -12
  539. package/dist/memory/index.js.map +0 -1
  540. package/dist/memory/types/index.d.ts +0 -7
  541. package/dist/memory/types/index.d.ts.map +0 -1
  542. package/dist/memory/types/index.js +0 -4
  543. package/dist/memory/types/index.js.map +0 -1
  544. package/dist/memory/types/memory-scope.d.ts +0 -27
  545. package/dist/memory/types/memory-scope.d.ts.map +0 -1
  546. package/dist/memory/types/memory-scope.js +0 -67
  547. package/dist/memory/types/memory-scope.js.map +0 -1
  548. package/dist/memory/types/pattern-types.d.ts +0 -66
  549. package/dist/memory/types/pattern-types.d.ts.map +0 -1
  550. package/dist/memory/types/pattern-types.js +0 -2
  551. package/dist/memory/types/pattern-types.js.map +0 -1
  552. package/dist/memory/types/preference-types.d.ts +0 -28
  553. package/dist/memory/types/preference-types.d.ts.map +0 -1
  554. package/dist/memory/types/preference-types.js +0 -2
  555. package/dist/memory/types/preference-types.js.map +0 -1
  556. package/dist/memory/types/unified-memory.d.ts +0 -29
  557. package/dist/memory/types/unified-memory.d.ts.map +0 -1
  558. package/dist/memory/types/unified-memory.js +0 -21
  559. package/dist/memory/types/unified-memory.js.map +0 -1
  560. package/dist/prompts/templates/PromptTemplates.d.ts +0 -11
  561. package/dist/prompts/templates/PromptTemplates.d.ts.map +0 -1
  562. package/dist/prompts/templates/PromptTemplates.js +0 -942
  563. package/dist/prompts/templates/PromptTemplates.js.map +0 -1
  564. package/dist/prompts/templates/index.d.ts +0 -2
  565. package/dist/prompts/templates/index.d.ts.map +0 -1
  566. package/dist/prompts/templates/index.js +0 -2
  567. package/dist/prompts/templates/index.js.map +0 -1
  568. package/dist/skills/SkillManager.d.ts +0 -33
  569. package/dist/skills/SkillManager.d.ts.map +0 -1
  570. package/dist/skills/SkillManager.js +0 -153
  571. package/dist/skills/SkillManager.js.map +0 -1
  572. package/dist/skills/index.d.ts +0 -3
  573. package/dist/skills/index.d.ts.map +0 -1
  574. package/dist/skills/index.js +0 -2
  575. package/dist/skills/index.js.map +0 -1
  576. package/dist/telemetry/TelemetryCollector.d.ts +0 -19
  577. package/dist/telemetry/TelemetryCollector.d.ts.map +0 -1
  578. package/dist/telemetry/TelemetryCollector.js +0 -62
  579. package/dist/telemetry/TelemetryCollector.js.map +0 -1
  580. package/dist/telemetry/TelemetryStore.d.ts +0 -20
  581. package/dist/telemetry/TelemetryStore.d.ts.map +0 -1
  582. package/dist/telemetry/TelemetryStore.js +0 -127
  583. package/dist/telemetry/TelemetryStore.js.map +0 -1
  584. package/dist/telemetry/index.d.ts +0 -8
  585. package/dist/telemetry/index.d.ts.map +0 -1
  586. package/dist/telemetry/index.js +0 -33
  587. package/dist/telemetry/index.js.map +0 -1
  588. package/dist/telemetry/sanitization.d.ts +0 -6
  589. package/dist/telemetry/sanitization.d.ts.map +0 -1
  590. package/dist/telemetry/sanitization.js +0 -180
  591. package/dist/telemetry/sanitization.js.map +0 -1
  592. package/dist/telemetry/types.d.ts +0 -73
  593. package/dist/telemetry/types.d.ts.map +0 -1
  594. package/dist/telemetry/types.js +0 -16
  595. package/dist/telemetry/types.js.map +0 -1
  596. package/dist/tools/TestGenerator.d.ts +0 -8
  597. package/dist/tools/TestGenerator.d.ts.map +0 -1
  598. package/dist/tools/TestGenerator.js +0 -54
  599. package/dist/tools/TestGenerator.js.map +0 -1
  600. package/dist/types/AgentClassification.d.ts +0 -30
  601. package/dist/types/AgentClassification.d.ts.map +0 -1
  602. package/dist/types/AgentClassification.js +0 -19
  603. package/dist/types/AgentClassification.js.map +0 -1
  604. package/dist/types/Checkpoint.d.ts +0 -12
  605. package/dist/types/Checkpoint.d.ts.map +0 -1
  606. package/dist/types/Checkpoint.js +0 -13
  607. package/dist/types/Checkpoint.js.map +0 -1
  608. package/dist/types/toonify.d.ts +0 -91
  609. package/dist/types/toonify.d.ts.map +0 -1
  610. package/dist/types/toonify.js +0 -18
  611. package/dist/types/toonify.js.map +0 -1
  612. package/dist/ui/AsciiProgressBar.d.ts +0 -29
  613. package/dist/ui/AsciiProgressBar.d.ts.map +0 -1
  614. package/dist/ui/AsciiProgressBar.js +0 -130
  615. package/dist/ui/AsciiProgressBar.js.map +0 -1
  616. package/dist/ui/AttributionManager.d.ts +0 -19
  617. package/dist/ui/AttributionManager.d.ts.map +0 -1
  618. package/dist/ui/AttributionManager.js +0 -107
  619. package/dist/ui/AttributionManager.js.map +0 -1
  620. package/dist/ui/Dashboard.d.ts +0 -24
  621. package/dist/ui/Dashboard.d.ts.map +0 -1
  622. package/dist/ui/Dashboard.js +0 -135
  623. package/dist/ui/Dashboard.js.map +0 -1
  624. package/dist/ui/LoadingIndicator.d.ts +0 -53
  625. package/dist/ui/LoadingIndicator.d.ts.map +0 -1
  626. package/dist/ui/LoadingIndicator.js +0 -211
  627. package/dist/ui/LoadingIndicator.js.map +0 -1
  628. package/dist/ui/MetricsStore.d.ts +0 -15
  629. package/dist/ui/MetricsStore.d.ts.map +0 -1
  630. package/dist/ui/MetricsStore.js +0 -131
  631. package/dist/ui/MetricsStore.js.map +0 -1
  632. package/dist/ui/ProgressIndicator.d.ts +0 -35
  633. package/dist/ui/ProgressIndicator.d.ts.map +0 -1
  634. package/dist/ui/ProgressIndicator.js +0 -177
  635. package/dist/ui/ProgressIndicator.js.map +0 -1
  636. package/dist/ui/ProgressRenderer.d.ts +0 -24
  637. package/dist/ui/ProgressRenderer.d.ts.map +0 -1
  638. package/dist/ui/ProgressRenderer.js +0 -143
  639. package/dist/ui/ProgressRenderer.js.map +0 -1
  640. package/dist/ui/ResponseFormatter.d.ts +0 -57
  641. package/dist/ui/ResponseFormatter.d.ts.map +0 -1
  642. package/dist/ui/ResponseFormatter.js +0 -513
  643. package/dist/ui/ResponseFormatter.js.map +0 -1
  644. package/dist/ui/UIEventBus.d.ts +0 -38
  645. package/dist/ui/UIEventBus.d.ts.map +0 -1
  646. package/dist/ui/UIEventBus.js +0 -173
  647. package/dist/ui/UIEventBus.js.map +0 -1
  648. package/dist/ui/accessibility.d.ts +0 -28
  649. package/dist/ui/accessibility.d.ts.map +0 -1
  650. package/dist/ui/accessibility.js +0 -97
  651. package/dist/ui/accessibility.js.map +0 -1
  652. package/dist/ui/design-tokens.d.ts +0 -36
  653. package/dist/ui/design-tokens.d.ts.map +0 -1
  654. package/dist/ui/design-tokens.js +0 -94
  655. package/dist/ui/design-tokens.js.map +0 -1
  656. package/dist/ui/index.d.ts +0 -8
  657. package/dist/ui/index.d.ts.map +0 -1
  658. package/dist/ui/index.js +0 -6
  659. package/dist/ui/index.js.map +0 -1
  660. package/dist/ui/theme.d.ts +0 -313
  661. package/dist/ui/theme.d.ts.map +0 -1
  662. package/dist/ui/theme.js +0 -198
  663. package/dist/ui/theme.js.map +0 -1
  664. package/dist/ui/types.d.ts +0 -146
  665. package/dist/ui/types.d.ts.map +0 -1
  666. package/dist/ui/types.js +0 -16
  667. package/dist/ui/types.js.map +0 -1
  668. package/dist/utils/ILogger.d.ts +0 -7
  669. package/dist/utils/ILogger.d.ts.map +0 -1
  670. package/dist/utils/ILogger.js +0 -2
  671. package/dist/utils/ILogger.js.map +0 -1
  672. package/dist/utils/MinHeap.d.ts +0 -15
  673. package/dist/utils/MinHeap.d.ts.map +0 -1
  674. package/dist/utils/MinHeap.js +0 -69
  675. package/dist/utils/MinHeap.js.map +0 -1
  676. package/dist/utils/PathResolver.d.ts +0 -13
  677. package/dist/utils/PathResolver.d.ts.map +0 -1
  678. package/dist/utils/PathResolver.js +0 -77
  679. package/dist/utils/PathResolver.js.map +0 -1
  680. package/dist/utils/RateLimiter.d.ts +0 -28
  681. package/dist/utils/RateLimiter.d.ts.map +0 -1
  682. package/dist/utils/RateLimiter.js +0 -115
  683. package/dist/utils/RateLimiter.js.map +0 -1
  684. package/dist/utils/SystemResources.d.ts +0 -40
  685. package/dist/utils/SystemResources.d.ts.map +0 -1
  686. package/dist/utils/SystemResources.js +0 -216
  687. package/dist/utils/SystemResources.js.map +0 -1
  688. package/dist/utils/errorHandler.d.ts +0 -49
  689. package/dist/utils/errorHandler.d.ts.map +0 -1
  690. package/dist/utils/errorHandler.js +0 -397
  691. package/dist/utils/errorHandler.js.map +0 -1
  692. package/dist/utils/index.d.ts +0 -17
  693. package/dist/utils/index.d.ts.map +0 -1
  694. package/dist/utils/index.js +0 -15
  695. package/dist/utils/index.js.map +0 -1
  696. package/dist/utils/json.d.ts +0 -13
  697. package/dist/utils/json.d.ts.map +0 -1
  698. package/dist/utils/json.js +0 -95
  699. package/dist/utils/json.js.map +0 -1
  700. package/dist/utils/logger.d.ts +0 -16
  701. package/dist/utils/logger.d.ts.map +0 -1
  702. package/dist/utils/logger.js +0 -125
  703. package/dist/utils/logger.js.map +0 -1
  704. package/dist/utils/lru-cache.d.ts +0 -47
  705. package/dist/utils/lru-cache.d.ts.map +0 -1
  706. package/dist/utils/lru-cache.js +0 -239
  707. package/dist/utils/lru-cache.js.map +0 -1
  708. package/dist/utils/memory.d.ts +0 -20
  709. package/dist/utils/memory.d.ts.map +0 -1
  710. package/dist/utils/memory.js +0 -53
  711. package/dist/utils/memory.js.map +0 -1
  712. package/dist/utils/money.d.ts +0 -10
  713. package/dist/utils/money.d.ts.map +0 -1
  714. package/dist/utils/money.js +0 -25
  715. package/dist/utils/money.js.map +0 -1
  716. package/dist/utils/pathValidation.d.ts +0 -2
  717. package/dist/utils/pathValidation.d.ts.map +0 -1
  718. package/dist/utils/pathValidation.js +0 -62
  719. package/dist/utils/pathValidation.js.map +0 -1
  720. package/dist/utils/paths.d.ts +0 -4
  721. package/dist/utils/paths.d.ts.map +0 -1
  722. package/dist/utils/paths.js +0 -28
  723. package/dist/utils/paths.js.map +0 -1
  724. package/dist/utils/requestId.d.ts +0 -4
  725. package/dist/utils/requestId.d.ts.map +0 -1
  726. package/dist/utils/requestId.js +0 -17
  727. package/dist/utils/requestId.js.map +0 -1
  728. package/dist/utils/retry.d.ts +0 -20
  729. package/dist/utils/retry.d.ts.map +0 -1
  730. package/dist/utils/retry.js +0 -226
  731. package/dist/utils/retry.js.map +0 -1
  732. package/dist/utils/safeMath.d.ts +0 -11
  733. package/dist/utils/safeMath.d.ts.map +0 -1
  734. package/dist/utils/safeMath.js +0 -92
  735. package/dist/utils/safeMath.js.map +0 -1
  736. package/dist/utils/toonify-adapter.d.ts +0 -77
  737. package/dist/utils/toonify-adapter.d.ts.map +0 -1
  738. package/dist/utils/toonify-adapter.js +0 -282
  739. package/dist/utils/toonify-adapter.js.map +0 -1
  740. package/dist/utils/tracing/TraceContext.d.ts +0 -23
  741. package/dist/utils/tracing/TraceContext.d.ts.map +0 -1
  742. package/dist/utils/tracing/TraceContext.js +0 -127
  743. package/dist/utils/tracing/TraceContext.js.map +0 -1
  744. package/dist/utils/tracing/index.d.ts +0 -2
  745. package/dist/utils/tracing/index.d.ts.map +0 -1
  746. package/dist/utils/tracing/index.js +0 -2
  747. package/dist/utils/tracing/index.js.map +0 -1
  748. package/dist/utils/tracing/middleware.d.ts +0 -15
  749. package/dist/utils/tracing/middleware.d.ts.map +0 -1
  750. package/dist/utils/tracing/middleware.js +0 -49
  751. package/dist/utils/tracing/middleware.js.map +0 -1
  752. package/dist/utils/validation.d.ts +0 -12
  753. package/dist/utils/validation.d.ts.map +0 -1
  754. package/dist/utils/validation.js +0 -87
  755. package/dist/utils/validation.js.map +0 -1
  756. package/scripts/health-check.js +0 -331
  757. package/scripts/hooks/README.md +0 -230
  758. package/scripts/hooks/__tests__/hook-test-harness.js +0 -218
  759. package/scripts/hooks/__tests__/hooks.test.js +0 -267
  760. package/scripts/hooks/__tests__/post-tool-use-recall.test.js +0 -192
  761. package/scripts/hooks/__tests__/session-start-recall.test.js +0 -86
  762. package/scripts/hooks/hook-utils.js +0 -899
  763. package/scripts/hooks/post-tool-use-recall-utils.js +0 -74
  764. package/scripts/hooks/post-tool-use.js +0 -895
  765. package/scripts/hooks/pre-tool-use.js +0 -491
  766. package/scripts/hooks/session-start-recall-utils.js +0 -40
  767. package/scripts/hooks/stop.js +0 -673
  768. package/scripts/hooks/subagent-stop.js +0 -184
  769. package/scripts/postinstall-lib.js +0 -242
  770. package/scripts/postinstall-new.js +0 -191
  771. package/scripts/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();