sqlew 3.6.10 → 3.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +346 -0
- package/README.md +54 -39
- package/assets/config.example.toml +93 -0
- package/assets/kanban-visualizer.png +0 -0
- package/assets/sample-agents/sqlew-architect.md +32 -13
- package/assets/sample-agents/sqlew-researcher.md +70 -17
- package/assets/sample-agents/sqlew-scrum-master.md +60 -25
- package/assets/schema.sql +2 -2
- package/dist/adapters/auth/auth-factory.d.ts +86 -0
- package/dist/adapters/auth/auth-factory.d.ts.map +1 -0
- package/dist/adapters/auth/auth-factory.js +103 -0
- package/dist/adapters/auth/auth-factory.js.map +1 -0
- package/dist/adapters/auth/auth-types.d.ts +30 -0
- package/dist/adapters/auth/auth-types.d.ts.map +1 -0
- package/dist/adapters/auth/auth-types.js +30 -0
- package/dist/adapters/auth/auth-types.js.map +1 -0
- package/dist/adapters/auth/base-auth-provider.d.ts +327 -0
- package/dist/adapters/auth/base-auth-provider.d.ts.map +1 -0
- package/dist/adapters/auth/base-auth-provider.js +111 -0
- package/dist/adapters/auth/base-auth-provider.js.map +1 -0
- package/dist/adapters/auth/direct-auth-provider.d.ts +356 -0
- package/dist/adapters/auth/direct-auth-provider.d.ts.map +1 -0
- package/dist/adapters/auth/direct-auth-provider.js +406 -0
- package/dist/adapters/auth/direct-auth-provider.js.map +1 -0
- package/dist/adapters/base-adapter.d.ts +638 -0
- package/dist/adapters/base-adapter.d.ts.map +1 -0
- package/dist/adapters/base-adapter.js +557 -0
- package/dist/adapters/base-adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +13 -2
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +27 -5
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/mysql-adapter.d.ts +547 -6
- package/dist/adapters/mysql-adapter.d.ts.map +1 -1
- package/dist/adapters/mysql-adapter.js +651 -32
- package/dist/adapters/mysql-adapter.js.map +1 -1
- package/dist/adapters/postgresql-adapter.d.ts +15 -4
- package/dist/adapters/postgresql-adapter.d.ts.map +1 -1
- package/dist/adapters/postgresql-adapter.js +19 -2
- package/dist/adapters/postgresql-adapter.js.map +1 -1
- package/dist/adapters/sqlite-adapter.d.ts +35 -5
- package/dist/adapters/sqlite-adapter.d.ts.map +1 -1
- package/dist/adapters/sqlite-adapter.js +57 -18
- package/dist/adapters/sqlite-adapter.js.map +1 -1
- package/dist/cli/db-dump.d.ts +32 -0
- package/dist/cli/db-dump.d.ts.map +1 -0
- package/dist/cli/db-dump.js +409 -0
- package/dist/cli/db-dump.js.map +1 -0
- package/dist/cli.js +24 -14
- package/dist/cli.js.map +1 -1
- package/dist/config/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/bootstrap/20251025020452_create_master_tables.js +7 -2
- package/dist/config/knex/bootstrap/20251025020452_create_master_tables.js.map +1 -0
- package/dist/config/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/bootstrap/20251025021152_create_transaction_tables.js +49 -50
- package/dist/config/knex/bootstrap/20251025021152_create_transaction_tables.js.map +1 -0
- package/dist/config/knex/bootstrap/20251025021351_create_indexes.d.ts.map +1 -0
- package/dist/config/knex/bootstrap/20251025021351_create_indexes.js.map +1 -0
- package/dist/config/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/bootstrap/20251025021416_seed_master_data.js +11 -6
- package/dist/config/knex/bootstrap/20251025021416_seed_master_data.js.map +1 -0
- package/dist/config/knex/bootstrap/20251025070349_create_views.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/bootstrap/20251025070349_create_views.js +66 -14
- package/dist/config/knex/bootstrap/20251025070349_create_views.js.map +1 -0
- package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js +22 -0
- package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js.map +1 -0
- package/dist/config/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251025082220_fix_task_dependencies_columns.js.map +1 -0
- package/dist/config/knex/enhancements/20251025090000_create_help_system_tables.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251025090000_create_help_system_tables.js +6 -0
- package/dist/config/knex/enhancements/20251025090000_create_help_system_tables.js.map +1 -0
- package/dist/config/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js +6 -0
- package/dist/config/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js.map +1 -0
- package/dist/config/knex/enhancements/20251025100000_seed_help_metadata.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251025100000_seed_help_metadata.js +6 -0
- package/dist/config/knex/enhancements/20251025100000_seed_help_metadata.js.map +1 -0
- package/dist/config/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251025100100_seed_remaining_use_cases.js.map +1 -0
- package/dist/config/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js +7 -0
- package/dist/config/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js.map +1 -0
- package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.js +62 -0
- package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.js.map +1 -0
- package/dist/config/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js.map +1 -0
- package/dist/config/knex/enhancements/20251027020000_update_agent_reusability.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251027020000_update_agent_reusability.js +6 -0
- package/dist/config/knex/enhancements/20251027020000_update_agent_reusability.js.map +1 -0
- package/dist/config/knex/enhancements/20251028000000_simplify_agent_system.d.ts.map +1 -0
- package/dist/{migrations → config}/knex/enhancements/20251028000000_simplify_agent_system.js +6 -0
- package/dist/config/knex/enhancements/20251028000000_simplify_agent_system.js.map +1 -0
- package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.d.ts +13 -0
- package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.js +48 -0
- package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.js.map +1 -0
- package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.d.ts +24 -0
- package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.js +189 -0
- package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.js.map +1 -0
- package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.d.ts +16 -0
- package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.js +65 -0
- package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.js.map +1 -0
- package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.d.ts +23 -0
- package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.js +118 -0
- package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.js.map +1 -0
- package/dist/config/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js.map +1 -0
- package/dist/config/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js.map +1 -0
- package/dist/config/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js.map +1 -0
- package/dist/config/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js.map +1 -0
- package/dist/config/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +1 -0
- package/dist/config/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js.map +1 -0
- package/dist/config/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js.map +1 -0
- package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.d.ts +49 -0
- package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.d.ts.map +1 -0
- package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js +864 -0
- package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js.map +1 -0
- package/dist/config/loader.d.ts +19 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +149 -4
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +261 -2
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/config/writer.d.ts +65 -0
- package/dist/config/writer.d.ts.map +1 -0
- package/dist/config/writer.js +139 -0
- package/dist/config/writer.js.map +1 -0
- package/dist/database.d.ts +11 -2
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +62 -6
- package/dist/database.js.map +1 -1
- package/dist/index.js +173 -39
- package/dist/index.js.map +1 -1
- package/dist/knexfile.d.ts.map +1 -1
- package/dist/knexfile.js +88 -12
- package/dist/knexfile.js.map +1 -1
- package/dist/tests/all-features.test.js +15 -3
- package/dist/tests/all-features.test.js.map +1 -1
- package/dist/tests/config-loader.test.d.ts +6 -0
- package/dist/tests/config-loader.test.d.ts.map +1 -0
- package/dist/tests/config-loader.test.js +201 -0
- package/dist/tests/config-loader.test.js.map +1 -0
- package/dist/tests/connection-manager-integration.test.d.ts +2 -0
- package/dist/tests/connection-manager-integration.test.d.ts.map +1 -0
- package/dist/tests/connection-manager-integration.test.js +431 -0
- package/dist/tests/connection-manager-integration.test.js.map +1 -0
- package/dist/tests/connection-manager.test.d.ts +2 -0
- package/dist/tests/connection-manager.test.d.ts.map +1 -0
- package/dist/tests/connection-manager.test.js +361 -0
- package/dist/tests/connection-manager.test.js.map +1 -0
- package/dist/tests/dump-import.test.d.ts +15 -0
- package/dist/tests/dump-import.test.d.ts.map +1 -0
- package/dist/tests/dump-import.test.js +430 -0
- package/dist/tests/dump-import.test.js.map +1 -0
- package/dist/tests/migration-idempotency.test.d.ts +2 -0
- package/dist/tests/migration-idempotency.test.d.ts.map +1 -0
- package/dist/tests/migration-idempotency.test.js +330 -0
- package/dist/tests/migration-idempotency.test.js.map +1 -0
- package/dist/tests/migration-upgrade-paths.test.d.ts +2 -0
- package/dist/tests/migration-upgrade-paths.test.d.ts.map +1 -0
- package/dist/tests/migration-upgrade-paths.test.js +248 -0
- package/dist/tests/migration-upgrade-paths.test.js.map +1 -0
- package/dist/tests/migrations/test-all-versions-real.js +3 -0
- package/dist/tests/migrations/test-all-versions-real.js.map +1 -1
- package/dist/tests/multi-project-migration.test.d.ts +17 -0
- package/dist/tests/multi-project-migration.test.d.ts.map +1 -0
- package/dist/tests/multi-project-migration.test.js +399 -0
- package/dist/tests/multi-project-migration.test.js.map +1 -0
- package/dist/tests/multi-project.test.d.ts +5 -0
- package/dist/tests/multi-project.test.d.ts.map +1 -0
- package/dist/tests/multi-project.test.js +238 -0
- package/dist/tests/multi-project.test.js.map +1 -0
- package/dist/tests/schema-migration.test.d.ts +8 -0
- package/dist/tests/schema-migration.test.d.ts.map +1 -0
- package/dist/tests/schema-migration.test.js +108 -0
- package/dist/tests/schema-migration.test.js.map +1 -0
- package/dist/tests/sql-dump-converters.test.d.ts +7 -0
- package/dist/tests/sql-dump-converters.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-converters.test.js +314 -0
- package/dist/tests/sql-dump-converters.test.js.map +1 -0
- package/dist/tests/sql-dump-cross-database.test.d.ts +21 -0
- package/dist/tests/sql-dump-cross-database.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-cross-database.test.js +314 -0
- package/dist/tests/sql-dump-cross-database.test.js.map +1 -0
- package/dist/tests/sql-dump-default-conversions.test.d.ts +8 -0
- package/dist/tests/sql-dump-default-conversions.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-default-conversions.test.js +141 -0
- package/dist/tests/sql-dump-default-conversions.test.js.map +1 -0
- package/dist/tests/sql-dump-fk-constraints.test.d.ts +13 -0
- package/dist/tests/sql-dump-fk-constraints.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-fk-constraints.test.js +381 -0
- package/dist/tests/sql-dump-fk-constraints.test.js.map +1 -0
- package/dist/tests/sql-dump-indexes.test.d.ts +12 -0
- package/dist/tests/sql-dump-indexes.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-indexes.test.js +269 -0
- package/dist/tests/sql-dump-indexes.test.js.map +1 -0
- package/dist/tests/sql-dump-integration.test.d.ts +16 -0
- package/dist/tests/sql-dump-integration.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-integration.test.js +342 -0
- package/dist/tests/sql-dump-integration.test.js.map +1 -0
- package/dist/tests/sql-dump-table-ordering.test.d.ts +8 -0
- package/dist/tests/sql-dump-table-ordering.test.d.ts.map +1 -0
- package/dist/tests/sql-dump-table-ordering.test.js +253 -0
- package/dist/tests/sql-dump-table-ordering.test.js.map +1 -0
- package/dist/tests/tasks.link-file-backward-compat.test.js +11 -1
- package/dist/tests/tasks.link-file-backward-compat.test.js.map +1 -1
- package/dist/tests/tasks.watch-files-action.test.js +11 -1
- package/dist/tests/tasks.watch-files-action.test.js.map +1 -1
- package/dist/tests/type-conversion.test.d.ts +8 -0
- package/dist/tests/type-conversion.test.d.ts.map +1 -0
- package/dist/tests/type-conversion.test.js +312 -0
- package/dist/tests/type-conversion.test.js.map +1 -0
- package/dist/tests/utils/test-helpers.d.ts +93 -0
- package/dist/tests/utils/test-helpers.d.ts.map +1 -0
- package/dist/tests/utils/test-helpers.js +407 -0
- package/dist/tests/utils/test-helpers.js.map +1 -0
- package/dist/tools/config.d.ts +58 -0
- package/dist/tools/config.d.ts.map +1 -0
- package/dist/tools/config.js +281 -0
- package/dist/tools/config.js.map +1 -0
- package/dist/tools/constraints.d.ts.map +1 -1
- package/dist/tools/constraints.js +138 -122
- package/dist/tools/constraints.js.map +1 -1
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +216 -109
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/files.d.ts.map +1 -1
- package/dist/tools/files.js +123 -102
- package/dist/tools/files.js.map +1 -1
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +593 -518
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/utils.d.ts +5 -0
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +176 -122
- package/dist/tools/utils.js.map +1 -1
- package/dist/types.d.ts +9 -26
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/cleanup.d.ts +3 -0
- package/dist/utils/cleanup.d.ts.map +1 -1
- package/dist/utils/cleanup.js +14 -2
- package/dist/utils/cleanup.js.map +1 -1
- package/dist/utils/connection-manager.d.ts +59 -0
- package/dist/utils/connection-manager.d.ts.map +1 -0
- package/dist/utils/connection-manager.js +178 -0
- package/dist/utils/connection-manager.js.map +1 -0
- package/dist/utils/debug-logger.d.ts +8 -4
- package/dist/utils/debug-logger.d.ts.map +1 -1
- package/dist/utils/debug-logger.js +27 -7
- package/dist/utils/debug-logger.js.map +1 -1
- package/dist/utils/error-handler.d.ts +6 -4
- package/dist/utils/error-handler.d.ts.map +1 -1
- package/dist/utils/error-handler.js +34 -9
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/parameter-validator.d.ts.map +1 -1
- package/dist/utils/parameter-validator.js +50 -16
- package/dist/utils/parameter-validator.js.map +1 -1
- package/dist/utils/project-context.d.ts +111 -0
- package/dist/utils/project-context.d.ts.map +1 -0
- package/dist/utils/project-context.js +187 -0
- package/dist/utils/project-context.js.map +1 -0
- package/dist/utils/sql-dump-converters.d.ts +188 -0
- package/dist/utils/sql-dump-converters.d.ts.map +1 -0
- package/dist/utils/sql-dump-converters.js +311 -0
- package/dist/utils/sql-dump-converters.js.map +1 -0
- package/dist/utils/sql-dump.d.ts +102 -0
- package/dist/utils/sql-dump.d.ts.map +1 -0
- package/dist/utils/sql-dump.js +1550 -0
- package/dist/utils/sql-dump.js.map +1 -0
- package/dist/utils/vcs-adapter.d.ts +42 -0
- package/dist/utils/vcs-adapter.d.ts.map +1 -1
- package/dist/utils/vcs-adapter.js +154 -0
- package/dist/utils/vcs-adapter.js.map +1 -1
- package/docs/BASEADAPTER_IMPLEMENTATION.md +399 -0
- package/docs/DATABASE_AUTH.md +445 -0
- package/docs/DATABASE_MIGRATION.md +247 -0
- package/docs/MULTI_PROJECT_ARCHITECTURE.md +497 -0
- package/package.json +12 -4
- package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.js.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.js.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.d.ts.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.js.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.js.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025070349_create_views.d.ts.map +0 -1
- package/dist/migrations/knex/bootstrap/20251025070349_create_views.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js +0 -15
- package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js +0 -34
- package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.js.map +0 -1
- package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.d.ts.map +0 -1
- package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js.map +0 -1
- package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +0 -1
- package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js.map +0 -1
- /package/dist/{migrations → config}/knex/bootstrap/20251025020452_create_master_tables.d.ts +0 -0
- /package/dist/{migrations → config}/knex/bootstrap/20251025021152_create_transaction_tables.d.ts +0 -0
- /package/dist/{migrations → config}/knex/bootstrap/20251025021351_create_indexes.d.ts +0 -0
- /package/dist/{migrations → config}/knex/bootstrap/20251025021351_create_indexes.js +0 -0
- /package/dist/{migrations → config}/knex/bootstrap/20251025021416_seed_master_data.d.ts +0 -0
- /package/dist/{migrations → config}/knex/bootstrap/20251025070349_create_views.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025082220_fix_task_dependencies_columns.js +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025090000_create_help_system_tables.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025100000_seed_help_metadata.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025100100_seed_remaining_use_cases.js +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251027020000_update_agent_reusability.d.ts +0 -0
- /package/dist/{migrations → config}/knex/enhancements/20251028000000_simplify_agent_system.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts +0 -0
- /package/dist/{migrations → config}/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/utils/cleanup.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/utils/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,eAAe,EACxB,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,GACrB,OAAO,CAAC;IACT,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAaD;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,eAAe,EACxB,eAAe,EAAE,MAAM,EACvB,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,eAAe,EACxB,eAAe,EAAE,MAAM,EACvB,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,eAAe,EACxB,eAAe,EAAE,MAAM,EACvB,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,eAAe,EACxB,YAAY,CAAC,EAAE,MAAM,EACrB,cAAc,CAAC,EAAE,MAAM,EACvB,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,GACrB,OAAO,CAAC;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB/F"}
|
package/dist/utils/cleanup.js
CHANGED
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
* Replaces the automatic triggers with weekend-aware logic
|
|
4
4
|
*
|
|
5
5
|
* CONVERTED: Using Knex.js with DatabaseAdapter (async/await)
|
|
6
|
+
* MULTI-PROJECT: All cleanup operations scoped by project_id (Constraint #40)
|
|
6
7
|
*/
|
|
7
8
|
import { calculateMessageCutoff, calculateFileChangeCutoff, releaseInactiveAgents } from './retention.js';
|
|
9
|
+
import { getProjectContext } from './project-context.js';
|
|
8
10
|
/**
|
|
9
11
|
* Perform automatic cleanup of old data
|
|
10
12
|
* Deletes old messages, file changes, and activity logs based on m_config settings
|
|
@@ -39,6 +41,7 @@ export async function cleanupMessages(adapter, cutoffTimestamp, trx) {
|
|
|
39
41
|
}
|
|
40
42
|
/**
|
|
41
43
|
* Delete old file changes before the cutoff timestamp
|
|
44
|
+
* PROJECT-SCOPED: Only deletes file changes for current project (Constraint #40)
|
|
42
45
|
*
|
|
43
46
|
* @param adapter - Database adapter instance
|
|
44
47
|
* @param cutoffTimestamp - Unix timestamp (seconds) for cutoff
|
|
@@ -47,11 +50,16 @@ export async function cleanupMessages(adapter, cutoffTimestamp, trx) {
|
|
|
47
50
|
*/
|
|
48
51
|
export async function cleanupFileChanges(adapter, cutoffTimestamp, trx) {
|
|
49
52
|
const knex = trx || adapter.getKnex();
|
|
50
|
-
|
|
53
|
+
const projectId = getProjectContext().getProjectId();
|
|
54
|
+
return await knex('t_file_changes')
|
|
55
|
+
.where('project_id', projectId)
|
|
56
|
+
.where('ts', '<', cutoffTimestamp)
|
|
57
|
+
.delete();
|
|
51
58
|
}
|
|
52
59
|
/**
|
|
53
60
|
* Delete old activity logs before the cutoff timestamp
|
|
54
61
|
* Activity logs use the same retention as messages (constraint #4)
|
|
62
|
+
* PROJECT-SCOPED: Only deletes activity logs for current project (Constraint #40)
|
|
55
63
|
*
|
|
56
64
|
* @param adapter - Database adapter instance
|
|
57
65
|
* @param cutoffTimestamp - Unix timestamp (seconds) for cutoff
|
|
@@ -60,7 +68,11 @@ export async function cleanupFileChanges(adapter, cutoffTimestamp, trx) {
|
|
|
60
68
|
*/
|
|
61
69
|
export async function cleanupActivityLogs(adapter, cutoffTimestamp, trx) {
|
|
62
70
|
const knex = trx || adapter.getKnex();
|
|
63
|
-
|
|
71
|
+
const projectId = getProjectContext().getProjectId();
|
|
72
|
+
return await knex('t_activity_log')
|
|
73
|
+
.where('project_id', projectId)
|
|
74
|
+
.where('ts', '<', cutoffTimestamp)
|
|
75
|
+
.delete();
|
|
64
76
|
}
|
|
65
77
|
/**
|
|
66
78
|
* Cleanup with custom retention periods (overrides config)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/utils/cleanup.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/utils/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connection Manager for MCP Shared Context Server
|
|
3
|
+
*
|
|
4
|
+
* Handles runtime database connection losses with exponential backoff retry logic.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Exponential backoff: 1s, 2s, 4s, 8s, 16s (total 31 seconds)
|
|
8
|
+
* - Max 5 retries before process.exit(1)
|
|
9
|
+
* - Connection error detection for SQLite, MySQL, PostgreSQL
|
|
10
|
+
* - Automatic retry on connection failures
|
|
11
|
+
* - Success resets retry counter
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* import connectionManager from './utils/connection-manager.js';
|
|
15
|
+
*
|
|
16
|
+
* const result = await connectionManager.executeWithRetry(async () => {
|
|
17
|
+
* return await db.query('SELECT * FROM table');
|
|
18
|
+
* });
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* ConnectionManager class for handling database connection failures
|
|
22
|
+
* with exponential backoff retry logic
|
|
23
|
+
*/
|
|
24
|
+
export declare class ConnectionManager {
|
|
25
|
+
private retryCount;
|
|
26
|
+
private readonly maxRetries;
|
|
27
|
+
private readonly baseDelay;
|
|
28
|
+
/**
|
|
29
|
+
* Execute a database operation with automatic retry on connection failure
|
|
30
|
+
* @param operation - Async function to execute
|
|
31
|
+
* @returns Result of the operation
|
|
32
|
+
* @throws Error if non-connection error or max retries exceeded
|
|
33
|
+
*/
|
|
34
|
+
executeWithRetry<T>(operation: () => Promise<T>): Promise<T>;
|
|
35
|
+
/**
|
|
36
|
+
* Retry operation with exponential backoff
|
|
37
|
+
* @param operation - Async function to retry
|
|
38
|
+
* @returns Result of the operation
|
|
39
|
+
* @throws Error if max retries exceeded
|
|
40
|
+
*/
|
|
41
|
+
private retryWithBackoff;
|
|
42
|
+
/**
|
|
43
|
+
* Detect if an error is a connection-related error
|
|
44
|
+
* @param error - Error to check
|
|
45
|
+
* @returns true if connection error, false otherwise
|
|
46
|
+
*/
|
|
47
|
+
private isConnectionError;
|
|
48
|
+
/**
|
|
49
|
+
* Get current retry count (for testing/monitoring)
|
|
50
|
+
*/
|
|
51
|
+
getRetryCount(): number;
|
|
52
|
+
/**
|
|
53
|
+
* Reset retry count (for testing)
|
|
54
|
+
*/
|
|
55
|
+
resetRetryCount(): void;
|
|
56
|
+
}
|
|
57
|
+
declare const connectionManager: ConnectionManager;
|
|
58
|
+
export default connectionManager;
|
|
59
|
+
//# sourceMappingURL=connection-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../src/utils/connection-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAK;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAElC;;;;;OAKG;IACG,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAqBlE;;;;;OAKG;YACW,gBAAgB;IAgD9B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAkEzB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,eAAe,IAAI,IAAI;CAGxB;AAGD,QAAA,MAAM,iBAAiB,mBAA0B,CAAC;AAElD,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connection Manager for MCP Shared Context Server
|
|
3
|
+
*
|
|
4
|
+
* Handles runtime database connection losses with exponential backoff retry logic.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Exponential backoff: 1s, 2s, 4s, 8s, 16s (total 31 seconds)
|
|
8
|
+
* - Max 5 retries before process.exit(1)
|
|
9
|
+
* - Connection error detection for SQLite, MySQL, PostgreSQL
|
|
10
|
+
* - Automatic retry on connection failures
|
|
11
|
+
* - Success resets retry counter
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* import connectionManager from './utils/connection-manager.js';
|
|
15
|
+
*
|
|
16
|
+
* const result = await connectionManager.executeWithRetry(async () => {
|
|
17
|
+
* return await db.query('SELECT * FROM table');
|
|
18
|
+
* });
|
|
19
|
+
*/
|
|
20
|
+
import { debugLog } from './debug-logger.js';
|
|
21
|
+
/**
|
|
22
|
+
* ConnectionManager class for handling database connection failures
|
|
23
|
+
* with exponential backoff retry logic
|
|
24
|
+
*/
|
|
25
|
+
export class ConnectionManager {
|
|
26
|
+
retryCount = 0;
|
|
27
|
+
maxRetries = 5;
|
|
28
|
+
baseDelay = 1000; // 1 second
|
|
29
|
+
/**
|
|
30
|
+
* Execute a database operation with automatic retry on connection failure
|
|
31
|
+
* @param operation - Async function to execute
|
|
32
|
+
* @returns Result of the operation
|
|
33
|
+
* @throws Error if non-connection error or max retries exceeded
|
|
34
|
+
*/
|
|
35
|
+
async executeWithRetry(operation) {
|
|
36
|
+
try {
|
|
37
|
+
const result = await operation();
|
|
38
|
+
// Success - reset retry counter
|
|
39
|
+
if (this.retryCount > 0) {
|
|
40
|
+
debugLog('INFO', `Operation successful after ${this.retryCount} retries`);
|
|
41
|
+
this.retryCount = 0;
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
// Check if this is a connection error
|
|
47
|
+
if (this.isConnectionError(error)) {
|
|
48
|
+
debugLog('WARN', 'Connection error detected', { error: error instanceof Error ? error.message : String(error) });
|
|
49
|
+
return await this.retryWithBackoff(operation);
|
|
50
|
+
}
|
|
51
|
+
// Not a connection error - rethrow immediately
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Retry operation with exponential backoff
|
|
57
|
+
* @param operation - Async function to retry
|
|
58
|
+
* @returns Result of the operation
|
|
59
|
+
* @throws Error if max retries exceeded
|
|
60
|
+
*/
|
|
61
|
+
async retryWithBackoff(operation) {
|
|
62
|
+
while (this.retryCount < this.maxRetries) {
|
|
63
|
+
const delay = this.baseDelay * Math.pow(2, this.retryCount);
|
|
64
|
+
this.retryCount++;
|
|
65
|
+
debugLog('WARN', `Connection lost, retry ${this.retryCount}/${this.maxRetries} in ${delay}ms`);
|
|
66
|
+
// Wait for exponential backoff delay
|
|
67
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
|
68
|
+
try {
|
|
69
|
+
const result = await operation();
|
|
70
|
+
// Success - reset counter and return
|
|
71
|
+
debugLog('INFO', `Connection restored after ${this.retryCount} retries`);
|
|
72
|
+
this.retryCount = 0;
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
// Check if still connection error
|
|
77
|
+
if (!this.isConnectionError(error)) {
|
|
78
|
+
// Different error type - reset counter and rethrow
|
|
79
|
+
this.retryCount = 0;
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
// Still connection error - check if we should continue retrying
|
|
83
|
+
if (this.retryCount >= this.maxRetries) {
|
|
84
|
+
debugLog('ERROR', 'Max retries exceeded', {
|
|
85
|
+
retries: this.retryCount,
|
|
86
|
+
error: error instanceof Error ? error.message : String(error)
|
|
87
|
+
});
|
|
88
|
+
console.error('❌ Database connection lost. Max retries exceeded. Exiting...');
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
// Continue to next retry iteration
|
|
92
|
+
debugLog('DEBUG', `Retry ${this.retryCount} failed, will retry again`, {
|
|
93
|
+
error: error instanceof Error ? error.message : String(error)
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Should never reach here due to process.exit(1) above
|
|
98
|
+
throw new Error('Max retries exceeded');
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Detect if an error is a connection-related error
|
|
102
|
+
* @param error - Error to check
|
|
103
|
+
* @returns true if connection error, false otherwise
|
|
104
|
+
*/
|
|
105
|
+
isConnectionError(error) {
|
|
106
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
107
|
+
const errorCode = error?.code;
|
|
108
|
+
// Network error codes
|
|
109
|
+
const networkErrorCodes = [
|
|
110
|
+
'ECONNREFUSED', // Connection refused
|
|
111
|
+
'ENOTFOUND', // DNS lookup failed
|
|
112
|
+
'ETIMEDOUT', // Connection timeout
|
|
113
|
+
'ECONNRESET', // Connection reset by peer
|
|
114
|
+
'EPIPE', // Broken pipe
|
|
115
|
+
'EHOSTUNREACH', // Host unreachable
|
|
116
|
+
'ENETUNREACH', // Network unreachable
|
|
117
|
+
];
|
|
118
|
+
// Check error code
|
|
119
|
+
if (errorCode && networkErrorCodes.includes(errorCode)) {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
// Connection error message patterns
|
|
123
|
+
const connectionPatterns = [
|
|
124
|
+
// Generic
|
|
125
|
+
'connection lost',
|
|
126
|
+
'lost connection',
|
|
127
|
+
'connection refused',
|
|
128
|
+
'connection timeout',
|
|
129
|
+
'connection reset',
|
|
130
|
+
'cannot connect',
|
|
131
|
+
'unable to connect',
|
|
132
|
+
'connection failed',
|
|
133
|
+
'connection error',
|
|
134
|
+
'connection closed',
|
|
135
|
+
'connection terminated',
|
|
136
|
+
// SQLite
|
|
137
|
+
'database is locked',
|
|
138
|
+
'database disk image is malformed',
|
|
139
|
+
'unable to open database',
|
|
140
|
+
'disk i/o error',
|
|
141
|
+
// MySQL/MariaDB
|
|
142
|
+
'mysql server has gone away',
|
|
143
|
+
'lost connection to mysql server',
|
|
144
|
+
'error connecting to mysql',
|
|
145
|
+
'too many connections',
|
|
146
|
+
'can\'t connect to mysql server',
|
|
147
|
+
// PostgreSQL
|
|
148
|
+
'connection to server was lost',
|
|
149
|
+
'could not connect to server',
|
|
150
|
+
'server closed the connection',
|
|
151
|
+
'connection refused',
|
|
152
|
+
'no route to host',
|
|
153
|
+
'connection timed out',
|
|
154
|
+
// Knex-specific
|
|
155
|
+
'knex: timeout acquiring a connection',
|
|
156
|
+
'pool is destroyed',
|
|
157
|
+
'connection pool destroyed',
|
|
158
|
+
];
|
|
159
|
+
const lowerMessage = errorMessage.toLowerCase();
|
|
160
|
+
return connectionPatterns.some(pattern => lowerMessage.includes(pattern.toLowerCase()));
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Get current retry count (for testing/monitoring)
|
|
164
|
+
*/
|
|
165
|
+
getRetryCount() {
|
|
166
|
+
return this.retryCount;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Reset retry count (for testing)
|
|
170
|
+
*/
|
|
171
|
+
resetRetryCount() {
|
|
172
|
+
this.retryCount = 0;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Singleton instance
|
|
176
|
+
const connectionManager = new ConnectionManager();
|
|
177
|
+
export default connectionManager;
|
|
178
|
+
//# sourceMappingURL=connection-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../src/utils/connection-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACpB,UAAU,GAAG,CAAC,CAAC;IACN,UAAU,GAAG,CAAC,CAAC;IACf,SAAS,GAAG,IAAI,CAAC,CAAC,WAAW;IAE9C;;;;;OAKG;IACH,KAAK,CAAC,gBAAgB,CAAI,SAA2B;QACnD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;YACjC,gCAAgC;YAChC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;gBACxB,QAAQ,CAAC,MAAM,EAAE,8BAA8B,IAAI,CAAC,UAAU,UAAU,CAAC,CAAC;gBAC1E,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACtB,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sCAAsC;YACtC,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,QAAQ,CAAC,MAAM,EAAE,2BAA2B,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACjH,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAChD,CAAC;YAED,+CAA+C;YAC/C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,gBAAgB,CAAI,SAA2B;QAC3D,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5D,IAAI,CAAC,UAAU,EAAE,CAAC;YAElB,QAAQ,CACN,MAAM,EACN,0BAA0B,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,OAAO,KAAK,IAAI,CAC7E,CAAC;YAEF,qCAAqC;YACrC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YAEzD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;gBACjC,qCAAqC;gBACrC,QAAQ,CAAC,MAAM,EAAE,6BAA6B,IAAI,CAAC,UAAU,UAAU,CAAC,CAAC;gBACzE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,kCAAkC;gBAClC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnC,mDAAmD;oBACnD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;oBACpB,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,gEAAgE;gBAChE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACvC,QAAQ,CAAC,OAAO,EAAE,sBAAsB,EAAE;wBACxC,OAAO,EAAE,IAAI,CAAC,UAAU;wBACxB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;qBAC9D,CAAC,CAAC;oBACH,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;oBAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBAED,mCAAmC;gBACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,UAAU,2BAA2B,EAAE;oBACrE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,uDAAuD;QACvD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,KAAU;QAClC,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAI,KAAa,EAAE,IAAI,CAAC;QAEvC,sBAAsB;QACtB,MAAM,iBAAiB,GAAG;YACxB,cAAc,EAAI,qBAAqB;YACvC,WAAW,EAAO,oBAAoB;YACtC,WAAW,EAAO,qBAAqB;YACvC,YAAY,EAAM,2BAA2B;YAC7C,OAAO,EAAW,cAAc;YAChC,cAAc,EAAI,mBAAmB;YACrC,aAAa,EAAK,sBAAsB;SACzC,CAAC;QAEF,mBAAmB;QACnB,IAAI,SAAS,IAAI,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oCAAoC;QACpC,MAAM,kBAAkB,GAAG;YACzB,UAAU;YACV,iBAAiB;YACjB,iBAAiB;YACjB,oBAAoB;YACpB,oBAAoB;YACpB,kBAAkB;YAClB,gBAAgB;YAChB,mBAAmB;YACnB,mBAAmB;YACnB,kBAAkB;YAClB,mBAAmB;YACnB,uBAAuB;YAEvB,SAAS;YACT,oBAAoB;YACpB,kCAAkC;YAClC,yBAAyB;YACzB,gBAAgB;YAEhB,gBAAgB;YAChB,4BAA4B;YAC5B,iCAAiC;YACjC,2BAA2B;YAC3B,sBAAsB;YACtB,gCAAgC;YAEhC,aAAa;YACb,+BAA+B;YAC/B,6BAA6B;YAC7B,8BAA8B;YAC9B,oBAAoB;YACpB,kBAAkB;YAClB,sBAAsB;YAEtB,gBAAgB;YAChB,sCAAsC;YACtC,mBAAmB;YACnB,2BAA2B;SAC5B,CAAC;QAEF,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QAChD,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,qBAAqB;AACrB,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAElD,eAAe,iBAAiB,CAAC"}
|
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
*/
|
|
17
17
|
export declare function initDebugLogger(debugLogPath?: string, logLevel?: string): void;
|
|
18
18
|
/**
|
|
19
|
-
* Write debug log entry
|
|
20
|
-
* @param level - Log level (
|
|
19
|
+
* Write debug log entry (always single-line format)
|
|
20
|
+
* @param level - Log level (FATAL, ERROR, WARN, INFO, DEBUG)
|
|
21
21
|
* @param message - Log message
|
|
22
22
|
* @param data - Optional data to log
|
|
23
23
|
*/
|
|
24
|
-
export declare function debugLog(level: '
|
|
24
|
+
export declare function debugLog(level: 'FATAL' | 'ERROR' | 'WARN' | 'INFO' | 'DEBUG', message: string, data?: any): void;
|
|
25
25
|
/**
|
|
26
26
|
* Log MCP tool call
|
|
27
27
|
*/
|
|
@@ -32,8 +32,12 @@ export declare function debugLogToolCall(toolName: string, action: string, param
|
|
|
32
32
|
export declare function debugLogToolResponse(toolName: string, action: string, success: boolean, result?: any, error?: any): void;
|
|
33
33
|
/**
|
|
34
34
|
* Log error with stack trace
|
|
35
|
+
* @param context - Error context/description
|
|
36
|
+
* @param error - Error object or message
|
|
37
|
+
* @param additionalContext - Additional context data
|
|
38
|
+
* @param level - Log level (FATAL for system-critical, ERROR for application errors)
|
|
35
39
|
*/
|
|
36
|
-
export declare function debugLogError(context: string, error: any, additionalContext?: any): void;
|
|
40
|
+
export declare function debugLogError(context: string, error: any, additionalContext?: any, level?: 'FATAL' | 'ERROR'): void;
|
|
37
41
|
/**
|
|
38
42
|
* Close debug logger
|
|
39
43
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug-logger.d.ts","sourceRoot":"","sources":["../../src/utils/debug-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"debug-logger.d.ts","sourceRoot":"","sources":["../../src/utils/debug-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,13 @@ let debugStream = null;
|
|
|
16
16
|
let currentLogPath = null;
|
|
17
17
|
let currentLogLevel = 'INFO';
|
|
18
18
|
// Log level hierarchy (higher number = more verbose)
|
|
19
|
+
// FATAL: System-critical errors (crashes, initialization failures)
|
|
20
|
+
// ERROR: Application errors (user errors, validation failures)
|
|
21
|
+
// WARN: Warnings (deprecated features, non-critical issues)
|
|
22
|
+
// INFO: Informational messages (startup, configuration)
|
|
23
|
+
// DEBUG: Detailed debugging information
|
|
19
24
|
const LOG_LEVELS = {
|
|
25
|
+
'FATAL': 0,
|
|
20
26
|
'ERROR': 1,
|
|
21
27
|
'WARN': 2,
|
|
22
28
|
'INFO': 3,
|
|
@@ -78,8 +84,16 @@ export function initDebugLogger(debugLogPath, logLevel) {
|
|
|
78
84
|
}
|
|
79
85
|
}
|
|
80
86
|
/**
|
|
81
|
-
*
|
|
82
|
-
* @param
|
|
87
|
+
* Sanitize string to remove newlines for single-line log format
|
|
88
|
+
* @param str - String to sanitize
|
|
89
|
+
* @returns String with newlines replaced by spaces
|
|
90
|
+
*/
|
|
91
|
+
function sanitizeForSingleLine(str) {
|
|
92
|
+
return str.replace(/\r?\n/g, ' ').replace(/\s+/g, ' ').trim();
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Write debug log entry (always single-line format)
|
|
96
|
+
* @param level - Log level (FATAL, ERROR, WARN, INFO, DEBUG)
|
|
83
97
|
* @param message - Log message
|
|
84
98
|
* @param data - Optional data to log
|
|
85
99
|
*/
|
|
@@ -92,12 +106,14 @@ export function debugLog(level, message, data) {
|
|
|
92
106
|
return;
|
|
93
107
|
}
|
|
94
108
|
const timestamp = new Date().toISOString();
|
|
95
|
-
|
|
109
|
+
// Sanitize message to ensure single-line format
|
|
110
|
+
const sanitizedMessage = sanitizeForSingleLine(message);
|
|
111
|
+
let logEntry = `[${timestamp}] [${level}] ${sanitizedMessage}`;
|
|
96
112
|
try {
|
|
97
113
|
if (data !== undefined) {
|
|
98
114
|
const dataStr = typeof data === 'string'
|
|
99
|
-
? data
|
|
100
|
-
: JSON.stringify(data);
|
|
115
|
+
? sanitizeForSingleLine(data)
|
|
116
|
+
: sanitizeForSingleLine(JSON.stringify(data));
|
|
101
117
|
logEntry += ` | Data: ${dataStr}`;
|
|
102
118
|
}
|
|
103
119
|
debugStream.write(logEntry + '\n');
|
|
@@ -120,11 +136,15 @@ export function debugLogToolResponse(toolName, action, success, result, error) {
|
|
|
120
136
|
}
|
|
121
137
|
/**
|
|
122
138
|
* Log error with stack trace
|
|
139
|
+
* @param context - Error context/description
|
|
140
|
+
* @param error - Error object or message
|
|
141
|
+
* @param additionalContext - Additional context data
|
|
142
|
+
* @param level - Log level (FATAL for system-critical, ERROR for application errors)
|
|
123
143
|
*/
|
|
124
|
-
export function debugLogError(context, error, additionalContext) {
|
|
144
|
+
export function debugLogError(context, error, additionalContext, level = 'ERROR') {
|
|
125
145
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
126
146
|
const stack = error instanceof Error ? error.stack : undefined;
|
|
127
|
-
debugLog(
|
|
147
|
+
debugLog(level, `${context}: ${errorMessage}`, {
|
|
128
148
|
stack,
|
|
129
149
|
...additionalContext
|
|
130
150
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug-logger.js","sourceRoot":"","sources":["../../src/utils/debug-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,IAAI,WAAW,GAA0B,IAAI,CAAC;AAC9C,IAAI,cAAc,GAAkB,IAAI,CAAC;AACzC,IAAI,eAAe,
|
|
1
|
+
{"version":3,"file":"debug-logger.js","sourceRoot":"","sources":["../../src/utils/debug-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,14 +15,16 @@ export declare function safeConsoleError(...args: any[]): void;
|
|
|
15
15
|
/**
|
|
16
16
|
* Handle tool execution errors
|
|
17
17
|
* Logs the error with context and returns formatted error response
|
|
18
|
+
*
|
|
19
|
+
* IMPORTANT: Stack traces are ONLY written to logs, never returned to MCP client
|
|
20
|
+
* This keeps responses token-efficient and prevents exposing internal details
|
|
18
21
|
*/
|
|
19
22
|
export declare function handleToolError(toolName: string, action: string, error: any, params?: any): {
|
|
20
23
|
message: string;
|
|
21
|
-
|
|
22
|
-
};
|
|
24
|
+
} | any;
|
|
23
25
|
/**
|
|
24
|
-
* Handle initialization errors
|
|
25
|
-
* Logs the error and returns formatted error message
|
|
26
|
+
* Handle initialization errors (system-critical)
|
|
27
|
+
* Logs the error at FATAL level and returns formatted error message
|
|
26
28
|
*/
|
|
27
29
|
export declare function handleInitializationError(error: any): string;
|
|
28
30
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAQrD;AAiBD
|
|
1
|
+
{"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAQrD;AAiBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,GAAG,EACV,MAAM,CAAC,EAAE,GAAG,GACX;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CA6C3B;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAkB5D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,IAAI,CAwDN;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,MAAM,GACxB,MAAM,CAMR"}
|
|
@@ -30,6 +30,9 @@ function formatErrorDetails(error) {
|
|
|
30
30
|
/**
|
|
31
31
|
* Handle tool execution errors
|
|
32
32
|
* Logs the error with context and returns formatted error response
|
|
33
|
+
*
|
|
34
|
+
* IMPORTANT: Stack traces are ONLY written to logs, never returned to MCP client
|
|
35
|
+
* This keeps responses token-efficient and prevents exposing internal details
|
|
33
36
|
*/
|
|
34
37
|
export function handleToolError(toolName, action, error, params) {
|
|
35
38
|
const { message, stack, errorType } = formatErrorDetails(error);
|
|
@@ -41,7 +44,25 @@ export function handleToolError(toolName, action, error, params) {
|
|
|
41
44
|
errorType: errorType,
|
|
42
45
|
stack: stack
|
|
43
46
|
});
|
|
44
|
-
//
|
|
47
|
+
// Check if this is a validation error (JSON structure with error details)
|
|
48
|
+
if (message.startsWith('{') && message.includes('"error"')) {
|
|
49
|
+
try {
|
|
50
|
+
const parsed = JSON.parse(message);
|
|
51
|
+
// Return parsed validation error object directly (no wrapping)
|
|
52
|
+
// Log simplified version to console
|
|
53
|
+
safeConsoleError(`\n❌ VALIDATION ERROR in ${toolName}.${action}:`);
|
|
54
|
+
safeConsoleError(` ${parsed.error}`);
|
|
55
|
+
if (parsed.hint) {
|
|
56
|
+
safeConsoleError(` Hint: ${parsed.hint}`);
|
|
57
|
+
}
|
|
58
|
+
safeConsoleError('');
|
|
59
|
+
return parsed; // Return structured validation error
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
// If JSON parsing fails, fall through to regular error handling
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Regular errors: Log to stderr for immediate visibility (pipe-safe)
|
|
45
66
|
safeConsoleError(`\n❌ ERROR in ${toolName}.${action}:`);
|
|
46
67
|
safeConsoleError(` Message: ${message}`);
|
|
47
68
|
if (stack) {
|
|
@@ -52,18 +73,20 @@ export function handleToolError(toolName, action, error, params) {
|
|
|
52
73
|
safeConsoleError(` Params: ${JSON.stringify(params, null, 2)}`);
|
|
53
74
|
}
|
|
54
75
|
safeConsoleError('');
|
|
55
|
-
return
|
|
76
|
+
// Only return message, stack goes to logs only
|
|
77
|
+
return { message };
|
|
56
78
|
}
|
|
57
79
|
/**
|
|
58
|
-
* Handle initialization errors
|
|
59
|
-
* Logs the error and returns formatted error message
|
|
80
|
+
* Handle initialization errors (system-critical)
|
|
81
|
+
* Logs the error at FATAL level and returns formatted error message
|
|
60
82
|
*/
|
|
61
83
|
export function handleInitializationError(error) {
|
|
62
84
|
const { message, stack, errorType } = formatErrorDetails(error);
|
|
85
|
+
// Use FATAL level for system-critical initialization errors
|
|
63
86
|
debugLogError('INITIALIZATION_ERROR', error, {
|
|
64
87
|
errorType: errorType,
|
|
65
88
|
stack: stack
|
|
66
|
-
});
|
|
89
|
+
}, 'FATAL');
|
|
67
90
|
safeConsoleError('\n❌ INITIALIZATION ERROR:');
|
|
68
91
|
safeConsoleError(` Message: ${message}`);
|
|
69
92
|
if (stack) {
|
|
@@ -78,20 +101,21 @@ export function handleInitializationError(error) {
|
|
|
78
101
|
* Server continues running to maintain availability
|
|
79
102
|
*/
|
|
80
103
|
export function setupGlobalErrorHandlers(onCleanup) {
|
|
81
|
-
// Handle uncaught exceptions
|
|
104
|
+
// Handle uncaught exceptions (system-critical)
|
|
82
105
|
process.on('uncaughtException', (error) => {
|
|
83
106
|
const { message, stack, errorType } = formatErrorDetails(error);
|
|
84
107
|
safeConsoleError('\n❌ UNCAUGHT EXCEPTION (server continuing):');
|
|
85
108
|
safeConsoleError(` Message: ${message}`);
|
|
86
109
|
safeConsoleError(` Stack trace:`);
|
|
87
110
|
safeConsoleError(stack?.split('\n').map(line => ` ${line}`).join('\n'));
|
|
111
|
+
// Use FATAL level for uncaught exceptions
|
|
88
112
|
debugLogError('UNCAUGHT_EXCEPTION', error, {
|
|
89
113
|
errorType: errorType,
|
|
90
114
|
stack: stack
|
|
91
|
-
});
|
|
115
|
+
}, 'FATAL');
|
|
92
116
|
safeConsoleError(' ⚠️ Server continuing despite error\n');
|
|
93
117
|
});
|
|
94
|
-
// Handle unhandled promise rejections
|
|
118
|
+
// Handle unhandled promise rejections (system-critical)
|
|
95
119
|
process.on('unhandledRejection', (reason, promise) => {
|
|
96
120
|
const { message, stack, errorType } = formatErrorDetails(reason);
|
|
97
121
|
safeConsoleError('\n❌ UNHANDLED PROMISE REJECTION (server continuing):');
|
|
@@ -100,11 +124,12 @@ export function setupGlobalErrorHandlers(onCleanup) {
|
|
|
100
124
|
safeConsoleError(` Stack trace:`);
|
|
101
125
|
safeConsoleError(stack.split('\n').map(line => ` ${line}`).join('\n'));
|
|
102
126
|
}
|
|
127
|
+
// Use FATAL level for unhandled promise rejections
|
|
103
128
|
debugLogError('UNHANDLED_REJECTION', reason, {
|
|
104
129
|
errorType: errorType,
|
|
105
130
|
stack: stack,
|
|
106
131
|
promise: String(promise)
|
|
107
|
-
});
|
|
132
|
+
}, 'FATAL');
|
|
108
133
|
safeConsoleError(' ⚠️ Server continuing despite error\n');
|
|
109
134
|
});
|
|
110
135
|
// Handle graceful shutdown
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAG,IAAW;IAC7C,4CAA4C;IAC5C,6DAA6D;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAC7B,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAC5D,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEZ,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,KAAU;IAKpC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,MAAM,SAAS,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,IAAI,SAAS,CAAC;IAExD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACvC,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameter-validator.d.ts","sourceRoot":"","sources":["../../src/utils/parameter-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAEV,cAAc,EACd,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,aAAa,EACd,MAAM,aAAa,CAAC;AAgKrB;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc,GAAG,UAAU,GAAG,UAAU,GAAG,gBAAgB,GAAG,WAAW,GAAG,YAAY,GAAG,aAAa,GAAG,MAAM,EACzH,MAAM,EAAE,GAAG,GACV,IAAI,
|
|
1
|
+
{"version":3,"file":"parameter-validator.d.ts","sourceRoot":"","sources":["../../src/utils/parameter-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAEV,cAAc,EACd,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,aAAa,EACd,MAAM,aAAa,CAAC;AAgKrB;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc,GAAG,UAAU,GAAG,UAAU,GAAG,gBAAgB,GAAG,WAAW,GAAG,YAAY,GAAG,aAAa,GAAG,MAAM,EACzH,MAAM,EAAE,GAAG,GACV,IAAI,CA8EN;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,GAAG,EAAE,EACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAAW,GACpB,IAAI,CAkDN;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAM1D;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAcpF"}
|