@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
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
1
|
+
import { z, ZodError } from "zod";
|
|
2
|
+
/** Extract human-readable messages from a ZodError instead of raw JSON array */
|
|
3
|
+
function formatZodError(error) {
|
|
4
|
+
return error.issues.map((i) => i.message).join("; ");
|
|
5
|
+
}
|
|
2
6
|
const ListObjectsSchema = z.object({
|
|
3
7
|
schema: z
|
|
4
8
|
.string()
|
|
5
9
|
.optional()
|
|
6
10
|
.describe("Schema name (defaults to current database)"),
|
|
7
|
-
type: z.enum(["PROCEDURE", "FUNCTION"]).optional().describe("Filter by type"),
|
|
8
11
|
});
|
|
9
12
|
/**
|
|
10
13
|
* List stored procedures
|
|
@@ -22,7 +25,17 @@ export function createListStoredProceduresTool(adapter) {
|
|
|
22
25
|
idempotentHint: true,
|
|
23
26
|
},
|
|
24
27
|
handler: async (params, _context) => {
|
|
25
|
-
|
|
28
|
+
let parsed;
|
|
29
|
+
try {
|
|
30
|
+
parsed = ListObjectsSchema.parse(params);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
if (error instanceof ZodError) {
|
|
34
|
+
return { success: false, error: formatZodError(error) };
|
|
35
|
+
}
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
const { schema } = parsed;
|
|
26
39
|
// P154: Schema existence check when explicitly provided
|
|
27
40
|
if (schema) {
|
|
28
41
|
const schemaCheck = await adapter.executeQuery("SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = ?", [schema]);
|
|
@@ -80,7 +93,17 @@ export function createListFunctionsTool(adapter) {
|
|
|
80
93
|
idempotentHint: true,
|
|
81
94
|
},
|
|
82
95
|
handler: async (params, _context) => {
|
|
83
|
-
|
|
96
|
+
let parsed;
|
|
97
|
+
try {
|
|
98
|
+
parsed = ListObjectsSchema.parse(params);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
if (error instanceof ZodError) {
|
|
102
|
+
return { success: false, error: formatZodError(error) };
|
|
103
|
+
}
|
|
104
|
+
throw error;
|
|
105
|
+
}
|
|
106
|
+
const { schema } = parsed;
|
|
84
107
|
// P154: Schema existence check when explicitly provided
|
|
85
108
|
if (schema) {
|
|
86
109
|
const schemaCheck = await adapter.executeQuery("SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = ?", [schema]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routines.js","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/schema/routines.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"routines.js","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/schema/routines.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduled_events.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/schema/scheduled_events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"scheduled_events.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/schema/scheduled_events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;AA0BpC;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,cAAc,CA0E1E"}
|
|
@@ -1,4 +1,15 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
1
|
+
import { z, ZodError } from "zod";
|
|
2
|
+
/** Extract human-readable messages from a ZodError instead of raw JSON array */
|
|
3
|
+
function formatZodError(error) {
|
|
4
|
+
return error.issues.map((i) => i.message).join("; ");
|
|
5
|
+
}
|
|
6
|
+
const ListEventsSchemaBase = z.object({
|
|
7
|
+
schema: z
|
|
8
|
+
.string()
|
|
9
|
+
.optional()
|
|
10
|
+
.describe("Schema name (defaults to current database)"),
|
|
11
|
+
status: z.string().optional().describe("Filter by status"),
|
|
12
|
+
});
|
|
2
13
|
const ListEventsSchema = z.object({
|
|
3
14
|
schema: z
|
|
4
15
|
.string()
|
|
@@ -18,14 +29,24 @@ export function createListEventsTool(adapter) {
|
|
|
18
29
|
title: "MySQL List Events",
|
|
19
30
|
description: "List all scheduled events with execution status and schedule info.",
|
|
20
31
|
group: "schema",
|
|
21
|
-
inputSchema:
|
|
32
|
+
inputSchema: ListEventsSchemaBase,
|
|
22
33
|
requiredScopes: ["read"],
|
|
23
34
|
annotations: {
|
|
24
35
|
readOnlyHint: true,
|
|
25
36
|
idempotentHint: true,
|
|
26
37
|
},
|
|
27
38
|
handler: async (params, _context) => {
|
|
28
|
-
|
|
39
|
+
let parsed;
|
|
40
|
+
try {
|
|
41
|
+
parsed = ListEventsSchema.parse(params);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (error instanceof ZodError) {
|
|
45
|
+
return { success: false, error: formatZodError(error) };
|
|
46
|
+
}
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
const { schema, status } = parsed;
|
|
29
50
|
// P154: Schema existence check when explicitly provided
|
|
30
51
|
if (schema) {
|
|
31
52
|
const schemaCheck = await adapter.executeQuery("SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = ?", [schema]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduled_events.js","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/schema/scheduled_events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"scheduled_events.js","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/schema/scheduled_events.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggers.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/schema/triggers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"triggers.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/schema/triggers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;AAUpC;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,YAAY,GAAG,cAAc,CA4E5E"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
1
|
+
import { z, ZodError } from "zod";
|
|
2
|
+
/** Extract human-readable messages from a ZodError instead of raw JSON array */
|
|
3
|
+
function formatZodError(error) {
|
|
4
|
+
return error.issues.map((i) => i.message).join("; ");
|
|
5
|
+
}
|
|
2
6
|
const ListTriggersSchema = z.object({
|
|
3
7
|
table: z.string().optional().describe("Filter by table name"),
|
|
4
8
|
schema: z
|
|
@@ -22,7 +26,17 @@ export function createListTriggersTool(adapter) {
|
|
|
22
26
|
idempotentHint: true,
|
|
23
27
|
},
|
|
24
28
|
handler: async (params, _context) => {
|
|
25
|
-
|
|
29
|
+
let parsed;
|
|
30
|
+
try {
|
|
31
|
+
parsed = ListTriggersSchema.parse(params);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
if (error instanceof ZodError) {
|
|
35
|
+
return { success: false, error: formatZodError(error) };
|
|
36
|
+
}
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
const { table, schema } = parsed;
|
|
26
40
|
// P154: Schema existence check when explicitly provided
|
|
27
41
|
if (schema) {
|
|
28
42
|
const schemaCheck = await adapter.executeQuery("SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = ?", [schema]);
|
|
@@ -30,6 +44,13 @@ export function createListTriggersTool(adapter) {
|
|
|
30
44
|
return { exists: false, schema };
|
|
31
45
|
}
|
|
32
46
|
}
|
|
47
|
+
// P154: Table existence check when explicitly provided
|
|
48
|
+
if (table) {
|
|
49
|
+
const tableCheck = await adapter.executeQuery("SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = COALESCE(?, DATABASE()) AND TABLE_NAME = ?", [schema ?? null, table]);
|
|
50
|
+
if (!tableCheck.rows || tableCheck.rows.length === 0) {
|
|
51
|
+
return { exists: false, table };
|
|
52
|
+
}
|
|
53
|
+
}
|
|
33
54
|
let query = `
|
|
34
55
|
SELECT
|
|
35
56
|
TRIGGER_NAME as name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggers.js","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/schema/triggers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"triggers.js","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/schema/triggers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/schema/views.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/schema/views.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;AAmCpC;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,cAAc,CAwDzE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,cAAc,CA6D1E"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
1
|
+
import { z, ZodError } from "zod";
|
|
2
|
+
/** Extract human-readable messages from a ZodError instead of raw JSON array */
|
|
3
|
+
function formatZodError(error) {
|
|
4
|
+
return error.issues.map((i) => i.message).join("; ");
|
|
5
|
+
}
|
|
2
6
|
import { validateQualifiedIdentifier, escapeQualifiedTable, } from "../../../../utils/validators.js";
|
|
3
7
|
const ListViewsSchema = z.object({
|
|
4
8
|
schema: z
|
|
@@ -6,6 +10,13 @@ const ListViewsSchema = z.object({
|
|
|
6
10
|
.optional()
|
|
7
11
|
.describe("Schema name (defaults to current database)"),
|
|
8
12
|
});
|
|
13
|
+
const CreateViewSchemaBase = z.object({
|
|
14
|
+
name: z.string().describe("View name"),
|
|
15
|
+
definition: z.string().describe("SELECT statement defining the view"),
|
|
16
|
+
orReplace: z.boolean().default(false).describe("Use CREATE OR REPLACE"),
|
|
17
|
+
algorithm: z.string().default("UNDEFINED").describe("View algorithm"),
|
|
18
|
+
checkOption: z.string().default("NONE").describe("WITH CHECK OPTION"),
|
|
19
|
+
});
|
|
9
20
|
const CreateViewSchema = z.object({
|
|
10
21
|
name: z.string().describe("View name"),
|
|
11
22
|
definition: z.string().describe("SELECT statement defining the view"),
|
|
@@ -35,7 +46,17 @@ export function createListViewsTool(adapter) {
|
|
|
35
46
|
idempotentHint: true,
|
|
36
47
|
},
|
|
37
48
|
handler: async (params, _context) => {
|
|
38
|
-
|
|
49
|
+
let parsed;
|
|
50
|
+
try {
|
|
51
|
+
parsed = ListViewsSchema.parse(params);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
if (error instanceof ZodError) {
|
|
55
|
+
return { success: false, error: formatZodError(error) };
|
|
56
|
+
}
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
const { schema } = parsed;
|
|
39
60
|
// P154: Schema existence check when explicitly provided
|
|
40
61
|
if (schema) {
|
|
41
62
|
const schemaCheck = await adapter.executeQuery("SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = ?", [schema]);
|
|
@@ -72,14 +93,30 @@ export function createCreateViewTool(adapter) {
|
|
|
72
93
|
title: "MySQL Create View",
|
|
73
94
|
description: "Create or replace a view with specified algorithm and check option.",
|
|
74
95
|
group: "schema",
|
|
75
|
-
inputSchema:
|
|
96
|
+
inputSchema: CreateViewSchemaBase,
|
|
76
97
|
requiredScopes: ["write"],
|
|
77
98
|
annotations: {
|
|
78
99
|
readOnlyHint: false,
|
|
79
100
|
},
|
|
80
101
|
handler: async (params, _context) => {
|
|
81
|
-
|
|
82
|
-
|
|
102
|
+
let parsed;
|
|
103
|
+
try {
|
|
104
|
+
parsed = CreateViewSchema.parse(params);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
if (error instanceof ZodError) {
|
|
108
|
+
return { success: false, error: formatZodError(error) };
|
|
109
|
+
}
|
|
110
|
+
throw error;
|
|
111
|
+
}
|
|
112
|
+
const { name, definition, orReplace, algorithm, checkOption } = parsed;
|
|
113
|
+
try {
|
|
114
|
+
validateQualifiedIdentifier(name, "view");
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
118
|
+
return { success: false, error: message };
|
|
119
|
+
}
|
|
83
120
|
const fullViewName = escapeQualifiedTable(name);
|
|
84
121
|
const createClause = orReplace ? "CREATE OR REPLACE" : "CREATE";
|
|
85
122
|
let sql = `${createClause} ALGORITHM=${algorithm} VIEW ${fullViewName} AS ${definition}`;
|
|
@@ -88,6 +125,7 @@ export function createCreateViewTool(adapter) {
|
|
|
88
125
|
}
|
|
89
126
|
try {
|
|
90
127
|
await adapter.executeQuery(sql);
|
|
128
|
+
adapter.clearSchemaCache();
|
|
91
129
|
return { success: true, viewName: name };
|
|
92
130
|
}
|
|
93
131
|
catch (err) {
|
|
@@ -95,12 +133,14 @@ export function createCreateViewTool(adapter) {
|
|
|
95
133
|
if (message.toLowerCase().includes("already exists")) {
|
|
96
134
|
return {
|
|
97
135
|
success: false,
|
|
98
|
-
|
|
136
|
+
error: `View '${name}' already exists`,
|
|
99
137
|
};
|
|
100
138
|
}
|
|
101
139
|
return {
|
|
102
140
|
success: false,
|
|
103
|
-
|
|
141
|
+
error: message
|
|
142
|
+
.replace(/^Query failed:\s*/i, "")
|
|
143
|
+
.replace(/^Execute failed:\s*/i, ""),
|
|
104
144
|
};
|
|
105
145
|
}
|
|
106
146
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"views.js","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/schema/views.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"views.js","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/schema/views.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/security/audit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/security/audit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;AA4CpC;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,GAAG,cAAc,CAgJ7E;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,YAAY,GACpB,cAAc,CA+DhB;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,YAAY,GACpB,cAAc,CAsFhB"}
|
|
@@ -3,25 +3,36 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Tools for security auditing, firewall monitoring, and compliance.
|
|
5
5
|
*/
|
|
6
|
-
import { z } from "zod";
|
|
6
|
+
import { z, ZodError } from "zod";
|
|
7
|
+
// =============================================================================
|
|
8
|
+
// Helpers
|
|
9
|
+
// =============================================================================
|
|
10
|
+
/** Extract human-readable messages from a ZodError instead of raw JSON array */
|
|
11
|
+
function formatZodError(error) {
|
|
12
|
+
return error.issues.map((i) => i.message).join("; ");
|
|
13
|
+
}
|
|
14
|
+
/** Strip verbose adapter prefixes from error messages */
|
|
15
|
+
function stripErrorPrefix(msg) {
|
|
16
|
+
return msg
|
|
17
|
+
.replace(/^Query failed:\s*/i, "")
|
|
18
|
+
.replace(/^Execute failed:\s*/i, "")
|
|
19
|
+
.trim();
|
|
20
|
+
}
|
|
7
21
|
// =============================================================================
|
|
8
22
|
// Zod Schemas
|
|
9
23
|
// ============================================================================
|
|
10
24
|
const AuditLogSchema = z.object({
|
|
11
|
-
limit: z.number().default(
|
|
25
|
+
limit: z.number().default(20).describe("Maximum number of records"),
|
|
12
26
|
user: z.string().optional().describe("Filter by username"),
|
|
13
27
|
eventType: z
|
|
14
28
|
.string()
|
|
15
29
|
.optional()
|
|
16
|
-
.describe('Filter by event type (e.g., "
|
|
30
|
+
.describe('Filter by event type (e.g., "Execute", "Ping", "begin"). Uses LIKE matching against performance_schema EVENT_NAME.'),
|
|
17
31
|
startTime: z.string().optional().describe("Start time filter (ISO 8601)"),
|
|
18
32
|
});
|
|
19
33
|
const FirewallRulesSchema = z.object({
|
|
20
34
|
user: z.string().optional().describe("Filter by username"),
|
|
21
|
-
mode: z
|
|
22
|
-
.enum(["RECORDING", "PROTECTING", "DETECTING", "OFF"])
|
|
23
|
-
.optional()
|
|
24
|
-
.describe("Filter by mode"),
|
|
35
|
+
mode: z.string().optional().describe("Filter by mode"),
|
|
25
36
|
});
|
|
26
37
|
// =============================================================================
|
|
27
38
|
// Tool Creation Functions
|
|
@@ -42,9 +53,9 @@ export function createSecurityAuditTool(adapter) {
|
|
|
42
53
|
idempotentHint: true,
|
|
43
54
|
},
|
|
44
55
|
handler: async (params, _context) => {
|
|
45
|
-
const { limit, user, eventType, startTime } = AuditLogSchema.parse(params);
|
|
46
56
|
// First check if audit log table exists
|
|
47
57
|
try {
|
|
58
|
+
const { limit, user, eventType, startTime } = AuditLogSchema.parse(params);
|
|
48
59
|
const checkResult = await adapter.executeQuery(`
|
|
49
60
|
SELECT TABLE_NAME
|
|
50
61
|
FROM information_schema.TABLES
|
|
@@ -55,31 +66,54 @@ export function createSecurityAuditTool(adapter) {
|
|
|
55
66
|
// Try performance_schema alternative
|
|
56
67
|
let query = `
|
|
57
68
|
SELECT
|
|
58
|
-
EVENT_NAME as event,
|
|
59
|
-
OBJECT_TYPE as objectType,
|
|
60
|
-
OBJECT_NAME as objectName,
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
TIMER_START as startTime
|
|
64
|
-
FROM performance_schema.events_statements_history
|
|
69
|
+
e.EVENT_NAME as event,
|
|
70
|
+
e.OBJECT_TYPE as objectType,
|
|
71
|
+
e.OBJECT_NAME as objectName,
|
|
72
|
+
t.PROCESSLIST_USER as user,
|
|
73
|
+
t.PROCESSLIST_HOST as host,
|
|
74
|
+
e.TIMER_START as startTime
|
|
75
|
+
FROM performance_schema.events_statements_history e
|
|
76
|
+
JOIN performance_schema.threads t
|
|
77
|
+
ON e.THREAD_ID = t.THREAD_ID
|
|
65
78
|
`;
|
|
66
79
|
const conditions = [];
|
|
67
|
-
const
|
|
80
|
+
const filtersApplied = [];
|
|
81
|
+
const filtersIgnored = [];
|
|
68
82
|
if (user) {
|
|
69
|
-
|
|
70
|
-
|
|
83
|
+
// Safe: escape single quotes in user input for LIKE clause
|
|
84
|
+
const escaped = user.replace(/'/g, "''");
|
|
85
|
+
conditions.push(`t.PROCESSLIST_USER LIKE '%${escaped}%'`);
|
|
86
|
+
filtersApplied.push("user");
|
|
87
|
+
}
|
|
88
|
+
if (eventType) {
|
|
89
|
+
const escaped = eventType.replace(/'/g, "''");
|
|
90
|
+
conditions.push(`e.EVENT_NAME LIKE '%${escaped}%'`);
|
|
91
|
+
filtersApplied.push("eventType");
|
|
92
|
+
}
|
|
93
|
+
if (startTime) {
|
|
94
|
+
// TIMER_START is a picosecond counter, not an ISO timestamp —
|
|
95
|
+
// this filter is best-effort and unlikely to match user intent.
|
|
96
|
+
filtersIgnored.push("startTime");
|
|
71
97
|
}
|
|
72
98
|
if (conditions.length > 0) {
|
|
73
99
|
query += " WHERE " + conditions.join(" AND ");
|
|
74
100
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
101
|
+
// limit is Zod-validated as z.number(), safe to interpolate.
|
|
102
|
+
// performance_schema does not support prepared statement parameters.
|
|
103
|
+
query += ` ORDER BY e.TIMER_START DESC LIMIT ${limit}`;
|
|
104
|
+
const result = await adapter.executeQuery(query, []);
|
|
105
|
+
const response = {
|
|
78
106
|
source: "performance_schema",
|
|
79
107
|
message: "Using performance_schema as audit log is not available",
|
|
80
108
|
events: result.rows ?? [],
|
|
81
109
|
count: result.rows?.length ?? 0,
|
|
82
110
|
};
|
|
111
|
+
if (filtersIgnored.length > 0) {
|
|
112
|
+
response["filtersIgnored"] = filtersIgnored;
|
|
113
|
+
response["note"] =
|
|
114
|
+
"startTime filter not applied: performance_schema uses picosecond counters, not ISO timestamps";
|
|
115
|
+
}
|
|
116
|
+
return response;
|
|
83
117
|
}
|
|
84
118
|
// Query actual audit log
|
|
85
119
|
let query = `
|
|
@@ -103,7 +137,8 @@ export function createSecurityAuditTool(adapter) {
|
|
|
103
137
|
if (conditions.length > 0) {
|
|
104
138
|
query += " WHERE " + conditions.join(" AND ");
|
|
105
139
|
}
|
|
106
|
-
query +=
|
|
140
|
+
query += " ORDER BY timestamp DESC LIMIT ?";
|
|
141
|
+
queryParams.push(limit);
|
|
107
142
|
const result = await adapter.executeQuery(query, queryParams);
|
|
108
143
|
return {
|
|
109
144
|
source: "mysql.audit_log",
|
|
@@ -111,12 +146,24 @@ export function createSecurityAuditTool(adapter) {
|
|
|
111
146
|
count: result.rows?.length ?? 0,
|
|
112
147
|
};
|
|
113
148
|
}
|
|
114
|
-
catch {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
149
|
+
catch (error) {
|
|
150
|
+
if (error instanceof ZodError) {
|
|
151
|
+
return { success: false, error: formatZodError(error) };
|
|
152
|
+
}
|
|
153
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
154
|
+
const stripped = stripErrorPrefix(msg);
|
|
155
|
+
const lower = stripped.toLowerCase();
|
|
156
|
+
if (lower.includes("doesn't exist") ||
|
|
157
|
+
lower.includes("does not exist") ||
|
|
158
|
+
lower.includes("access denied")) {
|
|
159
|
+
return {
|
|
160
|
+
success: false,
|
|
161
|
+
available: false,
|
|
162
|
+
error: "Audit logging is not enabled. Install MySQL Enterprise Audit or Percona Audit plugin.",
|
|
163
|
+
suggestion: 'Install audit plugin with: INSTALL PLUGIN audit_log SONAME "audit_log.so"',
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
return { success: false, error: stripped };
|
|
120
167
|
}
|
|
121
168
|
},
|
|
122
169
|
};
|
|
@@ -164,11 +211,16 @@ export function createSecurityFirewallStatusTool(adapter) {
|
|
|
164
211
|
configuration: variables,
|
|
165
212
|
};
|
|
166
213
|
}
|
|
167
|
-
catch {
|
|
214
|
+
catch (error) {
|
|
215
|
+
if (error instanceof ZodError) {
|
|
216
|
+
return { success: false, error: formatZodError(error) };
|
|
217
|
+
}
|
|
218
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
168
219
|
return {
|
|
220
|
+
success: false,
|
|
169
221
|
installed: false,
|
|
170
|
-
|
|
171
|
-
suggestion:
|
|
222
|
+
error: `Firewall plugin check failed: ${stripErrorPrefix(message)}`,
|
|
223
|
+
suggestion: stripErrorPrefix(message),
|
|
172
224
|
};
|
|
173
225
|
}
|
|
174
226
|
},
|
|
@@ -190,8 +242,20 @@ export function createSecurityFirewallRulesTool(adapter) {
|
|
|
190
242
|
idempotentHint: true,
|
|
191
243
|
},
|
|
192
244
|
handler: async (params, _context) => {
|
|
193
|
-
const { user, mode } = FirewallRulesSchema.parse(params);
|
|
194
245
|
try {
|
|
246
|
+
const { user, mode } = FirewallRulesSchema.parse(params);
|
|
247
|
+
const validModes = [
|
|
248
|
+
"RECORDING",
|
|
249
|
+
"PROTECTING",
|
|
250
|
+
"DETECTING",
|
|
251
|
+
"OFF",
|
|
252
|
+
];
|
|
253
|
+
if (mode && !validModes.includes(mode)) {
|
|
254
|
+
return {
|
|
255
|
+
success: false,
|
|
256
|
+
error: `Invalid mode: '${mode}' — expected one of: ${validModes.join(", ")}`,
|
|
257
|
+
};
|
|
258
|
+
}
|
|
195
259
|
// Get firewall users
|
|
196
260
|
let usersQuery = `
|
|
197
261
|
SELECT USERHOST, MODE
|
|
@@ -227,10 +291,14 @@ export function createSecurityFirewallRulesTool(adapter) {
|
|
|
227
291
|
ruleCount: rulesResult.rows?.length ?? 0,
|
|
228
292
|
};
|
|
229
293
|
}
|
|
230
|
-
catch {
|
|
294
|
+
catch (error) {
|
|
295
|
+
if (error instanceof ZodError) {
|
|
296
|
+
return { success: false, error: formatZodError(error) };
|
|
297
|
+
}
|
|
231
298
|
return {
|
|
299
|
+
success: false,
|
|
232
300
|
available: false,
|
|
233
|
-
|
|
301
|
+
error: "Firewall tables not accessible. Ensure MySQL Enterprise Firewall is installed and you have appropriate privileges.",
|
|
234
302
|
};
|
|
235
303
|
}
|
|
236
304
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/security/audit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/security/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-protection.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/security/data-protection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"data-protection.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/mysql/tools/security/data-protection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;AAwEpC;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,YAAY,GACrB,cAAc,CA2HhB;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,YAAY,GACpB,cAAc,CAgKhB;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,YAAY,GACpB,cAAc,CA4FhB"}
|