sqlew 3.6.0 → 3.6.2

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 (242) hide show
  1. package/CHANGELOG.md +403 -376
  2. package/assets/config.example.toml +9 -0
  3. package/dist/config/types.d.ts +2 -0
  4. package/dist/config/types.d.ts.map +1 -1
  5. package/dist/config/types.js.map +1 -1
  6. package/dist/database.d.ts +14 -1
  7. package/dist/database.d.ts.map +1 -1
  8. package/dist/database.js +128 -5
  9. package/dist/database.js.map +1 -1
  10. package/dist/index.js +136 -82
  11. package/dist/index.js.map +1 -1
  12. package/dist/knexfile.d.ts.map +1 -1
  13. package/dist/knexfile.js +15 -3
  14. package/dist/knexfile.js.map +1 -1
  15. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +1 -0
  16. package/dist/migrations/knex/{20251025020452_create_master_tables.js → bootstrap/20251025020452_create_master_tables.js} +15 -12
  17. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.js.map +1 -0
  18. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +1 -0
  19. package/dist/migrations/knex/{20251025021152_create_transaction_tables.js → bootstrap/20251025021152_create_transaction_tables.js} +19 -19
  20. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.js.map +1 -0
  21. package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.d.ts.map +1 -0
  22. package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.js +93 -0
  23. package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.js.map +1 -0
  24. package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +1 -0
  25. package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.js +64 -0
  26. package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.js.map +1 -0
  27. package/dist/migrations/knex/bootstrap/20251025070349_create_views.d.ts.map +1 -0
  28. package/dist/migrations/knex/bootstrap/20251025070349_create_views.js.map +1 -0
  29. package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts.map +1 -0
  30. package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js.map +1 -0
  31. package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts.map +1 -0
  32. package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.js.map +1 -0
  33. package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.d.ts.map +1 -0
  34. package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.js.map +1 -0
  35. package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts.map +1 -0
  36. package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js.map +1 -0
  37. package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.d.ts.map +1 -0
  38. package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.js.map +1 -0
  39. package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts.map +1 -0
  40. package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.js.map +1 -0
  41. package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts.map +1 -0
  42. package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js.map +1 -0
  43. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts +14 -0
  44. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts.map +1 -0
  45. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js +34 -0
  46. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js.map +1 -0
  47. package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts +4 -0
  48. package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts.map +1 -0
  49. package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js +24 -0
  50. package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js.map +1 -0
  51. package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.d.ts +16 -0
  52. package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.d.ts.map +1 -0
  53. package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.js +27 -0
  54. package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.js.map +1 -0
  55. package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts +13 -0
  56. package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +1 -0
  57. package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js +70 -0
  58. package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js.map +1 -0
  59. package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts +11 -0
  60. package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +1 -0
  61. package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js +36 -0
  62. package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js.map +1 -0
  63. package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts +14 -0
  64. package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +1 -0
  65. package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js +84 -0
  66. package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js.map +1 -0
  67. package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts +9 -0
  68. package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +1 -0
  69. package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js +37 -0
  70. package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js.map +1 -0
  71. package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts +9 -0
  72. package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +1 -0
  73. package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js +41 -0
  74. package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +1 -0
  75. package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts +9 -0
  76. package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +1 -0
  77. package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js +36 -0
  78. package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js.map +1 -0
  79. package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts +10 -0
  80. package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +1 -0
  81. package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js +28 -0
  82. package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js.map +1 -0
  83. package/dist/tests/agent-reuse.test.d.ts +6 -0
  84. package/dist/tests/agent-reuse.test.d.ts.map +1 -0
  85. package/dist/tests/agent-reuse.test.js +242 -0
  86. package/dist/tests/agent-reuse.test.js.map +1 -0
  87. package/dist/tests/all-features.test.d.ts +7 -0
  88. package/dist/tests/all-features.test.d.ts.map +1 -0
  89. package/dist/tests/all-features.test.js +514 -0
  90. package/dist/tests/all-features.test.js.map +1 -0
  91. package/dist/tests/migrations/test-all-versions-real.d.ts +8 -0
  92. package/dist/tests/migrations/test-all-versions-real.d.ts.map +1 -0
  93. package/dist/tests/migrations/test-all-versions-real.js +234 -0
  94. package/dist/tests/migrations/test-all-versions-real.js.map +1 -0
  95. package/dist/tests/migrations/test-all-versions.d.ts +14 -0
  96. package/dist/tests/migrations/test-all-versions.d.ts.map +1 -0
  97. package/dist/tests/migrations/test-all-versions.js +521 -0
  98. package/dist/tests/migrations/test-all-versions.js.map +1 -0
  99. package/dist/tools/constraints.d.ts.map +1 -1
  100. package/dist/tools/constraints.js +11 -7
  101. package/dist/tools/constraints.js.map +1 -1
  102. package/dist/tools/context.d.ts.map +1 -1
  103. package/dist/tools/context.js +73 -16
  104. package/dist/tools/context.js.map +1 -1
  105. package/dist/tools/messaging.d.ts.map +1 -1
  106. package/dist/tools/messaging.js +23 -1
  107. package/dist/tools/messaging.js.map +1 -1
  108. package/dist/tools/tasks.d.ts.map +1 -1
  109. package/dist/tools/tasks.js +8 -5
  110. package/dist/tools/tasks.js.map +1 -1
  111. package/dist/tools/utils.d.ts.map +1 -1
  112. package/dist/tools/utils.js +4 -1
  113. package/dist/tools/utils.js.map +1 -1
  114. package/dist/types.d.ts +1 -0
  115. package/dist/types.d.ts.map +1 -1
  116. package/dist/utils/cleanup.d.ts +3 -1
  117. package/dist/utils/cleanup.d.ts.map +1 -1
  118. package/dist/utils/cleanup.js +6 -3
  119. package/dist/utils/cleanup.js.map +1 -1
  120. package/dist/utils/debug-logger.d.ts +57 -2
  121. package/dist/utils/debug-logger.d.ts.map +1 -1
  122. package/dist/utils/debug-logger.js +155 -4
  123. package/dist/utils/debug-logger.js.map +1 -1
  124. package/dist/utils/error-handler.d.ts +28 -0
  125. package/dist/utils/error-handler.d.ts.map +1 -0
  126. package/dist/utils/error-handler.js +121 -0
  127. package/dist/utils/error-handler.js.map +1 -0
  128. package/dist/utils/help-tracking.d.ts +3 -3
  129. package/dist/utils/help-tracking.d.ts.map +1 -1
  130. package/dist/utils/help-tracking.js.map +1 -1
  131. package/dist/utils/param-parser.d.ts +23 -0
  132. package/dist/utils/param-parser.d.ts.map +1 -0
  133. package/dist/utils/param-parser.js +52 -0
  134. package/dist/utils/param-parser.js.map +1 -0
  135. package/dist/utils/retention.d.ts +10 -0
  136. package/dist/utils/retention.d.ts.map +1 -1
  137. package/dist/utils/retention.js +19 -0
  138. package/dist/utils/retention.js.map +1 -1
  139. package/docs/MIGRATION_CHAIN.md +293 -280
  140. package/package.json +85 -81
  141. package/dist/migrations/add-decision-context.d.ts +0 -28
  142. package/dist/migrations/add-decision-context.d.ts.map +0 -1
  143. package/dist/migrations/add-decision-context.js +0 -125
  144. package/dist/migrations/add-decision-context.js.map +0 -1
  145. package/dist/migrations/add-help-system-tables.d.ts +0 -35
  146. package/dist/migrations/add-help-system-tables.d.ts.map +0 -1
  147. package/dist/migrations/add-help-system-tables.js +0 -206
  148. package/dist/migrations/add-help-system-tables.js.map +0 -1
  149. package/dist/migrations/add-table-prefixes.d.ts +0 -29
  150. package/dist/migrations/add-table-prefixes.d.ts.map +0 -1
  151. package/dist/migrations/add-table-prefixes.js +0 -150
  152. package/dist/migrations/add-table-prefixes.js.map +0 -1
  153. package/dist/migrations/add-task-dependencies.d.ts +0 -26
  154. package/dist/migrations/add-task-dependencies.d.ts.map +0 -1
  155. package/dist/migrations/add-task-dependencies.js +0 -94
  156. package/dist/migrations/add-task-dependencies.js.map +0 -1
  157. package/dist/migrations/add-task-tables.d.ts +0 -47
  158. package/dist/migrations/add-task-tables.d.ts.map +0 -1
  159. package/dist/migrations/add-task-tables.js +0 -285
  160. package/dist/migrations/add-task-tables.js.map +0 -1
  161. package/dist/migrations/add-token-tracking.d.ts +0 -28
  162. package/dist/migrations/add-token-tracking.d.ts.map +0 -1
  163. package/dist/migrations/add-token-tracking.js +0 -108
  164. package/dist/migrations/add-token-tracking.js.map +0 -1
  165. package/dist/migrations/add-v2.1.0-features.d.ts +0 -29
  166. package/dist/migrations/add-v2.1.0-features.d.ts.map +0 -1
  167. package/dist/migrations/add-v2.1.0-features.js +0 -198
  168. package/dist/migrations/add-v2.1.0-features.js.map +0 -1
  169. package/dist/migrations/add-v3.5.0-pruned-files.d.ts +0 -26
  170. package/dist/migrations/add-v3.5.0-pruned-files.d.ts.map +0 -1
  171. package/dist/migrations/add-v3.5.0-pruned-files.js +0 -107
  172. package/dist/migrations/add-v3.5.0-pruned-files.js.map +0 -1
  173. package/dist/migrations/index.d.ts +0 -112
  174. package/dist/migrations/index.d.ts.map +0 -1
  175. package/dist/migrations/index.js +0 -411
  176. package/dist/migrations/index.js.map +0 -1
  177. package/dist/migrations/knex/20251025020452_create_master_tables.d.ts.map +0 -1
  178. package/dist/migrations/knex/20251025020452_create_master_tables.js.map +0 -1
  179. package/dist/migrations/knex/20251025021152_create_transaction_tables.d.ts.map +0 -1
  180. package/dist/migrations/knex/20251025021152_create_transaction_tables.js.map +0 -1
  181. package/dist/migrations/knex/20251025021351_create_indexes.d.ts.map +0 -1
  182. package/dist/migrations/knex/20251025021351_create_indexes.js +0 -62
  183. package/dist/migrations/knex/20251025021351_create_indexes.js.map +0 -1
  184. package/dist/migrations/knex/20251025021416_seed_master_data.d.ts.map +0 -1
  185. package/dist/migrations/knex/20251025021416_seed_master_data.js +0 -58
  186. package/dist/migrations/knex/20251025021416_seed_master_data.js.map +0 -1
  187. package/dist/migrations/knex/20251025070349_create_views.d.ts.map +0 -1
  188. package/dist/migrations/knex/20251025070349_create_views.js.map +0 -1
  189. package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.d.ts.map +0 -1
  190. package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.js.map +0 -1
  191. package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.d.ts.map +0 -1
  192. package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.js.map +0 -1
  193. package/dist/migrations/knex/20251025090000_create_help_system_tables.d.ts.map +0 -1
  194. package/dist/migrations/knex/20251025090000_create_help_system_tables.js.map +0 -1
  195. package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.d.ts.map +0 -1
  196. package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.js.map +0 -1
  197. package/dist/migrations/knex/20251025100000_seed_help_metadata.d.ts.map +0 -1
  198. package/dist/migrations/knex/20251025100000_seed_help_metadata.js.map +0 -1
  199. package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.d.ts.map +0 -1
  200. package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.js.map +0 -1
  201. package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.d.ts.map +0 -1
  202. package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.js.map +0 -1
  203. package/dist/migrations/migrate-decisions-to-tasks.d.ts +0 -61
  204. package/dist/migrations/migrate-decisions-to-tasks.d.ts.map +0 -1
  205. package/dist/migrations/migrate-decisions-to-tasks.js +0 -442
  206. package/dist/migrations/migrate-decisions-to-tasks.js.map +0 -1
  207. package/dist/migrations/seed-help-data.d.ts +0 -48
  208. package/dist/migrations/seed-help-data.d.ts.map +0 -1
  209. package/dist/migrations/seed-help-data.js +0 -1466
  210. package/dist/migrations/seed-help-data.js.map +0 -1
  211. package/dist/migrations/seed-tool-metadata.d.ts +0 -24
  212. package/dist/migrations/seed-tool-metadata.d.ts.map +0 -1
  213. package/dist/migrations/seed-tool-metadata.js +0 -392
  214. package/dist/migrations/seed-tool-metadata.js.map +0 -1
  215. package/dist/migrations/v3.6.0-help-system-refactor.d.ts +0 -46
  216. package/dist/migrations/v3.6.0-help-system-refactor.d.ts.map +0 -1
  217. package/dist/migrations/v3.6.0-help-system-refactor.js +0 -223
  218. package/dist/migrations/v3.6.0-help-system-refactor.js.map +0 -1
  219. package/dist/tests/migrations/test-v3.2-migration.d.ts +0 -6
  220. package/dist/tests/migrations/test-v3.2-migration.d.ts.map +0 -1
  221. package/dist/tests/migrations/test-v3.2-migration.js +0 -191
  222. package/dist/tests/migrations/test-v3.2-migration.js.map +0 -1
  223. /package/dist/migrations/knex/{20251025020452_create_master_tables.d.ts → bootstrap/20251025020452_create_master_tables.d.ts} +0 -0
  224. /package/dist/migrations/knex/{20251025021152_create_transaction_tables.d.ts → bootstrap/20251025021152_create_transaction_tables.d.ts} +0 -0
  225. /package/dist/migrations/knex/{20251025021351_create_indexes.d.ts → bootstrap/20251025021351_create_indexes.d.ts} +0 -0
  226. /package/dist/migrations/knex/{20251025021416_seed_master_data.d.ts → bootstrap/20251025021416_seed_master_data.d.ts} +0 -0
  227. /package/dist/migrations/knex/{20251025070349_create_views.d.ts → bootstrap/20251025070349_create_views.d.ts} +0 -0
  228. /package/dist/migrations/knex/{20251025070349_create_views.js → bootstrap/20251025070349_create_views.js} +0 -0
  229. /package/dist/migrations/knex/{20251025081221_add_link_type_to_task_decision_links.d.ts → enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts} +0 -0
  230. /package/dist/migrations/knex/{20251025081221_add_link_type_to_task_decision_links.js → enhancements/20251025081221_add_link_type_to_task_decision_links.js} +0 -0
  231. /package/dist/migrations/knex/{20251025082220_fix_task_dependencies_columns.d.ts → enhancements/20251025082220_fix_task_dependencies_columns.d.ts} +0 -0
  232. /package/dist/migrations/knex/{20251025082220_fix_task_dependencies_columns.js → enhancements/20251025082220_fix_task_dependencies_columns.js} +0 -0
  233. /package/dist/migrations/knex/{20251025090000_create_help_system_tables.d.ts → enhancements/20251025090000_create_help_system_tables.d.ts} +0 -0
  234. /package/dist/migrations/knex/{20251025090000_create_help_system_tables.js → enhancements/20251025090000_create_help_system_tables.js} +0 -0
  235. /package/dist/migrations/knex/{20251025090100_seed_help_categories_and_use_cases.d.ts → enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts} +0 -0
  236. /package/dist/migrations/knex/{20251025090100_seed_help_categories_and_use_cases.js → enhancements/20251025090100_seed_help_categories_and_use_cases.js} +0 -0
  237. /package/dist/migrations/knex/{20251025100000_seed_help_metadata.d.ts → enhancements/20251025100000_seed_help_metadata.d.ts} +0 -0
  238. /package/dist/migrations/knex/{20251025100000_seed_help_metadata.js → enhancements/20251025100000_seed_help_metadata.js} +0 -0
  239. /package/dist/migrations/knex/{20251025100100_seed_remaining_use_cases.d.ts → enhancements/20251025100100_seed_remaining_use_cases.d.ts} +0 -0
  240. /package/dist/migrations/knex/{20251025100100_seed_remaining_use_cases.js → enhancements/20251025100100_seed_remaining_use_cases.js} +0 -0
  241. /package/dist/migrations/knex/{20251025120000_add_cascade_to_task_dependencies.d.ts → enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts} +0 -0
  242. /package/dist/migrations/knex/{20251025120000_add_cascade_to_task_dependencies.js → enhancements/20251025120000_add_cascade_to_task_dependencies.js} +0 -0
