sqlew 3.6.10 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +318 -0
- package/README.md +54 -39
- package/assets/config.example.toml +93 -0
- package/assets/kanban-visualizer.png +0 -0
- package/assets/sample-agents/sqlew-architect.md +32 -13
- package/assets/sample-agents/sqlew-researcher.md +70 -17
- package/assets/sample-agents/sqlew-scrum-master.md +60 -25
- package/assets/schema.sql +2 -2
- package/dist/adapters/auth/auth-factory.d.ts +86 -0
- package/dist/adapters/auth/auth-factory.d.ts.map +1 -0
- package/dist/adapters/auth/auth-factory.js +103 -0
- package/dist/adapters/auth/auth-factory.js.map +1 -0
- package/dist/adapters/auth/auth-types.d.ts +30 -0
- package/dist/adapters/auth/auth-types.d.ts.map +1 -0
- package/dist/adapters/auth/auth-types.js +30 -0
- package/dist/adapters/auth/auth-types.js.map +1 -0
- package/dist/adapters/auth/base-auth-provider.d.ts +327 -0
- package/dist/adapters/auth/base-auth-provider.d.ts.map +1 -0
- package/dist/adapters/auth/base-auth-provider.js +111 -0
- package/dist/adapters/auth/base-auth-provider.js.map +1 -0
- package/dist/adapters/auth/direct-auth-provider.d.ts +356 -0
- package/dist/adapters/auth/direct-auth-provider.d.ts.map +1 -0
- package/dist/adapters/auth/direct-auth-provider.js +406 -0
- package/dist/adapters/auth/direct-auth-provider.js.map +1 -0
- package/dist/adapters/base-adapter.d.ts +638 -0
- package/dist/adapters/base-adapter.d.ts.map +1 -0
- package/dist/adapters/base-adapter.js +557 -0
- package/dist/adapters/base-adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +13 -2
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +27 -5
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/mysql-adapter.d.ts +547 -6
- package/dist/adapters/mysql-adapter.d.ts.map +1 -1
- package/dist/adapters/mysql-adapter.js +651 -32
- package/dist/adapters/mysql-adapter.js.map +1 -1
- package/dist/adapters/postgresql-adapter.d.ts +15 -4
- package/dist/adapters/postgresql-adapter.d.ts.map +1 -1
- package/dist/adapters/postgresql-adapter.js +19 -2
- package/dist/adapters/postgresql-adapter.js.map +1 -1
- package/dist/adapters/sqlite-adapter.d.ts +35 -5
- package/dist/adapters/sqlite-adapter.d.ts.map +1 -1
- package/dist/adapters/sqlite-adapter.js +57 -18
- package/dist/adapters/sqlite-adapter.js.map +1 -1
- package/dist/cli/db-dump.d.ts +32 -0
- package/dist/cli/db-dump.d.ts.map +1 -0
- package/dist/cli/db-dump.js +409 -0
- package/dist/cli/db-dump.js.map +1 -0
- package/dist/cli.js +24 -14
- package/dist/cli.js.map +1 -1
- package/dist/config/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/bootstrap/20251025020452_create_master_tables.js +7 -2
- package/dist/config/knex/bootstrap/20251025020452_create_master_tables.js.map +1 -0
- package/dist/config/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/bootstrap/20251025021152_create_transaction_tables.js +49 -50
- package/dist/config/knex/bootstrap/20251025021152_create_transaction_tables.js.map +1 -0
- package/dist/config/knex/bootstrap/20251025021351_create_indexes.d.ts.map +1 -0
- package/dist/config/knex/bootstrap/20251025021351_create_indexes.js.map +1 -0
- package/dist/config/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/bootstrap/20251025021416_seed_master_data.js +11 -6
- package/dist/config/knex/bootstrap/20251025021416_seed_master_data.js.map +1 -0
- package/dist/config/knex/bootstrap/20251025070349_create_views.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/bootstrap/20251025070349_create_views.js +66 -14
- package/dist/config/knex/bootstrap/20251025070349_create_views.js.map +1 -0
- package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js +22 -0
- package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js.map +1 -0
- package/dist/config/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251025082220_fix_task_dependencies_columns.js.map +1 -0
- package/dist/config/knex/enhancements/20251025090000_create_help_system_tables.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251025090000_create_help_system_tables.js +6 -0
- package/dist/config/knex/enhancements/20251025090000_create_help_system_tables.js.map +1 -0
- package/dist/config/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js +6 -0
- package/dist/config/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js.map +1 -0
- package/dist/config/knex/enhancements/20251025100000_seed_help_metadata.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251025100000_seed_help_metadata.js +6 -0
- package/dist/config/knex/enhancements/20251025100000_seed_help_metadata.js.map +1 -0
- package/dist/config/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251025100100_seed_remaining_use_cases.js.map +1 -0
- package/dist/config/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js +7 -0
- package/dist/config/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js.map +1 -0
- package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.js +62 -0
- package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.js.map +1 -0
- package/dist/config/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js.map +1 -0
- package/dist/config/knex/enhancements/20251027020000_update_agent_reusability.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251027020000_update_agent_reusability.js +6 -0
- package/dist/config/knex/enhancements/20251027020000_update_agent_reusability.js.map +1 -0
- package/dist/config/knex/enhancements/20251028000000_simplify_agent_system.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251028000000_simplify_agent_system.js +6 -0
- package/dist/config/knex/enhancements/20251028000000_simplify_agent_system.js.map +1 -0
- package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.d.ts +13 -0
- package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.js +48 -0
- package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.js.map +1 -0
- package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.d.ts +24 -0
- package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.js +189 -0
- package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.js.map +1 -0
- package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.d.ts +16 -0
- package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.js +65 -0
- package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.js.map +1 -0
- package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.d.ts +23 -0
- package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.js +118 -0
- package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.js.map +1 -0
- package/dist/config/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js.map +1 -0
- package/dist/config/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js.map +1 -0
- package/dist/config/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js.map +1 -0
- package/dist/config/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js.map +1 -0
- package/dist/config/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +1 -0
- package/dist/config/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js.map +1 -0
- package/dist/config/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js.map +1 -0
- package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.d.ts +49 -0
- package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js +864 -0
- package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js.map +1 -0
- package/dist/config/loader.d.ts +19 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +149 -4
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +261 -2
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/config/writer.d.ts +65 -0
- package/dist/config/writer.d.ts.map +1 -0
- package/dist/config/writer.js +139 -0
- package/dist/config/writer.js.map +1 -0
- package/dist/database.d.ts +11 -2
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +62 -6
- package/dist/database.js.map +1 -1
- package/dist/index.js +165 -35
- package/dist/index.js.map +1 -1
- package/dist/knexfile.d.ts.map +1 -1
- package/dist/knexfile.js +88 -12
- package/dist/knexfile.js.map +1 -1
- package/dist/tests/all-features.test.js +15 -3
- package/dist/tests/all-features.test.js.map +1 -1
- package/dist/tests/config-loader.test.d.ts +6 -0
- package/dist/tests/config-loader.test.d.ts.map +1 -0
- package/dist/tests/config-loader.test.js +201 -0
- package/dist/tests/config-loader.test.js.map +1 -0
- package/dist/tests/connection-manager-integration.test.d.ts +2 -0
- package/dist/tests/connection-manager-integration.test.d.ts.map +1 -0
- package/dist/tests/connection-manager-integration.test.js +431 -0
- package/dist/tests/connection-manager-integration.test.js.map +1 -0
- package/dist/tests/connection-manager.test.d.ts +2 -0
- package/dist/tests/connection-manager.test.d.ts.map +1 -0
- package/dist/tests/connection-manager.test.js +361 -0
- package/dist/tests/connection-manager.test.js.map +1 -0
- package/dist/tests/dump-import.test.d.ts +15 -0
- package/dist/tests/dump-import.test.d.ts.map +1 -0
- package/dist/tests/dump-import.test.js +430 -0
- package/dist/tests/dump-import.test.js.map +1 -0
- package/dist/tests/migration-idempotency.test.d.ts +2 -0
- package/dist/tests/migration-idempotency.test.d.ts.map +1 -0
- package/dist/tests/migration-idempotency.test.js +330 -0
- package/dist/tests/migration-idempotency.test.js.map +1 -0
- package/dist/tests/migration-upgrade-paths.test.d.ts +2 -0
- package/dist/tests/migration-upgrade-paths.test.d.ts.map +1 -0
- package/dist/tests/migration-upgrade-paths.test.js +248 -0
- package/dist/tests/migration-upgrade-paths.test.js.map +1 -0
- package/dist/tests/multi-project-migration.test.d.ts +17 -0
- package/dist/tests/multi-project-migration.test.d.ts.map +1 -0
- package/dist/tests/multi-project-migration.test.js +399 -0
- package/dist/tests/multi-project-migration.test.js.map +1 -0
- package/dist/tests/multi-project.test.d.ts +5 -0
- package/dist/tests/multi-project.test.d.ts.map +1 -0
- package/dist/tests/multi-project.test.js +238 -0
- package/dist/tests/multi-project.test.js.map +1 -0
- package/dist/tests/schema-migration.test.d.ts +8 -0
- package/dist/tests/schema-migration.test.d.ts.map +1 -0
- package/dist/tests/schema-migration.test.js +108 -0
- package/dist/tests/schema-migration.test.js.map +1 -0
- package/dist/tests/sql-dump-converters.test.d.ts +7 -0
- package/dist/tests/sql-dump-converters.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-converters.test.js +314 -0
- package/dist/tests/sql-dump-converters.test.js.map +1 -0
- package/dist/tests/sql-dump-cross-database.test.d.ts +21 -0
- package/dist/tests/sql-dump-cross-database.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-cross-database.test.js +314 -0
- package/dist/tests/sql-dump-cross-database.test.js.map +1 -0
- package/dist/tests/sql-dump-default-conversions.test.d.ts +8 -0
- package/dist/tests/sql-dump-default-conversions.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-default-conversions.test.js +141 -0
- package/dist/tests/sql-dump-default-conversions.test.js.map +1 -0
- package/dist/tests/sql-dump-fk-constraints.test.d.ts +13 -0
- package/dist/tests/sql-dump-fk-constraints.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-fk-constraints.test.js +381 -0
- package/dist/tests/sql-dump-fk-constraints.test.js.map +1 -0
- package/dist/tests/sql-dump-indexes.test.d.ts +12 -0
- package/dist/tests/sql-dump-indexes.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-indexes.test.js +269 -0
- package/dist/tests/sql-dump-indexes.test.js.map +1 -0
- package/dist/tests/sql-dump-integration.test.d.ts +16 -0
- package/dist/tests/sql-dump-integration.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-integration.test.js +342 -0
- package/dist/tests/sql-dump-integration.test.js.map +1 -0
- package/dist/tests/sql-dump-table-ordering.test.d.ts +8 -0
- package/dist/tests/sql-dump-table-ordering.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-table-ordering.test.js +253 -0
- package/dist/tests/sql-dump-table-ordering.test.js.map +1 -0
- package/dist/tests/tasks.link-file-backward-compat.test.js +11 -1
- package/dist/tests/tasks.link-file-backward-compat.test.js.map +1 -1
- package/dist/tests/tasks.watch-files-action.test.js +11 -1
- package/dist/tests/tasks.watch-files-action.test.js.map +1 -1
- package/dist/tests/type-conversion.test.d.ts +8 -0
- package/dist/tests/type-conversion.test.d.ts.map +1 -0
- package/dist/tests/type-conversion.test.js +312 -0
- package/dist/tests/type-conversion.test.js.map +1 -0
- package/dist/tests/utils/test-helpers.d.ts +93 -0
- package/dist/tests/utils/test-helpers.d.ts.map +1 -0
- package/dist/tests/utils/test-helpers.js +407 -0
- package/dist/tests/utils/test-helpers.js.map +1 -0
- package/dist/tools/config.d.ts +58 -0
- package/dist/tools/config.d.ts.map +1 -0
- package/dist/tools/config.js +281 -0
- package/dist/tools/config.js.map +1 -0
- package/dist/tools/constraints.d.ts.map +1 -1
- package/dist/tools/constraints.js +138 -122
- package/dist/tools/constraints.js.map +1 -1
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +216 -109
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/files.d.ts.map +1 -1
- package/dist/tools/files.js +123 -102
- package/dist/tools/files.js.map +1 -1
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +581 -518
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/utils.d.ts +5 -0
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +176 -122
- package/dist/tools/utils.js.map +1 -1
- package/dist/types.d.ts +9 -26
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/cleanup.d.ts +3 -0
- package/dist/utils/cleanup.d.ts.map +1 -1
- package/dist/utils/cleanup.js +14 -2
- package/dist/utils/cleanup.js.map +1 -1
- package/dist/utils/connection-manager.d.ts +59 -0
- package/dist/utils/connection-manager.d.ts.map +1 -0
- package/dist/utils/connection-manager.js +178 -0
- package/dist/utils/connection-manager.js.map +1 -0
- package/dist/utils/debug-logger.d.ts +8 -4
- package/dist/utils/debug-logger.d.ts.map +1 -1
- package/dist/utils/debug-logger.js +27 -7
- package/dist/utils/debug-logger.js.map +1 -1
- package/dist/utils/error-handler.d.ts +2 -2
- package/dist/utils/error-handler.d.ts.map +1 -1
- package/dist/utils/error-handler.js +10 -7
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/parameter-validator.d.ts.map +1 -1
- package/dist/utils/parameter-validator.js +36 -15
- package/dist/utils/parameter-validator.js.map +1 -1
- package/dist/utils/project-context.d.ts +111 -0
- package/dist/utils/project-context.d.ts.map +1 -0
- package/dist/utils/project-context.js +187 -0
- package/dist/utils/project-context.js.map +1 -0
- package/dist/utils/sql-dump-converters.d.ts +188 -0
- package/dist/utils/sql-dump-converters.d.ts.map +1 -0
- package/dist/utils/sql-dump-converters.js +311 -0
- package/dist/utils/sql-dump-converters.js.map +1 -0
- package/dist/utils/sql-dump.d.ts +102 -0
- package/dist/utils/sql-dump.d.ts.map +1 -0
- package/dist/utils/sql-dump.js +1550 -0
- package/dist/utils/sql-dump.js.map +1 -0
- package/dist/utils/vcs-adapter.d.ts +42 -0
- package/dist/utils/vcs-adapter.d.ts.map +1 -1
- package/dist/utils/vcs-adapter.js +154 -0
- package/dist/utils/vcs-adapter.js.map +1 -1
- package/docs/BASEADAPTER_IMPLEMENTATION.md +399 -0
- package/docs/DATABASE_AUTH.md +445 -0
- package/docs/DATABASE_MIGRATION.md +247 -0
- package/docs/MULTI_PROJECT_ARCHITECTURE.md +497 -0
- package/package.json +12 -4
- package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.js.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.js.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.d.ts.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.js.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.js.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025070349_create_views.d.ts.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025070349_create_views.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js +0 -15
- package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js +0 -34
- package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js.map +0 -1
- /package/dist/{migrations → config}/knex/bootstrap/20251025020452_create_master_tables.d.ts +0 -0
- /package/dist/{migrations → config}/knex/bootstrap/20251025021152_create_transaction_tables.d.ts +0 -0
- /package/dist/{migrations → config}/knex/bootstrap/20251025021351_create_indexes.d.ts +0 -0
- /package/dist/{migrations → config}/knex/bootstrap/20251025021351_create_indexes.js +0 -0
- /package/dist/{migrations → config}/knex/bootstrap/20251025021416_seed_master_data.d.ts +0 -0
- /package/dist/{migrations → config}/knex/bootstrap/20251025070349_create_views.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025082220_fix_task_dependencies_columns.js +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025090000_create_help_system_tables.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025100000_seed_help_metadata.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025100100_seed_remaining_use_cases.js +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251027020000_update_agent_reusability.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251028000000_simplify_agent_system.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Type definitions for authentication system.
|
|
3
|
+
*
|
|
4
|
+
* @deprecated This file has been deprecated as of v3.7.0.
|
|
5
|
+
* All authentication types have been integrated into the main configuration system.
|
|
6
|
+
*
|
|
7
|
+
* **Migration Path:**
|
|
8
|
+
* - OLD: `import type { DatabaseConfig } from './adapters/auth/auth-types.js'`
|
|
9
|
+
* - NEW: `import type { DatabaseConfig } from './config/types.js'`
|
|
10
|
+
*
|
|
11
|
+
* **Available Types in config/types.ts:**
|
|
12
|
+
* - `DatabaseConfig` - Main database configuration interface
|
|
13
|
+
* - `AuthConfig` - Authentication configuration (direct, aws-iam, gcp-iam)
|
|
14
|
+
* - `SSLConfig` - SSL/TLS configuration
|
|
15
|
+
* - `ConnectionConfig` - Database connection parameters
|
|
16
|
+
*
|
|
17
|
+
* **Note:** SSH authentication has been removed. Users must set up SSH tunnels manually.
|
|
18
|
+
*
|
|
19
|
+
* This file is kept for backward compatibility during the transition period
|
|
20
|
+
* and will be removed in v3.8.0. Please update your imports to use `config/types.ts`.
|
|
21
|
+
*
|
|
22
|
+
* **Completed in Task P6.1 #72**
|
|
23
|
+
*
|
|
24
|
+
* @module adapters/auth/auth-types
|
|
25
|
+
* @since v3.7.0
|
|
26
|
+
* @deprecated Use config/types.ts instead
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=auth-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-types.js","sourceRoot":"","sources":["../../../src/adapters/auth/auth-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG"}
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Base authentication provider for sqlew's multi-RDBMS authentication system.
|
|
3
|
+
*
|
|
4
|
+
* This module provides the foundation for all authentication providers, enabling support for:
|
|
5
|
+
* - SSH tunneling (v3.7.0)
|
|
6
|
+
* - Direct connections (v3.7.0)
|
|
7
|
+
* - AWS IAM authentication (v3.8.0+)
|
|
8
|
+
* - GCP IAM authentication (v3.8.0+)
|
|
9
|
+
*
|
|
10
|
+
* @module adapters/auth/base-auth-provider
|
|
11
|
+
* @since v3.7.0
|
|
12
|
+
*/
|
|
13
|
+
import type { DatabaseConfig } from '../../config/types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Connection parameters used to establish database connections.
|
|
16
|
+
*
|
|
17
|
+
* These parameters are returned by authentication providers after processing
|
|
18
|
+
* credentials, setting up tunnels, or obtaining temporary tokens.
|
|
19
|
+
*
|
|
20
|
+
* @interface ConnectionParams
|
|
21
|
+
* @example
|
|
22
|
+
* // Direct connection
|
|
23
|
+
* {
|
|
24
|
+
* host: 'postgres.example.com',
|
|
25
|
+
* port: 5432,
|
|
26
|
+
* database: 'mydb',
|
|
27
|
+
* user: 'admin',
|
|
28
|
+
* password: 'secret123'
|
|
29
|
+
* }
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* // SSH tunnel connection
|
|
33
|
+
* {
|
|
34
|
+
* host: '127.0.0.1',
|
|
35
|
+
* port: 54321, // Local tunnel port
|
|
36
|
+
* database: 'mydb',
|
|
37
|
+
* user: 'admin',
|
|
38
|
+
* password: 'secret123'
|
|
39
|
+
* }
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* // AWS IAM authentication
|
|
43
|
+
* {
|
|
44
|
+
* host: 'db.region.rds.amazonaws.com',
|
|
45
|
+
* port: 5432,
|
|
46
|
+
* database: 'mydb',
|
|
47
|
+
* user: 'iam_user',
|
|
48
|
+
* password: 'temporary_token_generated_by_aws',
|
|
49
|
+
* ssl: {
|
|
50
|
+
* ca: '/path/to/rds-ca-bundle.pem',
|
|
51
|
+
* rejectUnauthorized: true
|
|
52
|
+
* }
|
|
53
|
+
* }
|
|
54
|
+
*/
|
|
55
|
+
export interface ConnectionParams {
|
|
56
|
+
/**
|
|
57
|
+
* Database host address.
|
|
58
|
+
* For direct connections: remote host address.
|
|
59
|
+
* For SSH tunnels: '127.0.0.1' (localhost).
|
|
60
|
+
* For cloud IAM: cloud provider's database endpoint.
|
|
61
|
+
*/
|
|
62
|
+
host: string;
|
|
63
|
+
/**
|
|
64
|
+
* Database port number.
|
|
65
|
+
* For direct connections: remote database port.
|
|
66
|
+
* For SSH tunnels: local tunnel port.
|
|
67
|
+
* For cloud IAM: cloud provider's database port.
|
|
68
|
+
*/
|
|
69
|
+
port: number;
|
|
70
|
+
/**
|
|
71
|
+
* Target database name.
|
|
72
|
+
*/
|
|
73
|
+
database: string;
|
|
74
|
+
/**
|
|
75
|
+
* Database user/username.
|
|
76
|
+
* For IAM authentication: IAM role or user identifier.
|
|
77
|
+
*/
|
|
78
|
+
user: string;
|
|
79
|
+
/**
|
|
80
|
+
* Database password or authentication token.
|
|
81
|
+
* Optional for IAM-based authentication where tokens are generated dynamically.
|
|
82
|
+
* For AWS/GCP IAM: temporary authentication token.
|
|
83
|
+
*/
|
|
84
|
+
password?: string;
|
|
85
|
+
/**
|
|
86
|
+
* SSL/TLS configuration for encrypted connections.
|
|
87
|
+
* Required for most cloud providers (AWS RDS, GCP Cloud SQL).
|
|
88
|
+
*/
|
|
89
|
+
ssl?: {
|
|
90
|
+
/**
|
|
91
|
+
* Certificate Authority (CA) certificate.
|
|
92
|
+
* Path to PEM file or certificate content.
|
|
93
|
+
*/
|
|
94
|
+
ca?: string;
|
|
95
|
+
/**
|
|
96
|
+
* Client certificate for mutual TLS.
|
|
97
|
+
* Path to PEM file or certificate content.
|
|
98
|
+
*/
|
|
99
|
+
cert?: string;
|
|
100
|
+
/**
|
|
101
|
+
* Client private key for mutual TLS.
|
|
102
|
+
* Path to PEM file or key content.
|
|
103
|
+
*/
|
|
104
|
+
key?: string;
|
|
105
|
+
/**
|
|
106
|
+
* Whether to reject unauthorized certificates.
|
|
107
|
+
* Set to false for self-signed certificates (not recommended for production).
|
|
108
|
+
*/
|
|
109
|
+
rejectUnauthorized?: boolean;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Database-specific connection parameters.
|
|
113
|
+
*
|
|
114
|
+
* Examples:
|
|
115
|
+
* - PostgreSQL: { statement_timeout: 30000, application_name: 'mcp-sqlew' }
|
|
116
|
+
* - MySQL: { connectTimeout: 10000, multipleStatements: false }
|
|
117
|
+
* - SQL Server: { requestTimeout: 30000, encrypt: true }
|
|
118
|
+
*/
|
|
119
|
+
additionalParams?: Record<string, any>;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Abstract base class for all authentication providers.
|
|
123
|
+
*
|
|
124
|
+
* This class establishes the contract that all authentication providers must implement,
|
|
125
|
+
* ensuring consistent behavior across different authentication methods.
|
|
126
|
+
*
|
|
127
|
+
* **Supported Authentication Methods:**
|
|
128
|
+
* - `DirectAuthProvider`: Standard username/password authentication
|
|
129
|
+
* - `SshAuthProvider`: SSH tunneling with key-based or password authentication
|
|
130
|
+
* - `AwsIamAuthProvider`: AWS RDS IAM database authentication
|
|
131
|
+
* - `GcpIamAuthProvider`: GCP Cloud SQL IAM authentication
|
|
132
|
+
*
|
|
133
|
+
* **Authentication Flow:**
|
|
134
|
+
* 1. Provider instantiation with DatabaseConfig
|
|
135
|
+
* 2. `validate()` - Verify configuration is valid
|
|
136
|
+
* 3. `authenticate()` - Process credentials and return ConnectionParams
|
|
137
|
+
* 4. Database connection using returned params
|
|
138
|
+
* 5. `cleanup()` - Release resources when connection closes
|
|
139
|
+
*
|
|
140
|
+
* @abstract
|
|
141
|
+
* @class BaseAuthProvider
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* // Implementing a custom authentication provider
|
|
145
|
+
* class CustomAuthProvider extends BaseAuthProvider {
|
|
146
|
+
* async authenticate(): Promise<ConnectionParams> {
|
|
147
|
+
* // Implement custom authentication logic
|
|
148
|
+
* return {
|
|
149
|
+
* host: this.config.connection.host,
|
|
150
|
+
* port: this.config.connection.port,
|
|
151
|
+
* database: this.config.connection.database,
|
|
152
|
+
* user: this.config.auth.user,
|
|
153
|
+
* password: await this.getCustomPassword()
|
|
154
|
+
* };
|
|
155
|
+
* }
|
|
156
|
+
*
|
|
157
|
+
* getAuthMethod(): string {
|
|
158
|
+
* return 'Custom Authentication';
|
|
159
|
+
* }
|
|
160
|
+
*
|
|
161
|
+
* async cleanup(): Promise<void> {
|
|
162
|
+
* // Clean up any resources
|
|
163
|
+
* }
|
|
164
|
+
*
|
|
165
|
+
* validate(): void {
|
|
166
|
+
* if (!this.config.auth.user) {
|
|
167
|
+
* throw new Error('User is required for custom authentication');
|
|
168
|
+
* }
|
|
169
|
+
* }
|
|
170
|
+
* }
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* // Using an authentication provider
|
|
174
|
+
* const provider = new DirectAuthProvider(config);
|
|
175
|
+
* provider.validate();
|
|
176
|
+
* const connParams = await provider.authenticate();
|
|
177
|
+
* const connection = await createConnection(connParams);
|
|
178
|
+
* // ... use connection ...
|
|
179
|
+
* await connection.close();
|
|
180
|
+
* await provider.cleanup();
|
|
181
|
+
*/
|
|
182
|
+
export declare abstract class BaseAuthProvider {
|
|
183
|
+
/**
|
|
184
|
+
* Database configuration containing connection and authentication settings.
|
|
185
|
+
* Accessible to child classes for implementing authentication logic.
|
|
186
|
+
*
|
|
187
|
+
* @protected
|
|
188
|
+
* @readonly
|
|
189
|
+
*/
|
|
190
|
+
protected readonly config: DatabaseConfig;
|
|
191
|
+
/**
|
|
192
|
+
* Creates a new authentication provider instance.
|
|
193
|
+
*
|
|
194
|
+
* @param {DatabaseConfig} config - Database configuration object
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* const provider = new SshAuthProvider({
|
|
198
|
+
* type: 'postgres',
|
|
199
|
+
* connection: {
|
|
200
|
+
* host: 'db.internal',
|
|
201
|
+
* port: 5432,
|
|
202
|
+
* database: 'production'
|
|
203
|
+
* },
|
|
204
|
+
* auth: {
|
|
205
|
+
* type: 'ssh',
|
|
206
|
+
* ssh: {
|
|
207
|
+
* host: 'bastion.example.com',
|
|
208
|
+
* port: 22,
|
|
209
|
+
* user: 'deploy',
|
|
210
|
+
* privateKey: '/path/to/key.pem'
|
|
211
|
+
* }
|
|
212
|
+
* }
|
|
213
|
+
* });
|
|
214
|
+
*/
|
|
215
|
+
constructor(config: DatabaseConfig);
|
|
216
|
+
/**
|
|
217
|
+
* Authenticates and returns connection parameters for database connection.
|
|
218
|
+
*
|
|
219
|
+
* This method handles the authentication process specific to each provider:
|
|
220
|
+
* - **Direct**: Returns credentials as-is
|
|
221
|
+
* - **SSH**: Establishes tunnel, returns localhost connection params
|
|
222
|
+
* - **AWS IAM**: Generates temporary token, returns params with SSL config
|
|
223
|
+
* - **GCP IAM**: Obtains OAuth token, returns params with cloud SQL proxy
|
|
224
|
+
*
|
|
225
|
+
* @abstract
|
|
226
|
+
* @returns {Promise<ConnectionParams>} Connection parameters for database client
|
|
227
|
+
*
|
|
228
|
+
* @throws {Error} When authentication fails or credentials are invalid
|
|
229
|
+
*
|
|
230
|
+
* @example
|
|
231
|
+
* // Direct authentication
|
|
232
|
+
* const params = await directProvider.authenticate();
|
|
233
|
+
* // Returns: { host: 'db.example.com', port: 5432, user: 'admin', password: 'secret' }
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* // SSH tunnel authentication
|
|
237
|
+
* const params = await sshProvider.authenticate();
|
|
238
|
+
* // Returns: { host: '127.0.0.1', port: 54321, user: 'admin', password: 'secret' }
|
|
239
|
+
* // Note: Tunnel is active until cleanup() is called
|
|
240
|
+
*
|
|
241
|
+
* @example
|
|
242
|
+
* // AWS IAM authentication
|
|
243
|
+
* const params = await awsProvider.authenticate();
|
|
244
|
+
* // Returns: { host: 'db.region.rds.amazonaws.com', user: 'iam_user',
|
|
245
|
+
* // password: 'temp_token_xyz', ssl: { ca: '...' } }
|
|
246
|
+
*/
|
|
247
|
+
abstract authenticate(): Promise<ConnectionParams>;
|
|
248
|
+
/**
|
|
249
|
+
* Returns a human-readable name for this authentication method.
|
|
250
|
+
*
|
|
251
|
+
* Used for logging, error messages, and telemetry.
|
|
252
|
+
*
|
|
253
|
+
* @abstract
|
|
254
|
+
* @returns {string} Authentication method name
|
|
255
|
+
*
|
|
256
|
+
* @example
|
|
257
|
+
* directProvider.getAuthMethod(); // Returns: "Direct"
|
|
258
|
+
* sshProvider.getAuthMethod(); // Returns: "SSH Tunnel"
|
|
259
|
+
* awsProvider.getAuthMethod(); // Returns: "AWS IAM"
|
|
260
|
+
* gcpProvider.getAuthMethod(); // Returns: "GCP IAM"
|
|
261
|
+
*/
|
|
262
|
+
abstract getAuthMethod(): string;
|
|
263
|
+
/**
|
|
264
|
+
* Releases resources allocated during authentication.
|
|
265
|
+
*
|
|
266
|
+
* This method MUST be called when the database connection is closed to prevent
|
|
267
|
+
* resource leaks. Different providers handle cleanup differently:
|
|
268
|
+
*
|
|
269
|
+
* - **Direct**: No-op (no resources to clean)
|
|
270
|
+
* - **SSH**: Closes SSH tunnel and releases local port
|
|
271
|
+
* - **AWS IAM**: Invalidates cached tokens (if applicable)
|
|
272
|
+
* - **GCP IAM**: Closes Cloud SQL proxy connection
|
|
273
|
+
*
|
|
274
|
+
* @abstract
|
|
275
|
+
* @returns {Promise<void>}
|
|
276
|
+
*
|
|
277
|
+
* @throws {Error} If cleanup fails (should be caught and logged, not propagated)
|
|
278
|
+
*
|
|
279
|
+
* @example
|
|
280
|
+
* try {
|
|
281
|
+
* await provider.cleanup();
|
|
282
|
+
* } catch (error) {
|
|
283
|
+
* console.error('Cleanup failed:', error);
|
|
284
|
+
* // Connection is closed, log error but don't throw
|
|
285
|
+
* }
|
|
286
|
+
*/
|
|
287
|
+
abstract cleanup(): Promise<void>;
|
|
288
|
+
/**
|
|
289
|
+
* Validates the authentication configuration.
|
|
290
|
+
*
|
|
291
|
+
* This method checks that all required configuration parameters are present
|
|
292
|
+
* and valid BEFORE attempting authentication. It should be called immediately
|
|
293
|
+
* after provider instantiation to fail fast on configuration errors.
|
|
294
|
+
*
|
|
295
|
+
* **Validation Examples:**
|
|
296
|
+
* - **Direct**: Verify host, port, user, password are present
|
|
297
|
+
* - **SSH**: Verify SSH host, SSH user, privateKey/password, target credentials
|
|
298
|
+
* - **AWS IAM**: Verify region, IAM role/user, AWS credentials available
|
|
299
|
+
* - **GCP IAM**: Verify project ID, service account, GCP credentials available
|
|
300
|
+
*
|
|
301
|
+
* @abstract
|
|
302
|
+
* @returns {void}
|
|
303
|
+
*
|
|
304
|
+
* @throws {Error} If configuration is invalid or incomplete
|
|
305
|
+
*
|
|
306
|
+
* @example
|
|
307
|
+
* try {
|
|
308
|
+
* provider.validate();
|
|
309
|
+
* } catch (error) {
|
|
310
|
+
* console.error('Invalid configuration:', error.message);
|
|
311
|
+
* // Fix configuration before proceeding
|
|
312
|
+
* }
|
|
313
|
+
*
|
|
314
|
+
* @example
|
|
315
|
+
* // Validation in SSH provider
|
|
316
|
+
* validate(): void {
|
|
317
|
+
* if (!this.config.auth.ssh?.host) {
|
|
318
|
+
* throw new Error('SSH host is required for SSH authentication');
|
|
319
|
+
* }
|
|
320
|
+
* if (!this.config.auth.ssh.privateKey && !this.config.auth.ssh.password) {
|
|
321
|
+
* throw new Error('SSH privateKey or password is required');
|
|
322
|
+
* }
|
|
323
|
+
* }
|
|
324
|
+
*/
|
|
325
|
+
abstract validate(): void;
|
|
326
|
+
}
|
|
327
|
+
//# sourceMappingURL=base-auth-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-auth-provider.d.ts","sourceRoot":"","sources":["../../../src/adapters/auth/base-auth-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,GAAG,CAAC,EAAE;QACJ;;;WAGG;QACH,EAAE,CAAC,EAAE,MAAM,CAAC;QAEZ;;;WAGG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QAEd;;;WAGG;QACH,GAAG,CAAC,EAAE,MAAM,CAAC;QAEb;;;WAGG;QACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B,CAAC;IAEF;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACxC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,8BAAsB,gBAAgB;IACpC;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAE1C;;;;;;;;;;;;;;;;;;;;;;;OAuBG;gBACS,MAAM,EAAE,cAAc;IAIlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAElD;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,aAAa,IAAI,MAAM;IAEhC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,QAAQ,CAAC,QAAQ,IAAI,IAAI;CAC1B"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Base authentication provider for sqlew's multi-RDBMS authentication system.
|
|
3
|
+
*
|
|
4
|
+
* This module provides the foundation for all authentication providers, enabling support for:
|
|
5
|
+
* - SSH tunneling (v3.7.0)
|
|
6
|
+
* - Direct connections (v3.7.0)
|
|
7
|
+
* - AWS IAM authentication (v3.8.0+)
|
|
8
|
+
* - GCP IAM authentication (v3.8.0+)
|
|
9
|
+
*
|
|
10
|
+
* @module adapters/auth/base-auth-provider
|
|
11
|
+
* @since v3.7.0
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Abstract base class for all authentication providers.
|
|
15
|
+
*
|
|
16
|
+
* This class establishes the contract that all authentication providers must implement,
|
|
17
|
+
* ensuring consistent behavior across different authentication methods.
|
|
18
|
+
*
|
|
19
|
+
* **Supported Authentication Methods:**
|
|
20
|
+
* - `DirectAuthProvider`: Standard username/password authentication
|
|
21
|
+
* - `SshAuthProvider`: SSH tunneling with key-based or password authentication
|
|
22
|
+
* - `AwsIamAuthProvider`: AWS RDS IAM database authentication
|
|
23
|
+
* - `GcpIamAuthProvider`: GCP Cloud SQL IAM authentication
|
|
24
|
+
*
|
|
25
|
+
* **Authentication Flow:**
|
|
26
|
+
* 1. Provider instantiation with DatabaseConfig
|
|
27
|
+
* 2. `validate()` - Verify configuration is valid
|
|
28
|
+
* 3. `authenticate()` - Process credentials and return ConnectionParams
|
|
29
|
+
* 4. Database connection using returned params
|
|
30
|
+
* 5. `cleanup()` - Release resources when connection closes
|
|
31
|
+
*
|
|
32
|
+
* @abstract
|
|
33
|
+
* @class BaseAuthProvider
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* // Implementing a custom authentication provider
|
|
37
|
+
* class CustomAuthProvider extends BaseAuthProvider {
|
|
38
|
+
* async authenticate(): Promise<ConnectionParams> {
|
|
39
|
+
* // Implement custom authentication logic
|
|
40
|
+
* return {
|
|
41
|
+
* host: this.config.connection.host,
|
|
42
|
+
* port: this.config.connection.port,
|
|
43
|
+
* database: this.config.connection.database,
|
|
44
|
+
* user: this.config.auth.user,
|
|
45
|
+
* password: await this.getCustomPassword()
|
|
46
|
+
* };
|
|
47
|
+
* }
|
|
48
|
+
*
|
|
49
|
+
* getAuthMethod(): string {
|
|
50
|
+
* return 'Custom Authentication';
|
|
51
|
+
* }
|
|
52
|
+
*
|
|
53
|
+
* async cleanup(): Promise<void> {
|
|
54
|
+
* // Clean up any resources
|
|
55
|
+
* }
|
|
56
|
+
*
|
|
57
|
+
* validate(): void {
|
|
58
|
+
* if (!this.config.auth.user) {
|
|
59
|
+
* throw new Error('User is required for custom authentication');
|
|
60
|
+
* }
|
|
61
|
+
* }
|
|
62
|
+
* }
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* // Using an authentication provider
|
|
66
|
+
* const provider = new DirectAuthProvider(config);
|
|
67
|
+
* provider.validate();
|
|
68
|
+
* const connParams = await provider.authenticate();
|
|
69
|
+
* const connection = await createConnection(connParams);
|
|
70
|
+
* // ... use connection ...
|
|
71
|
+
* await connection.close();
|
|
72
|
+
* await provider.cleanup();
|
|
73
|
+
*/
|
|
74
|
+
export class BaseAuthProvider {
|
|
75
|
+
/**
|
|
76
|
+
* Database configuration containing connection and authentication settings.
|
|
77
|
+
* Accessible to child classes for implementing authentication logic.
|
|
78
|
+
*
|
|
79
|
+
* @protected
|
|
80
|
+
* @readonly
|
|
81
|
+
*/
|
|
82
|
+
config;
|
|
83
|
+
/**
|
|
84
|
+
* Creates a new authentication provider instance.
|
|
85
|
+
*
|
|
86
|
+
* @param {DatabaseConfig} config - Database configuration object
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* const provider = new SshAuthProvider({
|
|
90
|
+
* type: 'postgres',
|
|
91
|
+
* connection: {
|
|
92
|
+
* host: 'db.internal',
|
|
93
|
+
* port: 5432,
|
|
94
|
+
* database: 'production'
|
|
95
|
+
* },
|
|
96
|
+
* auth: {
|
|
97
|
+
* type: 'ssh',
|
|
98
|
+
* ssh: {
|
|
99
|
+
* host: 'bastion.example.com',
|
|
100
|
+
* port: 22,
|
|
101
|
+
* user: 'deploy',
|
|
102
|
+
* privateKey: '/path/to/key.pem'
|
|
103
|
+
* }
|
|
104
|
+
* }
|
|
105
|
+
* });
|
|
106
|
+
*/
|
|
107
|
+
constructor(config) {
|
|
108
|
+
this.config = config;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=base-auth-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-auth-provider.js","sourceRoot":"","sources":["../../../src/adapters/auth/base-auth-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAyHH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,MAAM,OAAgB,gBAAgB;IACpC;;;;;;OAMG;IACgB,MAAM,CAAiB;IAE1C;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CAmHF"}
|