sqlew 3.5.3 → 3.6.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.
Files changed (257) hide show
  1. package/CHANGELOG.md +247 -1772
  2. package/README.md +70 -304
  3. package/assets/config.example.toml +106 -0
  4. package/dist/adapters/index.d.ts +11 -0
  5. package/dist/adapters/index.d.ts.map +1 -0
  6. package/dist/adapters/index.js +21 -0
  7. package/dist/adapters/index.js.map +1 -0
  8. package/dist/adapters/mysql-adapter.d.ts +31 -0
  9. package/dist/adapters/mysql-adapter.d.ts.map +1 -0
  10. package/dist/adapters/mysql-adapter.js +63 -0
  11. package/dist/adapters/mysql-adapter.js.map +1 -0
  12. package/dist/adapters/postgresql-adapter.d.ts +31 -0
  13. package/dist/adapters/postgresql-adapter.d.ts.map +1 -0
  14. package/dist/adapters/postgresql-adapter.js +63 -0
  15. package/dist/adapters/postgresql-adapter.js.map +1 -0
  16. package/dist/adapters/sqlite-adapter.d.ts +37 -0
  17. package/dist/adapters/sqlite-adapter.d.ts.map +1 -0
  18. package/dist/adapters/sqlite-adapter.js +129 -0
  19. package/dist/adapters/sqlite-adapter.js.map +1 -0
  20. package/dist/adapters/types.d.ts +33 -0
  21. package/dist/adapters/types.d.ts.map +1 -0
  22. package/dist/adapters/types.js +2 -0
  23. package/dist/adapters/types.js.map +1 -0
  24. package/dist/cli.js +55 -54
  25. package/dist/cli.js.map +1 -1
  26. package/dist/config/example-generator.d.ts +11 -0
  27. package/dist/config/example-generator.d.ts.map +1 -0
  28. package/dist/config/example-generator.js +48 -0
  29. package/dist/config/example-generator.js.map +1 -0
  30. package/dist/config/loader.d.ts.map +1 -1
  31. package/dist/config/loader.js +4 -0
  32. package/dist/config/loader.js.map +1 -1
  33. package/dist/config/types.d.ts +11 -0
  34. package/dist/config/types.d.ts.map +1 -1
  35. package/dist/config/types.js.map +1 -1
  36. package/dist/database.d.ts +56 -121
  37. package/dist/database.d.ts.map +1 -1
  38. package/dist/database.js +266 -414
  39. package/dist/database.js.map +1 -1
  40. package/dist/index.js +329 -245
  41. package/dist/index.js.map +1 -1
  42. package/dist/knexfile.d.ts +6 -0
  43. package/dist/knexfile.d.ts.map +1 -0
  44. package/dist/knexfile.js +85 -0
  45. package/dist/knexfile.js.map +1 -0
  46. package/dist/migrations/add-help-system-tables.d.ts +35 -0
  47. package/dist/migrations/add-help-system-tables.d.ts.map +1 -0
  48. package/dist/migrations/add-help-system-tables.js +206 -0
  49. package/dist/migrations/add-help-system-tables.js.map +1 -0
  50. package/dist/migrations/add-token-tracking.d.ts +28 -0
  51. package/dist/migrations/add-token-tracking.d.ts.map +1 -0
  52. package/dist/migrations/add-token-tracking.js +108 -0
  53. package/dist/migrations/add-token-tracking.js.map +1 -0
  54. package/dist/migrations/index.d.ts +25 -12
  55. package/dist/migrations/index.d.ts.map +1 -1
  56. package/dist/migrations/index.js +147 -20
  57. package/dist/migrations/index.js.map +1 -1
  58. package/dist/migrations/knex/20251025020452_create_master_tables.d.ts +4 -0
  59. package/dist/migrations/knex/20251025020452_create_master_tables.d.ts.map +1 -0
  60. package/dist/migrations/knex/20251025020452_create_master_tables.js +65 -0
  61. package/dist/migrations/knex/20251025020452_create_master_tables.js.map +1 -0
  62. package/dist/migrations/knex/20251025021152_create_transaction_tables.d.ts +4 -0
  63. package/dist/migrations/knex/20251025021152_create_transaction_tables.d.ts.map +1 -0
  64. package/dist/migrations/knex/20251025021152_create_transaction_tables.js +235 -0
  65. package/dist/migrations/knex/20251025021152_create_transaction_tables.js.map +1 -0
  66. package/dist/migrations/knex/20251025021351_create_indexes.d.ts +4 -0
  67. package/dist/migrations/knex/20251025021351_create_indexes.d.ts.map +1 -0
  68. package/dist/migrations/knex/20251025021351_create_indexes.js +62 -0
  69. package/dist/migrations/knex/20251025021351_create_indexes.js.map +1 -0
  70. package/dist/migrations/knex/20251025021416_seed_master_data.d.ts +4 -0
  71. package/dist/migrations/knex/20251025021416_seed_master_data.d.ts.map +1 -0
  72. package/dist/migrations/knex/20251025021416_seed_master_data.js +58 -0
  73. package/dist/migrations/knex/20251025021416_seed_master_data.js.map +1 -0
  74. package/dist/migrations/knex/20251025070349_create_views.d.ts +4 -0
  75. package/dist/migrations/knex/20251025070349_create_views.d.ts.map +1 -0
  76. package/dist/migrations/knex/20251025070349_create_views.js +143 -0
  77. package/dist/migrations/knex/20251025070349_create_views.js.map +1 -0
  78. package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.d.ts +4 -0
  79. package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.d.ts.map +1 -0
  80. package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.js +15 -0
  81. package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.js.map +1 -0
  82. package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.d.ts +8 -0
  83. package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.d.ts.map +1 -0
  84. package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.js +12 -0
  85. package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.js.map +1 -0
  86. package/dist/migrations/knex/20251025090000_create_help_system_tables.d.ts +19 -0
  87. package/dist/migrations/knex/20251025090000_create_help_system_tables.d.ts.map +1 -0
  88. package/dist/migrations/knex/20251025090000_create_help_system_tables.js +115 -0
  89. package/dist/migrations/knex/20251025090000_create_help_system_tables.js.map +1 -0
  90. package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.d.ts +13 -0
  91. package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.d.ts.map +1 -0
  92. package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.js +377 -0
  93. package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.js.map +1 -0
  94. package/dist/migrations/knex/20251025100000_seed_help_metadata.d.ts +15 -0
  95. package/dist/migrations/knex/20251025100000_seed_help_metadata.d.ts.map +1 -0
  96. package/dist/migrations/knex/20251025100000_seed_help_metadata.js +253 -0
  97. package/dist/migrations/knex/20251025100000_seed_help_metadata.js.map +1 -0
  98. package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.d.ts +16 -0
  99. package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.d.ts.map +1 -0
  100. package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.js +276 -0
  101. package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.js.map +1 -0
  102. package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.d.ts +8 -0
  103. package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.d.ts.map +1 -0
  104. package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.js +64 -0
  105. package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.js.map +1 -0
  106. package/dist/migrations/knex/20251027000000_add_agent_reuse_system.d.ts +14 -0
  107. package/dist/migrations/knex/20251027000000_add_agent_reuse_system.d.ts.map +1 -0
  108. package/dist/migrations/knex/20251027000000_add_agent_reuse_system.js +34 -0
  109. package/dist/migrations/knex/20251027000000_add_agent_reuse_system.js.map +1 -0
  110. package/dist/migrations/knex/20251027010000_add_task_constraint_to_decision_context.d.ts +4 -0
  111. package/dist/migrations/knex/20251027010000_add_task_constraint_to_decision_context.d.ts.map +1 -0
  112. package/dist/migrations/knex/20251027010000_add_task_constraint_to_decision_context.js +24 -0
  113. package/dist/migrations/knex/20251027010000_add_task_constraint_to_decision_context.js.map +1 -0
  114. package/dist/migrations/knex/20251027020000_update_agent_reusability.d.ts +16 -0
  115. package/dist/migrations/knex/20251027020000_update_agent_reusability.d.ts.map +1 -0
  116. package/dist/migrations/knex/20251027020000_update_agent_reusability.js +27 -0
  117. package/dist/migrations/knex/20251027020000_update_agent_reusability.js.map +1 -0
  118. package/dist/migrations/seed-help-data.d.ts +48 -0
  119. package/dist/migrations/seed-help-data.d.ts.map +1 -0
  120. package/dist/migrations/seed-help-data.js +1466 -0
  121. package/dist/migrations/seed-help-data.js.map +1 -0
  122. package/dist/migrations/seed-tool-metadata.d.ts +24 -0
  123. package/dist/migrations/seed-tool-metadata.d.ts.map +1 -0
  124. package/dist/migrations/seed-tool-metadata.js +392 -0
  125. package/dist/migrations/seed-tool-metadata.js.map +1 -0
  126. package/dist/migrations/v3.6.0-help-system-refactor.d.ts +46 -0
  127. package/dist/migrations/v3.6.0-help-system-refactor.d.ts.map +1 -0
  128. package/dist/migrations/v3.6.0-help-system-refactor.js +223 -0
  129. package/dist/migrations/v3.6.0-help-system-refactor.js.map +1 -0
  130. package/dist/schema.d.ts.map +1 -1
  131. package/dist/schema.js +2 -0
  132. package/dist/schema.js.map +1 -1
  133. package/dist/tests/agent-reuse.test.d.ts +6 -0
  134. package/dist/tests/agent-reuse.test.d.ts.map +1 -0
  135. package/dist/tests/agent-reuse.test.js +242 -0
  136. package/dist/tests/agent-reuse.test.js.map +1 -0
  137. package/dist/tests/all-features.test.d.ts +7 -0
  138. package/dist/tests/all-features.test.d.ts.map +1 -0
  139. package/dist/tests/all-features.test.js +514 -0
  140. package/dist/tests/all-features.test.js.map +1 -0
  141. package/dist/tests/git-aware-completion.test.js +89 -70
  142. package/dist/tests/git-aware-completion.test.js.map +1 -1
  143. package/dist/tests/help-system.test.d.ts +23 -0
  144. package/dist/tests/help-system.test.d.ts.map +1 -0
  145. package/dist/tests/help-system.test.js +374 -0
  146. package/dist/tests/help-system.test.js.map +1 -0
  147. package/dist/tests/tasks.auto-pruning-decision-link.test.js +92 -78
  148. package/dist/tests/tasks.auto-pruning-decision-link.test.js.map +1 -1
  149. package/dist/tests/tasks.auto-pruning-partial.test.js +106 -95
  150. package/dist/tests/tasks.auto-pruning-partial.test.js.map +1 -1
  151. package/dist/tests/tasks.auto-pruning-persistence.test.js +115 -97
  152. package/dist/tests/tasks.auto-pruning-persistence.test.js.map +1 -1
  153. package/dist/tests/tasks.auto-pruning-safety.test.js +124 -103
  154. package/dist/tests/tasks.auto-pruning-safety.test.js.map +1 -1
  155. package/dist/tests/tasks.dependencies.test.js +338 -307
  156. package/dist/tests/tasks.dependencies.test.js.map +1 -1
  157. package/dist/tests/tasks.link-file-backward-compat.test.js +116 -104
  158. package/dist/tests/tasks.link-file-backward-compat.test.js.map +1 -1
  159. package/dist/tests/tasks.watch-files-action.test.js +122 -101
  160. package/dist/tests/tasks.watch-files-action.test.js.map +1 -1
  161. package/dist/tests/tasks.watch-files-parameter.test.js +105 -94
  162. package/dist/tests/tasks.watch-files-parameter.test.js.map +1 -1
  163. package/dist/tests/two-step-git-completion.test.js +176 -133
  164. package/dist/tests/two-step-git-completion.test.js.map +1 -1
  165. package/dist/tests/vcs-staging.test.js +1 -1
  166. package/dist/tests/vcs-staging.test.js.map +1 -1
  167. package/dist/tools/config.d.ts +9 -6
  168. package/dist/tools/config.d.ts.map +1 -1
  169. package/dist/tools/config.js +16 -14
  170. package/dist/tools/config.js.map +1 -1
  171. package/dist/tools/constraints.d.ts +10 -7
  172. package/dist/tools/constraints.d.ts.map +1 -1
  173. package/dist/tools/constraints.js +73 -51
  174. package/dist/tools/constraints.js.map +1 -1
  175. package/dist/tools/context.d.ts +36 -33
  176. package/dist/tools/context.d.ts.map +1 -1
  177. package/dist/tools/context.js +441 -340
  178. package/dist/tools/context.js.map +1 -1
  179. package/dist/tools/files.d.ts +12 -9
  180. package/dist/tools/files.d.ts.map +1 -1
  181. package/dist/tools/files.js +173 -95
  182. package/dist/tools/files.js.map +1 -1
  183. package/dist/tools/help-queries.d.ts +130 -0
  184. package/dist/tools/help-queries.d.ts.map +1 -0
  185. package/dist/tools/help-queries.js +393 -0
  186. package/dist/tools/help-queries.js.map +1 -0
  187. package/dist/tools/messaging.d.ts +14 -11
  188. package/dist/tools/messaging.d.ts.map +1 -1
  189. package/dist/tools/messaging.js +239 -133
  190. package/dist/tools/messaging.js.map +1 -1
  191. package/dist/tools/tasks.d.ts +18 -16
  192. package/dist/tools/tasks.d.ts.map +1 -1
  193. package/dist/tools/tasks.js +519 -442
  194. package/dist/tools/tasks.js.map +1 -1
  195. package/dist/tools/utils.d.ts +14 -11
  196. package/dist/tools/utils.d.ts.map +1 -1
  197. package/dist/tools/utils.js +90 -122
  198. package/dist/tools/utils.js.map +1 -1
  199. package/dist/types.d.ts +1 -0
  200. package/dist/types.d.ts.map +1 -1
  201. package/dist/utils/activity-logging.d.ts +114 -0
  202. package/dist/utils/activity-logging.d.ts.map +1 -0
  203. package/dist/utils/activity-logging.js +162 -0
  204. package/dist/utils/activity-logging.js.map +1 -0
  205. package/dist/utils/batch.d.ts +2 -2
  206. package/dist/utils/batch.d.ts.map +1 -1
  207. package/dist/utils/batch.js +8 -8
  208. package/dist/utils/batch.js.map +1 -1
  209. package/dist/utils/cleanup.d.ts +24 -14
  210. package/dist/utils/cleanup.d.ts.map +1 -1
  211. package/dist/utils/cleanup.js +37 -27
  212. package/dist/utils/cleanup.js.map +1 -1
  213. package/dist/utils/debug-logger.d.ts +99 -0
  214. package/dist/utils/debug-logger.d.ts.map +1 -0
  215. package/dist/utils/debug-logger.js +267 -0
  216. package/dist/utils/debug-logger.js.map +1 -0
  217. package/dist/utils/error-handler.d.ts +28 -0
  218. package/dist/utils/error-handler.d.ts.map +1 -0
  219. package/dist/utils/error-handler.js +121 -0
  220. package/dist/utils/error-handler.js.map +1 -0
  221. package/dist/utils/help-tracking.d.ts +55 -0
  222. package/dist/utils/help-tracking.d.ts.map +1 -0
  223. package/dist/utils/help-tracking.js +88 -0
  224. package/dist/utils/help-tracking.js.map +1 -0
  225. package/dist/utils/param-parser.d.ts +23 -0
  226. package/dist/utils/param-parser.d.ts.map +1 -0
  227. package/dist/utils/param-parser.js +52 -0
  228. package/dist/utils/param-parser.js.map +1 -0
  229. package/dist/utils/retention.d.ts +17 -7
  230. package/dist/utils/retention.d.ts.map +1 -1
  231. package/dist/utils/retention.js +31 -12
  232. package/dist/utils/retention.js.map +1 -1
  233. package/dist/utils/task-stale-detection.d.ts +15 -13
  234. package/dist/utils/task-stale-detection.d.ts.map +1 -1
  235. package/dist/utils/task-stale-detection.js +100 -302
  236. package/dist/utils/task-stale-detection.js.map +1 -1
  237. package/dist/utils/token-estimation.d.ts +72 -0
  238. package/dist/utils/token-estimation.d.ts.map +1 -0
  239. package/dist/utils/token-estimation.js +71 -0
  240. package/dist/utils/token-estimation.js.map +1 -0
  241. package/dist/utils/token-logging.d.ts +48 -0
  242. package/dist/utils/token-logging.d.ts.map +1 -0
  243. package/dist/utils/token-logging.js +112 -0
  244. package/dist/utils/token-logging.js.map +1 -0
  245. package/dist/utils/view-queries.d.ts +34 -0
  246. package/dist/utils/view-queries.d.ts.map +1 -0
  247. package/dist/utils/view-queries.js +192 -0
  248. package/dist/utils/view-queries.js.map +1 -0
  249. package/dist/watcher/file-watcher.d.ts.map +1 -1
  250. package/dist/watcher/file-watcher.js +25 -11
  251. package/dist/watcher/file-watcher.js.map +1 -1
  252. package/docs/BEST_PRACTICES.md +56 -448
  253. package/docs/MIGRATION_v3.6.0.md +170 -0
  254. package/docs/SHARED_CONCEPTS.md +63 -208
  255. package/docs/TASK_OVERVIEW.md +2 -2
  256. package/docs/TOOL_SELECTION.md +41 -248
  257. package/package.json +17 -4
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Insert activity log entry
3
+ */
4
+ export async function logActivity(knex, entry) {
5
+ await knex('t_activity_log').insert({
6
+ agent_id: entry.agent_id,
7
+ action_type: entry.action_type,
8
+ target: entry.target,
9
+ layer_id: entry.layer_id,
10
+ details: entry.details ? JSON.stringify(entry.details) : null,
11
+ ts: Math.floor(Date.now() / 1000), // Current Unix epoch
12
+ });
13
+ }
14
+ /**
15
+ * Log decision set (replaces trg_log_decision_set)
16
+ */
17
+ export async function logDecisionSet(knex, params) {
18
+ await logActivity(knex, {
19
+ agent_id: params.agent_id,
20
+ action_type: 'decision_set',
21
+ target: params.key,
22
+ layer_id: params.layer_id,
23
+ details: {
24
+ value: params.value,
25
+ version: params.version,
26
+ status: params.status,
27
+ },
28
+ });
29
+ }
30
+ /**
31
+ * Log decision update (replaces trg_log_decision_update)
32
+ */
33
+ export async function logDecisionUpdate(knex, params) {
34
+ await logActivity(knex, {
35
+ agent_id: params.agent_id,
36
+ action_type: 'decision_update',
37
+ target: params.key,
38
+ layer_id: params.layer_id,
39
+ details: {
40
+ old_value: params.old_value,
41
+ new_value: params.new_value,
42
+ old_version: params.old_version,
43
+ new_version: params.new_version,
44
+ },
45
+ });
46
+ }
47
+ /**
48
+ * Record decision history (replaces trg_record_decision_history)
49
+ */
50
+ export async function recordDecisionHistory(knex, params) {
51
+ await knex('t_decision_history').insert({
52
+ key_id: params.key_id,
53
+ version: params.version,
54
+ value: params.value,
55
+ agent_id: params.agent_id,
56
+ ts: params.ts,
57
+ });
58
+ }
59
+ /**
60
+ * Log message send (replaces trg_log_message_send)
61
+ */
62
+ export async function logMessageSend(knex, params) {
63
+ // Get agent name for target
64
+ const fromAgent = await knex('m_agents').where({ id: params.from_agent_id }).first();
65
+ await logActivity(knex, {
66
+ agent_id: params.from_agent_id,
67
+ action_type: 'message_send',
68
+ target: fromAgent?.name || `agent_${params.to_agent_id}`,
69
+ details: {
70
+ msg_type: params.msg_type,
71
+ priority: params.priority,
72
+ },
73
+ });
74
+ }
75
+ /**
76
+ * Log file record (replaces trg_log_file_record)
77
+ */
78
+ export async function logFileRecord(knex, params) {
79
+ await logActivity(knex, {
80
+ agent_id: params.agent_id,
81
+ action_type: 'file_record',
82
+ target: params.file_path,
83
+ layer_id: params.layer_id,
84
+ details: {
85
+ change_type: params.change_type,
86
+ },
87
+ });
88
+ }
89
+ /**
90
+ * Log task create (replaces trg_log_task_create)
91
+ */
92
+ export async function logTaskCreate(knex, params) {
93
+ await logActivity(knex, {
94
+ agent_id: params.agent_id,
95
+ action_type: 'task_create',
96
+ target: `task_${params.task_id}`,
97
+ layer_id: params.layer_id,
98
+ details: {
99
+ title: params.title,
100
+ },
101
+ });
102
+ }
103
+ /**
104
+ * Log task status change (replaces trg_log_task_status_change)
105
+ */
106
+ export async function logTaskStatusChange(knex, params) {
107
+ await logActivity(knex, {
108
+ agent_id: params.agent_id,
109
+ action_type: 'task_status_change',
110
+ target: `task_${params.task_id}`,
111
+ details: {
112
+ old_status: params.old_status,
113
+ new_status: params.new_status,
114
+ },
115
+ });
116
+ }
117
+ /**
118
+ * Update task timestamp (replaces trg_update_task_timestamp)
119
+ * This is now handled in application layer when updating tasks
120
+ */
121
+ export function updateTaskTimestamp(data) {
122
+ return {
123
+ ...data,
124
+ updated_ts: Math.floor(Date.now() / 1000), // Current Unix epoch
125
+ };
126
+ }
127
+ /**
128
+ * Log constraint add (replaces trg_log_constraint_add)
129
+ */
130
+ export async function logConstraintAdd(knex, params) {
131
+ await logActivity(knex, {
132
+ agent_id: params.agent_id,
133
+ action_type: 'constraint_add',
134
+ target: `constraint_${params.constraint_id}`,
135
+ details: {
136
+ category: params.category,
137
+ constraint_text: params.constraint_text,
138
+ priority: params.priority,
139
+ layer: params.layer,
140
+ created_by: params.created_by,
141
+ },
142
+ });
143
+ }
144
+ /**
145
+ * Log file change (replaces trg_log_file_change)
146
+ */
147
+ export async function logFileChange(knex, params) {
148
+ // Get agent_id from agent_name
149
+ const agent = await knex('m_agents').where({ name: params.agent_name }).first();
150
+ if (agent) {
151
+ await logActivity(knex, {
152
+ agent_id: agent.id,
153
+ action_type: 'file_change',
154
+ target: params.file_path,
155
+ details: {
156
+ change_type: params.change_type,
157
+ description: params.description,
158
+ },
159
+ });
160
+ }
161
+ }
162
+ //# sourceMappingURL=activity-logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-logging.js","sourceRoot":"","sources":["../../src/utils/activity-logging.ts"],"names":[],"mappings":"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"}
@@ -41,7 +41,7 @@ export interface BatchResponse<T = any> {
41
41
  * );
