@neverinfamous/mysql-mcp 2.1.0 → 2.3.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 (802) hide show
  1. package/.env.example +14 -4
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +7 -1
  3. package/.github/ISSUE_TEMPLATE/feature_request.md +6 -1
  4. package/.github/dependabot.yml +15 -0
  5. package/.github/pull_request_template.md +5 -0
  6. package/.github/workflows/codeql.yml +41 -42
  7. package/.github/workflows/docker-publish.yml +247 -210
  8. package/.github/workflows/publish-npm.yml +16 -6
  9. package/CHANGELOG.md +357 -22
  10. package/CODE_MODE.md +245 -0
  11. package/CODE_OF_CONDUCT.md +2 -0
  12. package/DOCKER_README.md +250 -161
  13. package/Dockerfile +2 -2
  14. package/README.md +239 -182
  15. package/SECURITY.md +0 -8
  16. package/VERSION +1 -1
  17. package/dist/__tests__/mocks/adapter.d.ts +3 -3
  18. package/dist/__tests__/mocks/adapter.d.ts.map +1 -1
  19. package/dist/__tests__/mocks/adapter.js +51 -35
  20. package/dist/__tests__/mocks/adapter.js.map +1 -1
  21. package/dist/__tests__/mocks/index.d.ts +4 -4
  22. package/dist/__tests__/mocks/index.d.ts.map +1 -1
  23. package/dist/__tests__/mocks/index.js +2 -2
  24. package/dist/__tests__/mocks/index.js.map +1 -1
  25. package/dist/__tests__/mocks/mysql.d.ts +2 -2
  26. package/dist/__tests__/mocks/mysql.d.ts.map +1 -1
  27. package/dist/__tests__/mocks/mysql.js +14 -14
  28. package/dist/__tests__/mocks/mysql.js.map +1 -1
  29. package/dist/__tests__/setup.d.ts.map +1 -1
  30. package/dist/__tests__/setup.js +7 -7
  31. package/dist/__tests__/setup.js.map +1 -1
  32. package/dist/adapters/DatabaseAdapter.d.ts +2 -2
  33. package/dist/adapters/DatabaseAdapter.d.ts.map +1 -1
  34. package/dist/adapters/DatabaseAdapter.js +69 -40
  35. package/dist/adapters/DatabaseAdapter.js.map +1 -1
  36. package/dist/adapters/mysql/MySQLAdapter.d.ts +14 -4
  37. package/dist/adapters/mysql/MySQLAdapter.d.ts.map +1 -1
  38. package/dist/adapters/mysql/MySQLAdapter.js +152 -116
  39. package/dist/adapters/mysql/MySQLAdapter.js.map +1 -1
  40. package/dist/adapters/mysql/SchemaManager.d.ts +1 -1
  41. package/dist/adapters/mysql/SchemaManager.d.ts.map +1 -1
  42. package/dist/adapters/mysql/SchemaManager.js +76 -56
  43. package/dist/adapters/mysql/SchemaManager.js.map +1 -1
  44. package/dist/adapters/mysql/index.d.ts +2 -2
  45. package/dist/adapters/mysql/index.js +2 -2
  46. package/dist/adapters/mysql/prompts/backupStrategy.d.ts +1 -1
  47. package/dist/adapters/mysql/prompts/backupStrategy.d.ts.map +1 -1
  48. package/dist/adapters/mysql/prompts/backupStrategy.js +21 -9
  49. package/dist/adapters/mysql/prompts/backupStrategy.js.map +1 -1
  50. package/dist/adapters/mysql/prompts/clusterSetup.d.ts +1 -1
  51. package/dist/adapters/mysql/prompts/clusterSetup.d.ts.map +1 -1
  52. package/dist/adapters/mysql/prompts/clusterSetup.js +3 -3
  53. package/dist/adapters/mysql/prompts/clusterSetup.js.map +1 -1
  54. package/dist/adapters/mysql/prompts/docstoreSetup.d.ts +1 -1
  55. package/dist/adapters/mysql/prompts/docstoreSetup.js +3 -3
  56. package/dist/adapters/mysql/prompts/docstoreSetup.js.map +1 -1
  57. package/dist/adapters/mysql/prompts/eventScheduler.d.ts +1 -1
  58. package/dist/adapters/mysql/prompts/eventScheduler.js +3 -3
  59. package/dist/adapters/mysql/prompts/eventScheduler.js.map +1 -1
  60. package/dist/adapters/mysql/prompts/healthCheck.d.ts +1 -1
  61. package/dist/adapters/mysql/prompts/healthCheck.d.ts.map +1 -1
  62. package/dist/adapters/mysql/prompts/healthCheck.js +10 -6
  63. package/dist/adapters/mysql/prompts/healthCheck.js.map +1 -1
  64. package/dist/adapters/mysql/prompts/index.d.ts +10 -3
  65. package/dist/adapters/mysql/prompts/index.d.ts.map +1 -1
  66. package/dist/adapters/mysql/prompts/index.js +106 -63
  67. package/dist/adapters/mysql/prompts/index.js.map +1 -1
  68. package/dist/adapters/mysql/prompts/indexTuning.d.ts +1 -1
  69. package/dist/adapters/mysql/prompts/indexTuning.d.ts.map +1 -1
  70. package/dist/adapters/mysql/prompts/indexTuning.js +11 -7
  71. package/dist/adapters/mysql/prompts/indexTuning.js.map +1 -1
  72. package/dist/adapters/mysql/prompts/mysqlshSetup.d.ts +1 -1
  73. package/dist/adapters/mysql/prompts/mysqlshSetup.js +4 -4
  74. package/dist/adapters/mysql/prompts/mysqlshSetup.js.map +1 -1
  75. package/dist/adapters/mysql/prompts/proxysqlSetup.d.ts +1 -1
  76. package/dist/adapters/mysql/prompts/proxysqlSetup.js +3 -3
  77. package/dist/adapters/mysql/prompts/proxysqlSetup.js.map +1 -1
  78. package/dist/adapters/mysql/prompts/replicationSetup.d.ts +1 -1
  79. package/dist/adapters/mysql/prompts/replicationSetup.d.ts.map +1 -1
  80. package/dist/adapters/mysql/prompts/replicationSetup.js +13 -7
  81. package/dist/adapters/mysql/prompts/replicationSetup.js.map +1 -1
  82. package/dist/adapters/mysql/prompts/routerSetup.d.ts +1 -1
  83. package/dist/adapters/mysql/prompts/routerSetup.d.ts.map +1 -1
  84. package/dist/adapters/mysql/prompts/routerSetup.js +8 -3
  85. package/dist/adapters/mysql/prompts/routerSetup.js.map +1 -1
  86. package/dist/adapters/mysql/prompts/spatialSetup.d.ts +1 -1
  87. package/dist/adapters/mysql/prompts/spatialSetup.js +3 -3
  88. package/dist/adapters/mysql/prompts/spatialSetup.js.map +1 -1
  89. package/dist/adapters/mysql/prompts/sysSchema.d.ts +1 -1
  90. package/dist/adapters/mysql/prompts/sysSchema.d.ts.map +1 -1
  91. package/dist/adapters/mysql/prompts/sysSchema.js +3 -3
  92. package/dist/adapters/mysql/prompts/sysSchema.js.map +1 -1
  93. package/dist/adapters/mysql/resources/capabilities.d.ts +2 -2
  94. package/dist/adapters/mysql/resources/capabilities.d.ts.map +1 -1
  95. package/dist/adapters/mysql/resources/capabilities.js +19 -16
  96. package/dist/adapters/mysql/resources/capabilities.js.map +1 -1
  97. package/dist/adapters/mysql/resources/cluster.d.ts +2 -2
  98. package/dist/adapters/mysql/resources/cluster.d.ts.map +1 -1
  99. package/dist/adapters/mysql/resources/cluster.js +17 -15
  100. package/dist/adapters/mysql/resources/cluster.js.map +1 -1
  101. package/dist/adapters/mysql/resources/docstore.d.ts +2 -2
  102. package/dist/adapters/mysql/resources/docstore.d.ts.map +1 -1
  103. package/dist/adapters/mysql/resources/docstore.js +12 -12
  104. package/dist/adapters/mysql/resources/docstore.js.map +1 -1
  105. package/dist/adapters/mysql/resources/events.d.ts +2 -2
  106. package/dist/adapters/mysql/resources/events.d.ts.map +1 -1
  107. package/dist/adapters/mysql/resources/events.js +12 -12
  108. package/dist/adapters/mysql/resources/events.js.map +1 -1
  109. package/dist/adapters/mysql/resources/health.d.ts +2 -2
  110. package/dist/adapters/mysql/resources/health.d.ts.map +1 -1
  111. package/dist/adapters/mysql/resources/health.js +36 -32
  112. package/dist/adapters/mysql/resources/health.js.map +1 -1
  113. package/dist/adapters/mysql/resources/index.d.ts +11 -3
  114. package/dist/adapters/mysql/resources/index.d.ts.map +1 -1
  115. package/dist/adapters/mysql/resources/index.js +28 -20
  116. package/dist/adapters/mysql/resources/index.js.map +1 -1
  117. package/dist/adapters/mysql/resources/indexes.d.ts +2 -2
  118. package/dist/adapters/mysql/resources/indexes.d.ts.map +1 -1
  119. package/dist/adapters/mysql/resources/indexes.js +12 -12
  120. package/dist/adapters/mysql/resources/indexes.js.map +1 -1
  121. package/dist/adapters/mysql/resources/innodb.d.ts +2 -2
  122. package/dist/adapters/mysql/resources/innodb.d.ts.map +1 -1
  123. package/dist/adapters/mysql/resources/innodb.js +37 -36
  124. package/dist/adapters/mysql/resources/innodb.js.map +1 -1
  125. package/dist/adapters/mysql/resources/locks.d.ts +2 -2
  126. package/dist/adapters/mysql/resources/locks.d.ts.map +1 -1
  127. package/dist/adapters/mysql/resources/locks.js +14 -14
  128. package/dist/adapters/mysql/resources/locks.js.map +1 -1
  129. package/dist/adapters/mysql/resources/performance.d.ts +2 -2
  130. package/dist/adapters/mysql/resources/performance.d.ts.map +1 -1
  131. package/dist/adapters/mysql/resources/performance.js +30 -29
  132. package/dist/adapters/mysql/resources/performance.js.map +1 -1
  133. package/dist/adapters/mysql/resources/pool.d.ts +2 -2
  134. package/dist/adapters/mysql/resources/pool.d.ts.map +1 -1
  135. package/dist/adapters/mysql/resources/pool.js +9 -9
  136. package/dist/adapters/mysql/resources/pool.js.map +1 -1
  137. package/dist/adapters/mysql/resources/processlist.d.ts +2 -2
  138. package/dist/adapters/mysql/resources/processlist.d.ts.map +1 -1
  139. package/dist/adapters/mysql/resources/processlist.js +9 -9
  140. package/dist/adapters/mysql/resources/processlist.js.map +1 -1
  141. package/dist/adapters/mysql/resources/replication.d.ts +2 -2
  142. package/dist/adapters/mysql/resources/replication.d.ts.map +1 -1
  143. package/dist/adapters/mysql/resources/replication.js +42 -35
  144. package/dist/adapters/mysql/resources/replication.js.map +1 -1
  145. package/dist/adapters/mysql/resources/schema.d.ts +2 -2
  146. package/dist/adapters/mysql/resources/schema.d.ts.map +1 -1
  147. package/dist/adapters/mysql/resources/schema.js +8 -8
  148. package/dist/adapters/mysql/resources/schema.js.map +1 -1
  149. package/dist/adapters/mysql/resources/spatial.d.ts +2 -2
  150. package/dist/adapters/mysql/resources/spatial.d.ts.map +1 -1
  151. package/dist/adapters/mysql/resources/spatial.js +9 -9
  152. package/dist/adapters/mysql/resources/spatial.js.map +1 -1
  153. package/dist/adapters/mysql/resources/status.d.ts +2 -2
  154. package/dist/adapters/mysql/resources/status.d.ts.map +1 -1
  155. package/dist/adapters/mysql/resources/status.js +10 -10
  156. package/dist/adapters/mysql/resources/status.js.map +1 -1
  157. package/dist/adapters/mysql/resources/sysschema.d.ts +2 -2
  158. package/dist/adapters/mysql/resources/sysschema.d.ts.map +1 -1
  159. package/dist/adapters/mysql/resources/sysschema.js +10 -10
  160. package/dist/adapters/mysql/resources/sysschema.js.map +1 -1
  161. package/dist/adapters/mysql/resources/tables.d.ts +2 -2
  162. package/dist/adapters/mysql/resources/tables.d.ts.map +1 -1
  163. package/dist/adapters/mysql/resources/tables.js +8 -8
  164. package/dist/adapters/mysql/resources/tables.js.map +1 -1
  165. package/dist/adapters/mysql/resources/variables.d.ts +2 -2
  166. package/dist/adapters/mysql/resources/variables.d.ts.map +1 -1
  167. package/dist/adapters/mysql/resources/variables.js +10 -10
  168. package/dist/adapters/mysql/resources/variables.js.map +1 -1
  169. package/dist/adapters/mysql/tools/admin/backup.d.ts +2 -2
  170. package/dist/adapters/mysql/tools/admin/backup.d.ts.map +1 -1
  171. package/dist/adapters/mysql/tools/admin/backup.js +193 -101
  172. package/dist/adapters/mysql/tools/admin/backup.js.map +1 -1
  173. package/dist/adapters/mysql/tools/admin/index.d.ts +2 -2
  174. package/dist/adapters/mysql/tools/admin/index.js +6 -6
  175. package/dist/adapters/mysql/tools/admin/index.js.map +1 -1
  176. package/dist/adapters/mysql/tools/admin/maintenance.d.ts +2 -2
  177. package/dist/adapters/mysql/tools/admin/maintenance.d.ts.map +1 -1
  178. package/dist/adapters/mysql/tools/admin/maintenance.js +97 -66
  179. package/dist/adapters/mysql/tools/admin/maintenance.js.map +1 -1
  180. package/dist/adapters/mysql/tools/admin/monitoring.d.ts +2 -2
  181. package/dist/adapters/mysql/tools/admin/monitoring.d.ts.map +1 -1
  182. package/dist/adapters/mysql/tools/admin/monitoring.js +215 -79
  183. package/dist/adapters/mysql/tools/admin/monitoring.js.map +1 -1
  184. package/dist/adapters/mysql/tools/cluster/group-replication.d.ts +2 -2
  185. package/dist/adapters/mysql/tools/cluster/group-replication.d.ts.map +1 -1
  186. package/dist/adapters/mysql/tools/cluster/group-replication.js +90 -74
  187. package/dist/adapters/mysql/tools/cluster/group-replication.js.map +1 -1
  188. package/dist/adapters/mysql/tools/cluster/index.d.ts +2 -2
  189. package/dist/adapters/mysql/tools/cluster/index.js +3 -3
  190. package/dist/adapters/mysql/tools/cluster/index.js.map +1 -1
  191. package/dist/adapters/mysql/tools/cluster/innodb-cluster.d.ts +2 -2
  192. package/dist/adapters/mysql/tools/cluster/innodb-cluster.d.ts.map +1 -1
  193. package/dist/adapters/mysql/tools/cluster/innodb-cluster.js +225 -97
  194. package/dist/adapters/mysql/tools/cluster/innodb-cluster.js.map +1 -1
  195. package/dist/adapters/mysql/tools/codemode/index.d.ts +38 -0
  196. package/dist/adapters/mysql/tools/codemode/index.d.ts.map +1 -0
  197. package/dist/adapters/mysql/tools/codemode/index.js +203 -0
  198. package/dist/adapters/mysql/tools/codemode/index.js.map +1 -0
  199. package/dist/adapters/mysql/tools/core.d.ts +2 -2
  200. package/dist/adapters/mysql/tools/core.d.ts.map +1 -1
  201. package/dist/adapters/mysql/tools/core.js +234 -114
  202. package/dist/adapters/mysql/tools/core.js.map +1 -1
  203. package/dist/adapters/mysql/tools/docstore.d.ts +2 -2
  204. package/dist/adapters/mysql/tools/docstore.d.ts.map +1 -1
  205. package/dist/adapters/mysql/tools/docstore.js +252 -117
  206. package/dist/adapters/mysql/tools/docstore.js.map +1 -1
  207. package/dist/adapters/mysql/tools/events.d.ts +2 -2
  208. package/dist/adapters/mysql/tools/events.d.ts.map +1 -1
  209. package/dist/adapters/mysql/tools/events.js +236 -113
  210. package/dist/adapters/mysql/tools/events.js.map +1 -1
  211. package/dist/adapters/mysql/tools/index.d.ts +19 -19
  212. package/dist/adapters/mysql/tools/index.d.ts.map +1 -1
  213. package/dist/adapters/mysql/tools/index.js +19 -19
  214. package/dist/adapters/mysql/tools/index.js.map +1 -1
  215. package/dist/adapters/mysql/tools/json/core.d.ts +2 -2
  216. package/dist/adapters/mysql/tools/json/core.d.ts.map +1 -1
  217. package/dist/adapters/mysql/tools/json/core.js +225 -131
  218. package/dist/adapters/mysql/tools/json/core.js.map +1 -1
  219. package/dist/adapters/mysql/tools/json/enhanced.d.ts +2 -2
  220. package/dist/adapters/mysql/tools/json/enhanced.d.ts.map +1 -1
  221. package/dist/adapters/mysql/tools/json/enhanced.js +274 -163
  222. package/dist/adapters/mysql/tools/json/enhanced.js.map +1 -1
  223. package/dist/adapters/mysql/tools/json/helpers.d.ts +2 -2
  224. package/dist/adapters/mysql/tools/json/helpers.d.ts.map +1 -1
  225. package/dist/adapters/mysql/tools/json/helpers.js +141 -57
  226. package/dist/adapters/mysql/tools/json/helpers.js.map +1 -1
  227. package/dist/adapters/mysql/tools/json/index.d.ts +2 -2
  228. package/dist/adapters/mysql/tools/json/index.js +6 -6
  229. package/dist/adapters/mysql/tools/json/index.js.map +1 -1
  230. package/dist/adapters/mysql/tools/partitioning.d.ts +2 -2
  231. package/dist/adapters/mysql/tools/partitioning.d.ts.map +1 -1
  232. package/dist/adapters/mysql/tools/partitioning.js +180 -64
  233. package/dist/adapters/mysql/tools/partitioning.js.map +1 -1
  234. package/dist/adapters/mysql/tools/performance/analysis.d.ts +2 -2
  235. package/dist/adapters/mysql/tools/performance/analysis.d.ts.map +1 -1
  236. package/dist/adapters/mysql/tools/performance/analysis.js +184 -101
  237. package/dist/adapters/mysql/tools/performance/analysis.js.map +1 -1
  238. package/dist/adapters/mysql/tools/performance/index.d.ts +2 -2
  239. package/dist/adapters/mysql/tools/performance/index.js +4 -4
  240. package/dist/adapters/mysql/tools/performance/index.js.map +1 -1
  241. package/dist/adapters/mysql/tools/performance/optimization.d.ts +3 -3
  242. package/dist/adapters/mysql/tools/performance/optimization.d.ts.map +1 -1
  243. package/dist/adapters/mysql/tools/performance/optimization.js +229 -77
  244. package/dist/adapters/mysql/tools/performance/optimization.js.map +1 -1
  245. package/dist/adapters/mysql/tools/proxysql.d.ts +2 -2
  246. package/dist/adapters/mysql/tools/proxysql.d.ts.map +1 -1
  247. package/dist/adapters/mysql/tools/proxysql.js +213 -125
  248. package/dist/adapters/mysql/tools/proxysql.js.map +1 -1
  249. package/dist/adapters/mysql/tools/replication.d.ts +2 -2
  250. package/dist/adapters/mysql/tools/replication.d.ts.map +1 -1
  251. package/dist/adapters/mysql/tools/replication.js +117 -66
  252. package/dist/adapters/mysql/tools/replication.js.map +1 -1
  253. package/dist/adapters/mysql/tools/roles.d.ts +2 -2
  254. package/dist/adapters/mysql/tools/roles.d.ts.map +1 -1
  255. package/dist/adapters/mysql/tools/roles.js +276 -84
  256. package/dist/adapters/mysql/tools/roles.js.map +1 -1
  257. package/dist/adapters/mysql/tools/router.d.ts +2 -2
  258. package/dist/adapters/mysql/tools/router.d.ts.map +1 -1
  259. package/dist/adapters/mysql/tools/router.js +174 -109
  260. package/dist/adapters/mysql/tools/router.js.map +1 -1
  261. package/dist/adapters/mysql/tools/schema/constraints.d.ts +2 -2
  262. package/dist/adapters/mysql/tools/schema/constraints.d.ts.map +1 -1
  263. package/dist/adapters/mysql/tools/schema/constraints.js +24 -15
  264. package/dist/adapters/mysql/tools/schema/constraints.js.map +1 -1
  265. package/dist/adapters/mysql/tools/schema/index.d.ts +2 -2
  266. package/dist/adapters/mysql/tools/schema/index.d.ts.map +1 -1
  267. package/dist/adapters/mysql/tools/schema/index.js +7 -7
  268. package/dist/adapters/mysql/tools/schema/index.js.map +1 -1
  269. package/dist/adapters/mysql/tools/schema/management.d.ts +2 -2
  270. package/dist/adapters/mysql/tools/schema/management.d.ts.map +1 -1
  271. package/dist/adapters/mysql/tools/schema/management.js +99 -42
  272. package/dist/adapters/mysql/tools/schema/management.js.map +1 -1
  273. package/dist/adapters/mysql/tools/schema/routines.d.ts +2 -2
  274. package/dist/adapters/mysql/tools/schema/routines.d.ts.map +1 -1
  275. package/dist/adapters/mysql/tools/schema/routines.js +36 -19
  276. package/dist/adapters/mysql/tools/schema/routines.js.map +1 -1
  277. package/dist/adapters/mysql/tools/schema/scheduled_events.d.ts +2 -2
  278. package/dist/adapters/mysql/tools/schema/scheduled_events.d.ts.map +1 -1
  279. package/dist/adapters/mysql/tools/schema/scheduled_events.js +26 -13
  280. package/dist/adapters/mysql/tools/schema/scheduled_events.js.map +1 -1
  281. package/dist/adapters/mysql/tools/schema/triggers.d.ts +2 -2
  282. package/dist/adapters/mysql/tools/schema/triggers.d.ts.map +1 -1
  283. package/dist/adapters/mysql/tools/schema/triggers.js +24 -13
  284. package/dist/adapters/mysql/tools/schema/triggers.js.map +1 -1
  285. package/dist/adapters/mysql/tools/schema/views.d.ts +2 -2
  286. package/dist/adapters/mysql/tools/schema/views.d.ts.map +1 -1
  287. package/dist/adapters/mysql/tools/schema/views.js +59 -28
  288. package/dist/adapters/mysql/tools/schema/views.js.map +1 -1
  289. package/dist/adapters/mysql/tools/security/audit.d.ts +2 -2
  290. package/dist/adapters/mysql/tools/security/audit.d.ts.map +1 -1
  291. package/dist/adapters/mysql/tools/security/audit.js +61 -55
  292. package/dist/adapters/mysql/tools/security/audit.js.map +1 -1
  293. package/dist/adapters/mysql/tools/security/data-protection.d.ts +2 -2
  294. package/dist/adapters/mysql/tools/security/data-protection.d.ts.map +1 -1
  295. package/dist/adapters/mysql/tools/security/data-protection.js +193 -80
  296. package/dist/adapters/mysql/tools/security/data-protection.js.map +1 -1
  297. package/dist/adapters/mysql/tools/security/encryption.d.ts +2 -2
  298. package/dist/adapters/mysql/tools/security/encryption.d.ts.map +1 -1
  299. package/dist/adapters/mysql/tools/security/encryption.js +86 -67
  300. package/dist/adapters/mysql/tools/security/encryption.js.map +1 -1
  301. package/dist/adapters/mysql/tools/security/index.d.ts +2 -2
  302. package/dist/adapters/mysql/tools/security/index.js +4 -4
  303. package/dist/adapters/mysql/tools/security/index.js.map +1 -1
  304. package/dist/adapters/mysql/tools/shell/backup.d.ts +1 -1
  305. package/dist/adapters/mysql/tools/shell/backup.d.ts.map +1 -1
  306. package/dist/adapters/mysql/tools/shell/backup.js +122 -63
  307. package/dist/adapters/mysql/tools/shell/backup.js.map +1 -1
  308. package/dist/adapters/mysql/tools/shell/common.d.ts.map +1 -1
  309. package/dist/adapters/mysql/tools/shell/common.js +61 -37
  310. package/dist/adapters/mysql/tools/shell/common.js.map +1 -1
  311. package/dist/adapters/mysql/tools/shell/data-transfer.d.ts +1 -1
  312. package/dist/adapters/mysql/tools/shell/data-transfer.d.ts.map +1 -1
  313. package/dist/adapters/mysql/tools/shell/data-transfer.js +125 -69
  314. package/dist/adapters/mysql/tools/shell/data-transfer.js.map +1 -1
  315. package/dist/adapters/mysql/tools/shell/index.d.ts +2 -2
  316. package/dist/adapters/mysql/tools/shell/index.js +6 -6
  317. package/dist/adapters/mysql/tools/shell/index.js.map +1 -1
  318. package/dist/adapters/mysql/tools/shell/info.d.ts +1 -1
  319. package/dist/adapters/mysql/tools/shell/info.d.ts.map +1 -1
  320. package/dist/adapters/mysql/tools/shell/info.js +12 -12
  321. package/dist/adapters/mysql/tools/shell/info.js.map +1 -1
  322. package/dist/adapters/mysql/tools/shell/restore.d.ts +1 -1
  323. package/dist/adapters/mysql/tools/shell/restore.d.ts.map +1 -1
  324. package/dist/adapters/mysql/tools/shell/restore.js +128 -43
  325. package/dist/adapters/mysql/tools/shell/restore.js.map +1 -1
  326. package/dist/adapters/mysql/tools/shell/utilities.d.ts +1 -1
  327. package/dist/adapters/mysql/tools/shell/utilities.d.ts.map +1 -1
  328. package/dist/adapters/mysql/tools/shell/utilities.js +42 -18
  329. package/dist/adapters/mysql/tools/shell/utilities.js.map +1 -1
  330. package/dist/adapters/mysql/tools/spatial/geometry.d.ts +2 -2
  331. package/dist/adapters/mysql/tools/spatial/geometry.d.ts.map +1 -1
  332. package/dist/adapters/mysql/tools/spatial/geometry.js +85 -46
  333. package/dist/adapters/mysql/tools/spatial/geometry.js.map +1 -1
  334. package/dist/adapters/mysql/tools/spatial/index.d.ts +2 -2
  335. package/dist/adapters/mysql/tools/spatial/index.js +5 -5
  336. package/dist/adapters/mysql/tools/spatial/index.js.map +1 -1
  337. package/dist/adapters/mysql/tools/spatial/operations.d.ts +2 -2
  338. package/dist/adapters/mysql/tools/spatial/operations.d.ts.map +1 -1
  339. package/dist/adapters/mysql/tools/spatial/operations.js +175 -106
  340. package/dist/adapters/mysql/tools/spatial/operations.js.map +1 -1
  341. package/dist/adapters/mysql/tools/spatial/queries.d.ts +2 -2
  342. package/dist/adapters/mysql/tools/spatial/queries.d.ts.map +1 -1
  343. package/dist/adapters/mysql/tools/spatial/queries.js +144 -100
  344. package/dist/adapters/mysql/tools/spatial/queries.js.map +1 -1
  345. package/dist/adapters/mysql/tools/spatial/setup.d.ts +2 -2
  346. package/dist/adapters/mysql/tools/spatial/setup.d.ts.map +1 -1
  347. package/dist/adapters/mysql/tools/spatial/setup.js +122 -34
  348. package/dist/adapters/mysql/tools/spatial/setup.js.map +1 -1
  349. package/dist/adapters/mysql/tools/stats/comparative.d.ts +2 -2
  350. package/dist/adapters/mysql/tools/stats/comparative.d.ts.map +1 -1
  351. package/dist/adapters/mysql/tools/stats/comparative.js +159 -107
  352. package/dist/adapters/mysql/tools/stats/comparative.js.map +1 -1
  353. package/dist/adapters/mysql/tools/stats/descriptive.d.ts +2 -2
  354. package/dist/adapters/mysql/tools/stats/descriptive.d.ts.map +1 -1
  355. package/dist/adapters/mysql/tools/stats/descriptive.js +268 -205
  356. package/dist/adapters/mysql/tools/stats/descriptive.js.map +1 -1
  357. package/dist/adapters/mysql/tools/stats/index.d.ts +2 -2
  358. package/dist/adapters/mysql/tools/stats/index.js +3 -3
  359. package/dist/adapters/mysql/tools/stats/index.js.map +1 -1
  360. package/dist/adapters/mysql/tools/sysschema/activity.d.ts +2 -2
  361. package/dist/adapters/mysql/tools/sysschema/activity.d.ts.map +1 -1
  362. package/dist/adapters/mysql/tools/sysschema/activity.js +23 -23
  363. package/dist/adapters/mysql/tools/sysschema/activity.js.map +1 -1
  364. package/dist/adapters/mysql/tools/sysschema/index.d.ts +2 -2
  365. package/dist/adapters/mysql/tools/sysschema/index.js +4 -4
  366. package/dist/adapters/mysql/tools/sysschema/index.js.map +1 -1
  367. package/dist/adapters/mysql/tools/sysschema/performance.d.ts +2 -2
  368. package/dist/adapters/mysql/tools/sysschema/performance.d.ts.map +1 -1
  369. package/dist/adapters/mysql/tools/sysschema/performance.js +58 -43
  370. package/dist/adapters/mysql/tools/sysschema/performance.js.map +1 -1
  371. package/dist/adapters/mysql/tools/sysschema/resources.d.ts +2 -2
  372. package/dist/adapters/mysql/tools/sysschema/resources.d.ts.map +1 -1
  373. package/dist/adapters/mysql/tools/sysschema/resources.js +58 -33
  374. package/dist/adapters/mysql/tools/sysschema/resources.js.map +1 -1
  375. package/dist/adapters/mysql/tools/text/fulltext.d.ts +4 -3
  376. package/dist/adapters/mysql/tools/text/fulltext.d.ts.map +1 -1
  377. package/dist/adapters/mysql/tools/text/fulltext.js +214 -55
  378. package/dist/adapters/mysql/tools/text/fulltext.js.map +1 -1
  379. package/dist/adapters/mysql/tools/text/index.d.ts +3 -3
  380. package/dist/adapters/mysql/tools/text/index.d.ts.map +1 -1
  381. package/dist/adapters/mysql/tools/text/index.js +6 -5
  382. package/dist/adapters/mysql/tools/text/index.js.map +1 -1
  383. package/dist/adapters/mysql/tools/text/processing.d.ts +2 -2
  384. package/dist/adapters/mysql/tools/text/processing.d.ts.map +1 -1
  385. package/dist/adapters/mysql/tools/text/processing.js +175 -122
  386. package/dist/adapters/mysql/tools/text/processing.js.map +1 -1
  387. package/dist/adapters/mysql/tools/transactions.d.ts +2 -2
  388. package/dist/adapters/mysql/tools/transactions.d.ts.map +1 -1
  389. package/dist/adapters/mysql/tools/transactions.js +162 -85
  390. package/dist/adapters/mysql/tools/transactions.js.map +1 -1
  391. package/dist/adapters/mysql/types/proxysql-types.d.ts +7 -2
  392. package/dist/adapters/mysql/types/proxysql-types.d.ts.map +1 -1
  393. package/dist/adapters/mysql/types/proxysql-types.js +52 -30
  394. package/dist/adapters/mysql/types/proxysql-types.js.map +1 -1
  395. package/dist/adapters/mysql/types/router-types.d.ts +1 -1
  396. package/dist/adapters/mysql/types/router-types.js +17 -17
  397. package/dist/adapters/mysql/types/router-types.js.map +1 -1
  398. package/dist/adapters/mysql/types/shell-types.d.ts +1 -2
  399. package/dist/adapters/mysql/types/shell-types.d.ts.map +1 -1
  400. package/dist/adapters/mysql/types/shell-types.js +255 -82
  401. package/dist/adapters/mysql/types/shell-types.js.map +1 -1
  402. package/dist/adapters/mysql/types.d.ts +976 -80
  403. package/dist/adapters/mysql/types.d.ts.map +1 -1
  404. package/dist/adapters/mysql/types.js +1317 -170
  405. package/dist/adapters/mysql/types.js.map +1 -1
  406. package/dist/auth/AuthorizationServerDiscovery.d.ts +1 -1
  407. package/dist/auth/AuthorizationServerDiscovery.d.ts.map +1 -1
  408. package/dist/auth/AuthorizationServerDiscovery.js +16 -14
  409. package/dist/auth/AuthorizationServerDiscovery.js.map +1 -1
  410. package/dist/auth/OAuthResourceServer.d.ts +1 -1
  411. package/dist/auth/OAuthResourceServer.d.ts.map +1 -1
  412. package/dist/auth/OAuthResourceServer.js +4 -4
  413. package/dist/auth/OAuthResourceServer.js.map +1 -1
  414. package/dist/auth/TokenValidator.d.ts +1 -1
  415. package/dist/auth/TokenValidator.d.ts.map +1 -1
  416. package/dist/auth/TokenValidator.js +30 -20
  417. package/dist/auth/TokenValidator.js.map +1 -1
  418. package/dist/auth/errors.d.ts.map +1 -1
  419. package/dist/auth/errors.js +24 -24
  420. package/dist/auth/errors.js.map +1 -1
  421. package/dist/auth/index.d.ts +7 -7
  422. package/dist/auth/index.d.ts.map +1 -1
  423. package/dist/auth/index.js +6 -6
  424. package/dist/auth/index.js.map +1 -1
  425. package/dist/auth/middleware.d.ts +2 -2
  426. package/dist/auth/middleware.d.ts.map +1 -1
  427. package/dist/auth/middleware.js +28 -24
  428. package/dist/auth/middleware.js.map +1 -1
  429. package/dist/auth/scopes.d.ts +2 -2
  430. package/dist/auth/scopes.d.ts.map +1 -1
  431. package/dist/auth/scopes.js +23 -16
  432. package/dist/auth/scopes.js.map +1 -1
  433. package/dist/auth/types.d.ts +2 -2
  434. package/dist/auth/types.d.ts.map +1 -1
  435. package/dist/cli/args.d.ts +1 -1
  436. package/dist/cli/args.d.ts.map +1 -1
  437. package/dist/cli/args.js +82 -68
  438. package/dist/cli/args.js.map +1 -1
  439. package/dist/cli.d.ts +1 -1
  440. package/dist/cli.d.ts.map +1 -1
  441. package/dist/cli.js +44 -34
  442. package/dist/cli.js.map +1 -1
  443. package/dist/codemode/api.d.ts +69 -0
  444. package/dist/codemode/api.d.ts.map +1 -0
  445. package/dist/codemode/api.js +1035 -0
  446. package/dist/codemode/api.js.map +1 -0
  447. package/dist/codemode/index.d.ts +13 -0
  448. package/dist/codemode/index.d.ts.map +1 -0
  449. package/dist/codemode/index.js +17 -0
  450. package/dist/codemode/index.js.map +1 -0
  451. package/dist/codemode/sandbox-factory.d.ts +72 -0
  452. package/dist/codemode/sandbox-factory.d.ts.map +1 -0
  453. package/dist/codemode/sandbox-factory.js +88 -0
  454. package/dist/codemode/sandbox-factory.js.map +1 -0
  455. package/dist/codemode/sandbox.d.ts +96 -0
  456. package/dist/codemode/sandbox.d.ts.map +1 -0
  457. package/dist/codemode/sandbox.js +345 -0
  458. package/dist/codemode/sandbox.js.map +1 -0
  459. package/dist/codemode/security.d.ts +44 -0
  460. package/dist/codemode/security.d.ts.map +1 -0
  461. package/dist/codemode/security.js +149 -0
  462. package/dist/codemode/security.js.map +1 -0
  463. package/dist/codemode/types.d.ts +137 -0
  464. package/dist/codemode/types.d.ts.map +1 -0
  465. package/dist/codemode/types.js +46 -0
  466. package/dist/codemode/types.js.map +1 -0
  467. package/dist/codemode/worker-sandbox.d.ts +82 -0
  468. package/dist/codemode/worker-sandbox.d.ts.map +1 -0
  469. package/dist/codemode/worker-sandbox.js +244 -0
  470. package/dist/codemode/worker-sandbox.js.map +1 -0
  471. package/dist/codemode/worker-script.d.ts +8 -0
  472. package/dist/codemode/worker-script.d.ts.map +1 -0
  473. package/dist/codemode/worker-script.js +113 -0
  474. package/dist/codemode/worker-script.js.map +1 -0
  475. package/dist/constants/ServerInstructions.d.ts +2 -2
  476. package/dist/constants/ServerInstructions.d.ts.map +1 -1
  477. package/dist/constants/ServerInstructions.js +252 -36
  478. package/dist/constants/ServerInstructions.js.map +1 -1
  479. package/dist/filtering/ToolConstants.d.ts +12 -12
  480. package/dist/filtering/ToolConstants.d.ts.map +1 -1
  481. package/dist/filtering/ToolConstants.js +253 -214
  482. package/dist/filtering/ToolConstants.js.map +1 -1
  483. package/dist/filtering/ToolFilter.d.ts +2 -2
  484. package/dist/filtering/ToolFilter.d.ts.map +1 -1
  485. package/dist/filtering/ToolFilter.js +47 -36
  486. package/dist/filtering/ToolFilter.js.map +1 -1
  487. package/dist/index.d.ts +9 -9
  488. package/dist/index.d.ts.map +1 -1
  489. package/dist/index.js +7 -7
  490. package/dist/index.js.map +1 -1
  491. package/dist/logging/McpLogging.d.ts +2 -2
  492. package/dist/logging/McpLogging.d.ts.map +1 -1
  493. package/dist/logging/McpLogging.js +16 -13
  494. package/dist/logging/McpLogging.js.map +1 -1
  495. package/dist/logging/index.d.ts +1 -1
  496. package/dist/logging/index.js +1 -1
  497. package/dist/pool/ConnectionPool.d.ts +3 -3
  498. package/dist/pool/ConnectionPool.d.ts.map +1 -1
  499. package/dist/pool/ConnectionPool.js +30 -26
  500. package/dist/pool/ConnectionPool.js.map +1 -1
  501. package/dist/progress/ProgressReporter.d.ts +1 -1
  502. package/dist/progress/ProgressReporter.d.ts.map +1 -1
  503. package/dist/progress/ProgressReporter.js +5 -5
  504. package/dist/progress/ProgressReporter.js.map +1 -1
  505. package/dist/progress/index.d.ts +1 -1
  506. package/dist/progress/index.d.ts.map +1 -1
  507. package/dist/progress/index.js +1 -1
  508. package/dist/progress/index.js.map +1 -1
  509. package/dist/server/McpServer.d.ts +3 -3
  510. package/dist/server/McpServer.d.ts.map +1 -1
  511. package/dist/server/McpServer.js +58 -53
  512. package/dist/server/McpServer.js.map +1 -1
  513. package/dist/transports/http.d.ts +3 -3
  514. package/dist/transports/http.d.ts.map +1 -1
  515. package/dist/transports/http.js +36 -33
  516. package/dist/transports/http.js.map +1 -1
  517. package/dist/transports/index.d.ts +1 -1
  518. package/dist/transports/index.d.ts.map +1 -1
  519. package/dist/transports/index.js +1 -1
  520. package/dist/transports/index.js.map +1 -1
  521. package/dist/types/index.d.ts +6 -6
  522. package/dist/types/index.d.ts.map +1 -1
  523. package/dist/types/index.js +1 -1
  524. package/dist/types/index.js.map +1 -1
  525. package/dist/types/modules/database.d.ts +1 -1
  526. package/dist/types/modules/database.d.ts.map +1 -1
  527. package/dist/types/modules/errors.d.ts.map +1 -1
  528. package/dist/types/modules/errors.js +15 -15
  529. package/dist/types/modules/errors.js.map +1 -1
  530. package/dist/types/modules/oauth.d.ts +1 -1
  531. package/dist/types/modules/oauth.d.ts.map +1 -1
  532. package/dist/types/modules/query.d.ts +8 -8
  533. package/dist/types/modules/query.d.ts.map +1 -1
  534. package/dist/types/modules/server.d.ts +5 -3
  535. package/dist/types/modules/server.d.ts.map +1 -1
  536. package/dist/types/modules/tools.d.ts +6 -6
  537. package/dist/types/modules/tools.d.ts.map +1 -1
  538. package/dist/utils/logger.d.ts +2 -2
  539. package/dist/utils/logger.d.ts.map +1 -1
  540. package/dist/utils/logger.js +58 -55
  541. package/dist/utils/logger.js.map +1 -1
  542. package/dist/utils/promptGenerator.d.ts +1 -1
  543. package/dist/utils/promptGenerator.d.ts.map +1 -1
  544. package/dist/utils/promptGenerator.js +24 -16
  545. package/dist/utils/promptGenerator.js.map +1 -1
  546. package/dist/utils/validators.d.ts +21 -2
  547. package/dist/utils/validators.d.ts.map +1 -1
  548. package/dist/utils/validators.js +101 -13
  549. package/dist/utils/validators.js.map +1 -1
  550. package/eslint.config.js +117 -81
  551. package/package.json +66 -64
  552. package/releases/release-notes.md +32 -26
  553. package/releases/v2.0.0-release-notes.md +99 -51
  554. package/releases/v2.1.0-release-notes.md +14 -5
  555. package/releases/v2.2.0-release-notes.md +239 -0
  556. package/releases/v2.3.0-release-notes.md +191 -0
  557. package/server.json +1 -1
  558. package/src/__tests__/cli.test.ts +302 -247
  559. package/src/__tests__/index.test.ts +21 -21
  560. package/src/__tests__/mocks/adapter.ts +204 -163
  561. package/src/__tests__/mocks/index.ts +30 -23
  562. package/src/__tests__/mocks/mysql.ts +94 -84
  563. package/src/__tests__/perf.test.ts +207 -203
  564. package/src/__tests__/performance.test.ts +173 -164
  565. package/src/__tests__/setup.ts +26 -21
  566. package/src/adapters/DatabaseAdapter.ts +386 -340
  567. package/src/adapters/__tests__/DatabaseAdapter.test.ts +455 -377
  568. package/src/adapters/mysql/MySQLAdapter.ts +560 -486
  569. package/src/adapters/mysql/SchemaManager.ts +251 -208
  570. package/src/adapters/mysql/__tests__/MySQLAdapter.integration.test.ts +150 -147
  571. package/src/adapters/mysql/__tests__/MySQLAdapter.test.ts +590 -477
  572. package/src/adapters/mysql/__tests__/SchemaManager.test.ts +196 -154
  573. package/src/adapters/mysql/index.ts +2 -2
  574. package/src/adapters/mysql/prompts/__tests__/indexTuning.test.ts +33 -26
  575. package/src/adapters/mysql/prompts/__tests__/prompts.test.ts +277 -239
  576. package/src/adapters/mysql/prompts/backupStrategy.ts +29 -17
  577. package/src/adapters/mysql/prompts/clusterSetup.ts +11 -10
  578. package/src/adapters/mysql/prompts/docstoreSetup.ts +10 -10
  579. package/src/adapters/mysql/prompts/eventScheduler.ts +10 -10
  580. package/src/adapters/mysql/prompts/healthCheck.ts +20 -15
  581. package/src/adapters/mysql/prompts/index.ts +202 -145
  582. package/src/adapters/mysql/prompts/indexTuning.ts +22 -17
  583. package/src/adapters/mysql/prompts/mysqlshSetup.ts +11 -11
  584. package/src/adapters/mysql/prompts/proxysqlSetup.ts +10 -10
  585. package/src/adapters/mysql/prompts/replicationSetup.ts +24 -16
  586. package/src/adapters/mysql/prompts/routerSetup.ts +15 -10
  587. package/src/adapters/mysql/prompts/spatialSetup.ts +10 -10
  588. package/src/adapters/mysql/prompts/sysSchema.ts +11 -10
  589. package/src/adapters/mysql/resources/__tests__/capabilities.test.ts +118 -47
  590. package/src/adapters/mysql/resources/__tests__/cluster.test.ts +163 -104
  591. package/src/adapters/mysql/resources/__tests__/docstore.test.ts +88 -81
  592. package/src/adapters/mysql/resources/__tests__/events.test.ts +94 -83
  593. package/src/adapters/mysql/resources/__tests__/health.test.ts +131 -91
  594. package/src/adapters/mysql/resources/__tests__/indexes.test.ts +125 -102
  595. package/src/adapters/mysql/resources/__tests__/innodb.test.ts +86 -62
  596. package/src/adapters/mysql/resources/__tests__/locks.test.ts +142 -104
  597. package/src/adapters/mysql/resources/__tests__/performance.test.ts +81 -58
  598. package/src/adapters/mysql/resources/__tests__/pool.test.ts +45 -40
  599. package/src/adapters/mysql/resources/__tests__/processlist.test.ts +39 -23
  600. package/src/adapters/mysql/resources/__tests__/replication.test.ts +265 -211
  601. package/src/adapters/mysql/resources/__tests__/resources.test.ts +121 -109
  602. package/src/adapters/mysql/resources/__tests__/schema.test.ts +29 -23
  603. package/src/adapters/mysql/resources/__tests__/spatial.test.ts +58 -45
  604. package/src/adapters/mysql/resources/__tests__/status.test.ts +62 -45
  605. package/src/adapters/mysql/resources/__tests__/sysschema.test.ts +99 -60
  606. package/src/adapters/mysql/resources/__tests__/tables.test.ts +41 -32
  607. package/src/adapters/mysql/resources/__tests__/variables.test.ts +77 -49
  608. package/src/adapters/mysql/resources/capabilities.ts +61 -42
  609. package/src/adapters/mysql/resources/cluster.ts +58 -49
  610. package/src/adapters/mysql/resources/docstore.ts +46 -41
  611. package/src/adapters/mysql/resources/events.ts +37 -31
  612. package/src/adapters/mysql/resources/health.ts +98 -74
  613. package/src/adapters/mysql/resources/index.ts +55 -47
  614. package/src/adapters/mysql/resources/indexes.ts +66 -51
  615. package/src/adapters/mysql/resources/innodb.ts +98 -81
  616. package/src/adapters/mysql/resources/locks.ts +43 -40
  617. package/src/adapters/mysql/resources/performance.ts +80 -67
  618. package/src/adapters/mysql/resources/pool.ts +23 -20
  619. package/src/adapters/mysql/resources/processlist.ts +23 -18
  620. package/src/adapters/mysql/resources/replication.ts +124 -105
  621. package/src/adapters/mysql/resources/schema.ts +23 -18
  622. package/src/adapters/mysql/resources/spatial.ts +31 -26
  623. package/src/adapters/mysql/resources/status.ts +27 -22
  624. package/src/adapters/mysql/resources/sysschema.ts +41 -36
  625. package/src/adapters/mysql/resources/tables.ts +23 -18
  626. package/src/adapters/mysql/resources/variables.ts +27 -22
  627. package/src/adapters/mysql/tools/__tests__/cluster.test.ts +419 -311
  628. package/src/adapters/mysql/tools/__tests__/core.test.ts +701 -382
  629. package/src/adapters/mysql/tools/__tests__/docstore.test.ts +782 -413
  630. package/src/adapters/mysql/tools/__tests__/events.test.ts +806 -486
  631. package/src/adapters/mysql/tools/__tests__/json_core.test.ts +326 -259
  632. package/src/adapters/mysql/tools/__tests__/json_enhanced.test.ts +452 -352
  633. package/src/adapters/mysql/tools/__tests__/json_helpers.test.ts +203 -128
  634. package/src/adapters/mysql/tools/__tests__/proxysql.test.ts +576 -340
  635. package/src/adapters/mysql/tools/__tests__/replication.test.ts +796 -390
  636. package/src/adapters/mysql/tools/__tests__/roles.test.ts +423 -166
  637. package/src/adapters/mysql/tools/__tests__/router.test.ts +644 -540
  638. package/src/adapters/mysql/tools/__tests__/security.test.ts +746 -421
  639. package/src/adapters/mysql/tools/__tests__/security_injection.test.ts +246 -173
  640. package/src/adapters/mysql/tools/__tests__/security_integration.test.ts +244 -205
  641. package/src/adapters/mysql/tools/__tests__/spatial.test.ts +443 -298
  642. package/src/adapters/mysql/tools/__tests__/spatial_handler.test.ts +535 -150
  643. package/src/adapters/mysql/tools/__tests__/stats.test.ts +861 -553
  644. package/src/adapters/mysql/tools/__tests__/transactions.test.ts +452 -263
  645. package/src/adapters/mysql/tools/admin/__tests__/backup.test.ts +612 -372
  646. package/src/adapters/mysql/tools/admin/__tests__/maintenance.test.ts +550 -257
  647. package/src/adapters/mysql/tools/admin/__tests__/monitoring.test.ts +549 -352
  648. package/src/adapters/mysql/tools/admin/backup.ts +339 -215
  649. package/src/adapters/mysql/tools/admin/index.ts +46 -46
  650. package/src/adapters/mysql/tools/admin/maintenance.ts +180 -130
  651. package/src/adapters/mysql/tools/admin/monitoring.ts +373 -199
  652. package/src/adapters/mysql/tools/cluster/__tests__/group-replication.test.ts +200 -186
  653. package/src/adapters/mysql/tools/cluster/__tests__/innodb-cluster.test.ts +399 -95
  654. package/src/adapters/mysql/tools/cluster/group-replication.ts +218 -183
  655. package/src/adapters/mysql/tools/cluster/index.ts +27 -27
  656. package/src/adapters/mysql/tools/cluster/innodb-cluster.ts +413 -251
  657. package/src/adapters/mysql/tools/codemode/index.ts +249 -0
  658. package/src/adapters/mysql/tools/core.ts +425 -285
  659. package/src/adapters/mysql/tools/docstore.ts +478 -276
  660. package/src/adapters/mysql/tools/events.ts +441 -285
  661. package/src/adapters/mysql/tools/index.ts +31 -20
  662. package/src/adapters/mysql/tools/json/__tests__/core.test.ts +456 -199
  663. package/src/adapters/mysql/tools/json/__tests__/enhanced.test.ts +554 -298
  664. package/src/adapters/mysql/tools/json/__tests__/helpers.test.ts +195 -74
  665. package/src/adapters/mysql/tools/json/__tests__/validation.test.ts +106 -72
  666. package/src/adapters/mysql/tools/json/core.ts +368 -263
  667. package/src/adapters/mysql/tools/json/enhanced.ts +368 -229
  668. package/src/adapters/mysql/tools/json/helpers.ts +205 -113
  669. package/src/adapters/mysql/tools/json/index.ts +46 -46
  670. package/src/adapters/mysql/tools/partitioning.ts +289 -140
  671. package/src/adapters/mysql/tools/performance/__tests__/analysis.test.ts +664 -249
  672. package/src/adapters/mysql/tools/performance/__tests__/optimization.test.ts +436 -179
  673. package/src/adapters/mysql/tools/performance/analysis.ts +319 -215
  674. package/src/adapters/mysql/tools/performance/index.ts +33 -33
  675. package/src/adapters/mysql/tools/performance/optimization.ts +438 -183
  676. package/src/adapters/mysql/tools/proxysql.ts +462 -320
  677. package/src/adapters/mysql/tools/replication.ts +233 -180
  678. package/src/adapters/mysql/tools/roles.ts +429 -171
  679. package/src/adapters/mysql/tools/router.ts +410 -292
  680. package/src/adapters/mysql/tools/schema/__tests__/constraints.test.ts +157 -82
  681. package/src/adapters/mysql/tools/schema/__tests__/management.test.ts +226 -101
  682. package/src/adapters/mysql/tools/schema/__tests__/routines.test.ts +80 -35
  683. package/src/adapters/mysql/tools/schema/__tests__/scheduled_events.test.ts +59 -40
  684. package/src/adapters/mysql/tools/schema/__tests__/triggers.test.ts +65 -40
  685. package/src/adapters/mysql/tools/schema/__tests__/views.test.ts +146 -77
  686. package/src/adapters/mysql/tools/schema/constraints.ts +61 -42
  687. package/src/adapters/mysql/tools/schema/index.ts +26 -35
  688. package/src/adapters/mysql/tools/schema/management.ts +167 -94
  689. package/src/adapters/mysql/tools/schema/routines.ts +79 -48
  690. package/src/adapters/mysql/tools/schema/scheduled_events.ts +53 -32
  691. package/src/adapters/mysql/tools/schema/triggers.ts +51 -33
  692. package/src/adapters/mysql/tools/schema/views.ts +96 -53
  693. package/src/adapters/mysql/tools/security/__tests__/audit.test.ts +216 -158
  694. package/src/adapters/mysql/tools/security/__tests__/data-protection.test.ts +154 -98
  695. package/src/adapters/mysql/tools/security/__tests__/encryption.test.ts +174 -138
  696. package/src/adapters/mysql/tools/security/audit.ts +213 -193
  697. package/src/adapters/mysql/tools/security/data-protection.ts +342 -198
  698. package/src/adapters/mysql/tools/security/encryption.ts +233 -193
  699. package/src/adapters/mysql/tools/security/index.ts +26 -26
  700. package/src/adapters/mysql/tools/shell/__tests__/backup.test.ts +443 -283
  701. package/src/adapters/mysql/tools/shell/__tests__/common.test.ts +183 -130
  702. package/src/adapters/mysql/tools/shell/__tests__/data-transfer.test.ts +516 -353
  703. package/src/adapters/mysql/tools/shell/__tests__/info.test.ts +65 -63
  704. package/src/adapters/mysql/tools/shell/__tests__/restore.test.ts +260 -174
  705. package/src/adapters/mysql/tools/shell/__tests__/utilities.test.ts +161 -143
  706. package/src/adapters/mysql/tools/shell/backup.ts +280 -188
  707. package/src/adapters/mysql/tools/shell/common.ts +203 -153
  708. package/src/adapters/mysql/tools/shell/data-transfer.ts +286 -200
  709. package/src/adapters/mysql/tools/shell/index.ts +29 -29
  710. package/src/adapters/mysql/tools/shell/info.ts +35 -31
  711. package/src/adapters/mysql/tools/shell/restore.ts +236 -121
  712. package/src/adapters/mysql/tools/shell/utilities.ts +86 -45
  713. package/src/adapters/mysql/tools/spatial/__tests__/geometry.test.ts +129 -89
  714. package/src/adapters/mysql/tools/spatial/__tests__/operations.test.ts +284 -148
  715. package/src/adapters/mysql/tools/spatial/__tests__/queries.test.ts +340 -245
  716. package/src/adapters/mysql/tools/spatial/geometry.ts +120 -74
  717. package/src/adapters/mysql/tools/spatial/index.ts +33 -33
  718. package/src/adapters/mysql/tools/spatial/operations.ts +254 -171
  719. package/src/adapters/mysql/tools/spatial/queries.ts +221 -165
  720. package/src/adapters/mysql/tools/spatial/setup.ts +180 -73
  721. package/src/adapters/mysql/tools/stats/__tests__/comparative.test.ts +188 -130
  722. package/src/adapters/mysql/tools/stats/comparative.ts +261 -187
  723. package/src/adapters/mysql/tools/stats/descriptive.ts +414 -322
  724. package/src/adapters/mysql/tools/stats/index.ts +23 -23
  725. package/src/adapters/mysql/tools/sysschema/__tests__/activity.test.ts +99 -71
  726. package/src/adapters/mysql/tools/sysschema/__tests__/io_summary_fix.test.ts +21 -18
  727. package/src/adapters/mysql/tools/sysschema/__tests__/performance.test.ts +149 -108
  728. package/src/adapters/mysql/tools/sysschema/__tests__/resources.test.ts +243 -104
  729. package/src/adapters/mysql/tools/sysschema/activity.ts +72 -64
  730. package/src/adapters/mysql/tools/sysschema/index.ts +24 -24
  731. package/src/adapters/mysql/tools/sysschema/performance.ts +140 -115
  732. package/src/adapters/mysql/tools/sysschema/resources.ts +140 -99
  733. package/src/adapters/mysql/tools/text/__tests__/fulltext.test.ts +526 -145
  734. package/src/adapters/mysql/tools/text/__tests__/processing.test.ts +452 -193
  735. package/src/adapters/mysql/tools/text/fulltext.ts +327 -123
  736. package/src/adapters/mysql/tools/text/index.ts +32 -30
  737. package/src/adapters/mysql/tools/text/processing.ts +281 -212
  738. package/src/adapters/mysql/tools/transactions.ts +288 -197
  739. package/src/adapters/mysql/types/__tests__/shell-types.test.ts +204 -202
  740. package/src/adapters/mysql/types/proxysql-types.ts +142 -109
  741. package/src/adapters/mysql/types/router-types.ts +36 -36
  742. package/src/adapters/mysql/types/shell-types.ts +280 -94
  743. package/src/adapters/mysql/types.ts +1475 -164
  744. package/src/auth/AuthorizationServerDiscovery.ts +127 -113
  745. package/src/auth/OAuthResourceServer.ts +67 -62
  746. package/src/auth/TokenValidator.ts +136 -119
  747. package/src/auth/__tests__/AuthorizationServerDiscovery.test.ts +295 -274
  748. package/src/auth/__tests__/OAuthResourceServer.test.ts +180 -169
  749. package/src/auth/__tests__/TokenValidator.test.ts +297 -285
  750. package/src/auth/__tests__/errors.test.ts +180 -175
  751. package/src/auth/__tests__/middleware.test.ts +281 -247
  752. package/src/auth/__tests__/scopes.test.ts +136 -134
  753. package/src/auth/errors.ts +56 -56
  754. package/src/auth/index.ts +23 -17
  755. package/src/auth/middleware.ts +161 -139
  756. package/src/auth/scopes.ts +134 -107
  757. package/src/auth/types.ts +155 -155
  758. package/src/cli/__tests__/args.test.ts +241 -216
  759. package/src/cli/__tests__/main.test.ts +191 -158
  760. package/src/cli/args.ts +285 -258
  761. package/src/cli.ts +150 -127
  762. package/src/codemode/api.ts +1224 -0
  763. package/src/codemode/index.ts +51 -0
  764. package/src/codemode/sandbox-factory.ts +146 -0
  765. package/src/codemode/sandbox.ts +450 -0
  766. package/src/codemode/security.ts +188 -0
  767. package/src/codemode/types.ts +194 -0
  768. package/src/codemode/worker-sandbox.ts +326 -0
  769. package/src/codemode/worker-script.ts +144 -0
  770. package/src/constants/ServerInstructions.ts +295 -70
  771. package/src/filtering/ToolConstants.ts +311 -272
  772. package/src/filtering/ToolFilter.ts +254 -220
  773. package/src/filtering/__tests__/ToolFilter.test.ts +469 -396
  774. package/src/index.ts +62 -57
  775. package/src/logging/McpLogging.ts +128 -119
  776. package/src/logging/__tests__/McpLogging.test.ts +223 -223
  777. package/src/logging/index.ts +2 -2
  778. package/src/pool/ConnectionPool.ts +260 -246
  779. package/src/pool/__tests__/ConnectionPool.test.ts +452 -418
  780. package/src/progress/ProgressReporter.ts +123 -123
  781. package/src/progress/__tests__/ProgressReporter.test.ts +235 -229
  782. package/src/progress/index.ts +6 -2
  783. package/src/server/McpServer.ts +305 -285
  784. package/src/server/__tests__/McpServer.test.ts +333 -291
  785. package/src/transports/__tests__/http.test.ts +658 -527
  786. package/src/transports/http.ts +237 -203
  787. package/src/transports/index.ts +6 -2
  788. package/src/types/__tests__/types.test.ts +197 -193
  789. package/src/types/index.ts +49 -37
  790. package/src/types/modules/database.ts +65 -63
  791. package/src/types/modules/errors.ts +41 -37
  792. package/src/types/modules/oauth.ts +46 -46
  793. package/src/types/modules/query.ts +75 -75
  794. package/src/types/modules/server.ts +21 -18
  795. package/src/types/modules/tools.ts +182 -178
  796. package/src/utils/__tests__/logger.test.ts +424 -414
  797. package/src/utils/__tests__/validators.test.ts +250 -165
  798. package/src/utils/logger.ts +344 -330
  799. package/src/utils/promptGenerator.ts +58 -47
  800. package/src/utils/validators.ts +217 -91
  801. package/tsconfig.json +41 -50
  802. package/vitest.config.ts +23 -23