@@ -1,108 +0,0 @@
1
- /**
2
- * Migration: Add Token Tracking Table (v3.6.0)
3
- *
4
- * Creates table for tracking help system token usage to measure efficiency gains.
5
- *
6
- * Table Created:
7
- * - t_help_token_usage: Tracks token consumption per query type
8
- */
9
- /**
10
- * Check if migration is needed
11
- */
12
- export function needsTokenTrackingMigration(db) {
13
- // Check if token tracking table doesn't exist yet
14
- const tableExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_help_token_usage'").get();
15
- return tableExists === undefined;
16
- }
17
- /**
18
- * Run the migration
19
- */
20
- export function migrateToTokenTracking(db) {
21
- const details = [];
22
- try {
23
- // Start transaction
24
- db.exec('BEGIN TRANSACTION');
25
- // Create t_help_token_usage table
26
- db.exec(`
27
- CREATE TABLE IF NOT EXISTS t_help_token_usage (
28
- usage_id INTEGER PRIMARY KEY AUTOINCREMENT,
29
- query_type TEXT NOT NULL,
30
- tool_name TEXT,
31
- action_name TEXT,
32
- estimated_tokens INTEGER NOT NULL,
33
- actual_chars INTEGER NOT NULL,
34
- timestamp INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))
35
- )
36
- `);
37
- details.push('Created table: t_help_token_usage');
38
- // Create indexes for analysis queries
39
- db.exec(`
40
- CREATE INDEX IF NOT EXISTS idx_help_token_usage_query_type
41
- ON t_help_token_usage(query_type)
42
- `);
43
- details.push('Created index: idx_help_token_usage_query_type');
44
- db.exec(`
45
- CREATE INDEX IF NOT EXISTS idx_help_token_usage_timestamp
46
- ON t_help_token_usage(timestamp DESC)
47
- `);
48
- details.push('Created index: idx_help_token_usage_timestamp');
49
- db.exec(`
50
- CREATE INDEX IF NOT EXISTS idx_help_token_usage_tool_action
51
- ON t_help_token_usage(tool_name, action_name)
52
- `);
53
- details.push('Created index: idx_help_token_usage_tool_action');
54
- // Commit transaction
55
- db.exec('COMMIT');
56
- return {
57
- success: true,
58
- message: 'Token tracking migration completed successfully (v3.6.0)',
59
- details
60
- };
61
- }
62
- catch (error) {
63
- // Rollback on error
64
- db.exec('ROLLBACK');
65
- const message = error instanceof Error ? error.message : String(error);
66
- return {
67
- success: false,
68
- message: `Token tracking migration failed: ${message}`,
69
- details
70
- };
71
- }
72
- }
73
- /**
74
- * Get migration info
75
- */
76
- export function getTokenTrackingMigrationInfo() {
77
- return `
78
- Migration: Add Token Tracking Table (v3.6.0)
79
-
80
- This migration creates 1 new table for tracking help system token usage:
81
-
82
- Transaction Table (t_ prefix):
83
- 1. t_help_token_usage - Token consumption metrics per query
84
-
85
- Fields:
86
- - usage_id: Auto-incrementing primary key
87
- - query_type: Type of query (help_action, help_params, etc.)
88
- - tool_name: Tool name (if applicable)
89
- - action_name: Action name (if applicable)
90
- - estimated_tokens: Estimated token count
91
- - actual_chars: Actual character count
92
- - timestamp: Unix epoch timestamp
93
-
94
- Indexes:
95
- - idx_help_token_usage_query_type (query_type)
96
- - idx_help_token_usage_timestamp (timestamp DESC)
97
- - idx_help_token_usage_tool_action (tool_name, action_name)
98
-
99
- Benefits:
100
- - Track actual token consumption for help queries
101
- - Measure efficiency gains vs legacy help system
102
- - Analyze usage patterns and optimize responses
103
- - Validate token reduction claims
104
-
105
- This migration is safe and additive (no data loss).
106
- `.trim();
107
- }
108
- //# sourceMappingURL=add-token-tracking.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-token-tracking.js","sourceRoot":"","sources":["../../src/migrations/add-token-tracking.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,EAAY;IACtD,kDAAkD;IAClD,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,iFAAiF,CAClF,CAAC,GAAG,EAAE,CAAC;IAER,OAAO,WAAW,KAAK,SAAS,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,EAAY;IACjD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,oBAAoB;QACpB,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE7B,kCAAkC;QAClC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;KAUP,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAElD,sCAAsC;QACtC,EAAE,CAAC,IAAI,CAAC;;;KAGP,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAE/D,EAAE,CAAC,IAAI,CAAC;;;KAGP,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAE9D,EAAE,CAAC,IAAI,CAAC;;;KAGP,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAEhE,qBAAqB;QACrB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAElB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,0DAA0D;YACnE,OAAO;SACR,CAAC;IAEJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,oBAAoB;QACpB,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,oCAAoC,OAAO,EAAE;YACtD,OAAO;SACR,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BN,CAAC,IAAI,EAAE,CAAC;AACX,CAAC"}
@@ -1,29 +0,0 @@
1
- /**
2
- * Migration: Add v2.1.0 features (v2.0.0 -> v2.1.0)
3
- *
4
- * Migrates database from v2.0.0 to v2.1.0:
5
- * - Adds t_activity_log table (FR-001)
6
- * - Adds t_decision_templates table (FR-006)
7
- * - Adds 4 activity logging triggers
8
- * - Adds 5 built-in decision templates
9
- */
10
- import { Database } from 'better-sqlite3';
11
- interface MigrationResult {
12
- success: boolean;
13
- message: string;
14
- details?: string[];
15
- }
16
- /**
17
- * Check if migration is needed
18
- */
19
- export declare function needsMigration(db: Database): boolean;
20
- /**
21
- * Run the migration
22
- */
23
- export declare function runMigration(db: Database): MigrationResult;
24
- /**
25
- * Get migration info
26
- */
27
- export declare function getMigrationInfo(): string;
28
- export {};
29
- //# sourceMappingURL=add-v2.1.0-features.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-v2.1.0-features.d.ts","sourceRoot":"","sources":["../../src/migrations/add-v2.1.0-features.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAWpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG,eAAe,CA6L1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CA0BzC"}
@@ -1,198 +0,0 @@
1
- /**
2
- * Migration: Add v2.1.0 features (v2.0.0 -> v2.1.0)
3
- *
4
- * Migrates database from v2.0.0 to v2.1.0:
5
- * - Adds t_activity_log table (FR-001)
6
- * - Adds t_decision_templates table (FR-006)
7
- * - Adds 4 activity logging triggers
8
- * - Adds 5 built-in decision templates
9
- */
10
- /**
11
- * Check if migration is needed
12
- */
13
- export function needsMigration(db) {
14
- // Check if new tables don't exist yet
15
- const activityLogExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_activity_log'").get();
16
- const templatesExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_decision_templates'").get();
17
- return activityLogExists === undefined || templatesExists === undefined;
18
- }
19
- /**
20
- * Run the migration
21
- */
22
- export function runMigration(db) {
23
- const details = [];
24
- try {
25
- // Start transaction
26
- db.exec('BEGIN TRANSACTION');
27
- // 1. Add t_activity_log table (FR-001)
28
- const activityLogExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_activity_log'").get();
29
- if (!activityLogExists) {
30
- db.exec(`
31
- CREATE TABLE t_activity_log (
32
- id INTEGER PRIMARY KEY AUTOINCREMENT,
33
- ts INTEGER DEFAULT (unixepoch()),
34
- agent_id INTEGER NOT NULL REFERENCES m_agents(id),
35
- action_type TEXT NOT NULL,
36
- target TEXT NOT NULL,
37
- layer_id INTEGER REFERENCES m_layers(id),
38
- details TEXT
39
- );
40
- `);
41
- details.push('Created table: t_activity_log (FR-001)');
42
- // Add indexes
43
- db.exec(`
44
- CREATE INDEX IF NOT EXISTS idx_activity_log_ts ON t_activity_log(ts DESC);
45
- CREATE INDEX IF NOT EXISTS idx_activity_log_agent ON t_activity_log(agent_id);
46
- CREATE INDEX IF NOT EXISTS idx_activity_log_action ON t_activity_log(action_type);
47
- `);
48
- details.push('Created indexes for t_activity_log');
49
- }
50
- // 2. Add t_decision_templates table (FR-006)
51
- const templatesExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_decision_templates'").get();
52
- if (!templatesExists) {
53
- db.exec(`
54
- CREATE TABLE t_decision_templates (
55
- id INTEGER PRIMARY KEY AUTOINCREMENT,
56
- name TEXT UNIQUE NOT NULL,
57
- defaults TEXT NOT NULL,
58
- required_fields TEXT,
59
- created_by INTEGER REFERENCES m_agents(id),
60
- ts INTEGER DEFAULT (unixepoch())
61
- );
62
- `);
63
- details.push('Created table: t_decision_templates (FR-006)');
64
- // Insert built-in templates
65
- const insertTemplate = db.prepare(`
66
- INSERT OR IGNORE INTO t_decision_templates (name, defaults, required_fields, created_by, ts)
67
- VALUES (?, ?, ?, NULL, unixepoch())
68
- `);
69
- insertTemplate.run('breaking_change', '{"layer":"business","status":"active","tags":["breaking"]}', null);
70
- insertTemplate.run('security_vulnerability', '{"layer":"infrastructure","status":"active","tags":["security","vulnerability"]}', '["cve_id","severity"]');
71
- insertTemplate.run('performance_optimization', '{"layer":"business","status":"active","tags":["performance","optimization"]}', null);
72
- insertTemplate.run('deprecation', '{"layer":"business","status":"active","tags":["deprecation"]}', null);
73
- insertTemplate.run('architecture_decision', '{"layer":"infrastructure","status":"active","tags":["architecture","adr"]}', null);
74
- details.push('Inserted 5 built-in decision templates');
75
- }
76
- // 3. Add activity logging triggers (FR-001)
77
- const triggerNames = [
78
- 'trg_log_decision_set',
79
- 'trg_log_decision_update',
80
- 'trg_log_message_send',
81
- 'trg_log_file_record'
82
- ];
83
- let triggersCreated = 0;
84
- // Check if triggers exist
85
- for (const triggerName of triggerNames) {
86
- const exists = db.prepare("SELECT name FROM sqlite_master WHERE type='trigger' AND name=?").get(triggerName);
87
- if (!exists) {
88
- triggersCreated++;
89
- }
90
- }
91
- if (triggersCreated > 0) {
92
- // Create triggers
93
- db.exec(`
94
- -- Decision Addition Log
95
- CREATE TRIGGER IF NOT EXISTS trg_log_decision_set
96
- AFTER INSERT ON t_decisions
97
- BEGIN
98
- INSERT INTO t_activity_log (agent_id, action_type, target, layer_id, details)
99
- SELECT
100
- COALESCE(NEW.agent_id, (SELECT id FROM m_agents WHERE name = 'system' LIMIT 1)),
101
- 'decision_set',
102
- (SELECT key FROM m_context_keys WHERE id = NEW.key_id),
103
- NEW.layer_id,
104
- json_object('value', NEW.value, 'version', NEW.version, 'status', NEW.status);
105
- END;
106
-
107
- -- Decision Update Log
108
- CREATE TRIGGER IF NOT EXISTS trg_log_decision_update
109
- AFTER UPDATE ON t_decisions
110
- WHEN OLD.value != NEW.value OR OLD.version != NEW.version OR OLD.status != NEW.status
111
- BEGIN
112
- INSERT INTO t_activity_log (agent_id, action_type, target, layer_id, details)
113
- SELECT
114
- COALESCE(NEW.agent_id, (SELECT id FROM m_agents WHERE name = 'system' LIMIT 1)),
115
- 'decision_update',
116
- (SELECT key FROM m_context_keys WHERE id = NEW.key_id),
117
- NEW.layer_id,
118
- json_object('old_value', OLD.value, 'new_value', NEW.value, 'old_version', OLD.version, 'new_version', NEW.version, 'old_status', OLD.status, 'new_status', NEW.status);
119
- END;
120
-
121
- -- Message Send Log
122
- CREATE TRIGGER IF NOT EXISTS trg_log_message_send
123
- AFTER INSERT ON t_agent_messages
124
- BEGIN
125
- INSERT INTO t_activity_log (agent_id, action_type, target, layer_id, details)
126
- SELECT
127
- NEW.from_agent_id,
128
- 'message_send',
129
- 'msg_id:' || NEW.id,
130
- NULL,
131
- json_object('to_agent_id', NEW.to_agent_id, 'msg_type', NEW.msg_type, 'priority', NEW.priority);
132
- END;
133
-
134
- -- File Change Log
135
- CREATE TRIGGER IF NOT EXISTS trg_log_file_record
136
- AFTER INSERT ON t_file_changes
137
- BEGIN
138
- INSERT INTO t_activity_log (agent_id, action_type, target, layer_id, details)
139
- SELECT
140
- NEW.agent_id,
141
- 'file_record',
142
- (SELECT path FROM m_files WHERE id = NEW.file_id),
143
- NEW.layer_id,
144
- json_object('change_type', NEW.change_type, 'description', NEW.description);
145
- END;
146
- `);
147
- details.push(`Created ${triggersCreated} activity logging triggers`);
148
- }
149
- // Commit transaction
150
- db.exec('COMMIT');
151
- return {
152
- success: true,
153
- message: 'Migration to v2.1.0 completed successfully.',
154
- details
155
- };
156
- }
157
- catch (error) {
158
- // Rollback on error
159
- db.exec('ROLLBACK');
160
- const message = error instanceof Error ? error.message : String(error);
161
- return {
162
- success: false,
163
- message: `Migration failed: ${message}`,
164
- details
165
- };
166
- }
167
- }
168
- /**
169
- * Get migration info
170
- */
171
- export function getMigrationInfo() {
172
- return `
173
- Migration: Add v2.1.0 Features (v2.0.0 -> v2.1.0)
174
-
175
- This migration adds new features from the v2.1.0 release:
176
-
177
- **FR-001: Activity Log**
178
- - New table: t_activity_log
179
- - 3 new indexes for performance
180
- - 4 new triggers for automatic logging
181
-
182
- **FR-006: Decision Templates**
183
- - New table: t_decision_templates
184
- - 5 built-in templates (breaking_change, security_vulnerability, performance_optimization, deprecation, architecture_decision)
185
-
186
- **New Features:**
187
- - Activity logging for all major operations
188
- - Template-based decision creation
189
- - Advanced query capabilities (FR-004)
190
- - Batch operations (FR-005)
191
- - Smart defaults with inference (FR-002)
192
- - Lightweight update polling (FR-003)
193
- - Standalone CLI query tool (FR-007)
194
-
195
- This migration is safe and reversible via backup restoration.
196
- `.trim();
197
- }
198
- //# sourceMappingURL=add-v2.1.0-features.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-v2.1.0-features.js","sourceRoot":"","sources":["../../src/migrations/add-v2.1.0-features.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- /**
2
- * Migration: Add pruned files tracking (v3.4.x -> v3.5.0)
3
- *
4
- * Adds t_task_pruned_files table for audit trail of auto-pruned non-existent files.
5
- * This enables project archaeology when files were planned but never created.
6
- */
7
- import { Database } from 'better-sqlite3';
8
- interface MigrationResult {
9
- success: boolean;
10
- message: string;
11
- details?: string[];
12
- }
13
- /**
14
- * Check if migration is needed
15
- */
16
- export declare function needsPrunedFilesMigration(db: Database): boolean;
17
- /**
18
- * Run the migration to add pruned files tracking
19
- */
20
- export declare function migrateToPrunedFiles(db: Database): MigrationResult;
21
- /**
22
- * Get migration info
23
- */
24
- export declare function getPrunedFilesMigrationInfo(): string;
25
- export {};
26
- //# sourceMappingURL=add-v3.5.0-pruned-files.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-v3.5.0-pruned-files.d.ts","sourceRoot":"","sources":["../../src/migrations/add-v3.5.0-pruned-files.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAO/D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,GAAG,eAAe,CAuElE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAuBpD"}
@@ -1,107 +0,0 @@
1
- /**
2
- * Migration: Add pruned files tracking (v3.4.x -> v3.5.0)
3
- *
4
- * Adds t_task_pruned_files table for audit trail of auto-pruned non-existent files.
5
- * This enables project archaeology when files were planned but never created.
6
- */
7
- /**
8
- * Check if migration is needed
9
- */
10
- export function needsPrunedFilesMigration(db) {
11
- // Check if t_task_pruned_files table doesn't exist yet
12
- const tableExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_task_pruned_files'").get();
13
- return tableExists === undefined;
14
- }
15
- /**
16
- * Run the migration to add pruned files tracking
17
- */
18
- export function migrateToPrunedFiles(db) {
19
- const details = [];
20
- try {
21
- // Start transaction for atomicity
22
- db.exec('BEGIN TRANSACTION');
23
- // Check if table already exists
24
- const tableExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_task_pruned_files'").get();
25
- if (tableExists) {
26
- db.exec('COMMIT');
27
- return {
28
- success: true,
29
- message: 't_task_pruned_files table already exists, migration skipped',
30
- details: ['Table already exists - no migration needed']
31
- };
32
- }
33
- // Create t_task_pruned_files table
34
- db.exec(`
35
- CREATE TABLE IF NOT EXISTS t_task_pruned_files (
36
- id INTEGER PRIMARY KEY AUTOINCREMENT,
37
- task_id INTEGER NOT NULL REFERENCES t_tasks(id) ON DELETE CASCADE,
38
- file_path TEXT NOT NULL,
39
- pruned_ts INTEGER DEFAULT (unixepoch()),
40
- linked_decision_key_id INTEGER REFERENCES m_context_keys(id) ON DELETE SET NULL
41
- );
42
- `);
43
- details.push('Created table: t_task_pruned_files');
44
- // Create index for task lookup
45
- db.exec(`
46
- CREATE INDEX IF NOT EXISTS idx_pruned_task
47
- ON t_task_pruned_files(task_id);
48
- `);
49
- details.push('Created index: idx_pruned_task');
50
- // Create index for decision linking
51
- db.exec(`
52
- CREATE INDEX IF NOT EXISTS idx_pruned_decision
53
- ON t_task_pruned_files(linked_decision_key_id);
54
- `);
55
- details.push('Created index: idx_pruned_decision');
56
- // Commit transaction
57
- db.exec('COMMIT');
58
- return {
59
- success: true,
60
- message: 'Migration to v3.5.0 completed successfully',
61
- details
62
- };
63
- }
64
- catch (error) {
65
- // Rollback on error
66
- try {
67
- db.exec('ROLLBACK');
68
- }
69
- catch (rollbackError) {
70
- // Ignore rollback errors
71
- }
72
- const message = error instanceof Error ? error.message : String(error);
73
- return {
74
- success: false,
75
- message: `Migration failed: ${message}`,
76
- details
77
- };
78
- }
79
- }
80
- /**
81
- * Get migration info
82
- */
83
- export function getPrunedFilesMigrationInfo() {
84
- return `
85
- Migration: Add Pruned Files Tracking (v3.4.x -> v3.5.0)
86
-
87
- This migration adds audit trail for auto-pruned non-existent watched files:
88
- - New table: t_task_pruned_files
89
- - Tracks files removed when transitioning to 'waiting_review'
90
- - Optional decision linking for WHY reasoning
91
- - Enables project archaeology
92
-
93
- Schema:
94
- - id: Auto-incrementing primary key
95
- - task_id: Task that watched this file (CASCADE on delete)
96
- - file_path: Raw file path string (not normalized to m_files)
97
- - pruned_ts: Unix timestamp when file was pruned
98
- - linked_decision_key_id: Optional decision key explaining why file was never created
99
-
100
- Indexes:
101
- - idx_pruned_task: Fast lookup of pruned files for a task
102
- - idx_pruned_decision: Fast lookup of pruned files linked to decisions
103
-
104
- This migration is idempotent and safe to run multiple times.
105
- `.trim();
106
- }
107
- //# sourceMappingURL=add-v3.5.0-pruned-files.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-v3.5.0-pruned-files.js","sourceRoot":"","sources":["../../src/migrations/add-v3.5.0-pruned-files.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,EAAY;IACpD,uDAAuD;IACvD,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,kFAAkF,CACnF,CAAC,GAAG,EAAE,CAAC;IAER,OAAO,WAAW,KAAK,SAAS,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAY;IAC/C,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,kCAAkC;QAClC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE7B,gCAAgC;QAChC,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,kFAAkF,CACnF,CAAC,GAAG,EAAE,CAAC;QAER,IAAI,WAAW,EAAE,CAAC;YAChB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,6DAA6D;gBACtE,OAAO,EAAE,CAAC,4CAA4C,CAAC;aACxD,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,EAAE,CAAC,IAAI,CAAC;;;;;;;;KAQP,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAEnD,+BAA+B;QAC/B,EAAE,CAAC,IAAI,CAAC;;;KAGP,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAE/C,oCAAoC;QACpC,EAAE,CAAC,IAAI,CAAC;;;KAGP,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAEnD,qBAAqB;QACrB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAElB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,4CAA4C;YACrD,OAAO;SACR,CAAC;IAEJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,oBAAoB;QACpB,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,aAAa,EAAE,CAAC;YACvB,yBAAyB;QAC3B,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,qBAAqB,OAAO,EAAE;YACvC,OAAO;SACR,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO;;;;;;;;;;;;;;;;;;;;;GAqBN,CAAC,IAAI,EAAE,CAAC;AACX,CAAC"}
@@ -1,112 +0,0 @@
1
- /**
2
- * Migration Orchestrator (v4.0.0 - Hybrid Support)
3
- *
4
- * Coordinates automatic sequential execution of all database migrations.
5
- * Supports upgrading from any previous version to the latest version in a single run.
6
- *
7
- * Features:
8
- * - Automatic version detection
9
- * - Migration chain construction
10
- * - Sequential execution with transaction safety
11
- * - Detailed logging and error reporting
12
- * - Dry-run mode support
13
- * - Hybrid support: better-sqlite3 (Database) OR Knex.js (DatabaseAdapter)
14
- *
15
- * Migration Strategy (v4.0.0+):
16
- * - Knex migrations: Run automatically via initializeDatabase() → knex.migrate.latest()
17
- * - Custom migrations: Legacy orchestrator for v1.x-v3.x upgrades (this file)
18
- * - New deployments: Use Knex migrations only (src/migrations/knex/*)
19
- * - Old upgrades: Use custom migrations first, then Knex migrations
20
- */
21
- import { Database } from 'better-sqlite3';
22
- import { DatabaseAdapter } from '../adapters/index.js';
23
- export interface MigrationResult {
24
- success: boolean;
25
- message: string;
26
- details?: string[];
27
- }
28
- export interface MigrationInfo {
29
- name: string;
30
- fromVersion: string;
31
- toVersion: string;
32
- needsMigration: (db: Database) => boolean;
33
- runMigration: (db: Database) => MigrationResult;
34
- getMigrationInfo: () => string;
35
- }
36
- /**
37
- * Detect current database version by inspecting schema
38
- *
39
- * Version Detection Logic:
40
- * - v1.0.0: Has unprefixed tables (agents, not m_agents)
41
- * - v1.1.0: Has prefixed tables but no t_activity_log
42
- * - v2.0.0: Has t_activity_log but no m_task_statuses
43
- * - v2.1.0: Has t_activity_log but no m_task_statuses
44
- * - v3.0.0: Has m_task_statuses but no t_task_dependencies
45
- * - v3.2.0: Has t_task_dependencies but no t_decision_context
46
- * - v3.2.2: Has t_decision_context but no t_task_pruned_files
47
- * - v3.5.0: Has t_task_pruned_files but no m_help_tools
48
- * - v3.6.0: Has m_help_tools (help system tables)
49
- * - v4.0.0: Has knex_migrations table (Knex migration system)
50
- *
51
- * @param dbOrAdapter - Database connection or DatabaseAdapter
52
- * @returns Detected version string
53
- */
54
- export declare function detectDatabaseVersion(dbOrAdapter: Database | DatabaseAdapter): string;
55
- /**
56
- * Get migration plan for current database
57
- *
58
- * @param dbOrAdapter - Database connection or DatabaseAdapter
59
- * @returns Array of migration names that need to run
60
- */
61
- export declare function getMigrationPlan(dbOrAdapter: Database | DatabaseAdapter): string[];
62
- /**
63
- * Run all pending migrations in sequence
64
- *
65
- * This function:
66
- * 1. Detects current database version
67
- * 2. Identifies which migrations are needed
68
- * 3. Executes migrations in correct order
69
- * 4. Stops on first failure (rollback already handled by individual migrations)
70
- * 5. Returns combined results
71
- *
72
- * NOTE (v4.0.0+): This function runs custom migrations (v1.x-v3.x upgrades only).
73
- * Knex migrations run automatically via initializeDatabase() → knex.migrate.latest().
74
- *
75
- * @param dbOrAdapter - Database connection or DatabaseAdapter
76
- * @param dryRun - If true, only show plan without executing (default: false)
77
- * @returns Array of migration results
78
- */
79
- export declare function runAllMigrations(dbOrAdapter: Database | DatabaseAdapter, dryRun?: boolean): MigrationResult[];
80
- /**
81
- * Get detailed info about a specific migration
82
- *
83
- * @param migrationName - Name of the migration
84
- * @returns Migration info text or null if not found
85
- */
86
- export declare function getMigrationDetails(migrationName: string): string | null;
87
- /**
88
- * Get list of all available migrations
89
- *
90
- * @returns Array of migration info objects
91
- */
92
- export declare function listAllMigrations(): Omit<MigrationInfo, 'needsMigration' | 'runMigration' | 'getMigrationInfo'>[];
93
- /**
94
- * Check if database needs any migrations
95
- *
96
- * @param dbOrAdapter - Database connection or DatabaseAdapter
97
- * @returns true if migrations are needed
98
- */
99
- export declare function needsAnyMigrations(dbOrAdapter: Database | DatabaseAdapter): boolean;
100
- /**
101
- * Get summary of migration status
102
- *
103
- * @param dbOrAdapter - Database connection or DatabaseAdapter
104
- * @returns Summary object
105
- */
106
- export declare function getMigrationStatus(dbOrAdapter: Database | DatabaseAdapter): {
107
- currentVersion: string;
108
- upToDate: boolean;
109
- pendingMigrations: number;
110
- migrationPlan: string[];
111
- };
112
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAavD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC;IAC1C,YAAY,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,eAAe,CAAC;IAChD,gBAAgB,EAAE,MAAM,MAAM,CAAC;CAChC;AA4JD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,QAAQ,GAAG,eAAe,GAAG,MAAM,CAiFrF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,QAAQ,GAAG,eAAe,GAAG,MAAM,EAAE,CAWlF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,QAAQ,GAAG,eAAe,EAAE,MAAM,GAAE,OAAe,GAAG,eAAe,EAAE,CAyFpH;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOxE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,gBAAgB,GAAG,cAAc,GAAG,kBAAkB,CAAC,EAAE,CAMjH;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,QAAQ,GAAG,eAAe,GAAG,OAAO,CAGnF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,QAAQ,GAAG,eAAe,GAAG;IAC3E,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAUA"}