42
42
  * ```
43
43
  */
44
- export declare function processBatch<TItem, TResult>(db: Database, items: TItem[], processor: (item: TItem, db: Database) => TResult, atomic?: boolean, maxItems?: number): BatchResponse<TResult>;
44
+ export declare function processBatch<TItem, TResult>(db: Database, items: TItem[], processor: (item: TItem, db: Database) => TResult | Promise<TResult>, atomic?: boolean, maxItems?: number): Promise<BatchResponse<TResult>>;
45
45
  /**
46
46
  * Wrap a function with transaction handling
47
47
  * Converts an internal function (no transaction) to a public API (with transaction)
@@ -65,5 +65,5 @@ export declare function processBatch<TItem, TResult>(db: Database, items: TItem[
65
65
  * );
66
66
  * ```
67
67
  */
68
- export declare function withTransaction<TParams, TResult>(internalFn: (params: TParams, db: Database) => TResult, errorPrefix?: string): (params: TParams) => TResult;
68
+ export declare function withTransaction<TParams, TResult>(internalFn: (params: TParams, db: Database) => TResult | Promise<TResult>, errorPrefix?: string): (params: TParams) => Promise<TResult>;
69
69
  //# sourceMappingURL=batch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../src/utils/batch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,GAAG;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,GAAG;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EACzC,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,KAAK,EAAE,EACd,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,KAAK,OAAO,EACjD,MAAM,GAAE,OAAc,EACtB,QAAQ,GAAE,MAAW,GACpB,aAAa,CAAC,OAAO,CAAC,CAsFxB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAC9C,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,KAAK,OAAO,EACtD,WAAW,GAAE,MAA2B,GACvC,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAgB9B"}
