sqlew 3.6.9 → 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.
Files changed (383) hide show
  1. package/CHANGELOG.md +398 -1
  2. package/README.md +58 -39
  3. package/assets/config.example.toml +93 -0
  4. package/assets/kanban-visualizer.png +0 -0
  5. package/assets/sample-agents/sqlew-architect.md +32 -13
  6. package/assets/sample-agents/sqlew-researcher.md +70 -17
  7. package/assets/sample-agents/sqlew-scrum-master.md +60 -25
  8. package/assets/schema.sql +2 -2
  9. package/dist/adapters/auth/auth-factory.d.ts +86 -0
  10. package/dist/adapters/auth/auth-factory.d.ts.map +1 -0
  11. package/dist/adapters/auth/auth-factory.js +103 -0
  12. package/dist/adapters/auth/auth-factory.js.map +1 -0
  13. package/dist/adapters/auth/auth-types.d.ts +30 -0
  14. package/dist/adapters/auth/auth-types.d.ts.map +1 -0
  15. package/dist/adapters/auth/auth-types.js +30 -0
  16. package/dist/adapters/auth/auth-types.js.map +1 -0
  17. package/dist/adapters/auth/base-auth-provider.d.ts +327 -0
  18. package/dist/adapters/auth/base-auth-provider.d.ts.map +1 -0
  19. package/dist/adapters/auth/base-auth-provider.js +111 -0
  20. package/dist/adapters/auth/base-auth-provider.js.map +1 -0
  21. package/dist/adapters/auth/direct-auth-provider.d.ts +356 -0
  22. package/dist/adapters/auth/direct-auth-provider.d.ts.map +1 -0
  23. package/dist/adapters/auth/direct-auth-provider.js +406 -0
  24. package/dist/adapters/auth/direct-auth-provider.js.map +1 -0
  25. package/dist/adapters/base-adapter.d.ts +638 -0
  26. package/dist/adapters/base-adapter.d.ts.map +1 -0
  27. package/dist/adapters/base-adapter.js +557 -0
  28. package/dist/adapters/base-adapter.js.map +1 -0
  29. package/dist/adapters/index.d.ts +13 -2
  30. package/dist/adapters/index.d.ts.map +1 -1
  31. package/dist/adapters/index.js +27 -5
  32. package/dist/adapters/index.js.map +1 -1
  33. package/dist/adapters/mysql-adapter.d.ts +547 -6
  34. package/dist/adapters/mysql-adapter.d.ts.map +1 -1
  35. package/dist/adapters/mysql-adapter.js +651 -32
  36. package/dist/adapters/mysql-adapter.js.map +1 -1
  37. package/dist/adapters/postgresql-adapter.d.ts +15 -4
  38. package/dist/adapters/postgresql-adapter.d.ts.map +1 -1
  39. package/dist/adapters/postgresql-adapter.js +19 -2
  40. package/dist/adapters/postgresql-adapter.js.map +1 -1
  41. package/dist/adapters/sqlite-adapter.d.ts +35 -5
  42. package/dist/adapters/sqlite-adapter.d.ts.map +1 -1
  43. package/dist/adapters/sqlite-adapter.js +57 -18
  44. package/dist/adapters/sqlite-adapter.js.map +1 -1
  45. package/dist/cli/db-dump.d.ts +32 -0
  46. package/dist/cli/db-dump.d.ts.map +1 -0
  47. package/dist/cli/db-dump.js +409 -0
  48. package/dist/cli/db-dump.js.map +1 -0
  49. package/dist/cli.js +24 -14
  50. package/dist/cli.js.map +1 -1
  51. package/dist/config/example-generator.d.ts.map +1 -1
  52. package/dist/config/example-generator.js +4 -3
  53. package/dist/config/example-generator.js.map +1 -1
  54. package/dist/config/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +1 -0
  55. package/dist/{migrations → config}/knex/bootstrap/20251025020452_create_master_tables.js +7 -2
  56. package/dist/config/knex/bootstrap/20251025020452_create_master_tables.js.map +1 -0
  57. package/dist/config/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +1 -0
  58. package/dist/{migrations → config}/knex/bootstrap/20251025021152_create_transaction_tables.js +49 -50
  59. package/dist/config/knex/bootstrap/20251025021152_create_transaction_tables.js.map +1 -0
  60. package/dist/config/knex/bootstrap/20251025021351_create_indexes.d.ts.map +1 -0
  61. package/dist/config/knex/bootstrap/20251025021351_create_indexes.js.map +1 -0
  62. package/dist/config/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +1 -0
  63. package/dist/{migrations → config}/knex/bootstrap/20251025021416_seed_master_data.js +11 -6
  64. package/dist/config/knex/bootstrap/20251025021416_seed_master_data.js.map +1 -0
  65. package/dist/config/knex/bootstrap/20251025070349_create_views.d.ts.map +1 -0
  66. package/dist/{migrations → config}/knex/bootstrap/20251025070349_create_views.js +66 -14
  67. package/dist/config/knex/bootstrap/20251025070349_create_views.js.map +1 -0
  68. package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts.map +1 -0
  69. package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js +22 -0
  70. package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js.map +1 -0
  71. package/dist/config/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts.map +1 -0
  72. package/dist/config/knex/enhancements/20251025082220_fix_task_dependencies_columns.js.map +1 -0
  73. package/dist/config/knex/enhancements/20251025090000_create_help_system_tables.d.ts.map +1 -0
  74. package/dist/{migrations → config}/knex/enhancements/20251025090000_create_help_system_tables.js +6 -0
  75. package/dist/config/knex/enhancements/20251025090000_create_help_system_tables.js.map +1 -0
  76. package/dist/config/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts.map +1 -0
  77. package/dist/{migrations → config}/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js +6 -0
  78. package/dist/config/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js.map +1 -0
  79. package/dist/config/knex/enhancements/20251025100000_seed_help_metadata.d.ts.map +1 -0
  80. package/dist/{migrations → config}/knex/enhancements/20251025100000_seed_help_metadata.js +6 -0
  81. package/dist/config/knex/enhancements/20251025100000_seed_help_metadata.js.map +1 -0
  82. package/dist/config/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts.map +1 -0
  83. package/dist/config/knex/enhancements/20251025100100_seed_remaining_use_cases.js.map +1 -0
  84. package/dist/config/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts.map +1 -0
  85. package/dist/{migrations → config}/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js +7 -0
  86. package/dist/config/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js.map +1 -0
  87. package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts.map +1 -0
  88. package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.js +62 -0
  89. package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.js.map +1 -0
  90. package/dist/config/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts.map +1 -0
  91. package/dist/config/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js.map +1 -0
  92. package/dist/config/knex/enhancements/20251027020000_update_agent_reusability.d.ts.map +1 -0
  93. package/dist/{migrations → config}/knex/enhancements/20251027020000_update_agent_reusability.js +6 -0
  94. package/dist/config/knex/enhancements/20251027020000_update_agent_reusability.js.map +1 -0
  95. package/dist/config/knex/enhancements/20251028000000_simplify_agent_system.d.ts.map +1 -0
  96. package/dist/{migrations → config}/knex/enhancements/20251028000000_simplify_agent_system.js +6 -0
  97. package/dist/config/knex/enhancements/20251028000000_simplify_agent_system.js.map +1 -0
  98. package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.d.ts +13 -0
  99. package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.d.ts.map +1 -0
  100. package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.js +48 -0
  101. package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.js.map +1 -0
  102. package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.d.ts +24 -0
  103. package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.d.ts.map +1 -0
  104. package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.js +189 -0
  105. package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.js.map +1 -0
  106. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.d.ts +16 -0
  107. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.d.ts.map +1 -0
  108. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.js +65 -0
  109. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.js.map +1 -0
  110. package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.d.ts +23 -0
  111. package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.d.ts.map +1 -0
  112. package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.js +118 -0
  113. package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.js.map +1 -0
  114. package/dist/config/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +1 -0
  115. package/dist/config/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js.map +1 -0
  116. package/dist/config/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +1 -0
  117. package/dist/config/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js.map +1 -0
  118. package/dist/config/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +1 -0
  119. package/dist/config/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js.map +1 -0
  120. package/dist/config/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +1 -0
  121. package/dist/config/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js.map +1 -0
  122. package/dist/config/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +1 -0
  123. package/dist/config/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +1 -0
  124. package/dist/config/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +1 -0
  125. package/dist/config/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js.map +1 -0
  126. package/dist/config/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +1 -0
  127. package/dist/config/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js.map +1 -0
  128. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.d.ts +49 -0
  129. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.d.ts.map +1 -0
  130. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js +864 -0
  131. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js.map +1 -0
  132. package/dist/config/loader.d.ts +23 -3
  133. package/dist/config/loader.d.ts.map +1 -1
  134. package/dist/config/loader.js +155 -8
  135. package/dist/config/loader.js.map +1 -1
  136. package/dist/config/types.d.ts +261 -2
  137. package/dist/config/types.d.ts.map +1 -1
  138. package/dist/config/types.js.map +1 -1
  139. package/dist/config/writer.d.ts +65 -0
  140. package/dist/config/writer.d.ts.map +1 -0
  141. package/dist/config/writer.js +139 -0
  142. package/dist/config/writer.js.map +1 -0
  143. package/dist/database.d.ts +11 -2
  144. package/dist/database.d.ts.map +1 -1
  145. package/dist/database.js +65 -8
  146. package/dist/database.js.map +1 -1
  147. package/dist/index.js +186 -32
  148. package/dist/index.js.map +1 -1
  149. package/dist/knexfile.d.ts.map +1 -1
  150. package/dist/knexfile.js +88 -12
  151. package/dist/knexfile.js.map +1 -1
  152. package/dist/tests/all-features.test.js +15 -3
  153. package/dist/tests/all-features.test.js.map +1 -1
  154. package/dist/tests/config-loader.test.d.ts +6 -0
  155. package/dist/tests/config-loader.test.d.ts.map +1 -0
  156. package/dist/tests/config-loader.test.js +201 -0
  157. package/dist/tests/config-loader.test.js.map +1 -0
  158. package/dist/tests/connection-manager-integration.test.d.ts +2 -0
  159. package/dist/tests/connection-manager-integration.test.d.ts.map +1 -0
  160. package/dist/tests/connection-manager-integration.test.js +431 -0
  161. package/dist/tests/connection-manager-integration.test.js.map +1 -0
  162. package/dist/tests/connection-manager.test.d.ts +2 -0
  163. package/dist/tests/connection-manager.test.d.ts.map +1 -0
  164. package/dist/tests/connection-manager.test.js +361 -0
  165. package/dist/tests/connection-manager.test.js.map +1 -0
  166. package/dist/tests/dump-import.test.d.ts +15 -0
  167. package/dist/tests/dump-import.test.d.ts.map +1 -0
  168. package/dist/tests/dump-import.test.js +430 -0
  169. package/dist/tests/dump-import.test.js.map +1 -0
  170. package/dist/tests/migration-idempotency.test.d.ts +2 -0
  171. package/dist/tests/migration-idempotency.test.d.ts.map +1 -0
  172. package/dist/tests/migration-idempotency.test.js +330 -0
  173. package/dist/tests/migration-idempotency.test.js.map +1 -0
  174. package/dist/tests/migration-upgrade-paths.test.d.ts +2 -0
  175. package/dist/tests/migration-upgrade-paths.test.d.ts.map +1 -0
  176. package/dist/tests/migration-upgrade-paths.test.js +248 -0
  177. package/dist/tests/migration-upgrade-paths.test.js.map +1 -0
  178. package/dist/tests/multi-project-migration.test.d.ts +17 -0
  179. package/dist/tests/multi-project-migration.test.d.ts.map +1 -0
  180. package/dist/tests/multi-project-migration.test.js +399 -0
  181. package/dist/tests/multi-project-migration.test.js.map +1 -0
  182. package/dist/tests/multi-project.test.d.ts +5 -0
  183. package/dist/tests/multi-project.test.d.ts.map +1 -0
  184. package/dist/tests/multi-project.test.js +238 -0
  185. package/dist/tests/multi-project.test.js.map +1 -0
  186. package/dist/tests/schema-migration.test.d.ts +8 -0
  187. package/dist/tests/schema-migration.test.d.ts.map +1 -0
  188. package/dist/tests/schema-migration.test.js +108 -0
  189. package/dist/tests/schema-migration.test.js.map +1 -0
  190. package/dist/tests/sql-dump-converters.test.d.ts +7 -0
  191. package/dist/tests/sql-dump-converters.test.d.ts.map +1 -0
  192. package/dist/tests/sql-dump-converters.test.js +314 -0
  193. package/dist/tests/sql-dump-converters.test.js.map +1 -0
  194. package/dist/tests/sql-dump-cross-database.test.d.ts +21 -0
  195. package/dist/tests/sql-dump-cross-database.test.d.ts.map +1 -0
  196. package/dist/tests/sql-dump-cross-database.test.js +314 -0
  197. package/dist/tests/sql-dump-cross-database.test.js.map +1 -0
  198. package/dist/tests/sql-dump-default-conversions.test.d.ts +8 -0
  199. package/dist/tests/sql-dump-default-conversions.test.d.ts.map +1 -0
  200. package/dist/tests/sql-dump-default-conversions.test.js +141 -0
  201. package/dist/tests/sql-dump-default-conversions.test.js.map +1 -0
  202. package/dist/tests/sql-dump-fk-constraints.test.d.ts +13 -0
  203. package/dist/tests/sql-dump-fk-constraints.test.d.ts.map +1 -0
  204. package/dist/tests/sql-dump-fk-constraints.test.js +381 -0
  205. package/dist/tests/sql-dump-fk-constraints.test.js.map +1 -0
  206. package/dist/tests/sql-dump-indexes.test.d.ts +12 -0
  207. package/dist/tests/sql-dump-indexes.test.d.ts.map +1 -0
  208. package/dist/tests/sql-dump-indexes.test.js +269 -0
  209. package/dist/tests/sql-dump-indexes.test.js.map +1 -0
  210. package/dist/tests/sql-dump-integration.test.d.ts +16 -0
  211. package/dist/tests/sql-dump-integration.test.d.ts.map +1 -0
  212. package/dist/tests/sql-dump-integration.test.js +342 -0
  213. package/dist/tests/sql-dump-integration.test.js.map +1 -0
  214. package/dist/tests/sql-dump-table-ordering.test.d.ts +8 -0
  215. package/dist/tests/sql-dump-table-ordering.test.d.ts.map +1 -0
  216. package/dist/tests/sql-dump-table-ordering.test.js +253 -0
  217. package/dist/tests/sql-dump-table-ordering.test.js.map +1 -0
  218. package/dist/tests/tasks.link-file-backward-compat.test.js +11 -1
  219. package/dist/tests/tasks.link-file-backward-compat.test.js.map +1 -1
  220. package/dist/tests/tasks.watch-files-action.test.js +11 -1
  221. package/dist/tests/tasks.watch-files-action.test.js.map +1 -1
  222. package/dist/tests/type-conversion.test.d.ts +8 -0
  223. package/dist/tests/type-conversion.test.d.ts.map +1 -0
  224. package/dist/tests/type-conversion.test.js +312 -0
  225. package/dist/tests/type-conversion.test.js.map +1 -0
  226. package/dist/tests/utils/test-helpers.d.ts +93 -0
  227. package/dist/tests/utils/test-helpers.d.ts.map +1 -0
  228. package/dist/tests/utils/test-helpers.js +407 -0
  229. package/dist/tests/utils/test-helpers.js.map +1 -0
  230. package/dist/tools/config.d.ts +58 -0
  231. package/dist/tools/config.d.ts.map +1 -0
  232. package/dist/tools/config.js +281 -0
  233. package/dist/tools/config.js.map +1 -0
  234. package/dist/tools/constraints.d.ts.map +1 -1
  235. package/dist/tools/constraints.js +138 -122
  236. package/dist/tools/constraints.js.map +1 -1
  237. package/dist/tools/context.d.ts.map +1 -1
  238. package/dist/tools/context.js +216 -109
  239. package/dist/tools/context.js.map +1 -1
  240. package/dist/tools/files.d.ts.map +1 -1
  241. package/dist/tools/files.js +123 -102
  242. package/dist/tools/files.js.map +1 -1
  243. package/dist/tools/tasks.d.ts.map +1 -1
  244. package/dist/tools/tasks.js +583 -521
  245. package/dist/tools/tasks.js.map +1 -1
  246. package/dist/tools/utils.d.ts +5 -0
  247. package/dist/tools/utils.d.ts.map +1 -1
  248. package/dist/tools/utils.js +176 -122
  249. package/dist/tools/utils.js.map +1 -1
  250. package/dist/types.d.ts +9 -26
  251. package/dist/types.d.ts.map +1 -1
  252. package/dist/utils/cleanup.d.ts +3 -0
  253. package/dist/utils/cleanup.d.ts.map +1 -1
  254. package/dist/utils/cleanup.js +14 -2
  255. package/dist/utils/cleanup.js.map +1 -1
  256. package/dist/utils/connection-manager.d.ts +59 -0
  257. package/dist/utils/connection-manager.d.ts.map +1 -0
  258. package/dist/utils/connection-manager.js +178 -0
  259. package/dist/utils/connection-manager.js.map +1 -0
  260. package/dist/utils/debug-logger.d.ts +8 -4
  261. package/dist/utils/debug-logger.d.ts.map +1 -1
  262. package/dist/utils/debug-logger.js +27 -7
  263. package/dist/utils/debug-logger.js.map +1 -1
  264. package/dist/utils/error-handler.d.ts +12 -2
  265. package/dist/utils/error-handler.d.ts.map +1 -1
  266. package/dist/utils/error-handler.js +22 -21
  267. package/dist/utils/error-handler.js.map +1 -1
  268. package/dist/utils/parameter-validator.d.ts.map +1 -1
  269. package/dist/utils/parameter-validator.js +36 -15
  270. package/dist/utils/parameter-validator.js.map +1 -1
  271. package/dist/utils/project-context.d.ts +111 -0
  272. package/dist/utils/project-context.d.ts.map +1 -0
  273. package/dist/utils/project-context.js +187 -0
  274. package/dist/utils/project-context.js.map +1 -0
  275. package/dist/utils/project-root.d.ts +79 -0
  276. package/dist/utils/project-root.d.ts.map +1 -0
  277. package/dist/utils/project-root.js +108 -0
  278. package/dist/utils/project-root.js.map +1 -0
  279. package/dist/utils/sql-dump-converters.d.ts +188 -0
  280. package/dist/utils/sql-dump-converters.d.ts.map +1 -0
  281. package/dist/utils/sql-dump-converters.js +311 -0
  282. package/dist/utils/sql-dump-converters.js.map +1 -0
  283. package/dist/utils/sql-dump.d.ts +102 -0
  284. package/dist/utils/sql-dump.d.ts.map +1 -0
  285. package/dist/utils/sql-dump.js +1550 -0
  286. package/dist/utils/sql-dump.js.map +1 -0
  287. package/dist/utils/vcs-adapter.d.ts +42 -0
  288. package/dist/utils/vcs-adapter.d.ts.map +1 -1
  289. package/dist/utils/vcs-adapter.js +154 -0
  290. package/dist/utils/vcs-adapter.js.map +1 -1
  291. package/dist/watcher/file-watcher.d.ts.map +1 -1
  292. package/dist/watcher/file-watcher.js +48 -49
  293. package/dist/watcher/file-watcher.js.map +1 -1
  294. package/dist/watcher/gitignore-parser.d.ts.map +1 -1
  295. package/dist/watcher/gitignore-parser.js +2 -1
  296. package/dist/watcher/gitignore-parser.js.map +1 -1
  297. package/docs/BASEADAPTER_IMPLEMENTATION.md +399 -0
  298. package/docs/DATABASE_AUTH.md +445 -0
  299. package/docs/DATABASE_MIGRATION.md +247 -0
  300. package/docs/MULTI_PROJECT_ARCHITECTURE.md +497 -0
  301. package/package.json +12 -4
  302. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +0 -1
  303. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.js.map +0 -1
  304. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +0 -1
  305. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.js.map +0 -1
  306. package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.d.ts.map +0 -1
  307. package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.js.map +0 -1
  308. package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +0 -1
  309. package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.js.map +0 -1
  310. package/dist/migrations/knex/bootstrap/20251025070349_create_views.d.ts.map +0 -1
  311. package/dist/migrations/knex/bootstrap/20251025070349_create_views.js.map +0 -1
  312. package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts.map +0 -1
  313. package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js +0 -15
  314. package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js.map +0 -1
  315. package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts.map +0 -1
  316. package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.js.map +0 -1
  317. package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.d.ts.map +0 -1
  318. package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.js.map +0 -1
  319. package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts.map +0 -1
  320. package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js.map +0 -1
  321. package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.d.ts.map +0 -1
  322. package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.js.map +0 -1
  323. package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts.map +0 -1
  324. package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.js.map +0 -1
  325. package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts.map +0 -1
  326. package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js.map +0 -1
  327. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts.map +0 -1
  328. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js +0 -34
  329. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js.map +0 -1
  330. package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts.map +0 -1
  331. package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js.map +0 -1
  332. package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.d.ts.map +0 -1
  333. package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.js.map +0 -1
  334. package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.d.ts.map +0 -1
  335. package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.js.map +0 -1
  336. package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +0 -1
  337. package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js.map +0 -1
  338. package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +0 -1
  339. package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js.map +0 -1
  340. package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +0 -1
  341. package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js.map +0 -1
  342. package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +0 -1
  343. package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js.map +0 -1
  344. package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +0 -1
  345. package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +0 -1
  346. package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +0 -1
  347. package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js.map +0 -1
  348. package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +0 -1
  349. package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js.map +0 -1
  350. /package/dist/{migrations → config}/knex/bootstrap/20251025020452_create_master_tables.d.ts +0 -0
  351. /package/dist/{migrations → config}/knex/bootstrap/20251025021152_create_transaction_tables.d.ts +0 -0
  352. /package/dist/{migrations → config}/knex/bootstrap/20251025021351_create_indexes.d.ts +0 -0
  353. /package/dist/{migrations → config}/knex/bootstrap/20251025021351_create_indexes.js +0 -0
  354. /package/dist/{migrations → config}/knex/bootstrap/20251025021416_seed_master_data.d.ts +0 -0
  355. /package/dist/{migrations → config}/knex/bootstrap/20251025070349_create_views.d.ts +0 -0
  356. /package/dist/{migrations → config}/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts +0 -0
  357. /package/dist/{migrations → config}/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts +0 -0
  358. /package/dist/{migrations → config}/knex/enhancements/20251025082220_fix_task_dependencies_columns.js +0 -0
  359. /package/dist/{migrations → config}/knex/enhancements/20251025090000_create_help_system_tables.d.ts +0 -0
  360. /package/dist/{migrations → config}/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts +0 -0
  361. /package/dist/{migrations → config}/knex/enhancements/20251025100000_seed_help_metadata.d.ts +0 -0
  362. /package/dist/{migrations → config}/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts +0 -0
  363. /package/dist/{migrations → config}/knex/enhancements/20251025100100_seed_remaining_use_cases.js +0 -0
  364. /package/dist/{migrations → config}/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts +0 -0
  365. /package/dist/{migrations → config}/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts +0 -0
  366. /package/dist/{migrations → config}/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts +0 -0
  367. /package/dist/{migrations → config}/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js +0 -0
  368. /package/dist/{migrations → config}/knex/enhancements/20251027020000_update_agent_reusability.d.ts +0 -0
  369. /package/dist/{migrations → config}/knex/enhancements/20251028000000_simplify_agent_system.d.ts +0 -0
  370. /package/dist/{migrations → config}/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts +0 -0
  371. /package/dist/{migrations → config}/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js +0 -0
  372. /package/dist/{migrations → config}/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts +0 -0
  373. /package/dist/{migrations → config}/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js +0 -0
  374. /package/dist/{migrations → config}/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts +0 -0
  375. /package/dist/{migrations → config}/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js +0 -0
  376. /package/dist/{migrations → config}/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts +0 -0
  377. /package/dist/{migrations → config}/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js +0 -0
  378. /package/dist/{migrations → config}/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts +0 -0
  379. /package/dist/{migrations → config}/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js +0 -0
  380. /package/dist/{migrations → config}/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts +0 -0
  381. /package/dist/{migrations → config}/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js +0 -0
  382. /package/dist/{migrations → config}/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts +0 -0
  383. /package/dist/{migrations → config}/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js +0 -0
