sqlew 3.2.5 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/CHANGELOG.md +288 -1011
  2. package/README.md +80 -263
  3. package/assets/config.example.toml +97 -0
  4. package/assets/schema.sql +6 -1
  5. package/dist/adapters/index.d.ts +11 -0
  6. package/dist/adapters/index.d.ts.map +1 -0
  7. package/dist/adapters/index.js +21 -0
  8. package/dist/adapters/index.js.map +1 -0
  9. package/dist/adapters/mysql-adapter.d.ts +31 -0
  10. package/dist/adapters/mysql-adapter.d.ts.map +1 -0
  11. package/dist/adapters/mysql-adapter.js +63 -0
  12. package/dist/adapters/mysql-adapter.js.map +1 -0
  13. package/dist/adapters/postgresql-adapter.d.ts +31 -0
  14. package/dist/adapters/postgresql-adapter.d.ts.map +1 -0
  15. package/dist/adapters/postgresql-adapter.js +63 -0
  16. package/dist/adapters/postgresql-adapter.js.map +1 -0
  17. package/dist/adapters/sqlite-adapter.d.ts +37 -0
  18. package/dist/adapters/sqlite-adapter.d.ts.map +1 -0
  19. package/dist/adapters/sqlite-adapter.js +129 -0
  20. package/dist/adapters/sqlite-adapter.js.map +1 -0
  21. package/dist/adapters/types.d.ts +33 -0
  22. package/dist/adapters/types.d.ts.map +1 -0
  23. package/dist/adapters/types.js +2 -0
  24. package/dist/adapters/types.js.map +1 -0
  25. package/dist/cli.js +55 -54
  26. package/dist/cli.js.map +1 -1
  27. package/dist/config/example-generator.d.ts +11 -0
  28. package/dist/config/example-generator.d.ts.map +1 -0
  29. package/dist/config/example-generator.js +48 -0
  30. package/dist/config/example-generator.js.map +1 -0
  31. package/dist/config/loader.d.ts +46 -0
  32. package/dist/config/loader.d.ts.map +1 -0
  33. package/dist/config/loader.js +155 -0
  34. package/dist/config/loader.js.map +1 -0
  35. package/dist/config/types.d.ts +86 -0
  36. package/dist/config/types.d.ts.map +1 -0
  37. package/dist/config/types.js +28 -0
  38. package/dist/config/types.js.map +1 -0
  39. package/dist/constants.d.ts +9 -0
  40. package/dist/constants.d.ts.map +1 -1
  41. package/dist/constants.js +10 -0
  42. package/dist/constants.js.map +1 -1
  43. package/dist/database.d.ts +44 -122
  44. package/dist/database.d.ts.map +1 -1
  45. package/dist/database.js +145 -349
  46. package/dist/database.js.map +1 -1
  47. package/dist/index.js +223 -175
  48. package/dist/index.js.map +1 -1
  49. package/dist/knexfile.d.ts +6 -0
  50. package/dist/knexfile.d.ts.map +1 -0
  51. package/dist/knexfile.js +85 -0
  52. package/dist/knexfile.js.map +1 -0
  53. package/dist/migrations/add-help-system-tables.d.ts +35 -0
  54. package/dist/migrations/add-help-system-tables.d.ts.map +1 -0
  55. package/dist/migrations/add-help-system-tables.js +206 -0
  56. package/dist/migrations/add-help-system-tables.js.map +1 -0
  57. package/dist/migrations/add-token-tracking.d.ts +28 -0
  58. package/dist/migrations/add-token-tracking.d.ts.map +1 -0
  59. package/dist/migrations/add-token-tracking.js +108 -0
  60. package/dist/migrations/add-token-tracking.js.map +1 -0
  61. package/dist/migrations/add-v3.5.0-pruned-files.d.ts +26 -0
  62. package/dist/migrations/add-v3.5.0-pruned-files.d.ts.map +1 -0
  63. package/dist/migrations/add-v3.5.0-pruned-files.js +107 -0
  64. package/dist/migrations/add-v3.5.0-pruned-files.js.map +1 -0
  65. package/dist/migrations/index.d.ts +26 -12
  66. package/dist/migrations/index.d.ts.map +1 -1
  67. package/dist/migrations/index.js +162 -20
  68. package/dist/migrations/index.js.map +1 -1
  69. package/dist/migrations/knex/20251025020452_create_master_tables.d.ts +4 -0
  70. package/dist/migrations/knex/20251025020452_create_master_tables.d.ts.map +1 -0
  71. package/dist/migrations/knex/20251025020452_create_master_tables.js +65 -0
  72. package/dist/migrations/knex/20251025020452_create_master_tables.js.map +1 -0
  73. package/dist/migrations/knex/20251025021152_create_transaction_tables.d.ts +4 -0
  74. package/dist/migrations/knex/20251025021152_create_transaction_tables.d.ts.map +1 -0
  75. package/dist/migrations/knex/20251025021152_create_transaction_tables.js +235 -0
  76. package/dist/migrations/knex/20251025021152_create_transaction_tables.js.map +1 -0
  77. package/dist/migrations/knex/20251025021351_create_indexes.d.ts +4 -0
  78. package/dist/migrations/knex/20251025021351_create_indexes.d.ts.map +1 -0
  79. package/dist/migrations/knex/20251025021351_create_indexes.js +62 -0
  80. package/dist/migrations/knex/20251025021351_create_indexes.js.map +1 -0
  81. package/dist/migrations/knex/20251025021416_seed_master_data.d.ts +4 -0
  82. package/dist/migrations/knex/20251025021416_seed_master_data.d.ts.map +1 -0
  83. package/dist/migrations/knex/20251025021416_seed_master_data.js +58 -0
  84. package/dist/migrations/knex/20251025021416_seed_master_data.js.map +1 -0
  85. package/dist/migrations/knex/20251025070349_create_views.d.ts +4 -0
  86. package/dist/migrations/knex/20251025070349_create_views.d.ts.map +1 -0
  87. package/dist/migrations/knex/20251025070349_create_views.js +143 -0
  88. package/dist/migrations/knex/20251025070349_create_views.js.map +1 -0
  89. package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.d.ts +4 -0
  90. package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.d.ts.map +1 -0
  91. package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.js +15 -0
  92. package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.js.map +1 -0
  93. package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.d.ts +8 -0
  94. package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.d.ts.map +1 -0
  95. package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.js +12 -0
  96. package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.js.map +1 -0
  97. package/dist/migrations/knex/20251025090000_create_help_system_tables.d.ts +19 -0
  98. package/dist/migrations/knex/20251025090000_create_help_system_tables.d.ts.map +1 -0
  99. package/dist/migrations/knex/20251025090000_create_help_system_tables.js +115 -0
  100. package/dist/migrations/knex/20251025090000_create_help_system_tables.js.map +1 -0
  101. package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.d.ts +13 -0
  102. package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.d.ts.map +1 -0
  103. package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.js +377 -0
  104. package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.js.map +1 -0
  105. package/dist/migrations/knex/20251025100000_seed_help_metadata.d.ts +15 -0
  106. package/dist/migrations/knex/20251025100000_seed_help_metadata.d.ts.map +1 -0
  107. package/dist/migrations/knex/20251025100000_seed_help_metadata.js +253 -0
  108. package/dist/migrations/knex/20251025100000_seed_help_metadata.js.map +1 -0
  109. package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.d.ts +16 -0
  110. package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.d.ts.map +1 -0
  111. package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.js +276 -0
  112. package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.js.map +1 -0
  113. package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.d.ts +8 -0
  114. package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.d.ts.map +1 -0
  115. package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.js +64 -0
  116. package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.js.map +1 -0
  117. package/dist/migrations/seed-help-data.d.ts +48 -0
  118. package/dist/migrations/seed-help-data.d.ts.map +1 -0
  119. package/dist/migrations/seed-help-data.js +1466 -0
  120. package/dist/migrations/seed-help-data.js.map +1 -0
  121. package/dist/migrations/seed-tool-metadata.d.ts +24 -0
  122. package/dist/migrations/seed-tool-metadata.d.ts.map +1 -0
  123. package/dist/migrations/seed-tool-metadata.js +392 -0
  124. package/dist/migrations/seed-tool-metadata.js.map +1 -0
  125. package/dist/migrations/v3.6.0-help-system-refactor.d.ts +46 -0
  126. package/dist/migrations/v3.6.0-help-system-refactor.d.ts.map +1 -0
  127. package/dist/migrations/v3.6.0-help-system-refactor.js +223 -0
  128. package/dist/migrations/v3.6.0-help-system-refactor.js.map +1 -0
  129. package/dist/schema.d.ts.map +1 -1
  130. package/dist/schema.js +2 -0
  131. package/dist/schema.js.map +1 -1
  132. package/dist/tests/git-aware-completion.test.d.ts +6 -0
  133. package/dist/tests/git-aware-completion.test.d.ts.map +1 -0
  134. package/dist/tests/git-aware-completion.test.js +160 -0
  135. package/dist/tests/git-aware-completion.test.js.map +1 -0
  136. package/dist/tests/help-system.test.d.ts +23 -0
  137. package/dist/tests/help-system.test.d.ts.map +1 -0
  138. package/dist/tests/help-system.test.js +374 -0
  139. package/dist/tests/help-system.test.js.map +1 -0
  140. package/dist/tests/tasks.auto-pruning-decision-link.test.d.ts +6 -0
  141. package/dist/tests/tasks.auto-pruning-decision-link.test.d.ts.map +1 -0
  142. package/dist/tests/tasks.auto-pruning-decision-link.test.js +264 -0
  143. package/dist/tests/tasks.auto-pruning-decision-link.test.js.map +1 -0
  144. package/dist/tests/tasks.auto-pruning-partial.test.d.ts +6 -0
  145. package/dist/tests/tasks.auto-pruning-partial.test.d.ts.map +1 -0
  146. package/dist/tests/tasks.auto-pruning-partial.test.js +285 -0
  147. package/dist/tests/tasks.auto-pruning-partial.test.js.map +1 -0
  148. package/dist/tests/tasks.auto-pruning-persistence.test.d.ts +6 -0
  149. package/dist/tests/tasks.auto-pruning-persistence.test.d.ts.map +1 -0
  150. package/dist/tests/tasks.auto-pruning-persistence.test.js +250 -0
  151. package/dist/tests/tasks.auto-pruning-persistence.test.js.map +1 -0
  152. package/dist/tests/tasks.auto-pruning-safety.test.d.ts +12 -0
  153. package/dist/tests/tasks.auto-pruning-safety.test.d.ts.map +1 -0
  154. package/dist/tests/tasks.auto-pruning-safety.test.js +217 -0
  155. package/dist/tests/tasks.auto-pruning-safety.test.js.map +1 -0
  156. package/dist/tests/tasks.dependencies.test.js +338 -307
  157. package/dist/tests/tasks.dependencies.test.js.map +1 -1
  158. package/dist/tests/tasks.link-file-backward-compat.test.d.ts +6 -0
  159. package/dist/tests/tasks.link-file-backward-compat.test.d.ts.map +1 -0
  160. package/dist/tests/tasks.link-file-backward-compat.test.js +247 -0
  161. package/dist/tests/tasks.link-file-backward-compat.test.js.map +1 -0
  162. package/dist/tests/tasks.watch-files-action.test.d.ts +6 -0
  163. package/dist/tests/tasks.watch-files-action.test.d.ts.map +1 -0
  164. package/dist/tests/tasks.watch-files-action.test.js +372 -0
  165. package/dist/tests/tasks.watch-files-action.test.js.map +1 -0
  166. package/dist/tests/tasks.watch-files-parameter.test.d.ts +6 -0
  167. package/dist/tests/tasks.watch-files-parameter.test.d.ts.map +1 -0
  168. package/dist/tests/tasks.watch-files-parameter.test.js +260 -0
  169. package/dist/tests/tasks.watch-files-parameter.test.js.map +1 -0
  170. package/dist/tests/two-step-git-completion.test.d.ts +6 -0
  171. package/dist/tests/two-step-git-completion.test.d.ts.map +1 -0
  172. package/dist/tests/two-step-git-completion.test.js +326 -0
  173. package/dist/tests/two-step-git-completion.test.js.map +1 -0
  174. package/dist/tests/vcs-staging.test.d.ts +6 -0
  175. package/dist/tests/vcs-staging.test.d.ts.map +1 -0
  176. package/dist/tests/vcs-staging.test.js +137 -0
  177. package/dist/tests/vcs-staging.test.js.map +1 -0
  178. package/dist/tools/config.d.ts +9 -4
  179. package/dist/tools/config.d.ts.map +1 -1
  180. package/dist/tools/config.js +16 -12
  181. package/dist/tools/config.js.map +1 -1
  182. package/dist/tools/constraints.d.ts +9 -3
  183. package/dist/tools/constraints.d.ts.map +1 -1
  184. package/dist/tools/constraints.js +66 -45
  185. package/dist/tools/constraints.js.map +1 -1
  186. package/dist/tools/context.d.ts +35 -16
  187. package/dist/tools/context.d.ts.map +1 -1
  188. package/dist/tools/context.js +374 -314
  189. package/dist/tools/context.js.map +1 -1
  190. package/dist/tools/files.d.ts +11 -4
  191. package/dist/tools/files.d.ts.map +1 -1
  192. package/dist/tools/files.js +173 -91
  193. package/dist/tools/files.js.map +1 -1
  194. package/dist/tools/help-queries.d.ts +130 -0
  195. package/dist/tools/help-queries.d.ts.map +1 -0
  196. package/dist/tools/help-queries.js +393 -0
  197. package/dist/tools/help-queries.js.map +1 -0
  198. package/dist/tools/messaging.d.ts +13 -6
  199. package/dist/tools/messaging.d.ts.map +1 -1
  200. package/dist/tools/messaging.js +217 -129
  201. package/dist/tools/messaging.js.map +1 -1
  202. package/dist/tools/tasks.d.ts +42 -12
  203. package/dist/tools/tasks.d.ts.map +1 -1
  204. package/dist/tools/tasks.js +809 -347
  205. package/dist/tools/tasks.js.map +1 -1
  206. package/dist/tools/utils.d.ts +13 -5
  207. package/dist/tools/utils.d.ts.map +1 -1
  208. package/dist/tools/utils.js +92 -115
  209. package/dist/tools/utils.js.map +1 -1
  210. package/dist/types.d.ts +4 -0
  211. package/dist/types.d.ts.map +1 -1
  212. package/dist/utils/activity-logging.d.ts +114 -0
  213. package/dist/utils/activity-logging.d.ts.map +1 -0
  214. package/dist/utils/activity-logging.js +162 -0
  215. package/dist/utils/activity-logging.js.map +1 -0
  216. package/dist/utils/batch.d.ts +2 -2
  217. package/dist/utils/batch.d.ts.map +1 -1
  218. package/dist/utils/batch.js +8 -8
  219. package/dist/utils/batch.js.map +1 -1
  220. package/dist/utils/cleanup.d.ts +21 -13
  221. package/dist/utils/cleanup.d.ts.map +1 -1
  222. package/dist/utils/cleanup.js +31 -24
  223. package/dist/utils/cleanup.js.map +1 -1
  224. package/dist/utils/debug-logger.d.ts +44 -0
  225. package/dist/utils/debug-logger.d.ts.map +1 -0
  226. package/dist/utils/debug-logger.js +116 -0
  227. package/dist/utils/debug-logger.js.map +1 -0
  228. package/dist/utils/file-pruning.d.ts +69 -0
  229. package/dist/utils/file-pruning.d.ts.map +1 -0
  230. package/dist/utils/file-pruning.js +185 -0
  231. package/dist/utils/file-pruning.js.map +1 -0
  232. package/dist/utils/help-tracking.d.ts +55 -0
  233. package/dist/utils/help-tracking.d.ts.map +1 -0
  234. package/dist/utils/help-tracking.js +88 -0
  235. package/dist/utils/help-tracking.js.map +1 -0
  236. package/dist/utils/quality-checks.d.ts +60 -0
  237. package/dist/utils/quality-checks.d.ts.map +1 -0
  238. package/dist/utils/quality-checks.js +228 -0
  239. package/dist/utils/quality-checks.js.map +1 -0
  240. package/dist/utils/retention.d.ts +13 -5
  241. package/dist/utils/retention.d.ts.map +1 -1
  242. package/dist/utils/retention.js +20 -8
  243. package/dist/utils/retention.js.map +1 -1
  244. package/dist/utils/task-stale-detection.d.ts +77 -7
  245. package/dist/utils/task-stale-detection.d.ts.map +1 -1
  246. package/dist/utils/task-stale-detection.js +309 -34
  247. package/dist/utils/task-stale-detection.js.map +1 -1
  248. package/dist/utils/token-estimation.d.ts +72 -0
  249. package/dist/utils/token-estimation.d.ts.map +1 -0
  250. package/dist/utils/token-estimation.js +71 -0
  251. package/dist/utils/token-estimation.js.map +1 -0
  252. package/dist/utils/token-logging.d.ts +48 -0
  253. package/dist/utils/token-logging.d.ts.map +1 -0
  254. package/dist/utils/token-logging.js +112 -0
  255. package/dist/utils/token-logging.js.map +1 -0
  256. package/dist/utils/vcs-adapter.d.ts +68 -0
  257. package/dist/utils/vcs-adapter.d.ts.map +1 -0
  258. package/dist/utils/vcs-adapter.js +187 -0
  259. package/dist/utils/vcs-adapter.js.map +1 -0
  260. package/dist/utils/view-queries.d.ts +34 -0
  261. package/dist/utils/view-queries.d.ts.map +1 -0
  262. package/dist/utils/view-queries.js +192 -0
  263. package/dist/utils/view-queries.js.map +1 -0
  264. package/dist/watcher/file-watcher.d.ts +54 -4
  265. package/dist/watcher/file-watcher.d.ts.map +1 -1
  266. package/dist/watcher/file-watcher.js +329 -33
  267. package/dist/watcher/file-watcher.js.map +1 -1
  268. package/dist/watcher/gitignore-parser.d.ts +70 -0
  269. package/dist/watcher/gitignore-parser.d.ts.map +1 -0
  270. package/dist/watcher/gitignore-parser.js +191 -0
  271. package/dist/watcher/gitignore-parser.js.map +1 -0
  272. package/dist/watcher/index.d.ts +1 -0
  273. package/dist/watcher/index.d.ts.map +1 -1
  274. package/dist/watcher/index.js +1 -0
  275. package/dist/watcher/index.js.map +1 -1
  276. package/docs/AI_AGENT_GUIDE.md +1 -1
  277. package/docs/ARCHITECTURE.md +12 -0
  278. package/docs/AUTO_FILE_TRACKING.md +486 -82
  279. package/docs/BEST_PRACTICES.md +56 -448
  280. package/docs/CONFIGURATION.md +908 -0
  281. package/docs/GIT_AWARE_AUTO_COMPLETE.md +645 -0
  282. package/docs/MIGRATION_v3.3.md +602 -0
  283. package/docs/MIGRATION_v3.6.0.md +170 -0
  284. package/docs/SHARED_CONCEPTS.md +65 -209
  285. package/docs/TASK_ACTIONS.md +12 -0
  286. package/docs/TASK_OVERVIEW.md +125 -24
  287. package/docs/TASK_PRUNING.md +589 -0
  288. package/docs/TASK_SYSTEM.md +83 -13
  289. package/docs/TOOL_REFERENCE.md +94 -6
  290. package/docs/TOOL_SELECTION.md +41 -248
  291. package/package.json +21 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.watch-files-parameter.test.js","sourceRoot":"","sources":["../../src/tests/tasks.watch-files-parameter.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Integration Tests - Two-Step Git-Aware Task Workflow (v3.5.2)