1
+ {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../src/utils/batch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,GAAG;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,GAAG;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,OAAO,EAC/C,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,KAAK,EAAE,EACd,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EACpE,MAAM,GAAE,OAAc,EACtB,QAAQ,GAAE,MAAW,GACpB,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAsFjC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAC9C,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EACzE,WAAW,GAAE,MAA2B,GACvC,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAgBvC"}
@@ -24,7 +24,7 @@ import { transaction } from '../database.js';
24
24
  * );
25
25
  * ```
26
26
  */
27
- export function processBatch(db, items, processor, atomic = true, maxItems = 50) {
27
+ export async function processBatch(db, items, processor, atomic = true, maxItems = 50) {
28
28
  // Validate inputs
29
29
  if (!items || !Array.isArray(items)) {
30
30
  throw new Error('Items must be an array');
@@ -39,9 +39,9 @@ export function processBatch(db, items, processor, atomic = true, maxItems = 50)
39
39
  let processed = 0;
40
40
  let failed = 0;
41
41
  // Helper to process a single item
42
- const processSingleItem = (item) => {
42
+ const processSingleItem = async (item) => {
43
43
  try {
44
- const data = processor(item, db);
44
+ const data = await processor(item, db);
45
45
  results.push({
46
46
  success: true,
47
47
  data
@@ -64,9 +64,9 @@ export function processBatch(db, items, processor, atomic = true, maxItems = 50)
64
64
  try {
65
65
  if (atomic) {
66
66
  // Atomic mode: wrap in transaction, all succeed or all fail
67
- return transaction(db, () => {
67
+ return await transaction(async () => {
68
68
  for (const item of items) {
69
- processSingleItem(item);
69
+ await processSingleItem(item);
70
70
  }
71
71
  return {
72
72
  success: failed === 0,
@@ -79,7 +79,7 @@ export function processBatch(db, items, processor, atomic = true, maxItems = 50)
79
79
  else {
80
80
  // Non-atomic mode: process all, return individual results
81
81
  for (const item of items) {
82
- processSingleItem(item);
82
+ await processSingleItem(item);
83
83
  }
84
84
  return {
85
85
  success: failed === 0,
@@ -129,7 +129,7 @@ export function processBatch(db, items, processor, atomic = true, maxItems = 50)
129
129
  * ```