@@ -0,0 +1,103 @@
1
+ /**
2
+ * @fileoverview Authentication Provider Factory
3
+ *
4
+ * Factory module for creating appropriate authentication providers based on database configuration.
5
+ * Supports direct connections and future IAM-based authentication.
6
+ *
7
+ * **Note:** SSH tunneling is not supported. Users must set up SSH tunnels manually.
8
+ *
9
+ * @module adapters/auth/auth-factory
10
+ */
11
+ import { DirectAuthProvider } from './direct-auth-provider.js';
12
+ /**
13
+ * Create an authentication provider based on database configuration.
14
+ *
15
+ * Provider selection logic:
16
+ * - SQLite: Returns null (no authentication needed for file-based database)
17
+ * - MySQL/PostgreSQL: Returns DirectAuthProvider
18
+ *
19
+ * @param config - Database configuration
20
+ * @returns Authentication provider instance or null for SQLite
21
+ * @throws Error if database type is invalid
22
+ *
23
+ * @example
24
+ * // Direct connection
25
+ * const config: DatabaseConfig = {
26
+ * type: 'mysql',
27
+ * connection: {
28
+ * host: 'localhost',
29
+ * port: 3306,
30
+ * database: 'mydb'
31
+ * },
32
+ * auth: {
33
+ * type: 'direct',
34
+ * user: 'dbuser',
35
+ * password: 'dbpass'
36
+ * }
37
+ * };
38
+ * const provider = createAuthProvider(config);
39
+ * // Returns DirectAuthProvider instance
40
+ *
41
+ * @example
42
+ * // Connection via manual SSH tunnel
43
+ * // Step 1: Set up tunnel manually:
44
+ * // ssh -L 3307:db.internal.company.com:3306 user@bastion.example.com
45
+ * // Step 2: Configure to use localhost:
46
+ * const config: DatabaseConfig = {
47
+ * type: 'mysql',
48
+ * connection: {
49
+ * host: 'localhost', // Tunnel endpoint
50
+ * port: 3307, // Forwarded port
51
+ * database: 'mydb'
52
+ * },
53
+ * auth: {
54
+ * type: 'direct',
55
+ * user: 'dbuser',
56
+ * password: 'dbpass'
57
+ * }
58
+ * };
59
+ * const provider = createAuthProvider(config);
60
+ * // Returns DirectAuthProvider for localhost connection
61
+ *
62
+ * @example
63
+ * // SQLite (no authentication)
64
+ * const sqliteConfig: DatabaseConfig = {
65
+ * type: 'sqlite',
66
+ * path: './data.db'
67
+ * };
68
+ * const provider = createAuthProvider(sqliteConfig);
69
+ * // Returns null
70
+ */
71
+ export function createAuthProvider(config) {
72
+ // Validate database type
73
+ if (!config.type) {
74
+ throw new Error('Database type is required in configuration');
75
+ }
76
+ const validTypes = ['sqlite', 'mysql', 'postgres'];
77
+ if (!validTypes.includes(config.type)) {
78
+ throw new Error(`Invalid database type: ${config.type}. Must be one of: ${validTypes.join(', ')}`);
79
+ }
80
+ // SQLite doesn't need authentication (file-based)
81
+ if (config.type === 'sqlite') {
82
+ return null;
83
+ }
84
+ // MySQL/PostgreSQL use direct authentication
85
+ // (Users must set up SSH tunnels manually if needed)
86
+ return new DirectAuthProvider(config);
87
+ }
88
+ /**
89
+ * Check if database type requires authentication.
90
+ *
91
+ * @param config - Database configuration
92
+ * @returns True if authentication is required (MySQL/PostgreSQL)
93
+ *
94
+ * @example
95
+ * if (requiresAuthentication(config)) {
96
+ * const provider = createAuthProvider(config);
97
+ * await provider!.authenticate();
98
+ * }
99
+ */
100
+ export function requiresAuthentication(config) {
101
+ return config.type !== 'sqlite';
102
+ }
103
+ //# sourceMappingURL=auth-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-factory.js","sourceRoot":"","sources":["../../../src/adapters/auth/auth-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,yBAAyB;IACzB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACnD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,IAAI,qBAAqB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrG,CAAC;IAED,kDAAkD;IAClD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6CAA6C;IAC7C,qDAAqD;IACrD,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAsB;IAC3D,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;AAClC,CAAC"}
@@ -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 type { SSLConfig, AuthConfig, ConnectionConfig, DatabaseConfig } from '../../config/types.js';
30
+ //# sourceMappingURL=auth-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-types.d.ts","sourceRoot":"","sources":["../../../src/adapters/auth/auth-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,YAAY,EACV,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,cAAc,EACf,MAAM,uBAAuB,CAAC"}
@@ -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"}