@@ -1,33 +1,40 @@
1
1
  /**
2
2
  * MySQL Resource - Indexes
3
- *
3
+ *
4
4
  * Index usage statistics and recommendations.
5
5
  */
6
- import type { MySQLAdapter } from '../MySQLAdapter.js';
7
- import type { ResourceDefinition, RequestContext } from '../../../types/index.js';
6
+ import type { MySQLAdapter } from "../MySQLAdapter.js";
7
+ import type {
8
+ ResourceDefinition,
9
+ RequestContext,
10
+ } from "../../../types/index.js";
8
11
 
9
- export function createIndexesResource(adapter: MySQLAdapter): ResourceDefinition {
10
- return {
11
- uri: 'mysql://indexes',
12
- name: 'Index Statistics',
13
- title: 'MySQL Index Statistics',
14
- description: 'Index usage statistics, unused indexes, and duplicate detection',
15
- mimeType: 'application/json',
16
- annotations: {
17
- audience: ['user', 'assistant'],
18
- priority: 0.7
19
- },
20
- handler: async (_uri: string, _context: RequestContext) => {
21
- // Get current database
22
- const dbResult = await adapter.executeQuery('SELECT DATABASE() as db');
23
- const database = (dbResult.rows?.[0]?.['db'] as string) ?? '';
12
+ export function createIndexesResource(
13
+ adapter: MySQLAdapter,
14
+ ): ResourceDefinition {
15
+ return {
16
+ uri: "mysql://indexes",
17
+ name: "Index Statistics",
18
+ title: "MySQL Index Statistics",
19
+ description:
20
+ "Index usage statistics, unused indexes, and duplicate detection",
21
+ mimeType: "application/json",
22
+ annotations: {
23
+ audience: ["user", "assistant"],
24
+ priority: 0.7,
25
+ },
26
+ handler: async (_uri: string, _context: RequestContext) => {
27
+ // Get current database
28
+ const dbResult = await adapter.executeQuery("SELECT DATABASE() as db");
29
+ const database = (dbResult.rows?.[0]?.["db"] as string) ?? "";
24
30
 
25
- if (!database) {
26
- return { error: 'No database selected' };
27
- }
31
+ if (!database) {
32
+ return { error: "No database selected" };
33
+ }
28
34
 
29
- // Get index statistics
30
- const indexResult = await adapter.executeQuery(`
35
+ // Get index statistics
36
+ const indexResult = await adapter.executeQuery(
37
+ `
31
38
  SELECT
32
39
  TABLE_NAME as table_name,
33
40
  INDEX_NAME as index_name,
@@ -39,12 +46,15 @@ export function createIndexesResource(adapter: MySQLAdapter): ResourceDefinition
39
46
  FROM information_schema.STATISTICS
40
47
  WHERE TABLE_SCHEMA = ?
41
48
  ORDER BY TABLE_NAME, INDEX_NAME, SEQ_IN_INDEX
42
- `, [database]);
49
+ `,
50
+ [database],
51
+ );
43
52
 
44
- // Try to get index usage from performance_schema if available
45
- let unusedIndexes: unknown[] = [];
46
- try {
47
- const unusedResult = await adapter.executeQuery(`
53
+ // Try to get index usage from performance_schema if available
54
+ let unusedIndexes: unknown[] = [];
55
+ try {
56
+ const unusedResult = await adapter.executeQuery(
57
+ `
48
58
  SELECT
49
59
  object_schema as schema_name,
50
60
  object_name as table_name,
@@ -54,16 +64,19 @@ export function createIndexesResource(adapter: MySQLAdapter): ResourceDefinition
54
64
  AND index_name IS NOT NULL
55
65
  AND index_name != 'PRIMARY'
56
66
  AND count_star = 0
57
- `, [database]);
58
- unusedIndexes = unusedResult.rows ?? [];
59
- } catch {
60
- // Performance schema may not be available
61
- }
67
+ `,
68
+ [database],
69
+ );
70
+ unusedIndexes = unusedResult.rows ?? [];
71
+ } catch {
72
+ // Performance schema may not be available
73
+ }
62
74
 
63
- // Get duplicate/redundant indexes
64
- let duplicateIndexes: unknown[] = [];
65
- try {
66
- const dupResult = await adapter.executeQuery(`
75
+ // Get duplicate/redundant indexes
76
+ let duplicateIndexes: unknown[] = [];
77
+ try {
78
+ const dupResult = await adapter.executeQuery(
79
+ `
67
80
  SELECT
68
81
  a.TABLE_NAME as table_name,
69
82
  a.INDEX_NAME as redundant_index,
@@ -80,19 +93,21 @@ export function createIndexesResource(adapter: MySQLAdapter): ResourceDefinition
80
93
  AND a.SEQ_IN_INDEX = 1
81
94
  AND (a.INDEX_NAME != 'PRIMARY' AND b.INDEX_NAME != 'PRIMARY')
82
95
  GROUP BY a.TABLE_NAME, a.INDEX_NAME, a.COLUMN_NAME, b.INDEX_NAME
83
- `, [database]);
84
- duplicateIndexes = dupResult.rows ?? [];
85
- } catch {
86
- // May fail on older MySQL versions
87
- }
96
+ `,
97
+ [database],
98
+ );
99
+ duplicateIndexes = dupResult.rows ?? [];
100
+ } catch {
101
+ // May fail on older MySQL versions
102
+ }
88
103
 
89
- return {
90
- database,
91
- total_indexes: (indexResult.rows ?? []).length,
92
- indexes: indexResult.rows ?? [],
93
- unused_indexes: unusedIndexes,
94
- potential_duplicates: duplicateIndexes
95
- };
96
- }
97
- };
104
+ return {
105
+ database,
106
+ total_indexes: (indexResult.rows ?? []).length,
107
+ indexes: indexResult.rows ?? [],
108
+ unused_indexes: unusedIndexes,
109
+ potential_duplicates: duplicateIndexes,
110
+ };
111
+ },
112
+ };
98
113
  }
@@ -1,35 +1,43 @@
1
1
  /**
2
2
  * MySQL Resource - InnoDB
3
- *
3
+ *
4
4
  * InnoDB buffer pool and engine status metrics.
5
5
  */
6
- import type { MySQLAdapter } from '../MySQLAdapter.js';
7
- import type { ResourceDefinition, RequestContext } from '../../../types/index.js';
6
+ import type { MySQLAdapter } from "../MySQLAdapter.js";
7
+ import type {
8
+ ResourceDefinition,
9
+ RequestContext,
10
+ } from "../../../types/index.js";
8
11
 
9
- export function createInnodbResource(adapter: MySQLAdapter): ResourceDefinition {
10
- return {
11
- uri: 'mysql://innodb',
12
- name: 'InnoDB Status',
13
- title: 'MySQL InnoDB Status',
14
- description: 'InnoDB buffer pool statistics and engine status',
15
- mimeType: 'application/json',
16
- annotations: {
17
- audience: ['user', 'assistant'],
18
- priority: 0.7
19
- },
20
- handler: async (_uri: string, _context: RequestContext) => {
21
- // Get buffer pool status
22
- const bufferPoolResult = await adapter.executeQuery(`
12
+ export function createInnodbResource(
13
+ adapter: MySQLAdapter,
14
+ ): ResourceDefinition {
15
+ return {
16
+ uri: "mysql://innodb",
17
+ name: "InnoDB Status",
18
+ title: "MySQL InnoDB Status",
19
+ description: "InnoDB buffer pool statistics and engine status",
20
+ mimeType: "application/json",
21
+ annotations: {
22
+ audience: ["user", "assistant"],
23
+ priority: 0.7,
24
+ },
25
+ handler: async (_uri: string, _context: RequestContext) => {
26
+ // Get buffer pool status
27
+ const bufferPoolResult = await adapter.executeQuery(`
23
28
  SHOW GLOBAL STATUS WHERE Variable_name LIKE 'Innodb_buffer_pool%'
24
29
  `);
25
30
 
26
- const bufferPool: Record<string, number> = {};
27
- for (const row of bufferPoolResult.rows ?? []) {
28
- bufferPool[row['Variable_name'] as string] = parseInt(row['Value'] as string, 10);
29
- }
31
+ const bufferPool: Record<string, number> = {};
32
+ for (const row of bufferPoolResult.rows ?? []) {
33
+ bufferPool[row["Variable_name"] as string] = parseInt(
34
+ row["Value"] as string,
35
+ 10,
36
+ );
37
+ }
30
38
 
31
- // Get buffer pool size configuration
32
- const configResult = await adapter.executeQuery(`
39
+ // Get buffer pool size configuration
40
+ const configResult = await adapter.executeQuery(`
33
41
  SHOW GLOBAL VARIABLES WHERE Variable_name IN (
34
42
  'innodb_buffer_pool_size', 'innodb_buffer_pool_instances',
35
43
  'innodb_log_file_size', 'innodb_log_files_in_group',
@@ -37,13 +45,13 @@ export function createInnodbResource(adapter: MySQLAdapter): ResourceDefinition
37
45
  )
38
46
  `);
39
47
 
40
- const config: Record<string, string> = {};
41
- for (const row of configResult.rows ?? []) {
42
- config[row['Variable_name'] as string] = row['Value'] as string;
43
- }
48
+ const config: Record<string, string> = {};
49
+ for (const row of configResult.rows ?? []) {
50
+ config[row["Variable_name"] as string] = row["Value"] as string;
51
+ }
44
52
 
45
- // Get row operations
46
- const opsResult = await adapter.executeQuery(`
53
+ // Get row operations
54
+ const opsResult = await adapter.executeQuery(`
47
55
  SHOW GLOBAL STATUS WHERE Variable_name IN (
48
56
  'Innodb_rows_read', 'Innodb_rows_inserted',
49
57
  'Innodb_rows_updated', 'Innodb_rows_deleted',
@@ -52,59 +60,68 @@ export function createInnodbResource(adapter: MySQLAdapter): ResourceDefinition
52
60
  )
53
61
  `);
54
62
 
55
- const operations: Record<string, number> = {};
56
- for (const row of opsResult.rows ?? []) {
57
- operations[row['Variable_name'] as string] = parseInt(row['Value'] as string, 10);
58
- }
63
+ const operations: Record<string, number> = {};
64
+ for (const row of opsResult.rows ?? []) {
65
+ operations[row["Variable_name"] as string] = parseInt(
66
+ row["Value"] as string,
67
+ 10,
68
+ );
69
+ }
59
70
 
60
- // Calculate buffer pool efficiency
61
- const readRequests = bufferPool['Innodb_buffer_pool_read_requests'] ?? 0;
62
- const reads = bufferPool['Innodb_buffer_pool_reads'] ?? 0;
63
- const hitRatio = readRequests > 0
64
- ? Math.round(((readRequests - reads) / readRequests) * 100 * 100) / 100
65
- : 100;
71
+ // Calculate buffer pool efficiency
72
+ const readRequests = bufferPool["Innodb_buffer_pool_read_requests"] ?? 0;
73
+ const reads = bufferPool["Innodb_buffer_pool_reads"] ?? 0;
74
+ const hitRatio =
75
+ readRequests > 0
76
+ ? Math.round(((readRequests - reads) / readRequests) * 100 * 100) /
77
+ 100
78
+ : 100;
66
79
 
67
- const pagesTotal = bufferPool['Innodb_buffer_pool_pages_total'] ?? 0;
68
- const pagesFree = bufferPool['Innodb_buffer_pool_pages_free'] ?? 0;
69
- const pagesData = bufferPool['Innodb_buffer_pool_pages_data'] ?? 0;
70
- const pagesDirty = bufferPool['Innodb_buffer_pool_pages_dirty'] ?? 0;
80
+ const pagesTotal = bufferPool["Innodb_buffer_pool_pages_total"] ?? 0;
81
+ const pagesFree = bufferPool["Innodb_buffer_pool_pages_free"] ?? 0;
82
+ const pagesData = bufferPool["Innodb_buffer_pool_pages_data"] ?? 0;
83
+ const pagesDirty = bufferPool["Innodb_buffer_pool_pages_dirty"] ?? 0;
71
84
 
72
- return {
73
- buffer_pool: {
74
- size_bytes: parseInt(config['innodb_buffer_pool_size'] ?? '0', 10),
75
- instances: parseInt(config['innodb_buffer_pool_instances'] ?? '1', 10),
76
- hit_ratio_percent: hitRatio,
77
- pages: {
78
- total: pagesTotal,
79
- free: pagesFree,
80
- data: pagesData,
81
- dirty: pagesDirty,
82
- dirty_percent: pagesTotal > 0 ? Math.round((pagesDirty / pagesTotal) * 100) : 0
83
- },
84
- read_requests: readRequests,
85
- reads: reads,
86
- write_requests: bufferPool['Innodb_buffer_pool_write_requests'] ?? 0
87
- },
88
- configuration: {
89
- buffer_pool_size: config['innodb_buffer_pool_size'],
90
- log_file_size: config['innodb_log_file_size'],
91
- log_files_in_group: config['innodb_log_files_in_group'],
92
- flush_log_at_trx_commit: config['innodb_flush_log_at_trx_commit'],
93
- file_per_table: config['innodb_file_per_table']
94
- },
95
- row_operations: {
96
- reads: operations['Innodb_rows_read'] ?? 0,
97
- inserts: operations['Innodb_rows_inserted'] ?? 0,
98
- updates: operations['Innodb_rows_updated'] ?? 0,
99
- deletes: operations['Innodb_rows_deleted'] ?? 0
100
- },
101
- io: {
102
- data_reads: operations['Innodb_data_reads'] ?? 0,
103
- data_writes: operations['Innodb_data_writes'] ?? 0,
104
- log_writes: operations['Innodb_log_writes'] ?? 0,
105
- os_log_written: operations['Innodb_os_log_written'] ?? 0
106
- }
107
- };
108
- }
109
- };
85
+ return {
86
+ buffer_pool: {
87
+ size_bytes: parseInt(config["innodb_buffer_pool_size"] ?? "0", 10),
88
+ instances: parseInt(
89
+ config["innodb_buffer_pool_instances"] ?? "1",
90
+ 10,
91
+ ),
92
+ hit_ratio_percent: hitRatio,
93
+ pages: {
94
+ total: pagesTotal,
95
+ free: pagesFree,
96
+ data: pagesData,
97
+ dirty: pagesDirty,
98
+ dirty_percent:
99
+ pagesTotal > 0 ? Math.round((pagesDirty / pagesTotal) * 100) : 0,
100
+ },
101
+ read_requests: readRequests,
102
+ reads: reads,
103
+ write_requests: bufferPool["Innodb_buffer_pool_write_requests"] ?? 0,
104
+ },
105
+ configuration: {
106
+ buffer_pool_size: config["innodb_buffer_pool_size"],
107
+ log_file_size: config["innodb_log_file_size"],
108
+ log_files_in_group: config["innodb_log_files_in_group"],
109
+ flush_log_at_trx_commit: config["innodb_flush_log_at_trx_commit"],
110
+ file_per_table: config["innodb_file_per_table"],
111
+ },
112
+ row_operations: {
113
+ reads: operations["Innodb_rows_read"] ?? 0,
114
+ inserts: operations["Innodb_rows_inserted"] ?? 0,
115
+ updates: operations["Innodb_rows_updated"] ?? 0,
116
+ deletes: operations["Innodb_rows_deleted"] ?? 0,
117
+ },
118
+ io: {
119
+ data_reads: operations["Innodb_data_reads"] ?? 0,
120
+ data_writes: operations["Innodb_data_writes"] ?? 0,
121
+ log_writes: operations["Innodb_log_writes"] ?? 0,
122
+ os_log_written: operations["Innodb_os_log_written"] ?? 0,
123
+ },
124
+ };
125
+ },
126
+ };
110
127
  }
@@ -1,24 +1,27 @@
1
1
  /**
2
2
  * MySQL Resource - Locks
3
3
  */
4
- import type { MySQLAdapter } from '../MySQLAdapter.js';
5
- import type { ResourceDefinition, RequestContext } from '../../../types/index.js';
4
+ import type { MySQLAdapter } from "../MySQLAdapter.js";
5
+ import type {
6
+ ResourceDefinition,
7
+ RequestContext,
8
+ } from "../../../types/index.js";
6
9
 
7
10
  export function createLocksResource(adapter: MySQLAdapter): ResourceDefinition {
8
- return {
9
- uri: 'mysql://locks',
10
- name: 'Lock Contention',
11
- title: 'MySQL Lock Contention',
12
- description: 'Current InnoDB lock waits and blocking transactions',
13
- mimeType: 'application/json',
14
- annotations: {
15
- audience: ['user', 'assistant'],
16
- priority: 0.8
17
- },
18
- handler: async (_uri: string, _context: RequestContext) => {
19
- try {
20
- // Get current lock waits from performance_schema
21
- const lockWaitsResult = await adapter.executeQuery(`
11
+ return {
12
+ uri: "mysql://locks",
13
+ name: "Lock Contention",
14
+ title: "MySQL Lock Contention",
15
+ description: "Current InnoDB lock waits and blocking transactions",
16
+ mimeType: "application/json",
17
+ annotations: {
18
+ audience: ["user", "assistant"],
19
+ priority: 0.8,
20
+ },
21
+ handler: async (_uri: string, _context: RequestContext) => {
22
+ try {
23
+ // Get current lock waits from performance_schema
24
+ const lockWaitsResult = await adapter.executeQuery(`
22
25
  SELECT
23
26
  r.trx_id AS waiting_trx_id,
24
27
  r.trx_mysql_thread_id AS waiting_thread,
@@ -33,32 +36,32 @@ export function createLocksResource(adapter: MySQLAdapter): ResourceDefinition {
33
36
  LIMIT 20
34
37
  `);
35
38
 
36
- // Get global lock status
37
- const lockStatusResult = await adapter.executeQuery(`
39
+ // Get global lock status
40
+ const lockStatusResult = await adapter.executeQuery(`
38
41
  SHOW STATUS LIKE 'Innodb_row_lock%'
39
42
  `);
40
43
 
41
- const lockStats: Record<string, unknown> = {};
42
- for (const row of (lockStatusResult.rows ?? [])) {
43
- const varName = row['Variable_name'];
44
- if (typeof varName === 'string') {
45
- lockStats[varName] = row['Value'];
46
- }
47
- }
48
-
49
- return {
50
- currentLockWaits: lockWaitsResult.rows?.length ?? 0,
51
- lockWaits: lockWaitsResult.rows ?? [],
52
- lockStatistics: lockStats
53
- };
54
- } catch {
55
- return {
56
- currentLockWaits: 0,
57
- lockWaits: [],
58
- lockStatistics: {},
59
- error: 'Unable to retrieve lock information'
60
- };
61
- }
44
+ const lockStats: Record<string, unknown> = {};
45
+ for (const row of lockStatusResult.rows ?? []) {
46
+ const varName = row["Variable_name"];
47
+ if (typeof varName === "string") {
48
+ lockStats[varName] = row["Value"];
49
+ }
62
50
  }
63
- };
51
+
52
+ return {
53
+ currentLockWaits: lockWaitsResult.rows?.length ?? 0,
54
+ lockWaits: lockWaitsResult.rows ?? [],
55
+ lockStatistics: lockStats,
56
+ };
57
+ } catch {
58
+ return {
59
+ currentLockWaits: 0,
60
+ lockWaits: [],
61
+ lockStatistics: {},
62
+ error: "Unable to retrieve lock information",
63
+ };
64
+ }
65
+ },
66
+ };
64
67
  }
@@ -1,25 +1,30 @@
1
1
  /**
2
2
  * MySQL Resource - Performance
3
- *
3
+ *
4
4
  * Query performance metrics and slow query information.
5
5
  */
6
- import type { MySQLAdapter } from '../MySQLAdapter.js';
7
- import type { ResourceDefinition, RequestContext } from '../../../types/index.js';
6
+ import type { MySQLAdapter } from "../MySQLAdapter.js";
7
+ import type {
8
+ ResourceDefinition,
9
+ RequestContext,
10
+ } from "../../../types/index.js";
8
11
 
9
- export function createPerformanceResource(adapter: MySQLAdapter): ResourceDefinition {
10
- return {
11
- uri: 'mysql://performance',
12
- name: 'Performance Metrics',
13
- title: 'MySQL Performance Metrics',
14
- description: 'Query performance statistics and slow query analysis',
15
- mimeType: 'application/json',
16
- annotations: {
17
- audience: ['user', 'assistant'],
18
- priority: 0.8
19
- },
20
- handler: async (_uri: string, _context: RequestContext) => {
21
- // Get performance-related status variables
22
- const statusResult = await adapter.executeQuery(`
12
+ export function createPerformanceResource(
13
+ adapter: MySQLAdapter,
14
+ ): ResourceDefinition {
15
+ return {
16
+ uri: "mysql://performance",
17
+ name: "Performance Metrics",
18
+ title: "MySQL Performance Metrics",
19
+ description: "Query performance statistics and slow query analysis",
20
+ mimeType: "application/json",
21
+ annotations: {
22
+ audience: ["user", "assistant"],
23
+ priority: 0.8,
24
+ },
25
+ handler: async (_uri: string, _context: RequestContext) => {
26
+ // Get performance-related status variables
27
+ const statusResult = await adapter.executeQuery(`
23
28
  SHOW GLOBAL STATUS WHERE Variable_name IN (
24
29
  'Queries', 'Questions', 'Slow_queries',
25
30
  'Select_full_join', 'Select_range_check', 'Select_scan',
@@ -30,15 +35,18 @@ export function createPerformanceResource(adapter: MySQLAdapter): ResourceDefini
30
35
  )
31
36
  `);
32
37
 
33
- const status: Record<string, number> = {};
34
- for (const row of statusResult.rows ?? []) {
35
- status[row['Variable_name'] as string] = parseInt(row['Value'] as string, 10);
36
- }
38
+ const status: Record<string, number> = {};
39
+ for (const row of statusResult.rows ?? []) {
40
+ status[row["Variable_name"] as string] = parseInt(
41
+ row["Value"] as string,
42
+ 10,
43
+ );
44
+ }
37
45
 
38
- // Get performance schema if available (MySQL 5.6+)
39
- let topQueries: unknown[] = [];
40
- try {
41
- const perfResult = await adapter.executeQuery(`
46
+ // Get performance schema if available (MySQL 5.6+)
47
+ let topQueries: unknown[] = [];
48
+ try {
49
+ const perfResult = await adapter.executeQuery(`
42
50
  SELECT
43
51
  DIGEST_TEXT as query_pattern,
44
52
  COUNT_STAR as execution_count,
@@ -52,49 +60,54 @@ export function createPerformanceResource(adapter: MySQLAdapter): ResourceDefini
52
60
  ORDER BY SUM_TIMER_WAIT DESC
53
61
  LIMIT 10
54
62
  `);
55
- topQueries = perfResult.rows ?? [];
56
- } catch {
57
- // Performance schema may not be available
58
- }
63
+ topQueries = perfResult.rows ?? [];
64
+ } catch {
65
+ // Performance schema may not be available
66
+ }
59
67
 
60
- // Calculate derived metrics
61
- const tmpTablesCreated = status['Created_tmp_tables'] ?? 0;
62
- const tmpDiskRatio = tmpTablesCreated > 0
63
- ? Math.round(((status['Created_tmp_disk_tables'] ?? 0) / tmpTablesCreated) * 100)
64
- : 0;
68
+ // Calculate derived metrics
69
+ const tmpTablesCreated = status["Created_tmp_tables"] ?? 0;
70
+ const tmpDiskRatio =
71
+ tmpTablesCreated > 0
72
+ ? Math.round(
73
+ ((status["Created_tmp_disk_tables"] ?? 0) / tmpTablesCreated) *
74
+ 100,
75
+ )
76
+ : 0;
65
77
 
66
- const fullTableScans = status['Handler_read_rnd_next'] ?? 0;
67
- const indexReads = status['Handler_read_key'] ?? 0;
68
- const scanVsIndexRatio = (fullTableScans + indexReads) > 0
69
- ? Math.round((fullTableScans / (fullTableScans + indexReads)) * 100)
70
- : 0;
78
+ const fullTableScans = status["Handler_read_rnd_next"] ?? 0;
79
+ const indexReads = status["Handler_read_key"] ?? 0;
80
+ const scanVsIndexRatio =
81
+ fullTableScans + indexReads > 0
82
+ ? Math.round((fullTableScans / (fullTableScans + indexReads)) * 100)
83
+ : 0;
71
84
 
72
- return {
73
- summary: {
74
- total_queries: status['Queries'] ?? 0,
75
- slow_queries: status['Slow_queries'] ?? 0,
76
- tmp_tables_to_disk_percent: tmpDiskRatio,
77
- full_scan_percent: scanVsIndexRatio
78
- },
79
- sorts: {
80
- merge_passes: status['Sort_merge_passes'] ?? 0,
81
- range: status['Sort_range'] ?? 0,
82
- rows: status['Sort_rows'] ?? 0,
83
- scan: status['Sort_scan'] ?? 0
84
- },
85
- joins: {
86
- full_join: status['Select_full_join'] ?? 0,
87
- range_check: status['Select_range_check'] ?? 0,
88
- scan: status['Select_scan'] ?? 0
89
- },
90
- handler: {
91
- read_key: status['Handler_read_key'] ?? 0,
92
- read_rnd: status['Handler_read_rnd'] ?? 0,
93
- read_rnd_next: status['Handler_read_rnd_next'] ?? 0,
94
- write: status['Handler_write'] ?? 0
95
- },
96
- top_queries: topQueries
97
- };
98
- }
99
- };
85
+ return {
86
+ summary: {
87
+ total_queries: status["Queries"] ?? 0,
88
+ slow_queries: status["Slow_queries"] ?? 0,
89
+ tmp_tables_to_disk_percent: tmpDiskRatio,
90
+ full_scan_percent: scanVsIndexRatio,
91
+ },
92
+ sorts: {
93
+ merge_passes: status["Sort_merge_passes"] ?? 0,
94
+ range: status["Sort_range"] ?? 0,
95
+ rows: status["Sort_rows"] ?? 0,
96
+ scan: status["Sort_scan"] ?? 0,
97
+ },
98
+ joins: {
99
+ full_join: status["Select_full_join"] ?? 0,
100
+ range_check: status["Select_range_check"] ?? 0,
101
+ scan: status["Select_scan"] ?? 0,
102
+ },
103
+ handler: {
104
+ read_key: status["Handler_read_key"] ?? 0,
105
+ read_rnd: status["Handler_read_rnd"] ?? 0,
106
+ read_rnd_next: status["Handler_read_rnd_next"] ?? 0,
107
+ write: status["Handler_write"] ?? 0,
108
+ },
109
+ top_queries: topQueries,
110
+ };
111
+ },
112
+ };
100
113
  }