@neverinfamous/postgres-mcp 1.0.1
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/LICENSE +21 -0
- package/README.md +515 -0
- package/dist/__tests__/mocks/adapter.d.ts +80 -0
- package/dist/__tests__/mocks/adapter.d.ts.map +1 -0
- package/dist/__tests__/mocks/adapter.js +225 -0
- package/dist/__tests__/mocks/adapter.js.map +1 -0
- package/dist/__tests__/mocks/index.d.ts +11 -0
- package/dist/__tests__/mocks/index.d.ts.map +1 -0
- package/dist/__tests__/mocks/index.js +11 -0
- package/dist/__tests__/mocks/index.js.map +1 -0
- package/dist/__tests__/mocks/pool.d.ts +43 -0
- package/dist/__tests__/mocks/pool.d.ts.map +1 -0
- package/dist/__tests__/mocks/pool.js +71 -0
- package/dist/__tests__/mocks/pool.js.map +1 -0
- package/dist/adapters/DatabaseAdapter.d.ts +139 -0
- package/dist/adapters/DatabaseAdapter.d.ts.map +1 -0
- package/dist/adapters/DatabaseAdapter.js +250 -0
- package/dist/adapters/DatabaseAdapter.js.map +1 -0
- package/dist/adapters/postgresql/PostgresAdapter.d.ts +119 -0
- package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -0
- package/dist/adapters/postgresql/PostgresAdapter.js +902 -0
- package/dist/adapters/postgresql/PostgresAdapter.js.map +1 -0
- package/dist/adapters/postgresql/index.d.ts +5 -0
- package/dist/adapters/postgresql/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/index.js +5 -0
- package/dist/adapters/postgresql/index.js.map +1 -0
- package/dist/adapters/postgresql/prompts/backup.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/backup.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/backup.js +132 -0
- package/dist/adapters/postgresql/prompts/backup.js.map +1 -0
- package/dist/adapters/postgresql/prompts/citext.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/citext.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/citext.js +227 -0
- package/dist/adapters/postgresql/prompts/citext.js.map +1 -0
- package/dist/adapters/postgresql/prompts/extensionSetup.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/extensionSetup.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/extensionSetup.js +282 -0
- package/dist/adapters/postgresql/prompts/extensionSetup.js.map +1 -0
- package/dist/adapters/postgresql/prompts/health.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/health.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/health.js +118 -0
- package/dist/adapters/postgresql/prompts/health.js.map +1 -0
- package/dist/adapters/postgresql/prompts/index.d.ts +13 -0
- package/dist/adapters/postgresql/prompts/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/index.js +308 -0
- package/dist/adapters/postgresql/prompts/index.js.map +1 -0
- package/dist/adapters/postgresql/prompts/indexTuning.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/indexTuning.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/indexTuning.js +130 -0
- package/dist/adapters/postgresql/prompts/indexTuning.js.map +1 -0
- package/dist/adapters/postgresql/prompts/kcache.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/kcache.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/kcache.js +227 -0
- package/dist/adapters/postgresql/prompts/kcache.js.map +1 -0
- package/dist/adapters/postgresql/prompts/ltree.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/ltree.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/ltree.js +286 -0
- package/dist/adapters/postgresql/prompts/ltree.js.map +1 -0
- package/dist/adapters/postgresql/prompts/partman.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/partman.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/partman.js +211 -0
- package/dist/adapters/postgresql/prompts/partman.js.map +1 -0
- package/dist/adapters/postgresql/prompts/pgcron.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/pgcron.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/pgcron.js +233 -0
- package/dist/adapters/postgresql/prompts/pgcron.js.map +1 -0
- package/dist/adapters/postgresql/prompts/pgcrypto.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/pgcrypto.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/pgcrypto.js +299 -0
- package/dist/adapters/postgresql/prompts/pgcrypto.js.map +1 -0
- package/dist/adapters/postgresql/prompts/pgvector.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/pgvector.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/pgvector.js +148 -0
- package/dist/adapters/postgresql/prompts/pgvector.js.map +1 -0
- package/dist/adapters/postgresql/prompts/postgis.d.ts +8 -0
- package/dist/adapters/postgresql/prompts/postgis.d.ts.map +1 -0
- package/dist/adapters/postgresql/prompts/postgis.js +200 -0
- package/dist/adapters/postgresql/prompts/postgis.js.map +1 -0
- package/dist/adapters/postgresql/resources/activity.d.ts +9 -0
- package/dist/adapters/postgresql/resources/activity.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/activity.js +118 -0
- package/dist/adapters/postgresql/resources/activity.js.map +1 -0
- package/dist/adapters/postgresql/resources/capabilities.d.ts +9 -0
- package/dist/adapters/postgresql/resources/capabilities.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/capabilities.js +182 -0
- package/dist/adapters/postgresql/resources/capabilities.js.map +1 -0
- package/dist/adapters/postgresql/resources/cron.d.ts +9 -0
- package/dist/adapters/postgresql/resources/cron.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/cron.js +156 -0
- package/dist/adapters/postgresql/resources/cron.js.map +1 -0
- package/dist/adapters/postgresql/resources/crypto.d.ts +9 -0
- package/dist/adapters/postgresql/resources/crypto.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/crypto.js +191 -0
- package/dist/adapters/postgresql/resources/crypto.js.map +1 -0
- package/dist/adapters/postgresql/resources/extensions.d.ts +9 -0
- package/dist/adapters/postgresql/resources/extensions.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/extensions.js +85 -0
- package/dist/adapters/postgresql/resources/extensions.js.map +1 -0
- package/dist/adapters/postgresql/resources/health.d.ts +9 -0
- package/dist/adapters/postgresql/resources/health.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/health.js +185 -0
- package/dist/adapters/postgresql/resources/health.js.map +1 -0
- package/dist/adapters/postgresql/resources/index.d.ts +40 -0
- package/dist/adapters/postgresql/resources/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/index.js +87 -0
- package/dist/adapters/postgresql/resources/index.js.map +1 -0
- package/dist/adapters/postgresql/resources/indexes.d.ts +9 -0
- package/dist/adapters/postgresql/resources/indexes.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/indexes.js +130 -0
- package/dist/adapters/postgresql/resources/indexes.js.map +1 -0
- package/dist/adapters/postgresql/resources/kcache.d.ts +9 -0
- package/dist/adapters/postgresql/resources/kcache.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/kcache.js +219 -0
- package/dist/adapters/postgresql/resources/kcache.js.map +1 -0
- package/dist/adapters/postgresql/resources/locks.d.ts +9 -0
- package/dist/adapters/postgresql/resources/locks.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/locks.js +89 -0
- package/dist/adapters/postgresql/resources/locks.js.map +1 -0
- package/dist/adapters/postgresql/resources/partman.d.ts +9 -0
- package/dist/adapters/postgresql/resources/partman.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/partman.js +149 -0
- package/dist/adapters/postgresql/resources/partman.js.map +1 -0
- package/dist/adapters/postgresql/resources/performance.d.ts +9 -0
- package/dist/adapters/postgresql/resources/performance.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/performance.js +170 -0
- package/dist/adapters/postgresql/resources/performance.js.map +1 -0
- package/dist/adapters/postgresql/resources/pool.d.ts +9 -0
- package/dist/adapters/postgresql/resources/pool.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/pool.js +93 -0
- package/dist/adapters/postgresql/resources/pool.js.map +1 -0
- package/dist/adapters/postgresql/resources/postgis.d.ts +9 -0
- package/dist/adapters/postgresql/resources/postgis.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/postgis.js +232 -0
- package/dist/adapters/postgresql/resources/postgis.js.map +1 -0
- package/dist/adapters/postgresql/resources/replication.d.ts +9 -0
- package/dist/adapters/postgresql/resources/replication.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/replication.js +126 -0
- package/dist/adapters/postgresql/resources/replication.js.map +1 -0
- package/dist/adapters/postgresql/resources/schema.d.ts +10 -0
- package/dist/adapters/postgresql/resources/schema.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/schema.js +80 -0
- package/dist/adapters/postgresql/resources/schema.js.map +1 -0
- package/dist/adapters/postgresql/resources/settings.d.ts +9 -0
- package/dist/adapters/postgresql/resources/settings.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/settings.js +184 -0
- package/dist/adapters/postgresql/resources/settings.js.map +1 -0
- package/dist/adapters/postgresql/resources/stats.d.ts +10 -0
- package/dist/adapters/postgresql/resources/stats.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/stats.js +124 -0
- package/dist/adapters/postgresql/resources/stats.js.map +1 -0
- package/dist/adapters/postgresql/resources/tables.d.ts +9 -0
- package/dist/adapters/postgresql/resources/tables.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/tables.js +20 -0
- package/dist/adapters/postgresql/resources/tables.js.map +1 -0
- package/dist/adapters/postgresql/resources/vacuum.d.ts +9 -0
- package/dist/adapters/postgresql/resources/vacuum.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/vacuum.js +122 -0
- package/dist/adapters/postgresql/resources/vacuum.js.map +1 -0
- package/dist/adapters/postgresql/resources/vector.d.ts +9 -0
- package/dist/adapters/postgresql/resources/vector.d.ts.map +1 -0
- package/dist/adapters/postgresql/resources/vector.js +185 -0
- package/dist/adapters/postgresql/resources/vector.js.map +1 -0
- package/dist/adapters/postgresql/schemas/admin.d.ts +74 -0
- package/dist/adapters/postgresql/schemas/admin.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/admin.js +180 -0
- package/dist/adapters/postgresql/schemas/admin.js.map +1 -0
- package/dist/adapters/postgresql/schemas/backup.d.ts +68 -0
- package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/backup.js +114 -0
- package/dist/adapters/postgresql/schemas/backup.js.map +1 -0
- package/dist/adapters/postgresql/schemas/core.d.ts +443 -0
- package/dist/adapters/postgresql/schemas/core.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/core.js +628 -0
- package/dist/adapters/postgresql/schemas/core.js.map +1 -0
- package/dist/adapters/postgresql/schemas/cron.d.ts +131 -0
- package/dist/adapters/postgresql/schemas/cron.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/cron.js +218 -0
- package/dist/adapters/postgresql/schemas/cron.js.map +1 -0
- package/dist/adapters/postgresql/schemas/extensions.d.ts +403 -0
- package/dist/adapters/postgresql/schemas/extensions.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/extensions.js +600 -0
- package/dist/adapters/postgresql/schemas/extensions.js.map +1 -0
- package/dist/adapters/postgresql/schemas/index.d.ts +21 -0
- package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/index.js +72 -0
- package/dist/adapters/postgresql/schemas/index.js.map +1 -0
- package/dist/adapters/postgresql/schemas/jsonb.d.ts +94 -0
- package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/jsonb.js +198 -0
- package/dist/adapters/postgresql/schemas/jsonb.js.map +1 -0
- package/dist/adapters/postgresql/schemas/monitoring.d.ts +28 -0
- package/dist/adapters/postgresql/schemas/monitoring.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/monitoring.js +45 -0
- package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -0
- package/dist/adapters/postgresql/schemas/partitioning.d.ts +152 -0
- package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/partitioning.js +399 -0
- package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -0
- package/dist/adapters/postgresql/schemas/partman.d.ts +94 -0
- package/dist/adapters/postgresql/schemas/partman.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/partman.js +264 -0
- package/dist/adapters/postgresql/schemas/partman.js.map +1 -0
- package/dist/adapters/postgresql/schemas/performance.d.ts +52 -0
- package/dist/adapters/postgresql/schemas/performance.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/performance.js +57 -0
- package/dist/adapters/postgresql/schemas/performance.js.map +1 -0
- package/dist/adapters/postgresql/schemas/postgis.d.ts +693 -0
- package/dist/adapters/postgresql/schemas/postgis.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/postgis.js +662 -0
- package/dist/adapters/postgresql/schemas/postgis.js.map +1 -0
- package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts +171 -0
- package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/schema-mgmt.js +235 -0
- package/dist/adapters/postgresql/schemas/schema-mgmt.js.map +1 -0
- package/dist/adapters/postgresql/schemas/stats.d.ts +229 -0
- package/dist/adapters/postgresql/schemas/stats.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/stats.js +587 -0
- package/dist/adapters/postgresql/schemas/stats.js.map +1 -0
- package/dist/adapters/postgresql/schemas/text-search.d.ts +83 -0
- package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/text-search.js +132 -0
- package/dist/adapters/postgresql/schemas/text-search.js.map +1 -0
- package/dist/adapters/postgresql/schemas/vector.d.ts +143 -0
- package/dist/adapters/postgresql/schemas/vector.d.ts.map +1 -0
- package/dist/adapters/postgresql/schemas/vector.js +123 -0
- package/dist/adapters/postgresql/schemas/vector.js.map +1 -0
- package/dist/adapters/postgresql/tools/admin.d.ts +13 -0
- package/dist/adapters/postgresql/tools/admin.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/admin.js +417 -0
- package/dist/adapters/postgresql/tools/admin.js.map +1 -0
- package/dist/adapters/postgresql/tools/backup/dump.d.ts +12 -0
- package/dist/adapters/postgresql/tools/backup/dump.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/backup/dump.js +546 -0
- package/dist/adapters/postgresql/tools/backup/dump.js.map +1 -0
- package/dist/adapters/postgresql/tools/backup/index.d.ts +16 -0
- package/dist/adapters/postgresql/tools/backup/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/backup/index.js +29 -0
- package/dist/adapters/postgresql/tools/backup/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/backup/planning.d.ts +22 -0
- package/dist/adapters/postgresql/tools/backup/planning.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/backup/planning.js +411 -0
- package/dist/adapters/postgresql/tools/backup/planning.js.map +1 -0
- package/dist/adapters/postgresql/tools/citext.d.ts +18 -0
- package/dist/adapters/postgresql/tools/citext.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/citext.js +568 -0
- package/dist/adapters/postgresql/tools/citext.js.map +1 -0
- package/dist/adapters/postgresql/tools/codemode/index.d.ts +27 -0
- package/dist/adapters/postgresql/tools/codemode/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/codemode/index.js +171 -0
- package/dist/adapters/postgresql/tools/codemode/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/convenience.d.ts +192 -0
- package/dist/adapters/postgresql/tools/core/convenience.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/convenience.js +617 -0
- package/dist/adapters/postgresql/tools/core/convenience.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/health.d.ts +20 -0
- package/dist/adapters/postgresql/tools/core/health.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/health.js +360 -0
- package/dist/adapters/postgresql/tools/core/health.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/index.d.ts +15 -0
- package/dist/adapters/postgresql/tools/core/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/index.js +40 -0
- package/dist/adapters/postgresql/tools/core/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/indexes.d.ts +30 -0
- package/dist/adapters/postgresql/tools/core/indexes.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/indexes.js +232 -0
- package/dist/adapters/postgresql/tools/core/indexes.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/objects.d.ts +20 -0
- package/dist/adapters/postgresql/tools/core/objects.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/objects.js +361 -0
- package/dist/adapters/postgresql/tools/core/objects.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/query.d.ts +16 -0
- package/dist/adapters/postgresql/tools/core/query.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/query.js +87 -0
- package/dist/adapters/postgresql/tools/core/query.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/schemas.d.ts +135 -0
- package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/schemas.js +221 -0
- package/dist/adapters/postgresql/tools/core/schemas.js.map +1 -0
- package/dist/adapters/postgresql/tools/core/tables.d.ts +24 -0
- package/dist/adapters/postgresql/tools/core/tables.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/core/tables.js +219 -0
- package/dist/adapters/postgresql/tools/core/tables.js.map +1 -0
- package/dist/adapters/postgresql/tools/cron.d.ts +16 -0
- package/dist/adapters/postgresql/tools/cron.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/cron.js +440 -0
- package/dist/adapters/postgresql/tools/cron.js.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts +33 -0
- package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/advanced.js +681 -0
- package/dist/adapters/postgresql/tools/jsonb/advanced.js.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/basic.d.ts +20 -0
- package/dist/adapters/postgresql/tools/jsonb/basic.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/basic.js +654 -0
- package/dist/adapters/postgresql/tools/jsonb/basic.js.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/index.d.ts +16 -0
- package/dist/adapters/postgresql/tools/jsonb/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/jsonb/index.js +39 -0
- package/dist/adapters/postgresql/tools/jsonb/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/kcache.d.ts +20 -0
- package/dist/adapters/postgresql/tools/kcache.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/kcache.js +574 -0
- package/dist/adapters/postgresql/tools/kcache.js.map +1 -0
- package/dist/adapters/postgresql/tools/ltree.d.ts +8 -0
- package/dist/adapters/postgresql/tools/ltree.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/ltree.js +390 -0
- package/dist/adapters/postgresql/tools/ltree.js.map +1 -0
- package/dist/adapters/postgresql/tools/monitoring.d.ts +13 -0
- package/dist/adapters/postgresql/tools/monitoring.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/monitoring.js +753 -0
- package/dist/adapters/postgresql/tools/monitoring.js.map +1 -0
- package/dist/adapters/postgresql/tools/partitioning.d.ts +13 -0
- package/dist/adapters/postgresql/tools/partitioning.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/partitioning.js +500 -0
- package/dist/adapters/postgresql/tools/partitioning.js.map +1 -0
- package/dist/adapters/postgresql/tools/partman/index.d.ts +19 -0
- package/dist/adapters/postgresql/tools/partman/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/partman/index.js +33 -0
- package/dist/adapters/postgresql/tools/partman/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/partman/management.d.ts +28 -0
- package/dist/adapters/postgresql/tools/partman/management.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/partman/management.js +563 -0
- package/dist/adapters/postgresql/tools/partman/management.js.map +1 -0
- package/dist/adapters/postgresql/tools/partman/operations.d.ts +28 -0
- package/dist/adapters/postgresql/tools/partman/operations.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/partman/operations.js +632 -0
- package/dist/adapters/postgresql/tools/partman/operations.js.map +1 -0
- package/dist/adapters/postgresql/tools/performance/analysis.d.ts +9 -0
- package/dist/adapters/postgresql/tools/performance/analysis.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/performance/analysis.js +383 -0
- package/dist/adapters/postgresql/tools/performance/analysis.js.map +1 -0
- package/dist/adapters/postgresql/tools/performance/explain.d.ts +13 -0
- package/dist/adapters/postgresql/tools/performance/explain.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/performance/explain.js +71 -0
- package/dist/adapters/postgresql/tools/performance/explain.js.map +1 -0
- package/dist/adapters/postgresql/tools/performance/index.d.ts +13 -0
- package/dist/adapters/postgresql/tools/performance/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/performance/index.js +40 -0
- package/dist/adapters/postgresql/tools/performance/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/performance/monitoring.d.ts +9 -0
- package/dist/adapters/postgresql/tools/performance/monitoring.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/performance/monitoring.js +122 -0
- package/dist/adapters/postgresql/tools/performance/monitoring.js.map +1 -0
- package/dist/adapters/postgresql/tools/performance/optimization.d.ts +9 -0
- package/dist/adapters/postgresql/tools/performance/optimization.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/performance/optimization.js +315 -0
- package/dist/adapters/postgresql/tools/performance/optimization.js.map +1 -0
- package/dist/adapters/postgresql/tools/performance/stats.d.ts +14 -0
- package/dist/adapters/postgresql/tools/performance/stats.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/performance/stats.js +559 -0
- package/dist/adapters/postgresql/tools/performance/stats.js.map +1 -0
- package/dist/adapters/postgresql/tools/pgcrypto.d.ts +8 -0
- package/dist/adapters/postgresql/tools/pgcrypto.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/pgcrypto.js +239 -0
- package/dist/adapters/postgresql/tools/pgcrypto.js.map +1 -0
- package/dist/adapters/postgresql/tools/postgis/advanced.d.ts +21 -0
- package/dist/adapters/postgresql/tools/postgis/advanced.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/postgis/advanced.js +383 -0
- package/dist/adapters/postgresql/tools/postgis/advanced.js.map +1 -0
- package/dist/adapters/postgresql/tools/postgis/basic.d.ts +16 -0
- package/dist/adapters/postgresql/tools/postgis/basic.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/postgis/basic.js +479 -0
- package/dist/adapters/postgresql/tools/postgis/basic.js.map +1 -0
- package/dist/adapters/postgresql/tools/postgis/index.d.ts +17 -0
- package/dist/adapters/postgresql/tools/postgis/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/postgis/index.js +46 -0
- package/dist/adapters/postgresql/tools/postgis/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/postgis/standalone.d.ts +21 -0
- package/dist/adapters/postgresql/tools/postgis/standalone.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/postgis/standalone.js +150 -0
- package/dist/adapters/postgresql/tools/postgis/standalone.js.map +1 -0
- package/dist/adapters/postgresql/tools/schema.d.ts +13 -0
- package/dist/adapters/postgresql/tools/schema.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/schema.js +515 -0
- package/dist/adapters/postgresql/tools/schema.js.map +1 -0
- package/dist/adapters/postgresql/tools/stats/advanced.d.ts +24 -0
- package/dist/adapters/postgresql/tools/stats/advanced.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/stats/advanced.js +876 -0
- package/dist/adapters/postgresql/tools/stats/advanced.js.map +1 -0
- package/dist/adapters/postgresql/tools/stats/basic.d.ts +24 -0
- package/dist/adapters/postgresql/tools/stats/basic.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/stats/basic.js +501 -0
- package/dist/adapters/postgresql/tools/stats/basic.js.map +1 -0
- package/dist/adapters/postgresql/tools/stats/index.d.ts +17 -0
- package/dist/adapters/postgresql/tools/stats/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/stats/index.js +30 -0
- package/dist/adapters/postgresql/tools/stats/index.js.map +1 -0
- package/dist/adapters/postgresql/tools/text.d.ts +13 -0
- package/dist/adapters/postgresql/tools/text.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/text.js +708 -0
- package/dist/adapters/postgresql/tools/text.js.map +1 -0
- package/dist/adapters/postgresql/tools/transactions.d.ts +13 -0
- package/dist/adapters/postgresql/tools/transactions.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/transactions.js +201 -0
- package/dist/adapters/postgresql/tools/transactions.js.map +1 -0
- package/dist/adapters/postgresql/tools/vector/advanced.d.ts +12 -0
- package/dist/adapters/postgresql/tools/vector/advanced.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/vector/advanced.js +902 -0
- package/dist/adapters/postgresql/tools/vector/advanced.js.map +1 -0
- package/dist/adapters/postgresql/tools/vector/basic.d.ts +25 -0
- package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/vector/basic.js +1000 -0
- package/dist/adapters/postgresql/tools/vector/basic.js.map +1 -0
- package/dist/adapters/postgresql/tools/vector/index.d.ts +13 -0
- package/dist/adapters/postgresql/tools/vector/index.d.ts.map +1 -0
- package/dist/adapters/postgresql/tools/vector/index.js +33 -0
- package/dist/adapters/postgresql/tools/vector/index.js.map +1 -0
- package/dist/auth/AuthorizationServerDiscovery.d.ts +44 -0
- package/dist/auth/AuthorizationServerDiscovery.d.ts.map +1 -0
- package/dist/auth/AuthorizationServerDiscovery.js +117 -0
- package/dist/auth/AuthorizationServerDiscovery.js.map +1 -0
- package/dist/auth/OAuthResourceServer.d.ts +42 -0
- package/dist/auth/OAuthResourceServer.d.ts.map +1 -0
- package/dist/auth/OAuthResourceServer.js +80 -0
- package/dist/auth/OAuthResourceServer.js.map +1 -0
- package/dist/auth/TokenValidator.d.ts +36 -0
- package/dist/auth/TokenValidator.d.ts.map +1 -0
- package/dist/auth/TokenValidator.js +139 -0
- package/dist/auth/TokenValidator.js.map +1 -0
- package/dist/auth/errors.d.ts +63 -0
- package/dist/auth/errors.d.ts.map +1 -0
- package/dist/auth/errors.js +102 -0
- package/dist/auth/errors.js.map +1 -0
- package/dist/auth/index.d.ts +15 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +16 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/middleware.d.ts +61 -0
- package/dist/auth/middleware.d.ts.map +1 -0
- package/dist/auth/middleware.js +156 -0
- package/dist/auth/middleware.js.map +1 -0
- package/dist/auth/scopes.d.ts +65 -0
- package/dist/auth/scopes.d.ts.map +1 -0
- package/dist/auth/scopes.js +189 -0
- package/dist/auth/scopes.js.map +1 -0
- package/dist/auth/types.d.ts +208 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +8 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/cli/args.d.ts +34 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +308 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +7 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +341 -0
- package/dist/cli.js.map +1 -0
- package/dist/codemode/api.d.ts +62 -0
- package/dist/codemode/api.d.ts.map +1 -0
- package/dist/codemode/api.js +1505 -0
- package/dist/codemode/api.js.map +1 -0
- package/dist/codemode/index.d.ts +13 -0
- package/dist/codemode/index.d.ts.map +1 -0
- package/dist/codemode/index.js +17 -0
- package/dist/codemode/index.js.map +1 -0
- package/dist/codemode/sandbox-factory.d.ts +72 -0
- package/dist/codemode/sandbox-factory.d.ts.map +1 -0
- package/dist/codemode/sandbox-factory.js +88 -0
- package/dist/codemode/sandbox-factory.js.map +1 -0
- package/dist/codemode/sandbox.d.ts +96 -0
- package/dist/codemode/sandbox.d.ts.map +1 -0
- package/dist/codemode/sandbox.js +345 -0
- package/dist/codemode/sandbox.js.map +1 -0
- package/dist/codemode/security.d.ts +44 -0
- package/dist/codemode/security.d.ts.map +1 -0
- package/dist/codemode/security.js +149 -0
- package/dist/codemode/security.js.map +1 -0
- package/dist/codemode/types.d.ts +137 -0
- package/dist/codemode/types.d.ts.map +1 -0
- package/dist/codemode/types.js +46 -0
- package/dist/codemode/types.js.map +1 -0
- package/dist/codemode/worker-sandbox.d.ts +82 -0
- package/dist/codemode/worker-sandbox.d.ts.map +1 -0
- package/dist/codemode/worker-sandbox.js +244 -0
- package/dist/codemode/worker-sandbox.js.map +1 -0
- package/dist/codemode/worker-script.d.ts +8 -0
- package/dist/codemode/worker-script.d.ts.map +1 -0
- package/dist/codemode/worker-script.js +113 -0
- package/dist/codemode/worker-script.js.map +1 -0
- package/dist/constants/ServerInstructions.d.ts +13 -0
- package/dist/constants/ServerInstructions.d.ts.map +1 -0
- package/dist/constants/ServerInstructions.js +405 -0
- package/dist/constants/ServerInstructions.js.map +1 -0
- package/dist/filtering/ToolConstants.d.ts +43 -0
- package/dist/filtering/ToolConstants.d.ts.map +1 -0
- package/dist/filtering/ToolConstants.js +352 -0
- package/dist/filtering/ToolConstants.js.map +1 -0
- package/dist/filtering/ToolFilter.d.ts +90 -0
- package/dist/filtering/ToolFilter.d.ts.map +1 -0
- package/dist/filtering/ToolFilter.js +315 -0
- package/dist/filtering/ToolFilter.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/pool/ConnectionPool.d.ts +70 -0
- package/dist/pool/ConnectionPool.d.ts.map +1 -0
- package/dist/pool/ConnectionPool.js +254 -0
- package/dist/pool/ConnectionPool.js.map +1 -0
- package/dist/server/McpServer.d.ts +50 -0
- package/dist/server/McpServer.d.ts.map +1 -0
- package/dist/server/McpServer.js +108 -0
- package/dist/server/McpServer.js.map +1 -0
- package/dist/transports/http.d.ts +126 -0
- package/dist/transports/http.d.ts.map +1 -0
- package/dist/transports/http.js +303 -0
- package/dist/transports/http.js.map +1 -0
- package/dist/transports/index.d.ts +8 -0
- package/dist/transports/index.d.ts.map +1 -0
- package/dist/transports/index.js +7 -0
- package/dist/transports/index.js.map +1 -0
- package/dist/types/adapters.d.ts +136 -0
- package/dist/types/adapters.d.ts.map +1 -0
- package/dist/types/adapters.js +7 -0
- package/dist/types/adapters.js.map +1 -0
- package/dist/types/database.d.ts +204 -0
- package/dist/types/database.d.ts.map +1 -0
- package/dist/types/database.js +7 -0
- package/dist/types/database.js.map +1 -0
- package/dist/types/errors.d.ts +62 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +91 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/filtering.d.ts +39 -0
- package/dist/types/filtering.d.ts.map +1 -0
- package/dist/types/filtering.js +7 -0
- package/dist/types/filtering.js.map +1 -0
- package/dist/types/index.d.ts +16 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/mcp.d.ts +31 -0
- package/dist/types/mcp.d.ts.map +1 -0
- package/dist/types/mcp.js +7 -0
- package/dist/types/mcp.js.map +1 -0
- package/dist/types/oauth.d.ts +65 -0
- package/dist/types/oauth.d.ts.map +1 -0
- package/dist/types/oauth.js +7 -0
- package/dist/types/oauth.js.map +1 -0
- package/dist/types/schema.d.ts +110 -0
- package/dist/types/schema.d.ts.map +1 -0
- package/dist/types/schema.js +7 -0
- package/dist/types/schema.js.map +1 -0
- package/dist/utils/annotations.d.ts +42 -0
- package/dist/utils/annotations.d.ts.map +1 -0
- package/dist/utils/annotations.js +75 -0
- package/dist/utils/annotations.js.map +1 -0
- package/dist/utils/icons.d.ts +25 -0
- package/dist/utils/icons.d.ts.map +1 -0
- package/dist/utils/icons.js +212 -0
- package/dist/utils/icons.js.map +1 -0
- package/dist/utils/identifiers.d.ts +111 -0
- package/dist/utils/identifiers.d.ts.map +1 -0
- package/dist/utils/identifiers.js +270 -0
- package/dist/utils/identifiers.js.map +1 -0
- package/dist/utils/logger.d.ts +141 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +304 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/promptGenerator.d.ts +20 -0
- package/dist/utils/promptGenerator.d.ts.map +1 -0
- package/dist/utils/promptGenerator.js +81 -0
- package/dist/utils/promptGenerator.js.map +1 -0
- package/dist/utils/resourceAnnotations.d.ts +36 -0
- package/dist/utils/resourceAnnotations.d.ts.map +1 -0
- package/dist/utils/resourceAnnotations.js +57 -0
- package/dist/utils/resourceAnnotations.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,568 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL citext Extension Tools
|
|
3
|
+
*
|
|
4
|
+
* Case-insensitive text type for preventing subtle bugs in auth systems,
|
|
5
|
+
* emails, and usernames. 6 tools total.
|
|
6
|
+
*
|
|
7
|
+
* citext provides a case-insensitive character string type at the type level:
|
|
8
|
+
* - Comparisons are case-insensitive (e.g., 'HELLO' = 'hello')
|
|
9
|
+
* - Sorting is case-insensitive
|
|
10
|
+
* - Ideal for email, username, and other identifier columns
|
|
11
|
+
*/
|
|
12
|
+
import { z } from "zod";
|
|
13
|
+
import { readOnly, write } from "../../../utils/annotations.js";
|
|
14
|
+
import { getToolIcons } from "../../../utils/icons.js";
|
|
15
|
+
import { CitextConvertColumnSchema, CitextConvertColumnSchemaBase, CitextListColumnsSchema, CitextListColumnsSchemaBase, CitextAnalyzeCandidatesSchema, CitextAnalyzeCandidatesSchemaBase, CitextSchemaAdvisorSchema, CitextSchemaAdvisorSchemaBase, } from "../schemas/index.js";
|
|
16
|
+
/**
|
|
17
|
+
* Get all citext tools
|
|
18
|
+
*/
|
|
19
|
+
export function getCitextTools(adapter) {
|
|
20
|
+
return [
|
|
21
|
+
createCitextExtensionTool(adapter),
|
|
22
|
+
createCitextConvertColumnTool(adapter),
|
|
23
|
+
createCitextListColumnsTool(adapter),
|
|
24
|
+
createCitextAnalyzeCandidatesTool(adapter),
|
|
25
|
+
createCitextCompareTool(adapter),
|
|
26
|
+
createCitextSchemaAdvisorTool(adapter),
|
|
27
|
+
];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Enable the citext extension
|
|
31
|
+
*/
|
|
32
|
+
function createCitextExtensionTool(adapter) {
|
|
33
|
+
return {
|
|
34
|
+
name: "pg_citext_create_extension",
|
|
35
|
+
description: `Enable the citext extension for case-insensitive text columns.
|
|
36
|
+
citext is ideal for emails, usernames, and other identifiers where case shouldn't matter.`,
|
|
37
|
+
group: "citext",
|
|
38
|
+
inputSchema: z.object({}),
|
|
39
|
+
annotations: write("Create Citext Extension"),
|
|
40
|
+
icons: getToolIcons("citext", write("Create Citext Extension")),
|
|
41
|
+
handler: async (_params, _context) => {
|
|
42
|
+
await adapter.executeQuery("CREATE EXTENSION IF NOT EXISTS citext");
|
|
43
|
+
return {
|
|
44
|
+
success: true,
|
|
45
|
+
message: "citext extension enabled",
|
|
46
|
+
usage: "Create columns with type CITEXT instead of TEXT for case-insensitive comparisons",
|
|
47
|
+
};
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Convert an existing text column to citext
|
|
53
|
+
*/
|
|
54
|
+
function createCitextConvertColumnTool(adapter) {
|
|
55
|
+
return {
|
|
56
|
+
name: "pg_citext_convert_column",
|
|
57
|
+
description: `Convert an existing TEXT column to CITEXT for case-insensitive comparisons.
|
|
58
|
+
This is useful for retrofitting case-insensitivity to existing columns like email or username.
|
|
59
|
+
Note: If views depend on this column, you must drop and recreate them manually before conversion.`,
|
|
60
|
+
group: "citext",
|
|
61
|
+
inputSchema: CitextConvertColumnSchemaBase,
|
|
62
|
+
annotations: write("Convert to Citext"),
|
|
63
|
+
icons: getToolIcons("citext", write("Convert to Citext")),
|
|
64
|
+
handler: async (params, _context) => {
|
|
65
|
+
const parsed = CitextConvertColumnSchema.parse(params ?? {});
|
|
66
|
+
const { table, column, schema: schemaOpt } = parsed;
|
|
67
|
+
const schemaName = schemaOpt ?? "public";
|
|
68
|
+
const qualifiedTable = `"${schemaName}"."${table}"`;
|
|
69
|
+
const extCheck = await adapter.executeQuery(`
|
|
70
|
+
SELECT EXISTS(
|
|
71
|
+
SELECT 1 FROM pg_extension WHERE extname = 'citext'
|
|
72
|
+
) as installed
|
|
73
|
+
`);
|
|
74
|
+
const hasExt = extCheck.rows?.[0]?.["installed"] ?? false;
|
|
75
|
+
if (!hasExt) {
|
|
76
|
+
throw new Error("citext extension is not installed. Run pg_citext_create_extension first.");
|
|
77
|
+
}
|
|
78
|
+
const colCheck = await adapter.executeQuery(`
|
|
79
|
+
SELECT data_type, udt_name
|
|
80
|
+
FROM information_schema.columns
|
|
81
|
+
WHERE table_schema = $1
|
|
82
|
+
AND table_name = $2
|
|
83
|
+
AND column_name = $3
|
|
84
|
+
`, [schemaName, table, column]);
|
|
85
|
+
if (!colCheck.rows || colCheck.rows.length === 0) {
|
|
86
|
+
throw new Error(`Column "${column}" not found in table ${qualifiedTable}. Verify the table and column names.`);
|
|
87
|
+
}
|
|
88
|
+
const dataType = colCheck.rows[0]?.["data_type"];
|
|
89
|
+
const udtName = colCheck.rows[0]?.["udt_name"];
|
|
90
|
+
// Normalize type: use udt_name for user-defined types (like citext)
|
|
91
|
+
const currentType = dataType === "USER-DEFINED" ? udtName : dataType;
|
|
92
|
+
if (udtName === "citext") {
|
|
93
|
+
return {
|
|
94
|
+
success: true,
|
|
95
|
+
message: `Column ${column} is already citext`,
|
|
96
|
+
wasAlreadyCitext: true,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
// Validate that the column is a text-based type
|
|
100
|
+
const allowedTypes = [
|
|
101
|
+
"text",
|
|
102
|
+
"character varying",
|
|
103
|
+
"character",
|
|
104
|
+
"char",
|
|
105
|
+
"varchar",
|
|
106
|
+
];
|
|
107
|
+
const normalizedType = dataType.toLowerCase();
|
|
108
|
+
if (!allowedTypes.includes(normalizedType)) {
|
|
109
|
+
return {
|
|
110
|
+
success: false,
|
|
111
|
+
error: `Column "${column}" is type "${currentType}", not a text-based type`,
|
|
112
|
+
currentType,
|
|
113
|
+
allowedTypes: ["text", "varchar", "character varying"],
|
|
114
|
+
suggestion: `citext conversion only works for text-based columns. Column "${column}" is "${currentType}" which cannot be converted.`,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
// Check for dependent views before attempting the conversion
|
|
118
|
+
const depCheck = await adapter.executeQuery(`
|
|
119
|
+
SELECT DISTINCT
|
|
120
|
+
c.relname as dependent_view,
|
|
121
|
+
n.nspname as view_schema
|
|
122
|
+
FROM pg_depend d
|
|
123
|
+
JOIN pg_rewrite r ON d.objid = r.oid
|
|
124
|
+
JOIN pg_class c ON r.ev_class = c.oid
|
|
125
|
+
JOIN pg_namespace n ON c.relnamespace = n.oid
|
|
126
|
+
JOIN pg_class t ON d.refobjid = t.oid
|
|
127
|
+
JOIN pg_namespace tn ON t.relnamespace = tn.oid
|
|
128
|
+
JOIN pg_attribute a ON d.refobjid = a.attrelid AND d.refobjsubid = a.attnum
|
|
129
|
+
WHERE c.relkind = 'v'
|
|
130
|
+
AND tn.nspname = $1
|
|
131
|
+
AND t.relname = $2
|
|
132
|
+
AND a.attname = $3
|
|
133
|
+
`, [schemaName, table, column]);
|
|
134
|
+
const dependentViews = depCheck.rows ?? [];
|
|
135
|
+
if (dependentViews.length > 0) {
|
|
136
|
+
return {
|
|
137
|
+
success: false,
|
|
138
|
+
error: "Column has dependent views that must be dropped before conversion",
|
|
139
|
+
dependentViews: dependentViews.map((v) => `${v["view_schema"]}.${v["dependent_view"]}`),
|
|
140
|
+
hint: "Drop the listed views, run this conversion, then recreate the views. PostgreSQL cannot ALTER COLUMN TYPE when views depend on it.",
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
try {
|
|
144
|
+
await adapter.executeQuery(`
|
|
145
|
+
ALTER TABLE ${qualifiedTable}
|
|
146
|
+
ALTER COLUMN "${column}" TYPE citext USING "${column}"::citext
|
|
147
|
+
`);
|
|
148
|
+
return {
|
|
149
|
+
success: true,
|
|
150
|
+
message: `Column ${column} converted from ${currentType} to citext`,
|
|
151
|
+
table: qualifiedTable,
|
|
152
|
+
previousType: currentType,
|
|
153
|
+
affectedViews: dependentViews.length > 0
|
|
154
|
+
? dependentViews.map((v) => `${v["view_schema"]}.${v["dependent_view"]}`)
|
|
155
|
+
: undefined,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
160
|
+
return {
|
|
161
|
+
success: false,
|
|
162
|
+
error: `Failed to convert column: ${errorMessage}`,
|
|
163
|
+
hint: "If views depend on this column, they may need to be dropped and recreated",
|
|
164
|
+
dependentViews: dependentViews.length > 0
|
|
165
|
+
? dependentViews.map((v) => `${v["view_schema"]}.${v["dependent_view"]}`)
|
|
166
|
+
: undefined,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* List all citext columns in the database
|
|
174
|
+
*/
|
|
175
|
+
function createCitextListColumnsTool(adapter) {
|
|
176
|
+
return {
|
|
177
|
+
name: "pg_citext_list_columns",
|
|
178
|
+
description: `List all columns using the citext type in the database.
|
|
179
|
+
Useful for auditing case-insensitive columns.`,
|
|
180
|
+
group: "citext",
|
|
181
|
+
inputSchema: CitextListColumnsSchemaBase,
|
|
182
|
+
annotations: readOnly("List Citext Columns"),
|
|
183
|
+
icons: getToolIcons("citext", readOnly("List Citext Columns")),
|
|
184
|
+
handler: async (params, _context) => {
|
|
185
|
+
const parsed = CitextListColumnsSchema.parse(params);
|
|
186
|
+
const { schema, limit: userLimit } = parsed;
|
|
187
|
+
// Default limit of 100 to prevent large payloads
|
|
188
|
+
const DEFAULT_LIMIT = 100;
|
|
189
|
+
const effectiveLimit = userLimit === 0 ? undefined : (userLimit ?? DEFAULT_LIMIT);
|
|
190
|
+
const conditions = [
|
|
191
|
+
"udt_name = 'citext'",
|
|
192
|
+
"table_schema NOT IN ('pg_catalog', 'information_schema')",
|
|
193
|
+
];
|
|
194
|
+
const queryParams = [];
|
|
195
|
+
let paramIndex = 1;
|
|
196
|
+
if (schema !== undefined) {
|
|
197
|
+
conditions.push(`table_schema = $${String(paramIndex++)}`);
|
|
198
|
+
queryParams.push(schema);
|
|
199
|
+
}
|
|
200
|
+
const whereClause = conditions.join(" AND ");
|
|
201
|
+
// Count total columns first
|
|
202
|
+
const countSql = `
|
|
203
|
+
SELECT COUNT(*) as total
|
|
204
|
+
FROM information_schema.columns
|
|
205
|
+
WHERE ${whereClause}
|
|
206
|
+
`;
|
|
207
|
+
const countResult = await adapter.executeQuery(countSql, queryParams);
|
|
208
|
+
const totalCount = Number(countResult.rows?.[0]?.["total"] ?? 0);
|
|
209
|
+
// Add LIMIT clause
|
|
210
|
+
const limitClause = effectiveLimit !== undefined ? `LIMIT ${String(effectiveLimit)}` : "";
|
|
211
|
+
const sql = `
|
|
212
|
+
SELECT
|
|
213
|
+
table_schema,
|
|
214
|
+
table_name,
|
|
215
|
+
column_name,
|
|
216
|
+
is_nullable,
|
|
217
|
+
column_default
|
|
218
|
+
FROM information_schema.columns
|
|
219
|
+
WHERE ${whereClause}
|
|
220
|
+
ORDER BY table_schema, table_name, ordinal_position
|
|
221
|
+
${limitClause}
|
|
222
|
+
`;
|
|
223
|
+
const result = await adapter.executeQuery(sql, queryParams);
|
|
224
|
+
const columns = result.rows ?? [];
|
|
225
|
+
// Determine if results were truncated
|
|
226
|
+
const truncated = effectiveLimit !== undefined && columns.length < totalCount;
|
|
227
|
+
return {
|
|
228
|
+
columns,
|
|
229
|
+
count: columns.length,
|
|
230
|
+
totalCount,
|
|
231
|
+
truncated,
|
|
232
|
+
...(effectiveLimit !== undefined && { limit: effectiveLimit }),
|
|
233
|
+
...(schema !== undefined && { schema }),
|
|
234
|
+
};
|
|
235
|
+
},
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Analyze text columns that could benefit from citext
|
|
240
|
+
*/
|
|
241
|
+
function createCitextAnalyzeCandidatesTool(adapter) {
|
|
242
|
+
return {
|
|
243
|
+
name: "pg_citext_analyze_candidates",
|
|
244
|
+
description: `Find TEXT columns that may benefit from case-insensitive comparisons.
|
|
245
|
+
Looks for common patterns like email, username, name, slug, etc.`,
|
|
246
|
+
group: "citext",
|
|
247
|
+
inputSchema: CitextAnalyzeCandidatesSchemaBase,
|
|
248
|
+
annotations: readOnly("Analyze Citext Candidates"),
|
|
249
|
+
icons: getToolIcons("citext", readOnly("Analyze Citext Candidates")),
|
|
250
|
+
handler: async (params, _context) => {
|
|
251
|
+
const { patterns, schema, table, limit: userLimit, excludeSystemSchemas: userExcludeSystemSchemas, } = CitextAnalyzeCandidatesSchema.parse(params);
|
|
252
|
+
// Default limit of 50 to prevent large payloads and transport truncation
|
|
253
|
+
const DEFAULT_LIMIT = 50;
|
|
254
|
+
const effectiveLimit = userLimit === 0 ? undefined : (userLimit ?? DEFAULT_LIMIT);
|
|
255
|
+
// Exclude system schemas by default when no table filter is specified
|
|
256
|
+
const excludeSystemSchemas = userExcludeSystemSchemas ?? true;
|
|
257
|
+
const searchPatterns = patterns ?? [
|
|
258
|
+
"email",
|
|
259
|
+
"e_mail",
|
|
260
|
+
"mail",
|
|
261
|
+
"username",
|
|
262
|
+
"user_name",
|
|
263
|
+
"login",
|
|
264
|
+
"name",
|
|
265
|
+
"first_name",
|
|
266
|
+
"last_name",
|
|
267
|
+
"full_name",
|
|
268
|
+
"slug",
|
|
269
|
+
"handle",
|
|
270
|
+
"nickname",
|
|
271
|
+
"code",
|
|
272
|
+
"sku",
|
|
273
|
+
"identifier",
|
|
274
|
+
];
|
|
275
|
+
// System/extension schemas to exclude by default (reduces noise from extension tables)
|
|
276
|
+
const systemSchemas = [
|
|
277
|
+
"cron",
|
|
278
|
+
"topology",
|
|
279
|
+
"partman",
|
|
280
|
+
"tiger",
|
|
281
|
+
"tiger_data",
|
|
282
|
+
];
|
|
283
|
+
const conditions = [
|
|
284
|
+
"data_type IN ('text', 'character varying')",
|
|
285
|
+
"table_schema NOT IN ('pg_catalog', 'information_schema')",
|
|
286
|
+
];
|
|
287
|
+
const queryParams = [];
|
|
288
|
+
let paramIndex = 1;
|
|
289
|
+
// Only apply system schema exclusion when no specific schema/table is requested
|
|
290
|
+
if (excludeSystemSchemas && schema === undefined && table === undefined) {
|
|
291
|
+
const placeholders = systemSchemas.map(() => {
|
|
292
|
+
const idx = paramIndex++;
|
|
293
|
+
return `$${String(idx)}`;
|
|
294
|
+
});
|
|
295
|
+
conditions.push(`table_schema NOT IN (${placeholders.join(", ")})`);
|
|
296
|
+
queryParams.push(...systemSchemas);
|
|
297
|
+
}
|
|
298
|
+
if (schema !== undefined) {
|
|
299
|
+
conditions.push(`table_schema = $${String(paramIndex++)}`);
|
|
300
|
+
queryParams.push(schema);
|
|
301
|
+
}
|
|
302
|
+
if (table !== undefined) {
|
|
303
|
+
conditions.push(`table_name = $${String(paramIndex++)}`);
|
|
304
|
+
queryParams.push(table);
|
|
305
|
+
}
|
|
306
|
+
const patternConditions = searchPatterns.map((p) => {
|
|
307
|
+
const idx = paramIndex++;
|
|
308
|
+
queryParams.push(`%${p}%`);
|
|
309
|
+
return `LOWER(column_name) LIKE $${String(idx)}`;
|
|
310
|
+
});
|
|
311
|
+
conditions.push(`(${patternConditions.join(" OR ")})`);
|
|
312
|
+
// Build WHERE clause for reuse
|
|
313
|
+
const whereClause = conditions.join(" AND ");
|
|
314
|
+
// Count total candidates first
|
|
315
|
+
const countSql = `
|
|
316
|
+
SELECT COUNT(*) as total
|
|
317
|
+
FROM information_schema.columns
|
|
318
|
+
WHERE ${whereClause}
|
|
319
|
+
`;
|
|
320
|
+
const countResult = await adapter.executeQuery(countSql, queryParams);
|
|
321
|
+
const totalCount = Number(countResult.rows?.[0]?.["total"] ?? 0);
|
|
322
|
+
// Add LIMIT clause
|
|
323
|
+
const limitClause = effectiveLimit !== undefined ? `LIMIT ${String(effectiveLimit)}` : "";
|
|
324
|
+
const sql = `
|
|
325
|
+
SELECT
|
|
326
|
+
table_schema,
|
|
327
|
+
table_name,
|
|
328
|
+
column_name,
|
|
329
|
+
data_type,
|
|
330
|
+
character_maximum_length,
|
|
331
|
+
is_nullable
|
|
332
|
+
FROM information_schema.columns
|
|
333
|
+
WHERE ${whereClause}
|
|
334
|
+
ORDER BY table_schema, table_name, ordinal_position
|
|
335
|
+
${limitClause}
|
|
336
|
+
`;
|
|
337
|
+
const result = await adapter.executeQuery(sql, queryParams);
|
|
338
|
+
const candidates = result.rows ?? [];
|
|
339
|
+
// Determine if results were truncated
|
|
340
|
+
const truncated = effectiveLimit !== undefined && candidates.length < totalCount;
|
|
341
|
+
// Count high/medium confidence candidates without storing duplicates
|
|
342
|
+
let highConfidenceCount = 0;
|
|
343
|
+
let mediumConfidenceCount = 0;
|
|
344
|
+
for (const row of candidates) {
|
|
345
|
+
const colName = row["column_name"].toLowerCase();
|
|
346
|
+
if (colName.includes("email") ||
|
|
347
|
+
colName.includes("username") ||
|
|
348
|
+
colName === "login") {
|
|
349
|
+
highConfidenceCount++;
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
mediumConfidenceCount++;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
return {
|
|
356
|
+
candidates,
|
|
357
|
+
count: candidates.length,
|
|
358
|
+
totalCount,
|
|
359
|
+
truncated,
|
|
360
|
+
...(effectiveLimit !== undefined && { limit: effectiveLimit }),
|
|
361
|
+
...(table !== undefined && { table }),
|
|
362
|
+
...(schema !== undefined && { schema }),
|
|
363
|
+
summary: {
|
|
364
|
+
highConfidence: highConfidenceCount,
|
|
365
|
+
mediumConfidence: mediumConfidenceCount,
|
|
366
|
+
},
|
|
367
|
+
recommendation: candidates.length > 0
|
|
368
|
+
? "Consider converting these columns to citext for case-insensitive comparisons"
|
|
369
|
+
: "No obvious candidates found. Use custom patterns if needed.",
|
|
370
|
+
// Include excluded schemas info when filtering is applied
|
|
371
|
+
...(excludeSystemSchemas &&
|
|
372
|
+
schema === undefined &&
|
|
373
|
+
table === undefined && {
|
|
374
|
+
excludedSchemas: systemSchemas,
|
|
375
|
+
}),
|
|
376
|
+
// Include patterns used for transparency
|
|
377
|
+
patternsUsed: searchPatterns,
|
|
378
|
+
};
|
|
379
|
+
},
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Compare values case-insensitively
|
|
384
|
+
*/
|
|
385
|
+
function createCitextCompareTool(adapter) {
|
|
386
|
+
return {
|
|
387
|
+
name: "pg_citext_compare",
|
|
388
|
+
description: `Compare two values using case-insensitive semantics.
|
|
389
|
+
Useful for testing citext behavior before converting columns.`,
|
|
390
|
+
group: "citext",
|
|
391
|
+
inputSchema: z.object({
|
|
392
|
+
value1: z.string().describe("First value to compare"),
|
|
393
|
+
value2: z.string().describe("Second value to compare"),
|
|
394
|
+
}),
|
|
395
|
+
annotations: readOnly("Compare Citext Values"),
|
|
396
|
+
icons: getToolIcons("citext", readOnly("Compare Citext Values")),
|
|
397
|
+
handler: async (params, _context) => {
|
|
398
|
+
// Use the schema for proper validation
|
|
399
|
+
const schema = z.object({
|
|
400
|
+
value1: z.string(),
|
|
401
|
+
value2: z.string(),
|
|
402
|
+
});
|
|
403
|
+
const { value1, value2 } = schema.parse(params);
|
|
404
|
+
const extCheck = await adapter.executeQuery(`
|
|
405
|
+
SELECT EXISTS(
|
|
406
|
+
SELECT 1 FROM pg_extension WHERE extname = 'citext'
|
|
407
|
+
) as installed
|
|
408
|
+
`);
|
|
409
|
+
const hasExt = extCheck.rows?.[0]?.["installed"] ?? false;
|
|
410
|
+
if (hasExt) {
|
|
411
|
+
const result = await adapter.executeQuery(`
|
|
412
|
+
SELECT
|
|
413
|
+
$1::citext = $2::citext as citext_equal,
|
|
414
|
+
$1::text = $2::text as text_equal,
|
|
415
|
+
LOWER($1) = LOWER($2) as lower_equal
|
|
416
|
+
`, [value1, value2]);
|
|
417
|
+
const row = result.rows?.[0];
|
|
418
|
+
return {
|
|
419
|
+
value1,
|
|
420
|
+
value2,
|
|
421
|
+
citextEqual: row?.["citext_equal"],
|
|
422
|
+
textEqual: row?.["text_equal"],
|
|
423
|
+
lowerEqual: row?.["lower_equal"],
|
|
424
|
+
extensionInstalled: true,
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
else {
|
|
428
|
+
const result = await adapter.executeQuery(`
|
|
429
|
+
SELECT
|
|
430
|
+
$1::text = $2::text as text_equal,
|
|
431
|
+
LOWER($1) = LOWER($2) as lower_equal
|
|
432
|
+
`, [value1, value2]);
|
|
433
|
+
const row = result.rows?.[0];
|
|
434
|
+
return {
|
|
435
|
+
value1,
|
|
436
|
+
value2,
|
|
437
|
+
textEqual: row?.["text_equal"],
|
|
438
|
+
lowerEqual: row?.["lower_equal"],
|
|
439
|
+
extensionInstalled: false,
|
|
440
|
+
hint: "Install citext extension for native case-insensitive comparisons",
|
|
441
|
+
};
|
|
442
|
+
}
|
|
443
|
+
},
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Schema advisor for citext columns
|
|
448
|
+
*/
|
|
449
|
+
function createCitextSchemaAdvisorTool(adapter) {
|
|
450
|
+
return {
|
|
451
|
+
name: "pg_citext_schema_advisor",
|
|
452
|
+
description: `Analyze a specific table and recommend which columns should use citext.
|
|
453
|
+
Provides schema design recommendations based on column names and existing data patterns.
|
|
454
|
+
Requires the 'table' parameter to specify which table to analyze.`,
|
|
455
|
+
group: "citext",
|
|
456
|
+
inputSchema: CitextSchemaAdvisorSchemaBase,
|
|
457
|
+
annotations: readOnly("Citext Schema Advisor"),
|
|
458
|
+
icons: getToolIcons("citext", readOnly("Citext Schema Advisor")),
|
|
459
|
+
handler: async (params, _context) => {
|
|
460
|
+
const { table, schema } = CitextSchemaAdvisorSchema.parse(params);
|
|
461
|
+
const schemaName = schema ?? "public";
|
|
462
|
+
const qualifiedTable = `"${schemaName}"."${table}"`;
|
|
463
|
+
// First check if table exists
|
|
464
|
+
const tableCheck = await adapter.executeQuery(`
|
|
465
|
+
SELECT 1 FROM information_schema.tables
|
|
466
|
+
WHERE table_schema = $1 AND table_name = $2
|
|
467
|
+
`, [schemaName, table]);
|
|
468
|
+
if (!tableCheck.rows || tableCheck.rows.length === 0) {
|
|
469
|
+
throw new Error(`Table ${qualifiedTable} not found. Verify the table name and schema.`);
|
|
470
|
+
}
|
|
471
|
+
const colResult = await adapter.executeQuery(`
|
|
472
|
+
SELECT
|
|
473
|
+
column_name,
|
|
474
|
+
data_type,
|
|
475
|
+
udt_name,
|
|
476
|
+
is_nullable,
|
|
477
|
+
character_maximum_length
|
|
478
|
+
FROM information_schema.columns
|
|
479
|
+
WHERE table_schema = $1
|
|
480
|
+
AND table_name = $2
|
|
481
|
+
AND data_type IN ('text', 'character varying', 'USER-DEFINED')
|
|
482
|
+
ORDER BY ordinal_position
|
|
483
|
+
`, [schemaName, table]);
|
|
484
|
+
const columns = colResult.rows ?? [];
|
|
485
|
+
const recommendations = [];
|
|
486
|
+
const highConfidencePatterns = [
|
|
487
|
+
"email",
|
|
488
|
+
"username",
|
|
489
|
+
"login",
|
|
490
|
+
"user_name",
|
|
491
|
+
];
|
|
492
|
+
const mediumConfidencePatterns = [
|
|
493
|
+
"name",
|
|
494
|
+
"slug",
|
|
495
|
+
"handle",
|
|
496
|
+
"code",
|
|
497
|
+
"sku",
|
|
498
|
+
"identifier",
|
|
499
|
+
"nickname",
|
|
500
|
+
];
|
|
501
|
+
for (const col of columns) {
|
|
502
|
+
const colName = col["column_name"].toLowerCase();
|
|
503
|
+
const dataType = col["data_type"];
|
|
504
|
+
const udtName = col["udt_name"];
|
|
505
|
+
if (udtName === "citext") {
|
|
506
|
+
recommendations.push({
|
|
507
|
+
column: col["column_name"],
|
|
508
|
+
currentType: "citext",
|
|
509
|
+
previousType: "text or varchar (converted)",
|
|
510
|
+
recommendation: "already_citext",
|
|
511
|
+
confidence: "high",
|
|
512
|
+
reason: "Column is already using citext",
|
|
513
|
+
});
|
|
514
|
+
continue;
|
|
515
|
+
}
|
|
516
|
+
const isHighConfidence = highConfidencePatterns.some((p) => colName.includes(p));
|
|
517
|
+
const isMediumConfidence = mediumConfidencePatterns.some((p) => colName.includes(p));
|
|
518
|
+
if (isHighConfidence) {
|
|
519
|
+
recommendations.push({
|
|
520
|
+
column: col["column_name"],
|
|
521
|
+
currentType: dataType,
|
|
522
|
+
recommendation: "convert",
|
|
523
|
+
confidence: "high",
|
|
524
|
+
reason: `Column name suggests case-insensitive data (${colName} matches common identifier patterns)`,
|
|
525
|
+
});
|
|
526
|
+
}
|
|
527
|
+
else if (isMediumConfidence) {
|
|
528
|
+
recommendations.push({
|
|
529
|
+
column: col["column_name"],
|
|
530
|
+
currentType: dataType,
|
|
531
|
+
recommendation: "convert",
|
|
532
|
+
confidence: "medium",
|
|
533
|
+
reason: `Column name may benefit from case-insensitivity (${colName})`,
|
|
534
|
+
});
|
|
535
|
+
}
|
|
536
|
+
else {
|
|
537
|
+
recommendations.push({
|
|
538
|
+
column: col["column_name"],
|
|
539
|
+
currentType: dataType,
|
|
540
|
+
recommendation: "keep",
|
|
541
|
+
confidence: "low",
|
|
542
|
+
reason: "No obvious case-insensitivity pattern detected",
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
const convertCount = recommendations.filter((r) => r.recommendation === "convert").length;
|
|
547
|
+
const highCount = recommendations.filter((r) => r.recommendation === "convert" && r.confidence === "high").length;
|
|
548
|
+
return {
|
|
549
|
+
table: `${schemaName}.${table}`,
|
|
550
|
+
recommendations,
|
|
551
|
+
summary: {
|
|
552
|
+
totalTextColumns: columns.length,
|
|
553
|
+
recommendConvert: convertCount,
|
|
554
|
+
highConfidence: highCount,
|
|
555
|
+
alreadyCitext: recommendations.filter((r) => r.recommendation === "already_citext").length,
|
|
556
|
+
},
|
|
557
|
+
nextSteps: convertCount > 0
|
|
558
|
+
? [
|
|
559
|
+
"Review recommendations above",
|
|
560
|
+
`Use pg_citext_convert_column to convert recommended columns`,
|
|
561
|
+
"Update application queries if they rely on case-sensitive comparisons",
|
|
562
|
+
]
|
|
563
|
+
: ["No columns require conversion"],
|
|
564
|
+
};
|
|
565
|
+
},
|
|
566
|
+
};
|
|
567
|
+
}
|
|
568
|
+
//# sourceMappingURL=citext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"citext.js","sourceRoot":"","sources":["../../../../src/adapters/postgresql/tools/citext.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* postgres-mcp - Code Mode Tool: pg_execute_code
|
|
3
|
+
*
|
|
4
|
+
* MCP tool that executes LLM-generated code in a sandboxed environment
|
|
5
|
+
* with access to all 194 PostgreSQL tools via the pg.* API.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import type { PostgresAdapter } from "../../PostgresAdapter.js";
|
|
9
|
+
import type { ToolDefinition } from "../../../../types/index.js";
|
|
10
|
+
export declare const ExecuteCodeSchema: z.ZodObject<{
|
|
11
|
+
code: z.ZodString;
|
|
12
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
readonly: z.ZodOptional<z.ZodBoolean>;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
/**
|
|
16
|
+
* Create the pg_execute_code tool
|
|
17
|
+
*/
|
|
18
|
+
export declare function createExecuteCodeTool(adapter: PostgresAdapter): ToolDefinition;
|
|
19
|
+
/**
|
|
20
|
+
* Get all Code Mode tools
|
|
21
|
+
*/
|
|
22
|
+
export declare function getCodeModeTools(adapter: PostgresAdapter): ToolDefinition[];
|
|
23
|
+
/**
|
|
24
|
+
* Cleanup Code Mode resources (call on server shutdown)
|
|
25
|
+
*/
|
|
26
|
+
export declare function cleanupCodeMode(): void;
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/codemode/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAYjE,eAAO,MAAM,iBAAiB;;;;iBAc5B,CAAC;AA4BH;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,GACvB,cAAc,CA6HhB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,EAAE,CAE3E;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAKtC"}
|