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.
Files changed (370) hide show
  1. package/CHANGELOG.md +318 -0
  2. package/README.md +54 -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/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +1 -0
  52. package/dist/{migrations → config}/knex/bootstrap/20251025020452_create_master_tables.js +7 -2
  53. package/dist/config/knex/bootstrap/20251025020452_create_master_tables.js.map +1 -0
  54. package/dist/config/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +1 -0
  55. package/dist/{migrations → config}/knex/bootstrap/20251025021152_create_transaction_tables.js +49 -50
  56. package/dist/config/knex/bootstrap/20251025021152_create_transaction_tables.js.map +1 -0
  57. package/dist/config/knex/bootstrap/20251025021351_create_indexes.d.ts.map +1 -0
  58. package/dist/config/knex/bootstrap/20251025021351_create_indexes.js.map +1 -0
  59. package/dist/config/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +1 -0
  60. package/dist/{migrations → config}/knex/bootstrap/20251025021416_seed_master_data.js +11 -6
  61. package/dist/config/knex/bootstrap/20251025021416_seed_master_data.js.map +1 -0
  62. package/dist/config/knex/bootstrap/20251025070349_create_views.d.ts.map +1 -0
  63. package/dist/{migrations → config}/knex/bootstrap/20251025070349_create_views.js +66 -14
  64. package/dist/config/knex/bootstrap/20251025070349_create_views.js.map +1 -0
  65. package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts.map +1 -0
  66. package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js +22 -0
  67. package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js.map +1 -0
  68. package/dist/config/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts.map +1 -0
  69. package/dist/config/knex/enhancements/20251025082220_fix_task_dependencies_columns.js.map +1 -0
  70. package/dist/config/knex/enhancements/20251025090000_create_help_system_tables.d.ts.map +1 -0
  71. package/dist/{migrations → config}/knex/enhancements/20251025090000_create_help_system_tables.js +6 -0
  72. package/dist/config/knex/enhancements/20251025090000_create_help_system_tables.js.map +1 -0
  73. package/dist/config/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts.map +1 -0
  74. package/dist/{migrations → config}/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js +6 -0
  75. package/dist/config/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js.map +1 -0
  76. package/dist/config/knex/enhancements/20251025100000_seed_help_metadata.d.ts.map +1 -0
  77. package/dist/{migrations → config}/knex/enhancements/20251025100000_seed_help_metadata.js +6 -0
  78. package/dist/config/knex/enhancements/20251025100000_seed_help_metadata.js.map +1 -0
  79. package/dist/config/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts.map +1 -0
  80. package/dist/config/knex/enhancements/20251025100100_seed_remaining_use_cases.js.map +1 -0
  81. package/dist/config/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts.map +1 -0
  82. package/dist/{migrations → config}/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js +7 -0
  83. package/dist/config/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js.map +1 -0
  84. package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts.map +1 -0
  85. package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.js +62 -0
  86. package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.js.map +1 -0
  87. package/dist/config/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts.map +1 -0
  88. package/dist/config/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js.map +1 -0
  89. package/dist/config/knex/enhancements/20251027020000_update_agent_reusability.d.ts.map +1 -0
  90. package/dist/{migrations → config}/knex/enhancements/20251027020000_update_agent_reusability.js +6 -0
  91. package/dist/config/knex/enhancements/20251027020000_update_agent_reusability.js.map +1 -0
  92. package/dist/config/knex/enhancements/20251028000000_simplify_agent_system.d.ts.map +1 -0
  93. package/dist/{migrations → config}/knex/enhancements/20251028000000_simplify_agent_system.js +6 -0
  94. package/dist/config/knex/enhancements/20251028000000_simplify_agent_system.js.map +1 -0
  95. package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.d.ts +13 -0
  96. package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.d.ts.map +1 -0
  97. package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.js +48 -0
  98. package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.js.map +1 -0
  99. package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.d.ts +24 -0
  100. package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.d.ts.map +1 -0
  101. package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.js +189 -0
  102. package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.js.map +1 -0
  103. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.d.ts +16 -0
  104. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.d.ts.map +1 -0
  105. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.js +65 -0
  106. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.js.map +1 -0
  107. package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.d.ts +23 -0
  108. package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.d.ts.map +1 -0
  109. package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.js +118 -0
  110. package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.js.map +1 -0
  111. package/dist/config/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +1 -0
  112. package/dist/config/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js.map +1 -0
  113. package/dist/config/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +1 -0
  114. package/dist/config/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js.map +1 -0
  115. package/dist/config/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +1 -0
  116. package/dist/config/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js.map +1 -0
  117. package/dist/config/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +1 -0
  118. package/dist/config/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js.map +1 -0
  119. package/dist/config/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +1 -0
  120. package/dist/config/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +1 -0
  121. package/dist/config/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +1 -0
  122. package/dist/config/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js.map +1 -0
  123. package/dist/config/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +1 -0
  124. package/dist/config/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js.map +1 -0
  125. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.d.ts +49 -0
  126. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.d.ts.map +1 -0
  127. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js +864 -0
  128. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js.map +1 -0
  129. package/dist/config/loader.d.ts +19 -1
  130. package/dist/config/loader.d.ts.map +1 -1
  131. package/dist/config/loader.js +149 -4
  132. package/dist/config/loader.js.map +1 -1
  133. package/dist/config/types.d.ts +261 -2
  134. package/dist/config/types.d.ts.map +1 -1
  135. package/dist/config/types.js.map +1 -1
  136. package/dist/config/writer.d.ts +65 -0
  137. package/dist/config/writer.d.ts.map +1 -0
  138. package/dist/config/writer.js +139 -0
  139. package/dist/config/writer.js.map +1 -0
  140. package/dist/database.d.ts +11 -2
  141. package/dist/database.d.ts.map +1 -1
  142. package/dist/database.js +62 -6
  143. package/dist/database.js.map +1 -1
  144. package/dist/index.js +165 -35
  145. package/dist/index.js.map +1 -1
  146. package/dist/knexfile.d.ts.map +1 -1
  147. package/dist/knexfile.js +88 -12
  148. package/dist/knexfile.js.map +1 -1
  149. package/dist/tests/all-features.test.js +15 -3
  150. package/dist/tests/all-features.test.js.map +1 -1
  151. package/dist/tests/config-loader.test.d.ts +6 -0
  152. package/dist/tests/config-loader.test.d.ts.map +1 -0
  153. package/dist/tests/config-loader.test.js +201 -0
  154. package/dist/tests/config-loader.test.js.map +1 -0
  155. package/dist/tests/connection-manager-integration.test.d.ts +2 -0
  156. package/dist/tests/connection-manager-integration.test.d.ts.map +1 -0
  157. package/dist/tests/connection-manager-integration.test.js +431 -0
  158. package/dist/tests/connection-manager-integration.test.js.map +1 -0
  159. package/dist/tests/connection-manager.test.d.ts +2 -0
  160. package/dist/tests/connection-manager.test.d.ts.map +1 -0
  161. package/dist/tests/connection-manager.test.js +361 -0
  162. package/dist/tests/connection-manager.test.js.map +1 -0
  163. package/dist/tests/dump-import.test.d.ts +15 -0
  164. package/dist/tests/dump-import.test.d.ts.map +1 -0
  165. package/dist/tests/dump-import.test.js +430 -0
  166. package/dist/tests/dump-import.test.js.map +1 -0
  167. package/dist/tests/migration-idempotency.test.d.ts +2 -0
  168. package/dist/tests/migration-idempotency.test.d.ts.map +1 -0
  169. package/dist/tests/migration-idempotency.test.js +330 -0
  170. package/dist/tests/migration-idempotency.test.js.map +1 -0
  171. package/dist/tests/migration-upgrade-paths.test.d.ts +2 -0
  172. package/dist/tests/migration-upgrade-paths.test.d.ts.map +1 -0
  173. package/dist/tests/migration-upgrade-paths.test.js +248 -0
  174. package/dist/tests/migration-upgrade-paths.test.js.map +1 -0
  175. package/dist/tests/multi-project-migration.test.d.ts +17 -0
  176. package/dist/tests/multi-project-migration.test.d.ts.map +1 -0
  177. package/dist/tests/multi-project-migration.test.js +399 -0
  178. package/dist/tests/multi-project-migration.test.js.map +1 -0
  179. package/dist/tests/multi-project.test.d.ts +5 -0
  180. package/dist/tests/multi-project.test.d.ts.map +1 -0
  181. package/dist/tests/multi-project.test.js +238 -0
  182. package/dist/tests/multi-project.test.js.map +1 -0
  183. package/dist/tests/schema-migration.test.d.ts +8 -0
  184. package/dist/tests/schema-migration.test.d.ts.map +1 -0
  185. package/dist/tests/schema-migration.test.js +108 -0
  186. package/dist/tests/schema-migration.test.js.map +1 -0
  187. package/dist/tests/sql-dump-converters.test.d.ts +7 -0
  188. package/dist/tests/sql-dump-converters.test.d.ts.map +1 -0
  189. package/dist/tests/sql-dump-converters.test.js +314 -0
  190. package/dist/tests/sql-dump-converters.test.js.map +1 -0
  191. package/dist/tests/sql-dump-cross-database.test.d.ts +21 -0
  192. package/dist/tests/sql-dump-cross-database.test.d.ts.map +1 -0
  193. package/dist/tests/sql-dump-cross-database.test.js +314 -0
  194. package/dist/tests/sql-dump-cross-database.test.js.map +1 -0
  195. package/dist/tests/sql-dump-default-conversions.test.d.ts +8 -0
  196. package/dist/tests/sql-dump-default-conversions.test.d.ts.map +1 -0
  197. package/dist/tests/sql-dump-default-conversions.test.js +141 -0
  198. package/dist/tests/sql-dump-default-conversions.test.js.map +1 -0
  199. package/dist/tests/sql-dump-fk-constraints.test.d.ts +13 -0
  200. package/dist/tests/sql-dump-fk-constraints.test.d.ts.map +1 -0
  201. package/dist/tests/sql-dump-fk-constraints.test.js +381 -0
  202. package/dist/tests/sql-dump-fk-constraints.test.js.map +1 -0
  203. package/dist/tests/sql-dump-indexes.test.d.ts +12 -0
  204. package/dist/tests/sql-dump-indexes.test.d.ts.map +1 -0
  205. package/dist/tests/sql-dump-indexes.test.js +269 -0
  206. package/dist/tests/sql-dump-indexes.test.js.map +1 -0
  207. package/dist/tests/sql-dump-integration.test.d.ts +16 -0
  208. package/dist/tests/sql-dump-integration.test.d.ts.map +1 -0
  209. package/dist/tests/sql-dump-integration.test.js +342 -0
  210. package/dist/tests/sql-dump-integration.test.js.map +1 -0
  211. package/dist/tests/sql-dump-table-ordering.test.d.ts +8 -0
  212. package/dist/tests/sql-dump-table-ordering.test.d.ts.map +1 -0
  213. package/dist/tests/sql-dump-table-ordering.test.js +253 -0
  214. package/dist/tests/sql-dump-table-ordering.test.js.map +1 -0
  215. package/dist/tests/tasks.link-file-backward-compat.test.js +11 -1
  216. package/dist/tests/tasks.link-file-backward-compat.test.js.map +1 -1
  217. package/dist/tests/tasks.watch-files-action.test.js +11 -1
  218. package/dist/tests/tasks.watch-files-action.test.js.map +1 -1
  219. package/dist/tests/type-conversion.test.d.ts +8 -0
  220. package/dist/tests/type-conversion.test.d.ts.map +1 -0
  221. package/dist/tests/type-conversion.test.js +312 -0
  222. package/dist/tests/type-conversion.test.js.map +1 -0
  223. package/dist/tests/utils/test-helpers.d.ts +93 -0
  224. package/dist/tests/utils/test-helpers.d.ts.map +1 -0
  225. package/dist/tests/utils/test-helpers.js +407 -0
  226. package/dist/tests/utils/test-helpers.js.map +1 -0
  227. package/dist/tools/config.d.ts +58 -0
  228. package/dist/tools/config.d.ts.map +1 -0
  229. package/dist/tools/config.js +281 -0
  230. package/dist/tools/config.js.map +1 -0
  231. package/dist/tools/constraints.d.ts.map +1 -1
  232. package/dist/tools/constraints.js +138 -122
  233. package/dist/tools/constraints.js.map +1 -1
  234. package/dist/tools/context.d.ts.map +1 -1
  235. package/dist/tools/context.js +216 -109
  236. package/dist/tools/context.js.map +1 -1
  237. package/dist/tools/files.d.ts.map +1 -1
  238. package/dist/tools/files.js +123 -102
  239. package/dist/tools/files.js.map +1 -1
  240. package/dist/tools/tasks.d.ts.map +1 -1
  241. package/dist/tools/tasks.js +581 -518
  242. package/dist/tools/tasks.js.map +1 -1
  243. package/dist/tools/utils.d.ts +5 -0
  244. package/dist/tools/utils.d.ts.map +1 -1
  245. package/dist/tools/utils.js +176 -122
  246. package/dist/tools/utils.js.map +1 -1
  247. package/dist/types.d.ts +9 -26
  248. package/dist/types.d.ts.map +1 -1
  249. package/dist/utils/cleanup.d.ts +3 -0
  250. package/dist/utils/cleanup.d.ts.map +1 -1
  251. package/dist/utils/cleanup.js +14 -2
  252. package/dist/utils/cleanup.js.map +1 -1
  253. package/dist/utils/connection-manager.d.ts +59 -0
  254. package/dist/utils/connection-manager.d.ts.map +1 -0
  255. package/dist/utils/connection-manager.js +178 -0
  256. package/dist/utils/connection-manager.js.map +1 -0
  257. package/dist/utils/debug-logger.d.ts +8 -4
  258. package/dist/utils/debug-logger.d.ts.map +1 -1
  259. package/dist/utils/debug-logger.js +27 -7
  260. package/dist/utils/debug-logger.js.map +1 -1
  261. package/dist/utils/error-handler.d.ts +2 -2
  262. package/dist/utils/error-handler.d.ts.map +1 -1
  263. package/dist/utils/error-handler.js +10 -7
  264. package/dist/utils/error-handler.js.map +1 -1
  265. package/dist/utils/parameter-validator.d.ts.map +1 -1
  266. package/dist/utils/parameter-validator.js +36 -15
  267. package/dist/utils/parameter-validator.js.map +1 -1
  268. package/dist/utils/project-context.d.ts +111 -0
  269. package/dist/utils/project-context.d.ts.map +1 -0
  270. package/dist/utils/project-context.js +187 -0
  271. package/dist/utils/project-context.js.map +1 -0
  272. package/dist/utils/sql-dump-converters.d.ts +188 -0
  273. package/dist/utils/sql-dump-converters.d.ts.map +1 -0
  274. package/dist/utils/sql-dump-converters.js +311 -0
  275. package/dist/utils/sql-dump-converters.js.map +1 -0
  276. package/dist/utils/sql-dump.d.ts +102 -0
  277. package/dist/utils/sql-dump.d.ts.map +1 -0
  278. package/dist/utils/sql-dump.js +1550 -0
  279. package/dist/utils/sql-dump.js.map +1 -0
  280. package/dist/utils/vcs-adapter.d.ts +42 -0
  281. package/dist/utils/vcs-adapter.d.ts.map +1 -1
  282. package/dist/utils/vcs-adapter.js +154 -0
  283. package/dist/utils/vcs-adapter.js.map +1 -1
  284. package/docs/BASEADAPTER_IMPLEMENTATION.md +399 -0
  285. package/docs/DATABASE_AUTH.md +445 -0
  286. package/docs/DATABASE_MIGRATION.md +247 -0
  287. package/docs/MULTI_PROJECT_ARCHITECTURE.md +497 -0
  288. package/package.json +12 -4
  289. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +0 -1
  290. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.js.map +0 -1
  291. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +0 -1
  292. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.js.map +0 -1
  293. package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.d.ts.map +0 -1
  294. package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.js.map +0 -1
  295. package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +0 -1
  296. package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.js.map +0 -1
  297. package/dist/migrations/knex/bootstrap/20251025070349_create_views.d.ts.map +0 -1
  298. package/dist/migrations/knex/bootstrap/20251025070349_create_views.js.map +0 -1
  299. package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts.map +0 -1
  300. package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js +0 -15
  301. package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js.map +0 -1
  302. package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts.map +0 -1
  303. package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.js.map +0 -1
  304. package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.d.ts.map +0 -1
  305. package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.js.map +0 -1
  306. package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts.map +0 -1
  307. package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js.map +0 -1
  308. package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.d.ts.map +0 -1
  309. package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.js.map +0 -1
  310. package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts.map +0 -1
  311. package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.js.map +0 -1
  312. package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts.map +0 -1
  313. package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js.map +0 -1
  314. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts.map +0 -1
  315. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js +0 -34
  316. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js.map +0 -1
  317. package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts.map +0 -1
  318. package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js.map +0 -1
  319. package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.d.ts.map +0 -1
  320. package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.js.map +0 -1
  321. package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.d.ts.map +0 -1
  322. package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.js.map +0 -1
  323. package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +0 -1
  324. package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js.map +0 -1
  325. package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +0 -1
  326. package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js.map +0 -1
  327. package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +0 -1
  328. package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js.map +0 -1
  329. package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +0 -1
  330. package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js.map +0 -1
  331. package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +0 -1
  332. package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +0 -1
  333. package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +0 -1
  334. package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js.map +0 -1
  335. package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +0 -1
  336. package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js.map +0 -1
  337. /package/dist/{migrations → config}/knex/bootstrap/20251025020452_create_master_tables.d.ts +0 -0
  338. /package/dist/{migrations → config}/knex/bootstrap/20251025021152_create_transaction_tables.d.ts +0 -0
  339. /package/dist/{migrations → config}/knex/bootstrap/20251025021351_create_indexes.d.ts +0 -0
  340. /package/dist/{migrations → config}/knex/bootstrap/20251025021351_create_indexes.js +0 -0
  341. /package/dist/{migrations → config}/knex/bootstrap/20251025021416_seed_master_data.d.ts +0 -0
  342. /package/dist/{migrations → config}/knex/bootstrap/20251025070349_create_views.d.ts +0 -0
  343. /package/dist/{migrations → config}/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts +0 -0
  344. /package/dist/{migrations → config}/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts +0 -0
  345. /package/dist/{migrations → config}/knex/enhancements/20251025082220_fix_task_dependencies_columns.js +0 -0
  346. /package/dist/{migrations → config}/knex/enhancements/20251025090000_create_help_system_tables.d.ts +0 -0
  347. /package/dist/{migrations → config}/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts +0 -0
  348. /package/dist/{migrations → config}/knex/enhancements/20251025100000_seed_help_metadata.d.ts +0 -0
  349. /package/dist/{migrations → config}/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts +0 -0
  350. /package/dist/{migrations → config}/knex/enhancements/20251025100100_seed_remaining_use_cases.js +0 -0
  351. /package/dist/{migrations → config}/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts +0 -0
  352. /package/dist/{migrations → config}/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts +0 -0
  353. /package/dist/{migrations → config}/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts +0 -0
  354. /package/dist/{migrations → config}/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js +0 -0
  355. /package/dist/{migrations → config}/knex/enhancements/20251027020000_update_agent_reusability.d.ts +0 -0
  356. /package/dist/{migrations → config}/knex/enhancements/20251028000000_simplify_agent_system.d.ts +0 -0
  357. /package/dist/{migrations → config}/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts +0 -0
  358. /package/dist/{migrations → config}/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js +0 -0
  359. /package/dist/{migrations → config}/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts +0 -0
  360. /package/dist/{migrations → config}/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js +0 -0
  361. /package/dist/{migrations → config}/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts +0 -0
  362. /package/dist/{migrations → config}/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js +0 -0
  363. /package/dist/{migrations → config}/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts +0 -0
  364. /package/dist/{migrations → config}/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js +0 -0
  365. /package/dist/{migrations → config}/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts +0 -0
  366. /package/dist/{migrations → config}/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js +0 -0
  367. /package/dist/{migrations → config}/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts +0 -0
  368. /package/dist/{migrations → config}/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js +0 -0
  369. /package/dist/{migrations → config}/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts +0 -0
  370. /package/dist/{migrations → config}/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js +0 -0