3
+ * Tests the complete workflow: staging → done, commit → archived
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=two-step-git-completion.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"two-step-git-completion.test.d.ts","sourceRoot":"","sources":["../../src/tests/two-step-git-completion.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,326 @@
1
+ /**
2
+ * Integration Tests - Two-Step Git-Aware Task Workflow (v3.5.2)
3
+ * Tests the complete workflow: staging → done, commit → archived
4
+ */
5
+ import { describe, it, before, after, beforeEach } from 'node:test';
6
+ import assert from 'node:assert';
7
+ import { existsSync, mkdirSync, writeFileSync, rmSync } from 'fs';
8
+ import { join } from 'path';
9
+ import { execSync } from 'child_process';
10
+ import { initializeDatabase, closeDatabase } from '../database.js';
11
+ import { detectAndCompleteOnStaging, detectAndArchiveOnCommit } from '../utils/task-stale-detection.js';
12
+ const TEST_DIR = join(process.cwd(), 'test-two-step-git');
13
+ // Helper to clean up test directory
14
+ function cleanupTestDir() {
15
+ if (existsSync(TEST_DIR)) {
16
+ rmSync(TEST_DIR, { recursive: true, force: true });
17
+ }
18
+ }
19
+ describe('Two-Step Git-Aware Workflow Integration Tests', () => {
20
+ let db;
21
+ before(async () => {
22
+ // Clean up before tests
23
+ cleanupTestDir();
24
+ // Create test database (in-memory)
25
+ db = await initializeDatabase({
26
+ databaseType: 'sqlite',
27
+ connection: {
28
+ filename: ':memory:'
29
+ }
30
+ });
31
+ const knex = db.getKnex();
32
+ // Add test config for two-step workflow
33
+ await knex('m_config').insert({ key: 'git_auto_complete_on_stage', value: '1' })
34
+ .onConflict('key').merge();
35
+ await knex('m_config').insert({ key: 'git_auto_archive_on_commit', value: '1' })
36
+ .onConflict('key').merge();
37
+ await knex('m_config').insert({ key: 'require_all_files_staged', value: '1' })
38
+ .onConflict('key').merge();
39
+ await knex('m_config').insert({ key: 'require_all_files_committed_for_archive', value: '1' })
40
+ .onConflict('key').merge();
41
+ // Create test git repository
42
+ mkdirSync(TEST_DIR, { recursive: true });
43
+ execSync('git init', { cwd: TEST_DIR });
44
+ execSync('git config user.email "test@example.com"', { cwd: TEST_DIR });
45
+ execSync('git config user.name "Test User"', { cwd: TEST_DIR });
46
+ // Change to test directory for git operations
47
+ process.chdir(TEST_DIR);
48
+ });
49
+ after(async () => {
50
+ // Close database
51
+ if (db) {
52
+ await closeDatabase();
53
+ }
54
+ // Go back to original directory
55
+ process.chdir(join(TEST_DIR, '..'));
56
+ // Clean up test directory
57
+ cleanupTestDir();
58
+ });
59
+ describe('Step 1: Staging → Done', () => {
60
+ beforeEach(async () => {
61
+ // Clean up tasks and file links from previous tests
62
+ const knex = db.getKnex();
63
+ await knex('t_task_file_links').delete();
64
+ await knex('t_task_details').delete();
65
+ await knex('t_tasks').delete();
66
+ });
67
+ it('should transition task from waiting_review to done when all files staged', async () => {
68
+ const knex = db.getKnex();
69
+ // 1. Create task in waiting_review with watched file
70
+ const [agentId] = await knex('m_agents').insert({ name: 'test-agent' });
71
+ const statusRow = await knex('m_task_statuses').where({ name: 'waiting_review' }).first('id');
72
+ const [taskId] = await knex('t_tasks').insert({
73
+ assigned_agent_id: agentId,
74
+ status_id: statusRow.id,
75
+ priority: 2,
76
+ created_ts: Math.floor(Date.now() / 1000),
77
+ updated_ts: Math.floor(Date.now() / 1000)
78
+ });
79
+ await knex('t_task_details').insert({ task_id: taskId, title: 'Test task' });
80
+ // 2. Add watched file
81
+ writeFileSync('test-file1.ts', '// Test content');
82
+ const [fileId] = await knex('m_files').insert({ path: 'test-file1.ts' });
83
+ await knex('t_task_file_links').insert({ task_id: taskId, file_id: fileId, link_type: 'watch' });
84
+ // 3. Stage the file
85
+ execSync('git add test-file1.ts');
86
+ // 4. Run staging detection
87
+ const completedCount = await detectAndCompleteOnStaging(db);
88
+ // 5. Verify task transitioned to done
89
+ assert.strictEqual(completedCount, 1, 'Should complete 1 task');
90
+ const task = await knex('t_tasks').where({ id: taskId }).first('status_id');
91
+ const doneStatusRow = await knex('m_task_statuses').where({ name: 'done' }).first('id');
92
+ assert.strictEqual(task.status_id, doneStatusRow.id, 'Task should be in done status');
93
+ });
94
+ it('should NOT transition when only some files are staged', async () => {
95
+ const knex = db.getKnex();
96
+ // 1. Create task with 2 watched files
97
+ const agentRow = await knex('m_agents').where({ name: 'test-agent' }).first('id');
98
+ const statusRow = await knex('m_task_statuses').where({ name: 'waiting_review' }).first('id');
99
+ const [taskId] = await knex('t_tasks').insert({
100
+ assigned_agent_id: agentRow.id,
101
+ status_id: statusRow.id,
102
+ priority: 2,
103
+ created_ts: Math.floor(Date.now() / 1000),
104
+ updated_ts: Math.floor(Date.now() / 1000)
105
+ });
106
+ await knex('t_task_details').insert({ task_id: taskId, title: 'Test task' });
107
+ // 2. Add 2 watched files
108
+ writeFileSync('test-file2.ts', '// Test content 2');
109
+ writeFileSync('test-file3.ts', '// Test content 3');
110
+ const [file2Id] = await knex('m_files').insert({ path: 'test-file2.ts' });
111
+ const [file3Id] = await knex('m_files').insert({ path: 'test-file3.ts' });
112
+ await knex('t_task_file_links').insert({ task_id: taskId, file_id: file2Id, link_type: 'watch' });
113
+ await knex('t_task_file_links').insert({ task_id: taskId, file_id: file3Id, link_type: 'watch' });
114
+ // 3. Stage only ONE file
115
+ execSync('git add test-file2.ts');
116
+ // 4. Run staging detection
117
+ const completedCount = await detectAndCompleteOnStaging(db);
118
+ // 5. Verify task is STILL in waiting_review
119
+ assert.strictEqual(completedCount, 0, 'Should NOT complete any tasks');
120
+ const task = await knex('t_tasks').where({ id: taskId }).first('status_id');
121
+ assert.strictEqual(task.status_id, statusRow.id, 'Task should still be in waiting_review');
122
+ });
123
+ });
124
+ describe('Step 2: Commit → Archived', () => {
125
+ beforeEach(async () => {
126
+ // Clean up tasks and file links from previous tests
127
+ const knex = db.getKnex();
128
+ await knex('t_task_file_links').delete();
129
+ await knex('t_task_details').delete();
130
+ await knex('t_tasks').delete();
131
+ });
132
+ it('should transition task from done to archived when all files committed', async () => {
133
+ const knex = db.getKnex();
134
+ // 1. Commit previously staged files
135
+ execSync('git commit -m "Test commit 1"');
136
+ // 2. Create task in done status with watched file
137
+ const agentRow = await knex('m_agents').where({ name: 'test-agent' }).first('id');
138
+ const doneStatusRow = await knex('m_task_statuses').where({ name: 'done' }).first('id');
139
+ const [taskId] = await knex('t_tasks').insert({
140
+ assigned_agent_id: agentRow.id,
141
+ status_id: doneStatusRow.id,
142
+ priority: 2,
143
+ created_ts: Math.floor(Date.now() / 1000),
144
+ updated_ts: Math.floor(Date.now() / 1000)
145
+ });
146
+ await knex('t_task_details').insert({ task_id: taskId, title: 'Test task' });
147
+ // 3. Add watched file and commit it
148
+ writeFileSync('test-file4.ts', '// Test content 4');
149
+ const [fileId] = await knex('m_files').insert({ path: 'test-file4.ts' });
150
+ await knex('t_task_file_links').insert({ task_id: taskId, file_id: fileId, link_type: 'watch' });
151
+ execSync('git add test-file4.ts');
152
+ execSync('git commit -m "Test commit 2"');
153
+ // 4. Run archive detection
154
+ const archivedCount = await detectAndArchiveOnCommit(db);
155
+ // 5. Verify task transitioned to archived
156
+ assert.strictEqual(archivedCount, 1, 'Should archive 1 task');
157
+ const task = await knex('t_tasks').where({ id: taskId }).first('status_id');
158
+ const archivedStatusRow = await knex('m_task_statuses').where({ name: 'archived' }).first('id');
159
+ assert.strictEqual(task.status_id, archivedStatusRow.id, 'Task should be in archived status');
160
+ });
161
+ it('should NOT archive when files are not committed (only staged)', async () => {
162
+ const knex = db.getKnex();
163
+ // 1. Create task in done status
164
+ const agentRow = await knex('m_agents').where({ name: 'test-agent' }).first('id');
165
+ const doneStatusRow = await knex('m_task_statuses').where({ name: 'done' }).first('id');
166
+ const [taskId] = await knex('t_tasks').insert({
167
+ assigned_agent_id: agentRow.id,
168
+ status_id: doneStatusRow.id,
169
+ priority: 2,
170
+ created_ts: Math.floor(Date.now() / 1000),
171
+ updated_ts: Math.floor(Date.now() / 1000)
172
+ });
173
+ await knex('t_task_details').insert({ task_id: taskId, title: 'Test task' });
174
+ // 2. Add watched file and ONLY stage it (don't commit)
175
+ writeFileSync('test-file5.ts', '// Test content 5');
176
+ const [fileId] = await knex('m_files').insert({ path: 'test-file5.ts' });
177
+ await knex('t_task_file_links').insert({ task_id: taskId, file_id: fileId, link_type: 'watch' });
178
+ execSync('git add test-file5.ts');
179
+ // 3. Run archive detection
180
+ const archivedCount = await detectAndArchiveOnCommit(db);
181
+ // 4. Verify task is STILL in done
182
+ assert.strictEqual(archivedCount, 0, 'Should NOT archive any tasks');
183
+ const task = await knex('t_tasks').where({ id: taskId }).first('status_id');
184
+ assert.strictEqual(task.status_id, doneStatusRow.id, 'Task should still be in done status');
185
+ });
186
+ });
187
+ describe('Full Two-Step Workflow', () => {
188
+ beforeEach(async () => {
189
+ // Clean up tasks and file links from previous tests
190
+ const knex = db.getKnex();
191
+ await knex('t_task_file_links').delete();
192
+ await knex('t_task_details').delete();
193
+ await knex('t_tasks').delete();
194
+ });
195
+ it('should complete full cycle: waiting_review → done → archived', async () => {
196
+ const knex = db.getKnex();
197
+ // 1. Create task in waiting_review
198
+ const agentRow = await knex('m_agents').where({ name: 'test-agent' }).first('id');
199
+ const waitingReviewRow = await knex('m_task_statuses').where({ name: 'waiting_review' }).first('id');
200
+ const [taskId] = await knex('t_tasks').insert({
201
+ assigned_agent_id: agentRow.id,
202
+ status_id: waitingReviewRow.id,
203
+ priority: 2,
204
+ created_ts: Math.floor(Date.now() / 1000),
205
+ updated_ts: Math.floor(Date.now() / 1000)
206
+ });
207
+ await knex('t_task_details').insert({ task_id: taskId, title: 'Test task' });
208
+ // 2. Add watched file
209
+ writeFileSync('test-full-cycle.ts', '// Full cycle test');
210
+ const [fileId] = await knex('m_files').insert({ path: 'test-full-cycle.ts' });
211
+ await knex('t_task_file_links').insert({ task_id: taskId, file_id: fileId, link_type: 'watch' });
212
+ // 3. STEP 1: Stage file → should transition to done
213
+ execSync('git add test-full-cycle.ts');
214
+ const stagingCompleted = await detectAndCompleteOnStaging(db);
215
+ assert.strictEqual(stagingCompleted, 1);
216
+ let task = await knex('t_tasks').where({ id: taskId }).first('status_id');
217
+ const doneStatusRow = await knex('m_task_statuses').where({ name: 'done' }).first('id');
218
+ assert.strictEqual(task.status_id, doneStatusRow.id, 'Task should be done after staging');
219
+ // 4. STEP 2: Commit file → should transition to archived
220
+ execSync('git commit -m "Full cycle test"');
221
+ const commitArchived = await detectAndArchiveOnCommit(db);
222
+ assert.strictEqual(commitArchived, 1);
223
+ task = await knex('t_tasks').where({ id: taskId }).first('status_id');
224
+ const archivedStatusRow = await knex('m_task_statuses').where({ name: 'archived' }).first('id');
225
+ assert.strictEqual(task.status_id, archivedStatusRow.id, 'Task should be archived after commit');
226
+ });
227
+ it('should handle rapid staging + commit (git commit -a)', async () => {
228
+ const knex = db.getKnex();
229
+ // 1. Create task
230
+ const agentRow = await knex('m_agents').where({ name: 'test-agent' }).first('id');
231
+ const waitingReviewRow = await knex('m_task_statuses').where({ name: 'waiting_review' }).first('id');
232
+ const [taskId] = await knex('t_tasks').insert({
233
+ assigned_agent_id: agentRow.id,
234
+ status_id: waitingReviewRow.id,
235
+ priority: 2,
236
+ created_ts: Math.floor(Date.now() / 1000),
237
+ updated_ts: Math.floor(Date.now() / 1000)
238
+ });
239
+ await knex('t_task_details').insert({ task_id: taskId, title: 'Test task' });
240
+ // 2. Add watched file
241
+ writeFileSync('test-rapid.ts', '// Rapid test');
242
+ const [fileId] = await knex('m_files').insert({ path: 'test-rapid.ts' });
243
+ await knex('t_task_file_links').insert({ task_id: taskId, file_id: fileId, link_type: 'watch' });
244
+ // 3. Stage and commit immediately
245
+ execSync('git add test-rapid.ts && git commit -m "Rapid test"');
246
+ // 4. Run both detections - should go straight to archived
247
+ const stagingCompleted = await detectAndCompleteOnStaging(db);
248
+ // Staging won't find it (already committed)
249
+ assert.strictEqual(stagingCompleted, 0);
250
+ // But commit detection should complete it to done first
251
+ // This is handled by detectAndCompleteReviewedTasks in real workflow
252
+ // For this test, manually transition to done then test archiving
253
+ const doneStatusRow = await knex('m_task_statuses').where({ name: 'done' }).first('id');
254
+ await knex('t_tasks').where({ id: taskId }).update({ status_id: doneStatusRow.id });
255
+ const commitArchived = await detectAndArchiveOnCommit(db);
256
+ assert.strictEqual(commitArchived, 1);
257
+ const task = await knex('t_tasks').where({ id: taskId }).first('status_id');
258
+ const archivedStatusRow = await knex('m_task_statuses').where({ name: 'archived' }).first('id');
259
+ assert.strictEqual(task.status_id, archivedStatusRow.id);
260
+ });
261
+ });
262
+ describe('Configuration Tests', () => {
263
+ beforeEach(async () => {
264
+ // Clean up tasks and file links from previous tests
265
+ const knex = db.getKnex();
266
+ await knex('t_task_file_links').delete();
267
+ await knex('t_task_details').delete();
268
+ await knex('t_tasks').delete();
269
+ });
270
+ it('should respect require_all_files_staged config', async () => {
271
+ const knex = db.getKnex();
272
+ // Set to require all files
273
+ await knex('m_config').where({ key: 'require_all_files_staged' }).update({ value: '1' });
274
+ // Create task with 2 files
275
+ const agentRow = await knex('m_agents').where({ name: 'test-agent' }).first('id');
276
+ const statusRow = await knex('m_task_statuses').where({ name: 'waiting_review' }).first('id');
277
+ const [taskId] = await knex('t_tasks').insert({
278
+ assigned_agent_id: agentRow.id,
279
+ status_id: statusRow.id,
280
+ priority: 2,
281
+ created_ts: Math.floor(Date.now() / 1000),
282
+ updated_ts: Math.floor(Date.now() / 1000)
283
+ });
284
+ await knex('t_task_details').insert({ task_id: taskId, title: 'Test task' });
285
+ writeFileSync('config-test1.ts', '// Config test 1');
286
+ writeFileSync('config-test2.ts', '// Config test 2');
287
+ const [file1Id] = await knex('m_files').insert({ path: 'config-test1.ts' });
288
+ const [file2Id] = await knex('m_files').insert({ path: 'config-test2.ts' });
289
+ await knex('t_task_file_links').insert({ task_id: taskId, file_id: file1Id, link_type: 'watch' });
290
+ await knex('t_task_file_links').insert({ task_id: taskId, file_id: file2Id, link_type: 'watch' });
291
+ // Stage only one file
292
+ execSync('git add config-test1.ts');
293
+ // Should NOT complete (require ALL)
294
+ const completed = await detectAndCompleteOnStaging(db);
295
+ assert.strictEqual(completed, 0);
296
+ const task = await knex('t_tasks').where({ id: taskId }).first('status_id');
297
+ assert.strictEqual(task.status_id, statusRow.id, 'Task should still be waiting_review');
298
+ });
299
+ it('should respect git_auto_complete_on_stage disabled', async () => {
300
+ const knex = db.getKnex();
301
+ // Disable staging auto-complete
302
+ await knex('m_config').where({ key: 'git_auto_complete_on_stage' }).update({ value: '0' });
303
+ // Create and stage task
304
+ const agentRow = await knex('m_agents').where({ name: 'test-agent' }).first('id');
305
+ const statusRow = await knex('m_task_statuses').where({ name: 'waiting_review' }).first('id');
306
+ const [taskId] = await knex('t_tasks').insert({
307
+ assigned_agent_id: agentRow.id,
308
+ status_id: statusRow.id,
309
+ priority: 2,
310
+ created_ts: Math.floor(Date.now() / 1000),
311
+ updated_ts: Math.floor(Date.now() / 1000)
312
+ });
313
+ await knex('t_task_details').insert({ task_id: taskId, title: 'Test task' });
314
+ writeFileSync('disabled-test.ts', '// Disabled test');
315
+ const [fileId] = await knex('m_files').insert({ path: 'disabled-test.ts' });
316
+ await knex('t_task_file_links').insert({ task_id: taskId, file_id: fileId, link_type: 'watch' });
317
+ execSync('git add disabled-test.ts');
318
+ // Should NOT complete (feature disabled)
319
+ const completed = await detectAndCompleteOnStaging(db);
320
+ assert.strictEqual(completed, 0);
321
+ // Re-enable for other tests
322
+ await knex('m_config').where({ key: 'git_auto_complete_on_stage' }).update({ value: '1' });
323
+ });
324
+ });
325
+ });
326
+ //# sourceMappingURL=two-step-git-completion.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"two-step-git-completion.test.js","sourceRoot":"","sources":["../../src/tests/two-step-git-completion.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * VCS Staging Detection Tests (v3.5.2)
3
+ * Tests for getStagedFiles() method across Git, Mercurial, and SVN adapters
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=vcs-staging.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vcs-staging.test.d.ts","sourceRoot":"","sources":["../../src/tests/vcs-staging.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * VCS Staging Detection Tests (v3.5.2)
3
+ * Tests for getStagedFiles() method across Git, Mercurial, and SVN adapters
4
+ */
5
+ import { describe, it, before, after } from 'node:test';
6
+ import assert from 'node:assert/strict';
7
+ import { mkdirSync, rmSync, existsSync, writeFileSync } from 'fs';
8
+ import { join } from 'path';
9
+ import { execSync } from 'child_process';
10
+ import { GitAdapter, MercurialAdapter, SVNAdapter } from '../utils/vcs-adapter.js';
11
+ const TEST_DIR = join(process.cwd(), 'test-vcs-staging');
12
+ // Helper to clean up test directory
13
+ function cleanupTestDir() {
14
+ if (existsSync(TEST_DIR)) {
15
+ rmSync(TEST_DIR, { recursive: true, force: true });
16
+ }
17
+ }
18
+ describe('VCS Staging Detection Tests', () => {
19
+ before(() => {
20
+ cleanupTestDir();
21
+ mkdirSync(TEST_DIR, { recursive: true });
22
+ });
23
+ after(() => {
24
+ cleanupTestDir();
25
+ });
26
+ describe('GitAdapter - getStagedFiles()', () => {
27
+ let gitDir;
28
+ let adapter;
29
+ before(() => {
30
+ gitDir = join(TEST_DIR, 'git-test');
31
+ mkdirSync(gitDir, { recursive: true });
32
+ // Initialize git repo
33
+ execSync('git init', { cwd: gitDir });
34
+ execSync('git config user.email "test@example.com"', { cwd: gitDir });
35
+ execSync('git config user.name "Test User"', { cwd: gitDir });
36
+ adapter = new GitAdapter(gitDir);
37
+ });
38
+ it('should return empty array when no files are staged', async () => {
39
+ const stagedFiles = await adapter.getStagedFiles();
40
+ assert.deepStrictEqual(stagedFiles, []);
41
+ });
42
+ it('should detect staged files', async () => {
43
+ // Create and stage files
44
+ writeFileSync(join(gitDir, 'file1.txt'), 'content1');
45
+ writeFileSync(join(gitDir, 'file2.txt'), 'content2');
46
+ execSync('git add file1.txt file2.txt', { cwd: gitDir });
47
+ const stagedFiles = await adapter.getStagedFiles();
48
+ assert.strictEqual(stagedFiles.length, 2);
49
+ assert.ok(stagedFiles.includes('file1.txt'));
50
+ assert.ok(stagedFiles.includes('file2.txt'));
51
+ });
52
+ it('should return only staged files, not modified unstaged files', async () => {
53
+ // Commit previously staged files
54
+ execSync('git commit -m "Initial commit"', { cwd: gitDir });
55
+ // Create new file but don't stage it
56
+ writeFileSync(join(gitDir, 'file3.txt'), 'content3');
57
+ // Modify existing file but don't stage it
58
+ writeFileSync(join(gitDir, 'file1.txt'), 'modified content');
59
+ const stagedFiles = await adapter.getStagedFiles();
60
+ // Should be empty since nothing is staged
61
+ assert.deepStrictEqual(stagedFiles, []);
62
+ });
63
+ it('should detect partially staged files', async () => {
64
+ // Stage only file3
65
+ execSync('git add file3.txt', { cwd: gitDir });
66
+ const stagedFiles = await adapter.getStagedFiles();
67
+ assert.strictEqual(stagedFiles.length, 1);
68
+ assert.strictEqual(stagedFiles[0], 'file3.txt');
69
+ });
70
+ it('should handle non-git directory gracefully', async () => {
71
+ const nonGitAdapter = new GitAdapter(TEST_DIR);
72
+ const stagedFiles = await nonGitAdapter.getStagedFiles();
73
+ // Should return empty array, not throw
74
+ assert.deepStrictEqual(stagedFiles, []);
75
+ });
76
+ });
77
+ describe('SVNAdapter - getStagedFiles()', () => {
78
+ it('should return modified and added files as "staged"', async () => {
79
+ // SVN doesn't have staging - all modified/added files are considered "staged"
80
+ const adapter = new SVNAdapter(TEST_DIR);
81
+ // Mock SVN status output
82
+ // In real scenario, this would query actual SVN repo
83
+ // For now, test that it returns empty for non-SVN directory
84
+ const stagedFiles = await adapter.getStagedFiles();
85
+ // Should return empty for non-SVN directory
86
+ assert.ok(Array.isArray(stagedFiles));
87
+ });
88
+ it('should handle non-SVN directory gracefully', async () => {
89
+ const adapter = new SVNAdapter(TEST_DIR);
90
+ const stagedFiles = await adapter.getStagedFiles();
91
+ // Should return empty array, not throw
92
+ assert.deepStrictEqual(stagedFiles, []);
93
+ });
94
+ });
95
+ describe('MercurialAdapter - getStagedFiles()', () => {
96
+ it('should return modified, added, and removed files as "staged"', async () => {
97
+ // Mercurial doesn't have staging - all modified/added/removed files are considered "staged"
98
+ const adapter = new MercurialAdapter(TEST_DIR);
99
+ const stagedFiles = await adapter.getStagedFiles();
100
+ // Should return empty for non-Mercurial directory
101
+ assert.ok(Array.isArray(stagedFiles));
102
+ });
103
+ it('should handle non-Mercurial directory gracefully', async () => {
104
+ const adapter = new MercurialAdapter(TEST_DIR);
105
+ const stagedFiles = await adapter.getStagedFiles();
106
+ // Should return empty array, not throw
107
+ assert.deepStrictEqual(stagedFiles, []);
108
+ });
109
+ });
110
+ describe('Edge Cases', () => {
111
+ it('should handle empty repository', async () => {
112
+ const emptyGitDir = join(TEST_DIR, 'empty-git');
113
+ mkdirSync(emptyGitDir, { recursive: true });
114
+ execSync('git init', { cwd: emptyGitDir });
115
+ execSync('git config user.email "test@example.com"', { cwd: emptyGitDir });
116
+ execSync('git config user.name "Test User"', { cwd: emptyGitDir });
117
+ const adapter = new GitAdapter(emptyGitDir);
118
+ const stagedFiles = await adapter.getStagedFiles();
119
+ assert.deepStrictEqual(stagedFiles, []);
120
+ });
121
+ it('should handle files with spaces in names', async () => {
122
+ const gitDir = join(TEST_DIR, 'git-spaces');
123
+ mkdirSync(gitDir, { recursive: true });
124
+ execSync('git init', { cwd: gitDir });
125
+ execSync('git config user.email "test@example.com"', { cwd: gitDir });
126
+ execSync('git config user.name "Test User"', { cwd: gitDir });
127
+ // Create file with space in name
128
+ writeFileSync(join(gitDir, 'file with spaces.txt'), 'content');
129
+ execSync('git add "file with spaces.txt"', { cwd: gitDir });
130
+ const adapter = new GitAdapter(gitDir);
131
+ const stagedFiles = await adapter.getStagedFiles();
132
+ assert.strictEqual(stagedFiles.length, 1);
133
+ assert.strictEqual(stagedFiles[0], 'file with spaces.txt');
134
+ });
135
+ });
136
+ });
137
+ //# sourceMappingURL=vcs-staging.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vcs-staging.test.js","sourceRoot":"","sources":["../../src/tests/vcs-staging.test.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,34 @@
1
1
  /**
2
2
  * Configuration management tools for MCP Shared Context Server
3
3
  * Provides tools to get and update auto-deletion configuration
4
+ *
5
+ * CONVERTED: Using Knex.js with DatabaseAdapter (async/await)
4
6
  */
7
+ import { DatabaseAdapter } from '../adapters/index.js';
5
8
  /**
6
9
  * Get current configuration settings
7
10
  *
11
+ * @param adapter - Optional database adapter (for testing)
8
12
  * @returns Current configuration values
9
13
  */
10
- export declare function getConfig(): {
14
+ export declare function getConfig(adapter?: DatabaseAdapter): Promise<{
11
15
  ignoreWeekend: boolean;
12
16
  messageRetentionHours: number;
13
17
  fileHistoryRetentionDays: number;
14
- };
18
+ }>;
15
19
  /**
16
20
  * Update configuration settings
17
21
  * Validates values before updating
18
22
  *
19
23
  * @param params - Configuration parameters to update
24
+ * @param adapter - Optional database adapter (for testing)
20
25
  * @returns Updated configuration
21
26
  */
22
27
  export declare function updateConfig(params: {
23
28
  ignoreWeekend?: boolean;
24
29
  messageRetentionHours?: number;
25
30
  fileHistoryRetentionDays?: number;
26
- }): {
31
+ }, adapter?: DatabaseAdapter): Promise<{
27
32
  success: boolean;
28
33
  config: {
29
34
  ignoreWeekend: boolean;
@@ -31,7 +36,7 @@ export declare function updateConfig(params: {
31
36
  fileHistoryRetentionDays: number;
32
37
  };
33
38
  message: string;
34
- };
39
+ }>;
35
40
  /**
36
41
  * Get help documentation for config tool
37
42
  * @returns Help documentation object
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/tools/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;;GAIG;AACH,wBAAgB,SAAS,IAAI;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;CAClC,CAYA;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,GAAG;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE;QACN,aAAa,EAAE,OAAO,CAAC;QACvB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,wBAAwB,EAAE,MAAM,CAAC;KAClC,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB,CAqCA;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,GAAG,CAmBhC;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,GAAG,CA4EnC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/tools/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC;IAClE,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;CAClC,CAAC,CAYD;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE;QACN,aAAa,EAAE,OAAO,CAAC;QACvB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,wBAAwB,EAAE,MAAM,CAAC;KAClC,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAqCD;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,GAAG,CAmBhC;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,GAAG,CA4EnC"}