@neverinfamous/mysql-mcp 2.3.0 → 3.0.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.
- package/.dockerignore +1 -0
- package/.gitattributes +18 -0
- package/.github/workflows/codeql.yml +2 -10
- package/.github/workflows/docker-publish.yml +15 -13
- package/CHANGELOG.md +287 -1
- package/DOCKER_README.md +100 -265
- package/Dockerfile +5 -0
- package/README.md +124 -59
- package/VERSION +1 -1
- package/dist/__tests__/mocks/adapter.d.ts.map +1 -1
- package/dist/__tests__/mocks/adapter.js +2 -0
- package/dist/__tests__/mocks/adapter.js.map +1 -1
- package/dist/adapters/DatabaseAdapter.d.ts.map +1 -1
- package/dist/adapters/DatabaseAdapter.js +50 -9
- package/dist/adapters/DatabaseAdapter.js.map +1 -1
- package/dist/adapters/mysql/MySQLAdapter.d.ts +6 -0
- package/dist/adapters/mysql/MySQLAdapter.d.ts.map +1 -1
- package/dist/adapters/mysql/MySQLAdapter.js +8 -0
- package/dist/adapters/mysql/MySQLAdapter.js.map +1 -1
- package/dist/adapters/mysql/SchemaManager.js +16 -15
- package/dist/adapters/mysql/SchemaManager.js.map +1 -1
- package/dist/adapters/mysql/prompts/index.js +10 -20
- package/dist/adapters/mysql/prompts/index.js.map +1 -1
- package/dist/adapters/mysql/prompts/proxysqlSetup.js +1 -1
- package/dist/adapters/mysql/resources/docstore.d.ts.map +1 -1
- package/dist/adapters/mysql/resources/docstore.js +10 -7
- package/dist/adapters/mysql/resources/docstore.js.map +1 -1
- package/dist/adapters/mysql/resources/events.js +11 -8
- package/dist/adapters/mysql/resources/events.js.map +1 -1
- package/dist/adapters/mysql/resources/indexes.d.ts.map +1 -1
- package/dist/adapters/mysql/resources/indexes.js +12 -15
- package/dist/adapters/mysql/resources/indexes.js.map +1 -1
- package/dist/adapters/mysql/resources/innodb.d.ts.map +1 -1
- package/dist/adapters/mysql/resources/innodb.js +20 -17
- package/dist/adapters/mysql/resources/innodb.js.map +1 -1
- package/dist/adapters/mysql/resources/locks.d.ts.map +1 -1
- package/dist/adapters/mysql/resources/locks.js +9 -6
- package/dist/adapters/mysql/resources/locks.js.map +1 -1
- package/dist/adapters/mysql/resources/performance.d.ts.map +1 -1
- package/dist/adapters/mysql/resources/performance.js +15 -15
- package/dist/adapters/mysql/resources/performance.js.map +1 -1
- package/dist/adapters/mysql/resources/spatial.d.ts.map +1 -1
- package/dist/adapters/mysql/resources/spatial.js +9 -6
- package/dist/adapters/mysql/resources/spatial.js.map +1 -1
- package/dist/adapters/mysql/resources/sysschema.d.ts.map +1 -1
- package/dist/adapters/mysql/resources/sysschema.js +12 -9
- package/dist/adapters/mysql/resources/sysschema.js.map +1 -1
- package/dist/adapters/mysql/tools/admin/backup.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/admin/backup.js +170 -121
- package/dist/adapters/mysql/tools/admin/backup.js.map +1 -1
- package/dist/adapters/mysql/tools/admin/maintenance.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/admin/maintenance.js +106 -57
- package/dist/adapters/mysql/tools/admin/maintenance.js.map +1 -1
- package/dist/adapters/mysql/tools/admin/monitoring.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/admin/monitoring.js +183 -101
- package/dist/adapters/mysql/tools/admin/monitoring.js.map +1 -1
- package/dist/adapters/mysql/tools/cluster/group-replication.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/cluster/group-replication.js +164 -120
- package/dist/adapters/mysql/tools/cluster/group-replication.js.map +1 -1
- package/dist/adapters/mysql/tools/cluster/innodb-cluster.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/cluster/innodb-cluster.js +212 -145
- package/dist/adapters/mysql/tools/cluster/innodb-cluster.js.map +1 -1
- package/dist/adapters/mysql/tools/codemode/index.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/codemode/index.js +6 -4
- package/dist/adapters/mysql/tools/codemode/index.js.map +1 -1
- package/dist/adapters/mysql/tools/core.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/core.js +152 -29
- package/dist/adapters/mysql/tools/core.js.map +1 -1
- package/dist/adapters/mysql/tools/docstore.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/docstore.js +340 -163
- package/dist/adapters/mysql/tools/docstore.js.map +1 -1
- package/dist/adapters/mysql/tools/events.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/events.js +284 -198
- package/dist/adapters/mysql/tools/events.js.map +1 -1
- package/dist/adapters/mysql/tools/json/core.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/json/core.js +11 -39
- package/dist/adapters/mysql/tools/json/core.js.map +1 -1
- package/dist/adapters/mysql/tools/json/enhanced.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/json/enhanced.js +15 -33
- package/dist/adapters/mysql/tools/json/enhanced.js.map +1 -1
- package/dist/adapters/mysql/tools/json/helpers.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/json/helpers.js +13 -24
- package/dist/adapters/mysql/tools/json/helpers.js.map +1 -1
- package/dist/adapters/mysql/tools/partitioning.js +3 -0
- package/dist/adapters/mysql/tools/partitioning.js.map +1 -1
- package/dist/adapters/mysql/tools/performance/analysis.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/performance/analysis.js +89 -60
- package/dist/adapters/mysql/tools/performance/analysis.js.map +1 -1
- package/dist/adapters/mysql/tools/performance/optimization.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/performance/optimization.js +151 -127
- package/dist/adapters/mysql/tools/performance/optimization.js.map +1 -1
- package/dist/adapters/mysql/tools/proxysql.d.ts +1 -1
- package/dist/adapters/mysql/tools/proxysql.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/proxysql.js +289 -176
- package/dist/adapters/mysql/tools/proxysql.js.map +1 -1
- package/dist/adapters/mysql/tools/replication.js +75 -49
- package/dist/adapters/mysql/tools/replication.js.map +1 -1
- package/dist/adapters/mysql/tools/roles.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/roles.js +224 -182
- package/dist/adapters/mysql/tools/roles.js.map +1 -1
- package/dist/adapters/mysql/tools/router.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/router.js +168 -67
- package/dist/adapters/mysql/tools/router.js.map +1 -1
- package/dist/adapters/mysql/tools/schema/constraints.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/schema/constraints.js +21 -3
- package/dist/adapters/mysql/tools/schema/constraints.js.map +1 -1
- package/dist/adapters/mysql/tools/schema/management.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/schema/management.js +61 -14
- package/dist/adapters/mysql/tools/schema/management.js.map +1 -1
- package/dist/adapters/mysql/tools/schema/routines.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/schema/routines.js +27 -4
- package/dist/adapters/mysql/tools/schema/routines.js.map +1 -1
- package/dist/adapters/mysql/tools/schema/scheduled_events.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/schema/scheduled_events.js +24 -3
- package/dist/adapters/mysql/tools/schema/scheduled_events.js.map +1 -1
- package/dist/adapters/mysql/tools/schema/triggers.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/schema/triggers.js +23 -2
- package/dist/adapters/mysql/tools/schema/triggers.js.map +1 -1
- package/dist/adapters/mysql/tools/schema/views.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/schema/views.js +47 -7
- package/dist/adapters/mysql/tools/schema/views.js.map +1 -1
- package/dist/adapters/mysql/tools/security/audit.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/security/audit.js +102 -34
- package/dist/adapters/mysql/tools/security/audit.js.map +1 -1
- package/dist/adapters/mysql/tools/security/data-protection.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/security/data-protection.js +264 -205
- package/dist/adapters/mysql/tools/security/data-protection.js.map +1 -1
- package/dist/adapters/mysql/tools/security/encryption.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/security/encryption.js +137 -104
- package/dist/adapters/mysql/tools/security/encryption.js.map +1 -1
- package/dist/adapters/mysql/tools/shell/backup.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/shell/backup.js +71 -59
- package/dist/adapters/mysql/tools/shell/backup.js.map +1 -1
- package/dist/adapters/mysql/tools/shell/restore.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/shell/restore.js +61 -47
- package/dist/adapters/mysql/tools/shell/restore.js.map +1 -1
- package/dist/adapters/mysql/tools/spatial/geometry.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/spatial/geometry.js +19 -5
- package/dist/adapters/mysql/tools/spatial/geometry.js.map +1 -1
- package/dist/adapters/mysql/tools/spatial/operations.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/spatial/operations.js +42 -17
- package/dist/adapters/mysql/tools/spatial/operations.js.map +1 -1
- package/dist/adapters/mysql/tools/spatial/queries.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/spatial/queries.js +109 -57
- package/dist/adapters/mysql/tools/spatial/queries.js.map +1 -1
- package/dist/adapters/mysql/tools/spatial/setup.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/spatial/setup.js +103 -50
- package/dist/adapters/mysql/tools/spatial/setup.js.map +1 -1
- package/dist/adapters/mysql/tools/stats/comparative.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/stats/comparative.js +128 -79
- package/dist/adapters/mysql/tools/stats/comparative.js.map +1 -1
- package/dist/adapters/mysql/tools/stats/descriptive.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/stats/descriptive.js +174 -102
- package/dist/adapters/mysql/tools/stats/descriptive.js.map +1 -1
- package/dist/adapters/mysql/tools/sysschema/activity.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/sysschema/activity.js +50 -25
- package/dist/adapters/mysql/tools/sysschema/activity.js.map +1 -1
- package/dist/adapters/mysql/tools/sysschema/performance.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/sysschema/performance.js +121 -66
- package/dist/adapters/mysql/tools/sysschema/performance.js.map +1 -1
- package/dist/adapters/mysql/tools/sysschema/resources.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/sysschema/resources.js +101 -64
- package/dist/adapters/mysql/tools/sysschema/resources.js.map +1 -1
- package/dist/adapters/mysql/tools/text/fulltext.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/text/fulltext.js +18 -32
- package/dist/adapters/mysql/tools/text/fulltext.js.map +1 -1
- package/dist/adapters/mysql/tools/transactions.d.ts.map +1 -1
- package/dist/adapters/mysql/tools/transactions.js +48 -23
- package/dist/adapters/mysql/tools/transactions.js.map +1 -1
- package/dist/adapters/mysql/types/proxysql-types.d.ts +15 -0
- package/dist/adapters/mysql/types/proxysql-types.d.ts.map +1 -1
- package/dist/adapters/mysql/types/proxysql-types.js +33 -1
- package/dist/adapters/mysql/types/proxysql-types.js.map +1 -1
- package/dist/adapters/mysql/types/router-types.d.ts +1 -1
- package/dist/adapters/mysql/types/router-types.js +1 -1
- package/dist/adapters/mysql/types/router-types.js.map +1 -1
- package/dist/adapters/mysql/types/shell-types.js +2 -2
- package/dist/adapters/mysql/types/shell-types.js.map +1 -1
- package/dist/adapters/mysql/types.d.ts +485 -21
- package/dist/adapters/mysql/types.d.ts.map +1 -1
- package/dist/adapters/mysql/types.js +546 -19
- package/dist/adapters/mysql/types.js.map +1 -1
- package/dist/auth/scopes.js +1 -1
- package/dist/auth/scopes.js.map +1 -1
- package/dist/codemode/api.d.ts +3 -2
- package/dist/codemode/api.d.ts.map +1 -1
- package/dist/codemode/api.js +80 -5
- package/dist/codemode/api.js.map +1 -1
- package/dist/codemode/sandbox-factory.js +1 -1
- package/dist/codemode/sandbox-factory.js.map +1 -1
- package/dist/codemode/types.d.ts +26 -0
- package/dist/codemode/types.d.ts.map +1 -1
- package/dist/codemode/types.js +2 -0
- package/dist/codemode/types.js.map +1 -1
- package/dist/codemode/worker-sandbox.d.ts +4 -2
- package/dist/codemode/worker-sandbox.d.ts.map +1 -1
- package/dist/codemode/worker-sandbox.js +66 -7
- package/dist/codemode/worker-sandbox.js.map +1 -1
- package/dist/codemode/worker-script.d.ts +3 -0
- package/dist/codemode/worker-script.d.ts.map +1 -1
- package/dist/codemode/worker-script.js +128 -75
- package/dist/codemode/worker-script.js.map +1 -1
- package/dist/constants/ServerInstructions.d.ts +1 -1
- package/dist/constants/ServerInstructions.d.ts.map +1 -1
- package/dist/constants/ServerInstructions.js +37 -31
- package/dist/constants/ServerInstructions.js.map +1 -1
- package/dist/filtering/ToolConstants.d.ts +1 -1
- package/dist/filtering/ToolConstants.d.ts.map +1 -1
- package/dist/filtering/ToolConstants.js +1 -2
- package/dist/filtering/ToolConstants.js.map +1 -1
- package/dist/pool/ConnectionPool.d.ts.map +1 -1
- package/dist/pool/ConnectionPool.js.map +1 -1
- package/dist/transports/http.d.ts.map +1 -1
- package/dist/transports/http.js +6 -0
- package/dist/transports/http.js.map +1 -1
- package/dist/utils/validators.d.ts +1 -1
- package/dist/utils/validators.d.ts.map +1 -1
- package/dist/utils/validators.js.map +1 -1
- package/package.json +4 -4
- package/releases/v2.3.0-release-notes.md +20 -20
- package/releases/v2.3.1-release-notes.md +34 -0
- package/releases/v3.0.0-release-notes.md +81 -0
- package/src/__tests__/mocks/adapter.ts +3 -0
- package/src/__tests__/perf.test.ts +6 -6
- package/src/adapters/DatabaseAdapter.ts +58 -9
- package/src/adapters/__tests__/DatabaseAdapter.test.ts +89 -8
- package/src/adapters/mysql/MySQLAdapter.ts +17 -2
- package/src/adapters/mysql/SchemaManager.ts +21 -21
- package/src/adapters/mysql/__tests__/MySQLAdapter.test.ts +1 -1
- package/src/adapters/mysql/prompts/index.ts +12 -22
- package/src/adapters/mysql/prompts/proxysqlSetup.ts +1 -1
- package/src/adapters/mysql/resources/docstore.ts +13 -10
- package/src/adapters/mysql/resources/events.ts +12 -12
- package/src/adapters/mysql/resources/indexes.ts +17 -19
- package/src/adapters/mysql/resources/innodb.ts +23 -22
- package/src/adapters/mysql/resources/locks.ts +9 -7
- package/src/adapters/mysql/resources/performance.ts +23 -18
- package/src/adapters/mysql/resources/spatial.ts +9 -7
- package/src/adapters/mysql/resources/sysschema.ts +12 -11
- package/src/adapters/mysql/tools/__tests__/core.test.ts +126 -55
- package/src/adapters/mysql/tools/__tests__/docstore.test.ts +459 -88
- package/src/adapters/mysql/tools/__tests__/events.test.ts +281 -103
- package/src/adapters/mysql/tools/__tests__/proxysql.test.ts +128 -28
- package/src/adapters/mysql/tools/__tests__/replication.test.ts +48 -2
- package/src/adapters/mysql/tools/__tests__/roles.test.ts +15 -18
- package/src/adapters/mysql/tools/__tests__/router.test.ts +32 -5
- package/src/adapters/mysql/tools/__tests__/security.test.ts +126 -2
- package/src/adapters/mysql/tools/__tests__/security_injection.test.ts +84 -76
- package/src/adapters/mysql/tools/__tests__/security_integration.test.ts +47 -50
- package/src/adapters/mysql/tools/__tests__/spatial.test.ts +11 -10
- package/src/adapters/mysql/tools/__tests__/spatial_handler.test.ts +54 -38
- package/src/adapters/mysql/tools/__tests__/stats.test.ts +285 -152
- package/src/adapters/mysql/tools/__tests__/transactions.test.ts +13 -13
- package/src/adapters/mysql/tools/admin/__tests__/backup.test.ts +171 -25
- package/src/adapters/mysql/tools/admin/__tests__/maintenance.test.ts +240 -4
- package/src/adapters/mysql/tools/admin/__tests__/monitoring-summary.test.ts +274 -0
- package/src/adapters/mysql/tools/admin/__tests__/monitoring.test.ts +94 -5
- package/src/adapters/mysql/tools/admin/backup.ts +193 -143
- package/src/adapters/mysql/tools/admin/maintenance.ts +118 -69
- package/src/adapters/mysql/tools/admin/monitoring.ts +201 -125
- package/src/adapters/mysql/tools/cluster/__tests__/group-replication.test.ts +69 -0
- package/src/adapters/mysql/tools/cluster/__tests__/innodb-cluster.test.ts +141 -0
- package/src/adapters/mysql/tools/cluster/group-replication.ts +172 -132
- package/src/adapters/mysql/tools/cluster/innodb-cluster.ts +231 -157
- package/src/adapters/mysql/tools/codemode/__tests__/codemode-tool.test.ts +227 -0
- package/src/adapters/mysql/tools/codemode/index.ts +5 -3
- package/src/adapters/mysql/tools/core.ts +152 -38
- package/src/adapters/mysql/tools/docstore.ts +422 -205
- package/src/adapters/mysql/tools/events.ts +334 -233
- package/src/adapters/mysql/tools/json/__tests__/core.test.ts +20 -0
- package/src/adapters/mysql/tools/json/__tests__/enhanced.test.ts +82 -50
- package/src/adapters/mysql/tools/json/__tests__/helpers.test.ts +42 -3
- package/src/adapters/mysql/tools/json/core.ts +21 -42
- package/src/adapters/mysql/tools/json/enhanced.ts +22 -37
- package/src/adapters/mysql/tools/json/helpers.ts +21 -25
- package/src/adapters/mysql/tools/partitioning.ts +3 -0
- package/src/adapters/mysql/tools/performance/__tests__/analysis.test.ts +98 -5
- package/src/adapters/mysql/tools/performance/__tests__/optimization-coverage.test.ts +515 -0
- package/src/adapters/mysql/tools/performance/__tests__/optimization.test.ts +187 -0
- package/src/adapters/mysql/tools/performance/analysis.ts +95 -69
- package/src/adapters/mysql/tools/performance/optimization.ts +182 -153
- package/src/adapters/mysql/tools/proxysql.ts +314 -209
- package/src/adapters/mysql/tools/replication.ts +84 -57
- package/src/adapters/mysql/tools/roles.ts +274 -226
- package/src/adapters/mysql/tools/router.ts +181 -85
- package/src/adapters/mysql/tools/schema/__tests__/constraints.test.ts +13 -0
- package/src/adapters/mysql/tools/schema/__tests__/management.test.ts +60 -25
- package/src/adapters/mysql/tools/schema/__tests__/scheduled_events.test.ts +11 -0
- package/src/adapters/mysql/tools/schema/__tests__/triggers.test.ts +25 -4
- package/src/adapters/mysql/tools/schema/__tests__/views.test.ts +46 -14
- package/src/adapters/mysql/tools/schema/constraints.ts +22 -3
- package/src/adapters/mysql/tools/schema/management.ts +60 -15
- package/src/adapters/mysql/tools/schema/routines.ts +26 -4
- package/src/adapters/mysql/tools/schema/scheduled_events.ts +25 -3
- package/src/adapters/mysql/tools/schema/triggers.ts +27 -2
- package/src/adapters/mysql/tools/schema/views.ts +46 -8
- package/src/adapters/mysql/tools/security/__tests__/audit.test.ts +90 -4
- package/src/adapters/mysql/tools/security/audit.ts +113 -39
- package/src/adapters/mysql/tools/security/data-protection.ts +293 -233
- package/src/adapters/mysql/tools/security/encryption.ts +172 -139
- package/src/adapters/mysql/tools/shell/__tests__/backup.test.ts +29 -0
- package/src/adapters/mysql/tools/shell/backup.ts +90 -73
- package/src/adapters/mysql/tools/shell/restore.ts +62 -48
- package/src/adapters/mysql/tools/spatial/__tests__/operations.test.ts +22 -14
- package/src/adapters/mysql/tools/spatial/__tests__/queries.test.ts +65 -51
- package/src/adapters/mysql/tools/spatial/geometry.ts +23 -7
- package/src/adapters/mysql/tools/spatial/operations.ts +60 -31
- package/src/adapters/mysql/tools/spatial/queries.ts +142 -65
- package/src/adapters/mysql/tools/spatial/setup.ts +121 -55
- package/src/adapters/mysql/tools/stats/__tests__/comparative.test.ts +12 -10
- package/src/adapters/mysql/tools/stats/comparative.ts +150 -98
- package/src/adapters/mysql/tools/stats/descriptive.ts +204 -127
- package/src/adapters/mysql/tools/sysschema/__tests__/error-paths.test.ts +222 -0
- package/src/adapters/mysql/tools/sysschema/__tests__/performance.test.ts +45 -0
- package/src/adapters/mysql/tools/sysschema/__tests__/resources.test.ts +6 -3
- package/src/adapters/mysql/tools/sysschema/activity.ts +52 -27
- package/src/adapters/mysql/tools/sysschema/performance.ts +132 -68
- package/src/adapters/mysql/tools/sysschema/resources.ts +105 -67
- package/src/adapters/mysql/tools/text/__tests__/fulltext.test.ts +45 -17
- package/src/adapters/mysql/tools/text/fulltext.ts +27 -38
- package/src/adapters/mysql/tools/transactions.ts +49 -24
- package/src/adapters/mysql/types/proxysql-types.ts +38 -1
- package/src/adapters/mysql/types/router-types.ts +1 -1
- package/src/adapters/mysql/types/shell-types.ts +2 -2
- package/src/adapters/mysql/types.ts +632 -19
- package/src/auth/__tests__/scopes.test.ts +2 -2
- package/src/auth/scopes.ts +1 -1
- package/src/codemode/__tests__/api.test.ts +417 -0
- package/src/codemode/__tests__/sandbox-factory.test.ts +158 -0
- package/src/codemode/__tests__/sandbox.test.ts +301 -0
- package/src/codemode/__tests__/security.test.ts +368 -0
- package/src/codemode/__tests__/worker-sandbox.test.ts +179 -0
- package/src/codemode/__tests__/worker-script.test.ts +226 -0
- package/src/codemode/api.ts +89 -5
- package/src/codemode/sandbox-factory.ts +1 -1
- package/src/codemode/types.ts +34 -0
- package/src/codemode/worker-sandbox.ts +74 -7
- package/src/codemode/worker-script.ts +157 -86
- package/src/constants/ServerInstructions.ts +37 -31
- package/src/filtering/ToolConstants.ts +1 -2
- package/src/filtering/__tests__/ToolFilter.test.ts +9 -9
- package/src/pool/ConnectionPool.ts +4 -1
- package/src/transports/__tests__/http.test.ts +15 -3
- package/src/transports/http.ts +12 -0
- package/src/utils/validators.ts +2 -1
- package/vitest.config.ts +3 -1
- package/CODE_MODE.md +0 -245
package/CODE_MODE.md
DELETED
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
# Code Mode
|
|
2
|
-
|
|
3
|
-
**Execute multi-step MySQL workflows in a single tool call.**
|
|
4
|
-
|
|
5
|
-
Code Mode (`mysql_execute_code`) runs JavaScript/TypeScript code in a sandboxed VM with full access to all 192 MySQL tools via the `mysql.*` API namespace. Instead of chaining dozens of sequential tool calls, write a single script that queries, transforms, and acts on your data.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## When to Use Code Mode
|
|
10
|
-
|
|
11
|
-
| Scenario | Without Code Mode | With Code Mode |
|
|
12
|
-
| ---------------------------- | ------------------------------------------ | -------------------------------------- |
|
|
13
|
-
| Multi-step data pipeline | 5-10 sequential tool calls | 1 `mysql_execute_code` call |
|
|
14
|
-
| Conditional branching | Agent decides after each tool result | `if/else` logic in one script |
|
|
15
|
-
| Cross-table aggregation | Multiple reads + manual aggregation | Loop and aggregate in JS |
|
|
16
|
-
| Schema migration with checks | Describe → check → alter → verify sequence | Single script with error handling |
|
|
17
|
-
| Batch operations | Repeated tool calls per item | `for` loop over items in one execution |
|
|
18
|
-
|
|
19
|
-
**Rule of thumb**: If a task requires **3+ sequential tool calls** or **conditional logic based on query results**, use Code Mode.
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Tool Reference
|
|
24
|
-
|
|
25
|
-
### `mysql_execute_code`
|
|
26
|
-
|
|
27
|
-
| Parameter | Type | Required | Description |
|
|
28
|
-
| --------- | ------ | -------- | ---------------------------------------- |
|
|
29
|
-
| `code` | string | ✅ | JavaScript/TypeScript code to execute |
|
|
30
|
-
| `timeout` | number | ❌ | Execution timeout in ms (default: 30000) |
|
|
31
|
-
|
|
32
|
-
**Scope**: Requires `admin` scope.
|
|
33
|
-
|
|
34
|
-
**Returns**: The value of the last expression in the code block, wrapped in an execution result with timing and memory metrics.
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## API Namespace
|
|
39
|
-
|
|
40
|
-
The `mysql` global object exposes **24 tool groups** as sub-objects:
|
|
41
|
-
|
|
42
|
-
| Group | Tools | Description |
|
|
43
|
-
| -------------------- | ----- | ---------------------------------------- |
|
|
44
|
-
| `mysql.core` | 8 | Read/write queries, tables, indexes |
|
|
45
|
-
| `mysql.transactions` | 7 | BEGIN, COMMIT, ROLLBACK, savepoints |
|
|
46
|
-
| `mysql.json` | 17 | JSON functions, merge, diff, stats |
|
|
47
|
-
| `mysql.text` | 6 | REGEXP, LIKE, SOUNDEX |
|
|
48
|
-
| `mysql.fulltext` | 5 | Natural language & boolean search |
|
|
49
|
-
| `mysql.performance` | 8 | EXPLAIN, query analysis, slow queries |
|
|
50
|
-
| `mysql.optimization` | 4 | Index hints, recommendations |
|
|
51
|
-
| `mysql.admin` | 6 | OPTIMIZE, ANALYZE, CHECK |
|
|
52
|
-
| `mysql.monitoring` | 7 | PROCESSLIST, status variables |
|
|
53
|
-
| `mysql.backup` | 4 | Export, import, mysqldump |
|
|
54
|
-
| `mysql.replication` | 5 | Master/slave, binlog |
|
|
55
|
-
| `mysql.partitioning` | 4 | Partition management |
|
|
56
|
-
| `mysql.schema` | 10 | Views, procedures, triggers, constraints |
|
|
57
|
-
| `mysql.shell` | 10 | MySQL Shell utilities |
|
|
58
|
-
| `mysql.events` | 6 | Event Scheduler management |
|
|
59
|
-
| `mysql.sysschema` | 8 | sys schema diagnostics |
|
|
60
|
-
| `mysql.stats` | 8 | Statistical analysis tools |
|
|
61
|
-
| `mysql.spatial` | 12 | Spatial/GIS operations |
|
|
62
|
-
| `mysql.security` | 9 | Audit, SSL, encryption, masking |
|
|
63
|
-
| `mysql.roles` | 8 | MySQL 8.0 role management |
|
|
64
|
-
| `mysql.docstore` | 9 | Document Store collections |
|
|
65
|
-
| `mysql.cluster` | 10 | Group Replication, InnoDB Cluster |
|
|
66
|
-
| `mysql.proxysql` | 12 | ProxySQL management |
|
|
67
|
-
| `mysql.router` | 9 | MySQL Router REST API |
|
|
68
|
-
|
|
69
|
-
### Method Naming Convention
|
|
70
|
-
|
|
71
|
-
Tool names map to methods by stripping the group prefix and converting to camelCase:
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
mysql_read_query → mysql.core.readQuery()
|
|
75
|
-
mysql_json_extract → mysql.json.extract()
|
|
76
|
-
mysql_describe_table → mysql.core.describeTable()
|
|
77
|
-
mysql_spatial_point → mysql.spatial.point()
|
|
78
|
-
mysql_show_processlist → mysql.monitoring.showProcesslist()
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Positional Shorthand
|
|
82
|
-
|
|
83
|
-
Common tools accept positional arguments for convenience:
|
|
84
|
-
|
|
85
|
-
```javascript
|
|
86
|
-
// Object form
|
|
87
|
-
mysql.core.readQuery({
|
|
88
|
-
query: "SELECT * FROM users WHERE id = ?",
|
|
89
|
-
params: [1],
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
// Positional shorthand
|
|
93
|
-
mysql.core.readQuery("SELECT * FROM users WHERE id = ?", [1]);
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### Discovery
|
|
97
|
-
|
|
98
|
-
```javascript
|
|
99
|
-
// List all groups and their methods
|
|
100
|
-
mysql.help();
|
|
101
|
-
|
|
102
|
-
// Group-specific help with examples
|
|
103
|
-
mysql.core.help();
|
|
104
|
-
mysql.json.help();
|
|
105
|
-
mysql.transactions.help();
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
## Usage Examples
|
|
111
|
-
|
|
112
|
-
### Basic: Multi-Step Data Pipeline
|
|
113
|
-
|
|
114
|
-
```javascript
|
|
115
|
-
// Get table stats, identify large tables, and analyze their indexes
|
|
116
|
-
const tables = await mysql.core.readQuery(
|
|
117
|
-
"SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = DATABASE() ORDER BY table_rows DESC LIMIT 5",
|
|
118
|
-
);
|
|
119
|
-
|
|
120
|
-
const results = [];
|
|
121
|
-
for (const table of tables.rows) {
|
|
122
|
-
const indexes = await mysql.core.getIndexes({ table: table.table_name });
|
|
123
|
-
const stats = await mysql.performance.tableStats({ table: table.table_name });
|
|
124
|
-
results.push({
|
|
125
|
-
table: table.table_name,
|
|
126
|
-
rows: table.table_rows,
|
|
127
|
-
indexCount: indexes.indexes?.length || 0,
|
|
128
|
-
stats,
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
results;
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
### Conditional Logic
|
|
135
|
-
|
|
136
|
-
```javascript
|
|
137
|
-
// Check if a column exists before adding it
|
|
138
|
-
const desc = await mysql.core.describeTable({ table: "users" });
|
|
139
|
-
const hasEmail = desc.columns.some((c) => c.Field === "email_verified");
|
|
140
|
-
|
|
141
|
-
if (!hasEmail) {
|
|
142
|
-
await mysql.core.writeQuery({
|
|
143
|
-
query: "ALTER TABLE users ADD COLUMN email_verified TINYINT(1) DEFAULT 0",
|
|
144
|
-
});
|
|
145
|
-
("Column added");
|
|
146
|
-
} else {
|
|
147
|
-
("Column already exists");
|
|
148
|
-
}
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
### Transactions with Error Handling
|
|
152
|
-
|
|
153
|
-
```javascript
|
|
154
|
-
// Atomic transfer between accounts
|
|
155
|
-
const tx = await mysql.transactions.begin();
|
|
156
|
-
try {
|
|
157
|
-
await mysql.core.writeQuery({
|
|
158
|
-
query: "UPDATE accounts SET balance = balance - ? WHERE id = ?",
|
|
159
|
-
params: [100, 1],
|
|
160
|
-
transactionId: tx.transactionId,
|
|
161
|
-
});
|
|
162
|
-
await mysql.core.writeQuery({
|
|
163
|
-
query: "UPDATE accounts SET balance = balance + ? WHERE id = ?",
|
|
164
|
-
params: [100, 2],
|
|
165
|
-
transactionId: tx.transactionId,
|
|
166
|
-
});
|
|
167
|
-
await mysql.transactions.commit({ transactionId: tx.transactionId });
|
|
168
|
-
("Transfer complete");
|
|
169
|
-
} catch (e) {
|
|
170
|
-
await mysql.transactions.rollback({ transactionId: tx.transactionId });
|
|
171
|
-
`Transfer failed: ${e.message}`;
|
|
172
|
-
}
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
### Cross-Group Aggregation
|
|
176
|
-
|
|
177
|
-
```javascript
|
|
178
|
-
// Comprehensive database health check
|
|
179
|
-
const [health, pool, processlist, variables] = await Promise.all([
|
|
180
|
-
mysql.monitoring.serverHealth(),
|
|
181
|
-
mysql.monitoring.poolStats(),
|
|
182
|
-
mysql.monitoring.showProcesslist({ full: false }),
|
|
183
|
-
mysql.monitoring.showStatus({ like: "%Threads%" }),
|
|
184
|
-
]);
|
|
185
|
-
|
|
186
|
-
({
|
|
187
|
-
serverVersion: health.version,
|
|
188
|
-
uptime: health.uptime,
|
|
189
|
-
activeConnections: pool.active,
|
|
190
|
-
idleConnections: pool.idle,
|
|
191
|
-
runningQueries:
|
|
192
|
-
processlist.processes?.filter((p) => p.Command === "Query").length || 0,
|
|
193
|
-
threadMetrics: variables.variables,
|
|
194
|
-
});
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
---
|
|
198
|
-
|
|
199
|
-
## Security & Sandbox
|
|
200
|
-
|
|
201
|
-
### Isolation
|
|
202
|
-
|
|
203
|
-
Code runs in an **isolated VM sandbox** (Node.js `vm` module) with no access to:
|
|
204
|
-
|
|
205
|
-
- File system (`fs`, `path`, `os`)
|
|
206
|
-
- Network (`http`, `https`, `net`, `fetch`)
|
|
207
|
-
- Process control (`process`, `child_process`)
|
|
208
|
-
- Module system (`require`, `import`)
|
|
209
|
-
|
|
210
|
-
### Blocked Patterns
|
|
211
|
-
|
|
212
|
-
The following patterns are detected and rejected **before execution**:
|
|
213
|
-
|
|
214
|
-
| Pattern | Reason |
|
|
215
|
-
| ------------------- | ------------------------- |
|
|
216
|
-
| `require(...)` | Module loading |
|
|
217
|
-
| `import ...` | ES module imports |
|
|
218
|
-
| `process.` | Process access |
|
|
219
|
-
| `eval(...)` | Dynamic code execution |
|
|
220
|
-
| `new Function(...)` | Dynamic function creation |
|
|
221
|
-
| `__dirname` | File system path access |
|
|
222
|
-
| `__filename` | File system path access |
|
|
223
|
-
|
|
224
|
-
### Rate Limiting
|
|
225
|
-
|
|
226
|
-
Code Mode is rate-limited to prevent abuse. Excessive calls within a short window will return an error with a retry-after suggestion.
|
|
227
|
-
|
|
228
|
-
### Transaction Cleanup
|
|
229
|
-
|
|
230
|
-
Any transactions opened during code execution but **not explicitly committed** are automatically rolled back when execution completes. This prevents orphaned locks.
|
|
231
|
-
|
|
232
|
-
### Timeout
|
|
233
|
-
|
|
234
|
-
Default execution timeout is **30 seconds**. Use the `timeout` parameter to adjust for long-running operations.
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
## Tips
|
|
239
|
-
|
|
240
|
-
1. **Use `await`** — All `mysql.*` methods return Promises.
|
|
241
|
-
2. **Return values** — The last expression in your code is returned as the result.
|
|
242
|
-
3. **Error handling** — Wrap operations in `try/catch` for graceful error handling.
|
|
243
|
-
4. **Parallel queries** — Use `Promise.all()` for independent queries to reduce execution time.
|
|
244
|
-
5. **Transaction safety** — Always use `try/catch/finally` with transactions to ensure cleanup.
|
|
245
|
-
6. **Help system** — Call `mysql.help()` or `mysql.<group>.help()` to discover available methods.
|