@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,299 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pgcrypto Setup Prompt
|
|
3
|
+
*
|
|
4
|
+
* Complete guide for setting up cryptographic functions with pgcrypto.
|
|
5
|
+
*/
|
|
6
|
+
export function createSetupPgcryptoPrompt() {
|
|
7
|
+
return {
|
|
8
|
+
name: "pg_setup_pgcrypto",
|
|
9
|
+
description: "Complete guide for setting up cryptographic functions with pgcrypto including hashing, encryption, and secure password storage.",
|
|
10
|
+
arguments: [
|
|
11
|
+
{
|
|
12
|
+
name: "useCase",
|
|
13
|
+
description: "Use case: password_hashing, encryption, uuid, hmac",
|
|
14
|
+
required: false,
|
|
15
|
+
},
|
|
16
|
+
],
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
18
|
+
handler: async (args, _context) => {
|
|
19
|
+
const useCase = args["useCase"] ?? "password_hashing";
|
|
20
|
+
return `# pgcrypto Setup Guide - ${useCase
|
|
21
|
+
.split("_")
|
|
22
|
+
.map((w) => w.charAt(0).toUpperCase() + w.slice(1))
|
|
23
|
+
.join(" ")}
|
|
24
|
+
|
|
25
|
+
## pgcrypto Overview
|
|
26
|
+
|
|
27
|
+
pgcrypto provides cryptographic functions for PostgreSQL:
|
|
28
|
+
- **Hashing:** SHA-256, SHA-512, MD5, etc.
|
|
29
|
+
- **Password hashing:** bcrypt, scrypt (via crypt/gen_salt)
|
|
30
|
+
- **Symmetric encryption:** AES with PGP
|
|
31
|
+
- **Random generation:** Secure UUIDs, random bytes
|
|
32
|
+
- **HMAC:** Message authentication
|
|
33
|
+
|
|
34
|
+
## Setup Steps
|
|
35
|
+
|
|
36
|
+
### 1. Install pgcrypto
|
|
37
|
+
|
|
38
|
+
\`\`\`sql
|
|
39
|
+
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
|
40
|
+
SELECT * FROM pg_extension WHERE extname = 'pgcrypto';
|
|
41
|
+
\`\`\`
|
|
42
|
+
|
|
43
|
+
${useCase === "password_hashing"
|
|
44
|
+
? `
|
|
45
|
+
### 2. Secure Password Storage
|
|
46
|
+
|
|
47
|
+
**The RIGHT way: bcrypt with crypt()**
|
|
48
|
+
|
|
49
|
+
\`\`\`sql
|
|
50
|
+
-- Store password hash
|
|
51
|
+
INSERT INTO users (email, password_hash)
|
|
52
|
+
VALUES (
|
|
53
|
+
'user@example.com',
|
|
54
|
+
crypt('mypassword', gen_salt('bf', 10)) -- bcrypt with cost 10
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
-- Verify password
|
|
58
|
+
SELECT id, email FROM users
|
|
59
|
+
WHERE email = 'user@example.com'
|
|
60
|
+
AND password_hash = crypt('mypassword', password_hash);
|
|
61
|
+
\`\`\`
|
|
62
|
+
|
|
63
|
+
**Salt algorithms:**
|
|
64
|
+
| Algorithm | \`gen_salt()\` | Security | Speed |
|
|
65
|
+
|-----------|--------------|----------|-------|
|
|
66
|
+
| bcrypt | \`'bf'\` | ✓ Best | Slowest (good!) |
|
|
67
|
+
| DES extended | \`'xdes'\` | ✗ Weak | Fast |
|
|
68
|
+
| MD5 | \`'md5'\` | ✗ Avoid | Fast |
|
|
69
|
+
|
|
70
|
+
**bcrypt cost factors:**
|
|
71
|
+
\`\`\`sql
|
|
72
|
+
SELECT gen_salt('bf', 8); -- Faster, less secure
|
|
73
|
+
SELECT gen_salt('bf', 10); -- Good balance (recommended)
|
|
74
|
+
SELECT gen_salt('bf', 12); -- Slower, more secure
|
|
75
|
+
SELECT gen_salt('bf', 14); -- Very slow, very secure
|
|
76
|
+
\`\`\`
|
|
77
|
+
|
|
78
|
+
**Complete user table:**
|
|
79
|
+
\`\`\`sql
|
|
80
|
+
CREATE TABLE users (
|
|
81
|
+
id SERIAL PRIMARY KEY,
|
|
82
|
+
email CITEXT UNIQUE NOT NULL,
|
|
83
|
+
password_hash TEXT NOT NULL,
|
|
84
|
+
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
85
|
+
last_login TIMESTAMPTZ
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
-- Hash on insert
|
|
89
|
+
CREATE OR REPLACE FUNCTION hash_password()
|
|
90
|
+
RETURNS TRIGGER AS $$
|
|
91
|
+
BEGIN
|
|
92
|
+
IF NEW.password_hash !~ '^\\$2[aby]\\$' THEN
|
|
93
|
+
NEW.password_hash := crypt(NEW.password_hash, gen_salt('bf', 10));
|
|
94
|
+
END IF;
|
|
95
|
+
RETURN NEW;
|
|
96
|
+
END;
|
|
97
|
+
$$ LANGUAGE plpgsql;
|
|
98
|
+
|
|
99
|
+
CREATE TRIGGER hash_password_trigger
|
|
100
|
+
BEFORE INSERT OR UPDATE OF password_hash ON users
|
|
101
|
+
FOR EACH ROW EXECUTE FUNCTION hash_password();
|
|
102
|
+
\`\`\`
|
|
103
|
+
`
|
|
104
|
+
: useCase === "encryption"
|
|
105
|
+
? `
|
|
106
|
+
### 2. Symmetric Encryption (AES)
|
|
107
|
+
|
|
108
|
+
**Encrypt sensitive data:**
|
|
109
|
+
\`\`\`sql
|
|
110
|
+
-- Encrypt with AES (via PGP symmetric)
|
|
111
|
+
INSERT INTO secrets (name, encrypted_value)
|
|
112
|
+
VALUES (
|
|
113
|
+
'api_key',
|
|
114
|
+
pgp_sym_encrypt('sk-1234567890abcdef', 'my-encryption-key')
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
-- Decrypt
|
|
118
|
+
SELECT name, pgp_sym_decrypt(encrypted_value, 'my-encryption-key') as value
|
|
119
|
+
FROM secrets
|
|
120
|
+
WHERE name = 'api_key';
|
|
121
|
+
\`\`\`
|
|
122
|
+
|
|
123
|
+
**Table design for encrypted data:**
|
|
124
|
+
\`\`\`sql
|
|
125
|
+
CREATE TABLE secrets (
|
|
126
|
+
id SERIAL PRIMARY KEY,
|
|
127
|
+
name VARCHAR(255) UNIQUE NOT NULL,
|
|
128
|
+
encrypted_value BYTEA NOT NULL, -- Encrypted data is binary
|
|
129
|
+
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
-- Create index on name (can't index encrypted content)
|
|
133
|
+
CREATE INDEX ON secrets (name);
|
|
134
|
+
\`\`\`
|
|
135
|
+
|
|
136
|
+
**Encryption options:**
|
|
137
|
+
\`\`\`sql
|
|
138
|
+
-- With compression
|
|
139
|
+
SELECT pgp_sym_encrypt('data', 'key', 'compress-algo=1');
|
|
140
|
+
|
|
141
|
+
-- With specific cipher
|
|
142
|
+
SELECT pgp_sym_encrypt('data', 'key', 'cipher-algo=aes256');
|
|
143
|
+
\`\`\`
|
|
144
|
+
|
|
145
|
+
**⚠️ Key management is crucial:**
|
|
146
|
+
- Never hardcode keys in SQL
|
|
147
|
+
- Use environment variables or key management service
|
|
148
|
+
- Rotate keys periodically
|
|
149
|
+
- Consider column-level encryption only for truly sensitive data
|
|
150
|
+
`
|
|
151
|
+
: useCase === "uuid"
|
|
152
|
+
? `
|
|
153
|
+
### 2. Secure UUID Generation
|
|
154
|
+
|
|
155
|
+
**Generate UUID v4 (random):**
|
|
156
|
+
\`\`\`sql
|
|
157
|
+
SELECT gen_random_uuid();
|
|
158
|
+
-- Result: 550e8400-e29b-41d4-a716-446655440000
|
|
159
|
+
|
|
160
|
+
-- Use as primary key
|
|
161
|
+
CREATE TABLE sessions (
|
|
162
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
163
|
+
user_id INTEGER REFERENCES users(id),
|
|
164
|
+
token TEXT NOT NULL,
|
|
165
|
+
expires_at TIMESTAMPTZ NOT NULL,
|
|
166
|
+
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
167
|
+
);
|
|
168
|
+
|
|
169
|
+
-- Insert without specifying ID
|
|
170
|
+
INSERT INTO sessions (user_id, token, expires_at)
|
|
171
|
+
VALUES (1, gen_random_bytes(32)::text, NOW() + INTERVAL '24 hours')
|
|
172
|
+
RETURNING id;
|
|
173
|
+
\`\`\`
|
|
174
|
+
|
|
175
|
+
**PostgreSQL 13+ has built-in gen_random_uuid()**
|
|
176
|
+
For older versions, pgcrypto provides it.
|
|
177
|
+
|
|
178
|
+
**Random bytes for tokens:**
|
|
179
|
+
\`\`\`sql
|
|
180
|
+
-- Generate secure token (32 bytes = 256 bits)
|
|
181
|
+
SELECT encode(gen_random_bytes(32), 'hex') as token;
|
|
182
|
+
|
|
183
|
+
-- URL-safe base64 token
|
|
184
|
+
SELECT translate(
|
|
185
|
+
encode(gen_random_bytes(32), 'base64'),
|
|
186
|
+
'+/', '-_'
|
|
187
|
+
) as token;
|
|
188
|
+
\`\`\`
|
|
189
|
+
`
|
|
190
|
+
: `
|
|
191
|
+
### 2. HMAC for Message Authentication
|
|
192
|
+
|
|
193
|
+
**Sign data with HMAC:**
|
|
194
|
+
\`\`\`sql
|
|
195
|
+
-- Create HMAC-SHA256 signature
|
|
196
|
+
SELECT encode(
|
|
197
|
+
hmac('message to sign', 'secret-key', 'sha256'),
|
|
198
|
+
'hex'
|
|
199
|
+
) as signature;
|
|
200
|
+
|
|
201
|
+
-- Verify signature
|
|
202
|
+
SELECT encode(hmac('message to sign', 'secret-key', 'sha256'), 'hex')
|
|
203
|
+
= 'expected_signature_hex';
|
|
204
|
+
\`\`\`
|
|
205
|
+
|
|
206
|
+
**Webhook signature verification:**
|
|
207
|
+
\`\`\`sql
|
|
208
|
+
CREATE OR REPLACE FUNCTION verify_webhook_signature(
|
|
209
|
+
payload TEXT,
|
|
210
|
+
signature TEXT,
|
|
211
|
+
secret TEXT
|
|
212
|
+
) RETURNS BOOLEAN AS $$
|
|
213
|
+
BEGIN
|
|
214
|
+
RETURN encode(hmac(payload, secret, 'sha256'), 'hex') = signature;
|
|
215
|
+
END;
|
|
216
|
+
$$ LANGUAGE plpgsql IMMUTABLE;
|
|
217
|
+
|
|
218
|
+
-- Use in webhook processing
|
|
219
|
+
SELECT * FROM webhooks
|
|
220
|
+
WHERE verify_webhook_signature(body, header_signature, webhook_secret);
|
|
221
|
+
\`\`\`
|
|
222
|
+
|
|
223
|
+
**HMAC algorithms:**
|
|
224
|
+
| Algorithm | Function | Output Size |
|
|
225
|
+
|-----------|----------|-------------|
|
|
226
|
+
| SHA-256 | \`hmac(data, key, 'sha256')\` | 32 bytes |
|
|
227
|
+
| SHA-512 | \`hmac(data, key, 'sha512')\` | 64 bytes |
|
|
228
|
+
| SHA-384 | \`hmac(data, key, 'sha384')\` | 48 bytes |
|
|
229
|
+
`}
|
|
230
|
+
|
|
231
|
+
### 3. Data Hashing
|
|
232
|
+
|
|
233
|
+
**For data integrity (not passwords!):**
|
|
234
|
+
\`\`\`sql
|
|
235
|
+
-- SHA-256 hash
|
|
236
|
+
SELECT encode(digest('data to hash', 'sha256'), 'hex');
|
|
237
|
+
|
|
238
|
+
-- SHA-512 hash
|
|
239
|
+
SELECT encode(digest('data to hash', 'sha512'), 'hex');
|
|
240
|
+
|
|
241
|
+
-- MD5 (only for checksums, NOT security)
|
|
242
|
+
SELECT encode(digest('data', 'md5'), 'hex');
|
|
243
|
+
\`\`\`
|
|
244
|
+
|
|
245
|
+
**Hash algorithms:**
|
|
246
|
+
| Algorithm | Security | Use Case |
|
|
247
|
+
|-----------|----------|----------|
|
|
248
|
+
| SHA-256 | ✓ Good | Data integrity, fingerprints |
|
|
249
|
+
| SHA-512 | ✓ Better | Higher security needs |
|
|
250
|
+
| MD5 | ✗ Broken | Legacy checksums only |
|
|
251
|
+
| SHA-1 | ✗ Weak | Avoid |
|
|
252
|
+
|
|
253
|
+
## Available Tools
|
|
254
|
+
|
|
255
|
+
| Tool | Purpose |
|
|
256
|
+
|------|---------|
|
|
257
|
+
| \`pg_pgcrypto_create_extension\` | Enable pgcrypto |
|
|
258
|
+
| \`pg_pgcrypto_hash\` | Hash data with digest() |
|
|
259
|
+
| \`pg_pgcrypto_hmac\` | HMAC authentication |
|
|
260
|
+
| \`pg_pgcrypto_encrypt\` | Symmetric encryption |
|
|
261
|
+
| \`pg_pgcrypto_decrypt\` | Symmetric decryption |
|
|
262
|
+
| \`pg_pgcrypto_gen_random_uuid\` | Generate UUID v4 |
|
|
263
|
+
| \`pg_pgcrypto_gen_random_bytes\` | Generate random bytes |
|
|
264
|
+
| \`pg_pgcrypto_gen_salt\` | Generate salt |
|
|
265
|
+
| \`pg_pgcrypto_crypt\` | Password hashing |
|
|
266
|
+
|
|
267
|
+
## Security Best Practices
|
|
268
|
+
|
|
269
|
+
1. **Passwords:** Always use bcrypt via \`crypt()\` with cost ≥10
|
|
270
|
+
2. **Encryption keys:** Never store in database or code
|
|
271
|
+
3. **Random data:** Use \`gen_random_bytes()\`, never \`random()\`
|
|
272
|
+
4. **Hashing:** SHA-256 minimum, avoid MD5/SHA-1
|
|
273
|
+
5. **Salt:** Generated fresh for each password
|
|
274
|
+
6. **Key rotation:** Plan for changing encryption keys
|
|
275
|
+
|
|
276
|
+
## Common Pitfalls
|
|
277
|
+
|
|
278
|
+
- ❌ Using MD5 or SHA-1 for passwords (use bcrypt!)
|
|
279
|
+
- ❌ Storing encryption keys in the database
|
|
280
|
+
- ❌ Using predictable values instead of \`gen_random_bytes()\`
|
|
281
|
+
- ❌ Low bcrypt cost factor (use at least 10)
|
|
282
|
+
- ❌ Encrypting everything (performance impact)
|
|
283
|
+
|
|
284
|
+
## When to Use What
|
|
285
|
+
|
|
286
|
+
| Need | Solution |
|
|
287
|
+
|------|----------|
|
|
288
|
+
| Password storage | \`crypt()\` + \`gen_salt('bf')\` |
|
|
289
|
+
| Data integrity | \`digest(data, 'sha256')\` |
|
|
290
|
+
| Message authentication | \`hmac(data, key, 'sha256')\` |
|
|
291
|
+
| Sensitive data at rest | \`pgp_sym_encrypt()\` |
|
|
292
|
+
| Unique identifiers | \`gen_random_uuid()\` |
|
|
293
|
+
| Session tokens | \`gen_random_bytes(32)\` |
|
|
294
|
+
|
|
295
|
+
**Pro Tip:** pgcrypto + citext = secure authentication done right!`;
|
|
296
|
+
},
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=pgcrypto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pgcrypto.js","sourceRoot":"","sources":["../../../../src/adapters/postgresql/prompts/pgcrypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,iIAAiI;QACnI,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,oDAAoD;gBACjE,QAAQ,EAAE,KAAK;aAChB;SACF;QACD,4DAA4D;QAC5D,OAAO,EAAE,KAAK,EACZ,IAA4B,EAC5B,QAAwB,EACP,EAAE;YACnB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC;YAEtD,OAAO,4BAA4B,OAAO;iBACvC,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAClD,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;EAqBhB,OAAO,KAAK,kBAAkB;gBAC5B,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DL;gBACG,CAAC,CAAC,OAAO,KAAK,YAAY;oBACxB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CP;oBACK,CAAC,CAAC,OAAO,KAAK,MAAM;wBAClB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCT;wBACO,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mEAkEmE,CAAC;QAChE,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pgvector Setup Prompt
|
|
3
|
+
*
|
|
4
|
+
* Complete guide for setting up semantic search with pgvector.
|
|
5
|
+
*/
|
|
6
|
+
import type { PromptDefinition } from "../../../types/index.js";
|
|
7
|
+
export declare function createSetupPgvectorPrompt(): PromptDefinition;
|
|
8
|
+
//# sourceMappingURL=pgvector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pgvector.d.ts","sourceRoot":"","sources":["../../../../src/adapters/postgresql/prompts/pgvector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAkB,MAAM,yBAAyB,CAAC;AAEhF,wBAAgB,yBAAyB,IAAI,gBAAgB,CAkJ5D"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pgvector Setup Prompt
|
|
3
|
+
*
|
|
4
|
+
* Complete guide for setting up semantic search with pgvector.
|
|
5
|
+
*/
|
|
6
|
+
export function createSetupPgvectorPrompt() {
|
|
7
|
+
return {
|
|
8
|
+
name: "pg_setup_pgvector",
|
|
9
|
+
description: "Complete guide for setting up semantic search with pgvector including table design, indexing, and queries.",
|
|
10
|
+
arguments: [
|
|
11
|
+
{
|
|
12
|
+
name: "contentType",
|
|
13
|
+
description: "Type of content: documents, products, images",
|
|
14
|
+
required: false,
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: "dimensions",
|
|
18
|
+
description: "Embedding dimensions (default: 1536 for OpenAI ada-002)",
|
|
19
|
+
required: false,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: "distanceMetric",
|
|
23
|
+
description: "Distance metric: cosine, l2, inner_product",
|
|
24
|
+
required: false,
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
28
|
+
handler: async (args, _context) => {
|
|
29
|
+
const contentType = args["contentType"] ?? "documents";
|
|
30
|
+
const dimensions = args["dimensions"] ?? "1536";
|
|
31
|
+
const distanceMetric = args["distanceMetric"] ?? "cosine";
|
|
32
|
+
return `# pgVector Setup Guide - ${contentType.charAt(0).toUpperCase() + contentType.slice(1)}
|
|
33
|
+
|
|
34
|
+
**Configuration:**
|
|
35
|
+
- Content Type: ${contentType}
|
|
36
|
+
- Embedding Dimensions: ${dimensions} (OpenAI ada-002 standard)
|
|
37
|
+
- Distance Metric: ${distanceMetric}
|
|
38
|
+
|
|
39
|
+
## Setup Steps
|
|
40
|
+
|
|
41
|
+
### 1. Install pgvector
|
|
42
|
+
|
|
43
|
+
\`\`\`sql
|
|
44
|
+
CREATE EXTENSION IF NOT EXISTS vector;
|
|
45
|
+
SELECT * FROM pg_extension WHERE extname = 'vector';
|
|
46
|
+
\`\`\`
|
|
47
|
+
|
|
48
|
+
### 2. Create Table
|
|
49
|
+
|
|
50
|
+
\`\`\`sql
|
|
51
|
+
CREATE TABLE ${contentType} (
|
|
52
|
+
id SERIAL PRIMARY KEY,
|
|
53
|
+
content TEXT NOT NULL,
|
|
54
|
+
metadata JSONB,
|
|
55
|
+
embedding vector(${dimensions}),
|
|
56
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
57
|
+
);
|
|
58
|
+
\`\`\`
|
|
59
|
+
|
|
60
|
+
### 3. Distance Metrics
|
|
61
|
+
|
|
62
|
+
**Cosine (${distanceMetric === "cosine" ? "✓ Selected" : ""})** - Most common for embeddings:
|
|
63
|
+
\`\`\`sql
|
|
64
|
+
SELECT id, 1 - (embedding <=> query_vector) as similarity
|
|
65
|
+
FROM ${contentType} ORDER BY embedding <=> query_vector LIMIT 10;
|
|
66
|
+
\`\`\`
|
|
67
|
+
|
|
68
|
+
**L2/Euclidean (${distanceMetric === "l2" ? "✓ Selected" : ""}):**
|
|
69
|
+
\`\`\`sql
|
|
70
|
+
SELECT id, embedding <-> query_vector as distance
|
|
71
|
+
FROM ${contentType} ORDER BY embedding <-> query_vector LIMIT 10;
|
|
72
|
+
\`\`\`
|
|
73
|
+
|
|
74
|
+
**Inner Product (${distanceMetric === "inner_product" ? "✓ Selected" : ""}):**
|
|
75
|
+
\`\`\`sql
|
|
76
|
+
SELECT id, (embedding <#> query_vector) * -1 as similarity
|
|
77
|
+
FROM ${contentType} ORDER BY embedding <#> query_vector LIMIT 10;
|
|
78
|
+
\`\`\`
|
|
79
|
+
|
|
80
|
+
### 4. Create Index
|
|
81
|
+
|
|
82
|
+
**HNSW (Best Quality):**
|
|
83
|
+
\`\`\`sql
|
|
84
|
+
CREATE INDEX ON ${contentType}
|
|
85
|
+
USING hnsw (embedding vector_${distanceMetric}_ops)
|
|
86
|
+
WITH (m = 16, ef_construction = 64);
|
|
87
|
+
\`\`\`
|
|
88
|
+
|
|
89
|
+
**IVFFlat (Faster Build):**
|
|
90
|
+
\`\`\`sql
|
|
91
|
+
CREATE INDEX ON ${contentType}
|
|
92
|
+
USING ivfflat (embedding vector_${distanceMetric}_ops)
|
|
93
|
+
WITH (lists = 100);
|
|
94
|
+
\`\`\`
|
|
95
|
+
|
|
96
|
+
### 5. Query Similar Content
|
|
97
|
+
|
|
98
|
+
Use \`pg_vector_search\`:
|
|
99
|
+
\`\`\`
|
|
100
|
+
pg_vector_search(
|
|
101
|
+
table_name: "${contentType}",
|
|
102
|
+
vector_column: "embedding",
|
|
103
|
+
query_vector: [...],
|
|
104
|
+
distance_metric: "${distanceMetric}",
|
|
105
|
+
limit: 10
|
|
106
|
+
)
|
|
107
|
+
\`\`\`
|
|
108
|
+
|
|
109
|
+
### 6. Performance Tuning
|
|
110
|
+
|
|
111
|
+
- **Small dataset (<100K):** m=16, ef_construction=64
|
|
112
|
+
- **Medium dataset (100K-1M):** m=32, ef_construction=128
|
|
113
|
+
- **Large dataset (>1M):** m=48, ef_construction=256
|
|
114
|
+
|
|
115
|
+
Use \`pg_vector_performance\` to benchmark your configuration.
|
|
116
|
+
|
|
117
|
+
## Available Tools
|
|
118
|
+
|
|
119
|
+
| Tool | Purpose |
|
|
120
|
+
|------|---------|
|
|
121
|
+
| \`pg_vector_create_extension\` | Enable pgvector extension |
|
|
122
|
+
| \`pg_vector_add_column\` | Add vector column to table |
|
|
123
|
+
| \`pg_vector_search\` | Similarity search with distance metrics |
|
|
124
|
+
| \`pg_vector_create_index\` | Create HNSW or IVFFlat index |
|
|
125
|
+
| \`pg_vector_update\` | Update vector values |
|
|
126
|
+
| \`pg_vector_batch_insert\` | Bulk insert embeddings |
|
|
127
|
+
| \`pg_vector_aggregate\` | Aggregate vector operations |
|
|
128
|
+
| \`pg_vector_distance\` | Calculate distance between vectors |
|
|
129
|
+
| \`pg_vector_nearest\` | Find K nearest neighbors |
|
|
130
|
+
| \`pg_vector_hybrid_search\` | Combine vector + keyword search |
|
|
131
|
+
| \`pg_vector_normalize\` | Normalize vectors |
|
|
132
|
+
| \`pg_vector_performance\` | Benchmark configuration |
|
|
133
|
+
| \`pg_vector_info\` | Get pgvector version and columns |
|
|
134
|
+
| \`pg_vector_drop_index\` | Drop vector index |
|
|
135
|
+
| \`pg_vector_reindex\` | Rebuild vector index |
|
|
136
|
+
|
|
137
|
+
## Best Practices
|
|
138
|
+
|
|
139
|
+
1. Normalize embeddings if using inner product
|
|
140
|
+
2. Batch insert embeddings for performance
|
|
141
|
+
3. Use HNSW indexes for production
|
|
142
|
+
4. VACUUM ANALYZE after bulk inserts
|
|
143
|
+
|
|
144
|
+
**Pro Tip:** pgvector is PostgreSQL's killer AI feature - no other database does vector search this well!`;
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=pgvector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pgvector.js","sourceRoot":"","sources":["../../../../src/adapters/postgresql/prompts/pgvector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,4GAA4G;QAC9G,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,8CAA8C;gBAC3D,QAAQ,EAAE,KAAK;aAChB;YACD;gBACE,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,yDAAyD;gBACtE,QAAQ,EAAE,KAAK;aAChB;YACD;gBACE,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EAAE,4CAA4C;gBACzD,QAAQ,EAAE,KAAK;aAChB;SACF;QACD,4DAA4D;QAC5D,OAAO,EAAE,KAAK,EACZ,IAA4B,EAC5B,QAAwB,EACP,EAAE;YACnB,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC;YAChD,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,QAAQ,CAAC;YAE1D,OAAO,4BAA4B,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;;;kBAGjF,WAAW;0BACH,UAAU;qBACf,cAAc;;;;;;;;;;;;;;eAcpB,WAAW;;;;uBAIH,UAAU;;;;;;;YAOrB,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;;;OAGpD,WAAW;;;kBAGA,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;;;OAGtD,WAAW;;;mBAGC,cAAc,KAAK,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;;;OAGlE,WAAW;;;;;;;kBAOA,WAAW;+BACE,cAAc;;;;;;kBAM3B,WAAW;kCACK,cAAc;;;;;;;;;mBAS7B,WAAW;;;wBAGN,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0GAwCoE,CAAC;QACvG,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostGIS Setup Prompt
|
|
3
|
+
*
|
|
4
|
+
* Complete guide for setting up geospatial operations with PostGIS.
|
|
5
|
+
*/
|
|
6
|
+
import type { PromptDefinition } from "../../../types/index.js";
|
|
7
|
+
export declare function createSetupPostgisPrompt(): PromptDefinition;
|
|
8
|
+
//# sourceMappingURL=postgis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgis.d.ts","sourceRoot":"","sources":["../../../../src/adapters/postgresql/prompts/postgis.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAkB,MAAM,yBAAyB,CAAC;AAEhF,wBAAgB,wBAAwB,IAAI,gBAAgB,CAuM3D"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostGIS Setup Prompt
|
|
3
|
+
*
|
|
4
|
+
* Complete guide for setting up geospatial operations with PostGIS.
|
|
5
|
+
*/
|
|
6
|
+
export function createSetupPostgisPrompt() {
|
|
7
|
+
return {
|
|
8
|
+
name: "pg_setup_postgis",
|
|
9
|
+
description: "Complete guide for setting up geospatial operations with PostGIS including spatial types, indexing, and queries.",
|
|
10
|
+
arguments: [
|
|
11
|
+
{
|
|
12
|
+
name: "useCase",
|
|
13
|
+
description: "Use case: mapping, distance_calc, spatial_analysis, routing",
|
|
14
|
+
required: false,
|
|
15
|
+
},
|
|
16
|
+
],
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
18
|
+
handler: async (args, _context) => {
|
|
19
|
+
const useCase = args["useCase"] ?? "mapping";
|
|
20
|
+
let content = `# PostGIS Setup Guide - ${useCase
|
|
21
|
+
.split("_")
|
|
22
|
+
.map((w) => w.charAt(0).toUpperCase() + w.slice(1))
|
|
23
|
+
.join(" ")}
|
|
24
|
+
|
|
25
|
+
## PostGIS Overview
|
|
26
|
+
|
|
27
|
+
PostGIS provides:
|
|
28
|
+
- 400+ spatial functions
|
|
29
|
+
- Spatial indexing (GiST, BRIN, SP-GiST)
|
|
30
|
+
- Geometry and Geography data types
|
|
31
|
+
- Spatial relationship analysis
|
|
32
|
+
|
|
33
|
+
## Setup Steps
|
|
34
|
+
|
|
35
|
+
### 1. Install PostGIS
|
|
36
|
+
|
|
37
|
+
\`\`\`sql
|
|
38
|
+
CREATE EXTENSION IF NOT EXISTS postgis;
|
|
39
|
+
SELECT PostGIS_Full_Version();
|
|
40
|
+
\`\`\`
|
|
41
|
+
|
|
42
|
+
### 2. Spatial Data Types
|
|
43
|
+
|
|
44
|
+
**Geometry (Planar):** For local/regional mapping, uses projected coordinates
|
|
45
|
+
**Geography (Spherical):** For global mapping, uses lat/lon (WGS84)
|
|
46
|
+
|
|
47
|
+
**For ${useCase}:** Use ${useCase === "mapping" || useCase === "routing" ? "Geography for global mapping" : "Geometry for local analysis"}.
|
|
48
|
+
|
|
49
|
+
### 3. Create Spatial Table
|
|
50
|
+
`;
|
|
51
|
+
if (useCase === "mapping") {
|
|
52
|
+
content += `
|
|
53
|
+
\`\`\`sql
|
|
54
|
+
CREATE TABLE locations (
|
|
55
|
+
id SERIAL PRIMARY KEY,
|
|
56
|
+
name VARCHAR(255) NOT NULL,
|
|
57
|
+
description TEXT,
|
|
58
|
+
location GEOGRAPHY(POINT, 4326), -- WGS84 (GPS)
|
|
59
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
INSERT INTO locations (name, location)
|
|
63
|
+
VALUES ('San Francisco', ST_GeographyFromText('POINT(-122.4194 37.7749)'));
|
|
64
|
+
\`\`\`
|
|
65
|
+
`;
|
|
66
|
+
}
|
|
67
|
+
else if (useCase === "distance_calc") {
|
|
68
|
+
content += `
|
|
69
|
+
\`\`\`sql
|
|
70
|
+
CREATE TABLE points_of_interest (
|
|
71
|
+
id SERIAL PRIMARY KEY,
|
|
72
|
+
name VARCHAR(255),
|
|
73
|
+
category VARCHAR(50),
|
|
74
|
+
location GEOGRAPHY(POINT, 4326)
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
-- Find nearest POIs
|
|
78
|
+
SELECT name,
|
|
79
|
+
ST_Distance(location, ST_GeographyFromText('POINT(-122.4194 37.7749)')) / 1000 as distance_km
|
|
80
|
+
FROM points_of_interest
|
|
81
|
+
ORDER BY location <-> ST_GeographyFromText('POINT(-122.4194 37.7749)')
|
|
82
|
+
LIMIT 10;
|
|
83
|
+
\`\`\`
|
|
84
|
+
`;
|
|
85
|
+
}
|
|
86
|
+
else if (useCase === "spatial_analysis") {
|
|
87
|
+
content += `
|
|
88
|
+
\`\`\`sql
|
|
89
|
+
CREATE TABLE regions (
|
|
90
|
+
id SERIAL PRIMARY KEY,
|
|
91
|
+
name VARCHAR(255),
|
|
92
|
+
boundary GEOGRAPHY(POLYGON, 4326),
|
|
93
|
+
properties JSONB
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
-- Check if point is within region
|
|
97
|
+
SELECT r.name FROM regions r
|
|
98
|
+
WHERE ST_Contains(r.boundary::geometry,
|
|
99
|
+
ST_GeographyFromText('POINT(-122.4194 37.7749)')::geometry);
|
|
100
|
+
\`\`\`
|
|
101
|
+
`;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
content += `
|
|
105
|
+
\`\`\`sql
|
|
106
|
+
CREATE TABLE roads (
|
|
107
|
+
id SERIAL PRIMARY KEY,
|
|
108
|
+
name VARCHAR(255),
|
|
109
|
+
road_type VARCHAR(50),
|
|
110
|
+
geometry GEOGRAPHY(LINESTRING, 4326),
|
|
111
|
+
length_meters FLOAT
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
-- Find roads within 1km
|
|
115
|
+
SELECT name, road_type FROM roads
|
|
116
|
+
WHERE ST_DWithin(geometry,
|
|
117
|
+
ST_GeographyFromText('POINT(-122.4194 37.7749)'), 1000);
|
|
118
|
+
\`\`\`
|
|
119
|
+
`;
|
|
120
|
+
}
|
|
121
|
+
content += `
|
|
122
|
+
### 4. Create Spatial Index
|
|
123
|
+
|
|
124
|
+
\`\`\`sql
|
|
125
|
+
CREATE INDEX idx_locations_geog ON locations USING GIST (location);
|
|
126
|
+
\`\`\`
|
|
127
|
+
|
|
128
|
+
### 5. Common Spatial Queries
|
|
129
|
+
|
|
130
|
+
**Distance Queries:**
|
|
131
|
+
Use \`pg_geo_distance\`:
|
|
132
|
+
\`\`\`
|
|
133
|
+
pg_geo_distance(
|
|
134
|
+
table_name: "locations",
|
|
135
|
+
geometry_column: "location",
|
|
136
|
+
reference_point: "POINT(-122.4194 37.7749)",
|
|
137
|
+
max_distance: 10.0,
|
|
138
|
+
distance_unit: "kilometers"
|
|
139
|
+
)
|
|
140
|
+
\`\`\`
|
|
141
|
+
|
|
142
|
+
**Containment Queries:**
|
|
143
|
+
Use \`pg_geo_within\` to find points within a polygon.
|
|
144
|
+
|
|
145
|
+
**Buffer Operations:**
|
|
146
|
+
Use \`pg_geo_buffer\` to create buffer zones.
|
|
147
|
+
|
|
148
|
+
### 6. GeoJSON Output
|
|
149
|
+
|
|
150
|
+
\`\`\`sql
|
|
151
|
+
SELECT jsonb_build_object(
|
|
152
|
+
'type', 'Feature',
|
|
153
|
+
'geometry', ST_AsGeoJSON(location)::jsonb,
|
|
154
|
+
'properties', jsonb_build_object('name', name)
|
|
155
|
+
) as geojson
|
|
156
|
+
FROM locations;
|
|
157
|
+
\`\`\`
|
|
158
|
+
|
|
159
|
+
## Available Tools
|
|
160
|
+
|
|
161
|
+
| Tool | Purpose |
|
|
162
|
+
|------|---------|
|
|
163
|
+
| \`pg_postgis_create_extension\` | Enable PostGIS extension |
|
|
164
|
+
| \`pg_geometry_column\` | Add geometry/geography column |
|
|
165
|
+
| \`pg_spatial_index\` | Create spatial GiST index |
|
|
166
|
+
| \`pg_distance\` | Calculate distance between points |
|
|
167
|
+
| \`pg_buffer\` | Create buffer around geometry |
|
|
168
|
+
| \`pg_intersection\` | Find intersection of geometries |
|
|
169
|
+
| \`pg_within\` | Check if geometry is within another |
|
|
170
|
+
| \`pg_contains\` | Check if geometry contains another |
|
|
171
|
+
| \`pg_bounding_box\` | Get bounding box of geometry |
|
|
172
|
+
| \`pg_geocode\` | Geocode addresses (if geocoder installed) |
|
|
173
|
+
| \`pg_geometry_buffer\` | Buffer operations on table data |
|
|
174
|
+
| \`pg_geo_cluster\` | Cluster spatial data |
|
|
175
|
+
| \`pg_geo_index_optimize\` | Analyze spatial index performance |
|
|
176
|
+
| \`pg_nearest_neighbor\` | Find K nearest neighbors |
|
|
177
|
+
| \`pg_spatial_join\` | Join tables on spatial relationship |
|
|
178
|
+
| \`pg_postgis_info\` | Get PostGIS version and capabilities |
|
|
179
|
+
|
|
180
|
+
## Best Practices
|
|
181
|
+
|
|
182
|
+
1. **Always use spatial indexes** - 100x+ performance improvement
|
|
183
|
+
2. **Choose appropriate SRID** - 4326 for global, local SRID for regional
|
|
184
|
+
3. **Use geography for distance** - More accurate than geometry for Earth
|
|
185
|
+
4. **Validate geometries** - Use ST_IsValid()
|
|
186
|
+
5. **VACUUM ANALYZE regularly**
|
|
187
|
+
|
|
188
|
+
## Common Pitfalls
|
|
189
|
+
|
|
190
|
+
- ❌ Mixing geometry and geography without casting
|
|
191
|
+
- ❌ Not using spatial indexes for large datasets
|
|
192
|
+
- ❌ Using wrong SRID for coordinate system
|
|
193
|
+
- ❌ Calculating area/distance on lat/lon without geography type
|
|
194
|
+
|
|
195
|
+
**Pro Tip:** PostGIS is PostgreSQL's GIS superpower - it's the industry standard for spatial databases!`;
|
|
196
|
+
return content;
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=postgis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgis.js","sourceRoot":"","sources":["../../../../src/adapters/postgresql/prompts/postgis.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,kHAAkH;QACpH,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,SAAS;gBACf,WAAW,EACT,6DAA6D;gBAC/D,QAAQ,EAAE,KAAK;aAChB;SACF;QACD,4DAA4D;QAC5D,OAAO,EAAE,KAAK,EACZ,IAA4B,EAC5B,QAAwB,EACP,EAAE;YACnB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;YAE7C,IAAI,OAAO,GAAG,2BAA2B,OAAO;iBAC7C,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAClD,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;QAwBV,OAAO,WAAW,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,6BAA6B;;;CAGxI,CAAC;YAEI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,IAAI;;;;;;;;;;;;;CAalB,CAAC;YACI,CAAC;iBAAM,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;gBACvC,OAAO,IAAI;;;;;;;;;;;;;;;;CAgBlB,CAAC;YACI,CAAC;iBAAM,IAAI,OAAO,KAAK,kBAAkB,EAAE,CAAC;gBAC1C,OAAO,IAAI;;;;;;;;;;;;;;CAclB,CAAC;YACI,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI;;;;;;;;;;;;;;;CAelB,CAAC;YACI,CAAC;YAED,OAAO,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wGA0EuF,CAAC;YAEnG,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Activity Resource
|
|
3
|
+
*
|
|
4
|
+
* Current database connections and running queries with blocking detection.
|
|
5
|
+
*/
|
|
6
|
+
import type { PostgresAdapter } from "../PostgresAdapter.js";
|
|
7
|
+
import type { ResourceDefinition } from "../../../types/index.js";
|
|
8
|
+
export declare function createActivityResource(adapter: PostgresAdapter): ResourceDefinition;
|
|
9
|
+
//# sourceMappingURL=activity.d.ts.map
|