@@ -0,0 +1,361 @@
1
+ import { describe, it, mock, beforeEach, afterEach } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { ConnectionManager } from '../utils/connection-manager.js';
4
+ describe('ConnectionManager', () => {
5
+ let connectionManager;
6
+ let originalSetTimeout;
7
+ let originalProcessExit;
8
+ let originalConsoleError;
9
+ let mockSetTimeout;
10
+ let processExitCalled;
11
+ let processExitCode;
12
+ // Helper to create connection error with proper error code
13
+ function createConnectionError(code, message) {
14
+ const error = new Error(message || code);
15
+ error.code = code;
16
+ return error;
17
+ }
18
+ beforeEach(() => {
19
+ connectionManager = new ConnectionManager();
20
+ processExitCalled = false;
21
+ processExitCode = undefined;
22
+ // Mock setTimeout to execute immediately
23
+ originalSetTimeout = global.setTimeout;
24
+ mockSetTimeout = mock.fn((callback) => {
25
+ callback();
26
+ return {};
27
+ });
28
+ global.setTimeout = mockSetTimeout;
29
+ // Mock process.exit
30
+ originalProcessExit = process.exit;
31
+ process.exit = mock.fn((code) => {
32
+ processExitCalled = true;
33
+ processExitCode = code;
34
+ throw new Error('process.exit called'); // Prevent actual exit
35
+ });
36
+ // Mock console.error to suppress output
37
+ originalConsoleError = console.error;
38
+ console.error = mock.fn();
39
+ });
40
+ afterEach(() => {
41
+ global.setTimeout = originalSetTimeout;
42
+ process.exit = originalProcessExit;
43
+ console.error = originalConsoleError;
44
+ });
45
+ describe('executeWithRetry', () => {
46
+ it('should execute operation successfully on first attempt', async () => {
47
+ const operation = mock.fn(async () => 'success');
48
+ const result = await connectionManager.executeWithRetry(operation);
49
+ assert.strictEqual(result, 'success');
50
+ assert.strictEqual(operation.mock.calls.length, 1);
51
+ assert.strictEqual(mockSetTimeout.mock.calls.length, 0); // No retries
52
+ });
53
+ it('should retry and succeed on 2nd attempt', async () => {
54
+ let attemptCount = 0;
55
+ const operation = mock.fn(async () => {
56
+ attemptCount++;
57
+ if (attemptCount === 1) {
58
+ throw createConnectionError('ECONNREFUSED', 'Connection refused');
59
+ }
60
+ return 'success';
61
+ });
62
+ const result = await connectionManager.executeWithRetry(operation);
63
+ assert.strictEqual(result, 'success');
64
+ assert.strictEqual(operation.mock.calls.length, 2);
65
+ assert.strictEqual(mockSetTimeout.mock.calls.length, 1); // 1 retry
66
+ });
67
+ it('should retry and succeed on 3rd attempt', async () => {
68
+ let attemptCount = 0;
69
+ const operation = mock.fn(async () => {
70
+ attemptCount++;
71
+ if (attemptCount <= 2) {
72
+ throw new Error('Connection lost to database');
73
+ }
74
+ return 'success';
75
+ });
76
+ const result = await connectionManager.executeWithRetry(operation);
77
+ assert.strictEqual(result, 'success');
78
+ assert.strictEqual(operation.mock.calls.length, 3);
79
+ assert.strictEqual(mockSetTimeout.mock.calls.length, 2); // 2 retries
80
+ });
81
+ it('should call process.exit(1) after max retries exceeded', async () => {
82
+ const operation = mock.fn(async () => {
83
+ throw createConnectionError('ECONNREFUSED', 'Connection refused');
84
+ });
85
+ try {
86
+ await connectionManager.executeWithRetry(operation);
87
+ assert.fail('Should have thrown error from process.exit');
88
+ }
89
+ catch (error) {
90
+ assert.strictEqual(error.message, 'process.exit called');
91
+ assert.strictEqual(processExitCalled, true);
92
+ assert.strictEqual(processExitCode, 1);
93
+ assert.strictEqual(operation.mock.calls.length, 6); // Initial + 5 retries
94
+ assert.strictEqual(mockSetTimeout.mock.calls.length, 5); // 5 retries
95
+ }
96
+ });
97
+ it('should throw non-connection errors immediately without retry', async () => {
98
+ const operation = mock.fn(async () => {
99
+ throw new Error('Validation error: Invalid data');
100
+ });
101
+ await assert.rejects(async () => await connectionManager.executeWithRetry(operation), {
102
+ name: 'Error',
103
+ message: 'Validation error: Invalid data',
104
+ });
105
+ assert.strictEqual(operation.mock.calls.length, 1);
106
+ assert.strictEqual(mockSetTimeout.mock.calls.length, 0); // No retries
107
+ assert.strictEqual(processExitCalled, false);
108
+ });
109
+ it('should reset retryCount to 0 after successful operation', async () => {
110
+ let callCount = 0;
111
+ const result1 = await connectionManager.executeWithRetry(async () => {
112
+ callCount++;
113
+ if (callCount === 1) {
114
+ throw createConnectionError('ECONNREFUSED');
115
+ }
116
+ return 'success1';
117
+ });
118
+ assert.strictEqual(result1, 'success1');
119
+ assert.strictEqual(callCount, 2); // First failed, second succeeded
120
+ // Second operation should start fresh (no accumulated retries)
121
+ const result2 = await connectionManager.executeWithRetry(async () => 'success2');
122
+ assert.strictEqual(result2, 'success2');
123
+ });
124
+ it('should use exponential backoff delays', async () => {
125
+ const delays = [];
126
+ const mockSetTimeoutWithTracking = mock.fn((callback, delay) => {
127
+ delays.push(delay);
128
+ callback();
129
+ return {};
130
+ });
131
+ global.setTimeout = mockSetTimeoutWithTracking;
132
+ let attemptCount = 0;
133
+ await connectionManager.executeWithRetry(async () => {
134
+ attemptCount++;
135
+ if (attemptCount <= 3) {
136
+ throw createConnectionError('ETIMEDOUT');
137
+ }
138
+ return 'success';
139
+ });
140
+ // Verify exponential backoff: 1000ms, 2000ms, 4000ms
141
+ assert.strictEqual(delays.length, 3);
142
+ assert.strictEqual(delays[0], 1000); // 1s
143
+ assert.strictEqual(delays[1], 2000); // 2s
144
+ assert.strictEqual(delays[2], 4000); // 4s
145
+ });
146
+ });
147
+ describe('isConnectionError', () => {
148
+ it('should detect ECONNREFUSED errors', async () => {
149
+ let attemptCount = 0;
150
+ const result = await connectionManager.executeWithRetry(async () => {
151
+ attemptCount++;
152
+ if (attemptCount === 1) {
153
+ throw createConnectionError('ECONNREFUSED', 'Connection refused');
154
+ }
155
+ return 'success';
156
+ });
157
+ assert.strictEqual(result, 'success');
158
+ assert.strictEqual(attemptCount, 2);
159
+ assert.strictEqual(mockSetTimeout.mock.calls.length, 1); // Retry occurred
160
+ });
161
+ it('should detect ENOTFOUND errors', async () => {
162
+ let attemptCount = 0;
163
+ const result = await connectionManager.executeWithRetry(async () => {
164
+ attemptCount++;
165
+ if (attemptCount === 1) {
166
+ throw createConnectionError('ENOTFOUND', 'Host not found');
167
+ }
168
+ return 'success';
169
+ });
170
+ assert.strictEqual(result, 'success');
171
+ assert.strictEqual(attemptCount, 2);
172
+ assert.strictEqual(mockSetTimeout.mock.calls.length, 1); // Retry occurred
173
+ });
174
+ it('should detect ETIMEDOUT errors', async () => {
175
+ let attemptCount = 0;
176
+ const result = await connectionManager.executeWithRetry(async () => {
177
+ attemptCount++;
178
+ if (attemptCount === 1) {
179
+ throw createConnectionError('ETIMEDOUT', 'Connection timed out');
180
+ }
181
+ return 'success';
182
+ });
183
+ assert.strictEqual(result, 'success');
184
+ assert.strictEqual(attemptCount, 2);
185
+ assert.strictEqual(mockSetTimeout.mock.calls.length, 1); // Retry occurred
186
+ });
187
+ it('should detect ECONNRESET errors', async () => {
188
+ let attemptCount = 0;
189
+ const result = await connectionManager.executeWithRetry(async () => {
190
+ attemptCount++;
191
+ if (attemptCount === 1) {
192
+ throw createConnectionError('ECONNRESET', 'Connection reset by peer');
193
+ }
194
+ return 'success';
195
+ });
196
+ assert.strictEqual(result, 'success');
197
+ assert.strictEqual(attemptCount, 2);
198
+ assert.strictEqual(mockSetTimeout.mock.calls.length, 1); // Retry occurred
199
+ });
200
+ it('should detect "Connection lost" errors', async () => {
201
+ let attemptCount = 0;
202
+ const result = await connectionManager.executeWithRetry(async () => {
203
+ attemptCount++;
204
+ if (attemptCount === 1) {
205
+ throw new Error('Connection lost to MySQL server');
206
+ }
207
+ return 'success';
208
+ });
209
+ assert.strictEqual(result, 'success');
210
+ assert.strictEqual(attemptCount, 2);
211
+ assert.strictEqual(mockSetTimeout.mock.calls.length, 1); // Retry occurred
212
+ });
213
+ it('should detect "Lost connection" errors', async () => {
214
+ let attemptCount = 0;
215
+ const result = await connectionManager.executeWithRetry(async () => {
216
+ attemptCount++;
217
+ if (attemptCount === 1) {
218
+ throw new Error('Lost connection to database during query');
219
+ }
220
+ return 'success';
221
+ });
222
+ assert.strictEqual(result, 'success');
223
+ assert.strictEqual(attemptCount, 2);
224
+ assert.strictEqual(mockSetTimeout.mock.calls.length, 1); // Retry occurred
225
+ });
226
+ it('should NOT detect non-connection errors', async () => {
227
+ const errors = [
228
+ 'Validation error',
229
+ 'NOT NULL constraint failed',
230
+ 'FOREIGN KEY constraint failed',
231
+ 'UNIQUE constraint failed',
232
+ 'Syntax error',
233
+ ];
234
+ for (const errorMsg of errors) {
235
+ const operation = mock.fn(async () => {
236
+ throw new Error(errorMsg);
237
+ });
238
+ await assert.rejects(async () => await connectionManager.executeWithRetry(operation), {
239
+ message: errorMsg,
240
+ });
241
+ assert.strictEqual(mockSetTimeout.mock.calls.length, 0); // No retries
242
+ }
243
+ });
244
+ });
245
+ describe('retry behavior', () => {
246
+ it('should maintain retry count across failed attempts', async () => {
247
+ const delays = [];
248
+ const mockSetTimeoutWithTracking = mock.fn((callback, delay) => {
249
+ delays.push(delay);
250
+ callback();
251
+ return {};
252
+ });
253
+ global.setTimeout = mockSetTimeoutWithTracking;
254
+ try {
255
+ await connectionManager.executeWithRetry(async () => {
256
+ throw createConnectionError('ECONNREFUSED');
257
+ });
258
+ }
259
+ catch (error) {
260
+ assert.strictEqual(error.message, 'process.exit called');
261
+ }
262
+ // Should have delays: 1000, 2000, 4000, 8000, 16000
263
+ assert.strictEqual(delays.length, 5);
264
+ assert.strictEqual(delays[0], 1000);
265
+ assert.strictEqual(delays[1], 2000);
266
+ assert.strictEqual(delays[2], 4000);
267
+ assert.strictEqual(delays[3], 8000);
268
+ assert.strictEqual(delays[4], 16000);
269
+ });
270
+ it('should reset retry count to 0 only after successful operation', async () => {
271
+ let attemptCount = 0;
272
+ await connectionManager.executeWithRetry(async () => {
273
+ attemptCount++;
274
+ if (attemptCount <= 2) {
275
+ throw createConnectionError('ECONNREFUSED');
276
+ }
277
+ return 'success';
278
+ });
279
+ assert.strictEqual(attemptCount, 3); // 2 failures + 1 success
280
+ // After success, next operation should not have accumulated retries
281
+ await connectionManager.executeWithRetry(async () => 'immediate success');
282
+ });
283
+ it('should handle mixed success and failure operations', async () => {
284
+ // Operation 1: Succeeds on 2nd attempt
285
+ let attempt1 = 0;
286
+ const result1 = await connectionManager.executeWithRetry(async () => {
287
+ attempt1++;
288
+ if (attempt1 === 1)
289
+ throw createConnectionError('ECONNREFUSED');
290
+ return 'op1 success';
291
+ });
292
+ assert.strictEqual(result1, 'op1 success');
293
+ assert.strictEqual(attempt1, 2);
294
+ // Operation 2: Immediate success
295
+ const result2 = await connectionManager.executeWithRetry(async () => 'op2 success');
296
+ assert.strictEqual(result2, 'op2 success');
297
+ // Operation 3: Succeeds on 3rd attempt
298
+ let attempt3 = 0;
299
+ const result3 = await connectionManager.executeWithRetry(async () => {
300
+ attempt3++;
301
+ if (attempt3 <= 2)
302
+ throw new Error('Connection lost');
303
+ return 'op3 success';
304
+ });
305
+ assert.strictEqual(result3, 'op3 success');
306
+ assert.strictEqual(attempt3, 3);
307
+ });
308
+ });
309
+ describe('edge cases', () => {
310
+ it('should handle operations that return undefined', async () => {
311
+ const operation = mock.fn(async () => undefined);
312
+ const result = await connectionManager.executeWithRetry(operation);
313
+ assert.strictEqual(result, undefined);
314
+ assert.strictEqual(operation.mock.calls.length, 1);
315
+ });
316
+ it('should handle operations that return null', async () => {
317
+ const operation = mock.fn(async () => null);
318
+ const result = await connectionManager.executeWithRetry(operation);
319
+ assert.strictEqual(result, null);
320
+ assert.strictEqual(operation.mock.calls.length, 1);
321
+ });
322
+ it('should handle operations that return complex objects', async () => {
323
+ const complexObject = {
324
+ id: 123,
325
+ data: { nested: 'value' },
326
+ array: [1, 2, 3],
327
+ };
328
+ const operation = mock.fn(async () => complexObject);
329
+ const result = await connectionManager.executeWithRetry(operation);
330
+ assert.deepStrictEqual(result, complexObject);
331
+ assert.strictEqual(operation.mock.calls.length, 1);
332
+ });
333
+ it('should handle errors without message property', async () => {
334
+ let attemptCount = 0;
335
+ const result = await connectionManager.executeWithRetry(async () => {
336
+ attemptCount++;
337
+ if (attemptCount === 1) {
338
+ throw { code: 'ECONNREFUSED' }; // Error object without message
339
+ }
340
+ return 'success';
341
+ });
342
+ assert.strictEqual(result, 'success');
343
+ assert.strictEqual(attemptCount, 2);
344
+ assert.strictEqual(mockSetTimeout.mock.calls.length, 1); // Retry occurred
345
+ });
346
+ it('should handle string errors (not Error objects)', async () => {
347
+ let attemptCount = 0;
348
+ const result = await connectionManager.executeWithRetry(async () => {
349
+ attemptCount++;
350
+ if (attemptCount === 1) {
351
+ throw 'Connection lost to server'; // String that matches pattern
352
+ }
353
+ return 'success';
354
+ });
355
+ assert.strictEqual(result, 'success');
356
+ assert.strictEqual(attemptCount, 2);
357
+ assert.strictEqual(mockSetTimeout.mock.calls.length, 1); // Retry occurred
358
+ });
359
+ });
360
+ });
361
+ //# sourceMappingURL=connection-manager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-manager.test.js","sourceRoot":"","sources":["../../src/tests/connection-manager.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Cross-database migration integration tests
3
+ *
4
+ * Tests full migration workflow:
5
+ * 1. Generate SQL dump from SQLite
6
+ * 2. Import to PostgreSQL
7
+ * 3. Import to MySQL
8
+ * 4. Verify data integrity
9
+ *
10
+ * Prerequisites:
11
+ * - Docker installed and running
12
+ * - Run: docker-compose -f docker/docker-compose.test.yml up -d
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=dump-import.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dump-import.test.d.ts","sourceRoot":"","sources":["../../src/tests/dump-import.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}