130
130
  */
131
131
  export function withTransaction(internalFn, errorPrefix = 'Operation failed') {
132
- return (params) => {
132
+ return async (params) => {
133
133
  // Note: getDatabase() must be imported where this is used
134
134
  // We can't import it here to avoid circular dependencies
135
135
  const db = global.__database;
@@ -137,7 +137,7 @@ export function withTransaction(internalFn, errorPrefix = 'Operation failed') {
137
137
  throw new Error('Database not initialized');
138
138
  }
139
139
  try {
140
- return transaction(db, () => internalFn(params, db));
140
+ return await transaction(async () => await internalFn(params, db));
141
141
  }
142
142
  catch (error) {
143
143
  const message = error instanceof Error ? error.message : String(error);
@@ -1 +1 @@
1
- {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../src/utils/batch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../src/utils/batch.ts"],"names":[],"mappings":"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"}
@@ -1,56 +1,66 @@
1
1
  /**
2
2
  * Programmatic cleanup utilities for old messages and file changes
3
3
  * Replaces the automatic triggers with weekend-aware logic
4
+ *
5
+ * CONVERTED: Using Knex.js with DatabaseAdapter (async/await)
4
6
  */
5
- import { Database } from '../types.js';
7
+ import { DatabaseAdapter } from '../adapters/index.js';
8
+ import { Knex } from 'knex';
6
9
  /**
7
10
  * Perform automatic cleanup of old data
8
11
  * Deletes old messages, file changes, and activity logs based on m_config settings
12
+ * Also releases inactive generic agent slots for reuse
9
13
  *
10
- * @param db - Database instance
11
- * @returns Object with counts of deleted records
14
+ * @param adapter - Database adapter instance
15
+ * @param trx - Optional transaction
16
+ * @returns Object with counts of deleted records and released agents
12
17
  */
13
- export declare function performAutoCleanup(db: Database): {
18
+ export declare function performAutoCleanup(adapter: DatabaseAdapter, trx?: Knex.Transaction): Promise<{
14
19
  messagesDeleted: number;
15
20
  fileChangesDeleted: number;
16
21
  activityLogsDeleted: number;
17
- };
22
+ agentsReleased: number;
23
+ }>;
18
24
  /**
19
25
  * Delete old messages before the cutoff timestamp
20
26
  *
21
- * @param db - Database instance
27
+ * @param adapter - Database adapter instance
22
28
  * @param cutoffTimestamp - Unix timestamp (seconds) for cutoff
29
+ * @param trx - Optional transaction
23
30
  * @returns Number of messages deleted
24
31
  */
25
- export declare function cleanupMessages(db: Database, cutoffTimestamp: number): number;
32
+ export declare function cleanupMessages(adapter: DatabaseAdapter, cutoffTimestamp: number, trx?: Knex.Transaction): Promise<number>;
26
33
  /**
27
34
  * Delete old file changes before the cutoff timestamp
28
35
  *
29
- * @param db - Database instance
36
+ * @param adapter - Database adapter instance
30
37
  * @param cutoffTimestamp - Unix timestamp (seconds) for cutoff
38
+ * @param trx - Optional transaction
31
39
  * @returns Number of file changes deleted
32
40
  */
33
- export declare function cleanupFileChanges(db: Database, cutoffTimestamp: number): number;
41
+ export declare function cleanupFileChanges(adapter: DatabaseAdapter, cutoffTimestamp: number, trx?: Knex.Transaction): Promise<number>;
34
42
  /**
35
43
  * Delete old activity logs before the cutoff timestamp
36
44
  * Activity logs use the same retention as messages (constraint #4)
37
45
  *
38
- * @param db - Database instance
46
+ * @param adapter - Database adapter instance
39
47
  * @param cutoffTimestamp - Unix timestamp (seconds) for cutoff
48
+ * @param trx - Optional transaction
40
49
  * @returns Number of activity logs deleted
41
50
  */
42
- export declare function cleanupActivityLogs(db: Database, cutoffTimestamp: number): number;
51
+ export declare function cleanupActivityLogs(adapter: DatabaseAdapter, cutoffTimestamp: number, trx?: Knex.Transaction): Promise<number>;
43
52
  /**
44
53
  * Cleanup with custom retention periods (overrides config)
45
54
  *
46
- * @param db - Database instance
55
+ * @param adapter - Database adapter instance
47
56
  * @param messageHours - Message retention in hours (optional)
48
57
  * @param fileChangeDays - File change retention in days (optional)
58
+ * @param trx - Optional transaction
49
59
  * @returns Object with counts of deleted records
50
60
  */
51
- export declare function cleanupWithCustomRetention(db: Database, messageHours?: number, fileChangeDays?: number): {
61
+ export declare function cleanupWithCustomRetention(adapter: DatabaseAdapter, messageHours?: number, fileChangeDays?: number, trx?: Knex.Transaction): Promise<{
52
62
  messagesDeleted: number;
53
63
  fileChangesDeleted: number;
54
64
  activityLogsDeleted: number;
55
- };
65
+ }>;
56
66
  //# sourceMappingURL=cleanup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/utils/cleanup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,CAUrI;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAG7E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAGhF;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAGjF;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,EAAE,EAAE,QAAQ,EACZ,YAAY,CAAC,EAAE,MAAM,EACrB,cAAc,CAAC,EAAE,MAAM,GACtB;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,CAkBtF"}
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/utils/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B;;;;;;;;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;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,eAAe,EACxB,eAAe,EAAE,MAAM,EACvB,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,eAAe,EACxB,eAAe,EAAE,MAAM,EACvB,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,CAGjB;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"}
@@ -1,79 +1,89 @@
1
1
  /**
2
2
  * Programmatic cleanup utilities for old messages and file changes
3
3
  * Replaces the automatic triggers with weekend-aware logic
4
+ *
5
+ * CONVERTED: Using Knex.js with DatabaseAdapter (async/await)
4
6
  */
5
- import { calculateMessageCutoff, calculateFileChangeCutoff } from './retention.js';
7
+ import { calculateMessageCutoff, calculateFileChangeCutoff, releaseInactiveAgents } from './retention.js';
6
8
  /**
7
9
  * Perform automatic cleanup of old data
8
10
  * Deletes old messages, file changes, and activity logs based on m_config settings
11
+ * Also releases inactive generic agent slots for reuse
9
12
  *
10
- * @param db - Database instance
11
- * @returns Object with counts of deleted records
13
+ * @param adapter - Database adapter instance
14
+ * @param trx - Optional transaction
15
+ * @returns Object with counts of deleted records and released agents
12
16
  */
13
- export function performAutoCleanup(db) {
14
- const messageCutoff = calculateMessageCutoff(db);
15
- const fileChangeCutoff = calculateFileChangeCutoff(db);
16
- const messagesDeleted = cleanupMessages(db, messageCutoff);
17
- const fileChangesDeleted = cleanupFileChanges(db, fileChangeCutoff);
17
+ export async function performAutoCleanup(adapter, trx) {
18
+ const messageCutoff = await calculateMessageCutoff(adapter);
19
+ const fileChangeCutoff = await calculateFileChangeCutoff(adapter);
20
+ const messagesDeleted = await cleanupMessages(adapter, messageCutoff, trx);
21
+ const fileChangesDeleted = await cleanupFileChanges(adapter, fileChangeCutoff, trx);
18
22
  // Activity log uses same retention as messages (constraint #4)
19
- const activityLogsDeleted = cleanupActivityLogs(db, messageCutoff);
20
- return { messagesDeleted, fileChangesDeleted, activityLogsDeleted };
23
+ const activityLogsDeleted = await cleanupActivityLogs(adapter, messageCutoff, trx);
24
+ // Release inactive generic agent slots (24 hours of inactivity)
25
+ const agentsReleased = await releaseInactiveAgents(adapter, 24);
26
+ return { messagesDeleted, fileChangesDeleted, activityLogsDeleted, agentsReleased };
21
27
  }
22
28
  /**
23
29
  * Delete old messages before the cutoff timestamp
24
30
  *
25
- * @param db - Database instance
31
+ * @param adapter - Database adapter instance
26
32
  * @param cutoffTimestamp - Unix timestamp (seconds) for cutoff
33
+ * @param trx - Optional transaction
27
34
  * @returns Number of messages deleted
28
35
  */
29
- export function cleanupMessages(db, cutoffTimestamp) {
30
- const result = db.prepare('DELETE FROM t_agent_messages WHERE ts < ?').run(cutoffTimestamp);
31
- return result.changes;
36
+ export async function cleanupMessages(adapter, cutoffTimestamp, trx) {
37
+ const knex = trx || adapter.getKnex();
38
+ return await knex('t_agent_messages').where('ts', '<', cutoffTimestamp).delete();
32
39
  }
33
40
  /**
34
41
  * Delete old file changes before the cutoff timestamp
35
42
  *
36
- * @param db - Database instance
43
+ * @param adapter - Database adapter instance
37
44
  * @param cutoffTimestamp - Unix timestamp (seconds) for cutoff
45
+ * @param trx - Optional transaction
38
46
  * @returns Number of file changes deleted
39
47
  */
40
- export function cleanupFileChanges(db, cutoffTimestamp) {
41
- const result = db.prepare('DELETE FROM t_file_changes WHERE ts < ?').run(cutoffTimestamp);
42
- return result.changes;
48
+ export async function cleanupFileChanges(adapter, cutoffTimestamp, trx) {
49
+ const knex = trx || adapter.getKnex();
50
+ return await knex('t_file_changes').where('ts', '<', cutoffTimestamp).delete();
43
51
  }
44
52
  /**
45
53
  * Delete old activity logs before the cutoff timestamp
46
54
  * Activity logs use the same retention as messages (constraint #4)
47
55
  *
48
- * @param db - Database instance
56
+ * @param adapter - Database adapter instance
49
57
  * @param cutoffTimestamp - Unix timestamp (seconds) for cutoff
58
+ * @param trx - Optional transaction
50
59
  * @returns Number of activity logs deleted
51
60
  */
52
- export function cleanupActivityLogs(db, cutoffTimestamp) {
53
- const result = db.prepare('DELETE FROM t_activity_log WHERE ts < ?').run(cutoffTimestamp);
54
- return result.changes;
61
+ export async function cleanupActivityLogs(adapter, cutoffTimestamp, trx) {
62
+ const knex = trx || adapter.getKnex();
63
+ return await knex('t_activity_log').where('ts', '<', cutoffTimestamp).delete();
55
64
  }
56
65
  /**
57
66
  * Cleanup with custom retention periods (overrides config)
58
67
  *
59
- * @param db - Database instance
68
+ * @param adapter - Database adapter instance
60
69
  * @param messageHours - Message retention in hours (optional)
61
70
  * @param fileChangeDays - File change retention in days (optional)
71
+ * @param trx - Optional transaction
62
72
  * @returns Object with counts of deleted records
63
73
  */
64
- export function cleanupWithCustomRetention(db, messageHours, fileChangeDays) {
74
+ export async function cleanupWithCustomRetention(adapter, messageHours, fileChangeDays, trx) {
65
75
  let messagesDeleted = 0;
66
76
  let fileChangesDeleted = 0;
67
77
  let activityLogsDeleted = 0;
68
78
  if (messageHours !== undefined) {
69
79
  const messageCutoff = Math.floor(Date.now() / 1000) - (messageHours * 3600);
70
- messagesDeleted = cleanupMessages(db, messageCutoff);
80
+ messagesDeleted = await cleanupMessages(adapter, messageCutoff, trx);
71
81
  // Activity log uses same retention as messages (constraint #4)
72
- activityLogsDeleted = cleanupActivityLogs(db, messageCutoff);
82
+ activityLogsDeleted = await cleanupActivityLogs(adapter, messageCutoff, trx);
73
83
  }
74
84
  if (fileChangeDays !== undefined) {
75
85
  const fileChangeCutoff = Math.floor(Date.now() / 1000) - (fileChangeDays * 86400);
76
- fileChangesDeleted = cleanupFileChanges(db, fileChangeCutoff);
86
+ fileChangesDeleted = await cleanupFileChanges(adapter, fileChangeCutoff, trx);
77
87
  }
78
88
  return { messagesDeleted, fileChangesDeleted, activityLogsDeleted };
79
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/utils/cleanup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAY;IAC7C,MAAM,aAAa,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC;IACjD,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAEvD,MAAM,eAAe,GAAG,eAAe,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACpE,+DAA+D;IAC/D,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAEnE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,EAAY,EAAE,eAAuB;IACnE,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC5F,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAY,EAAE,eAAuB;IACtE,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC1F,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAY,EAAE,eAAuB;IACvE,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC1F,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,EAAY,EACZ,YAAqB,EACrB,cAAuB;IAEvB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAE5B,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;QAC5E,eAAe,GAAG,eAAe,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QACrD,+DAA+D;QAC/D,mBAAmB,GAAG,mBAAmB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC,CAAC;QAClF,kBAAkB,GAAG,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/utils/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE1G;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAwB,EACxB,GAAsB;IAOtB,MAAM,aAAa,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAElE,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;IAC3E,MAAM,kBAAkB,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACpF,+DAA+D;IAC/D,MAAM,mBAAmB,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;IAEnF,gEAAgE;IAChE,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAEhE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,CAAC;AACtF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAwB,EACxB,eAAuB,EACvB,GAAsB;IAEtB,MAAM,IAAI,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACtC,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC;AACnF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAwB,EACxB,eAAuB,EACvB,GAAsB;IAEtB,MAAM,IAAI,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACtC,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC;AACjF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAwB,EACxB,eAAuB,EACvB,GAAsB;IAEtB,MAAM,IAAI,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACtC,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC;AACjF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAAwB,EACxB,YAAqB,EACrB,cAAuB,EACvB,GAAsB;IAEtB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAE5B,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;QAC5E,eAAe,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;QACrE,+DAA+D;QAC/D,mBAAmB,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC,CAAC;QAClF,kBAAkB,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,CAAC;AACtE,CAAC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Debug Logger for MCP Shared Context Server
3
+ *
4
+ * Enables debug logging when specified via CLI arg, environment variable, or config file.
5
+ * Priority: CLI arg > Environment variable > Config file
6
+ *
7
+ * Usage:
8
+ * node dist/index.js --debug-log=/path/to/debug.log
9
+ * SQLEW_DEBUG=/path/to/debug.log node dist/index.js
10
+ * OR set debug.log_path in .sqlew/config.toml
11
+ */
12
+ /**
13
+ * Initialize debug logger
14
+ * @param debugLogPath - Log path (already resolved with priority: CLI > env > config)
15
+ * @param logLevel - Log level (case-insensitive: "error", "warn", "info", "debug")
16
+ */
17
+ export declare function initDebugLogger(debugLogPath?: string, logLevel?: string): void;
18
+ /**
19
+ * Write debug log entry
20
+ * @param level - Log level (INFO, WARN, ERROR, DEBUG)
21
+ * @param message - Log message
22
+ * @param data - Optional data to log
23
+ */
24
+ export declare function debugLog(level: 'INFO' | 'WARN' | 'ERROR' | 'DEBUG', message: string, data?: any): void;
25
+ /**
26
+ * Log MCP tool call
27
+ */
28
+ export declare function debugLogToolCall(toolName: string, action: string, params: any): void;
29
+ /**
30
+ * Log MCP tool response
31
+ */
32
+ export declare function debugLogToolResponse(toolName: string, action: string, success: boolean, result?: any, error?: any): void;
33
+ /**
34
+ * Log error with stack trace
35
+ */
36
+ export declare function debugLogError(context: string, error: any, additionalContext?: any): void;
37
+ /**
38
+ * Close debug logger
39
+ */
40
+ export declare function closeDebugLogger(): void;
41
+ /**
42
+ * Check if debug logging is enabled
43
+ */
44
+ export declare function isDebugEnabled(): boolean;
45
+ /**
46
+ * Log database query execution with detailed information
47
+ */
48
+ export declare function debugLogQuery(context: string, sql: string, params?: any, duration?: number): void;
49
+ /**
50
+ * Log connection pool state
51
+ */
52
+ export declare function debugLogPoolState(context: string, poolState: {
53
+ numUsed?: number;
54
+ numFree?: number;
55
+ numPendingAcquires?: number;
56
+ numPendingCreates?: number;
57
+ }): void;
58
+ /**
59
+ * Log transaction boundaries
60
+ */
61
+ export declare function debugLogTransaction(action: 'START' | 'COMMIT' | 'ROLLBACK', context: string, transactionId?: string): void;
62
+ /**
63
+ * Log parameter validation
64
+ */
65
+ export declare function debugLogValidation(context: string, paramName: string, value: any, valid: boolean, errorMsg?: string): void;
66
+ /**
67
+ * Log schema operation (insert, update, select)
68
+ */
69
+ export declare function debugLogSchemaOperation(operation: 'INSERT' | 'UPDATE' | 'SELECT' | 'DELETE', table: string, columns?: string[], whereClause?: string, values?: any): void;
70
+ /**
71
+ * Log JSON parsing/serialization
72
+ */
73
+ export declare function debugLogJSON(context: string, operation: 'PARSE' | 'STRINGIFY', input: any, success: boolean, error?: string): void;
74
+ /**
75
+ * Log function entry with parameters
76
+ */
77
+ export declare function debugLogFunctionEntry(functionName: string, params: any): void;
78
+ /**
79
+ * Log function exit with result
80
+ */
81
+ export declare function debugLogFunctionExit(functionName: string, success: boolean, result?: any, error?: any): void;
82
+ /**
83
+ * Log connection acquisition
84
+ */
85
+ export declare function debugLogConnectionAcquire(context: string, waitTime?: number): void;
86
+ /**
87
+ * Log connection release
88
+ */
89
+ export declare function debugLogConnectionRelease(context: string, duration?: number): void;
90
+ /**
91
+ * Log critical error with full context
92
+ */
93
+ export declare function debugLogCriticalError(context: string, error: any, additionalContext?: {
94
+ function?: string;
95
+ params?: any;
96
+ sql?: string;
97
+ poolState?: any;
98
+ }): void;
99
+ //# sourceMappingURL=debug-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-logger.d.ts","sourceRoot":"","sources":["../../src/utils/debug-logger.ts"],"names":[],"mappings":"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"}