sqlew 3.6.1 → 3.6.3

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 (196) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/assets/config.example.toml +28 -0
  3. package/dist/knexfile.d.ts.map +1 -1
  4. package/dist/knexfile.js +15 -3
  5. package/dist/knexfile.js.map +1 -1
  6. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +1 -0
  7. package/dist/migrations/knex/{20251025020452_create_master_tables.js → bootstrap/20251025020452_create_master_tables.js} +15 -12
  8. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.js.map +1 -0
  9. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +1 -0
  10. package/dist/migrations/knex/{20251025021152_create_transaction_tables.js → bootstrap/20251025021152_create_transaction_tables.js} +19 -19
  11. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.js.map +1 -0
  12. package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.d.ts.map +1 -0
  13. package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.js +93 -0
  14. package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.js.map +1 -0
  15. package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +1 -0
  16. package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.js +64 -0
  17. package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.js.map +1 -0
  18. package/dist/migrations/knex/bootstrap/20251025070349_create_views.d.ts.map +1 -0
  19. package/dist/migrations/knex/bootstrap/20251025070349_create_views.js.map +1 -0
  20. package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts.map +1 -0
  21. package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js.map +1 -0
  22. package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts.map +1 -0
  23. package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.js.map +1 -0
  24. package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.d.ts.map +1 -0
  25. package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.js.map +1 -0
  26. package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts.map +1 -0
  27. package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js.map +1 -0
  28. package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.d.ts.map +1 -0
  29. package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.js.map +1 -0
  30. package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts.map +1 -0
  31. package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.js.map +1 -0
  32. package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts.map +1 -0
  33. package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js.map +1 -0
  34. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts.map +1 -0
  35. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js.map +1 -0
  36. package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts.map +1 -0
  37. package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js.map +1 -0
  38. package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.d.ts.map +1 -0
  39. package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.js.map +1 -0
  40. package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts +13 -0
  41. package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +1 -0
  42. package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js +70 -0
  43. package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js.map +1 -0
  44. package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts +11 -0
  45. package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +1 -0
  46. package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js +36 -0
  47. package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js.map +1 -0
  48. package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts +14 -0
  49. package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +1 -0
  50. package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js +84 -0
  51. package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js.map +1 -0
  52. package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts +9 -0
  53. package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +1 -0
  54. package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js +37 -0
  55. package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js.map +1 -0
  56. package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts +9 -0
  57. package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +1 -0
  58. package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js +41 -0
  59. package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +1 -0
  60. package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts +9 -0
  61. package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +1 -0
  62. package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js +36 -0
  63. package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js.map +1 -0
  64. package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts +10 -0
  65. package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +1 -0
  66. package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js +28 -0
  67. package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js.map +1 -0
  68. package/dist/tests/migrations/test-all-versions-real.d.ts +8 -0
  69. package/dist/tests/migrations/test-all-versions-real.d.ts.map +1 -0
  70. package/dist/tests/migrations/test-all-versions-real.js +234 -0
  71. package/dist/tests/migrations/test-all-versions-real.js.map +1 -0
  72. package/dist/tests/migrations/test-all-versions.d.ts +14 -0
  73. package/dist/tests/migrations/test-all-versions.d.ts.map +1 -0
  74. package/dist/tests/migrations/test-all-versions.js +521 -0
  75. package/dist/tests/migrations/test-all-versions.js.map +1 -0
  76. package/dist/tools/tasks.js +2 -2
  77. package/dist/tools/tasks.js.map +1 -1
  78. package/dist/utils/task-stale-detection.d.ts.map +1 -1
  79. package/dist/utils/task-stale-detection.js +79 -4
  80. package/dist/utils/task-stale-detection.js.map +1 -1
  81. package/docs/MIGRATION_CHAIN.md +13 -0
  82. package/package.json +4 -1
  83. package/dist/migrations/add-decision-context.d.ts +0 -28
  84. package/dist/migrations/add-decision-context.d.ts.map +0 -1
  85. package/dist/migrations/add-decision-context.js +0 -125
  86. package/dist/migrations/add-decision-context.js.map +0 -1
  87. package/dist/migrations/add-help-system-tables.d.ts +0 -35
  88. package/dist/migrations/add-help-system-tables.d.ts.map +0 -1
  89. package/dist/migrations/add-help-system-tables.js +0 -206
  90. package/dist/migrations/add-help-system-tables.js.map +0 -1
  91. package/dist/migrations/add-table-prefixes.d.ts +0 -29
  92. package/dist/migrations/add-table-prefixes.d.ts.map +0 -1
  93. package/dist/migrations/add-table-prefixes.js +0 -150
  94. package/dist/migrations/add-table-prefixes.js.map +0 -1
  95. package/dist/migrations/add-task-dependencies.d.ts +0 -26
  96. package/dist/migrations/add-task-dependencies.d.ts.map +0 -1
  97. package/dist/migrations/add-task-dependencies.js +0 -94
  98. package/dist/migrations/add-task-dependencies.js.map +0 -1
  99. package/dist/migrations/add-task-tables.d.ts +0 -47
  100. package/dist/migrations/add-task-tables.d.ts.map +0 -1
  101. package/dist/migrations/add-task-tables.js +0 -285
  102. package/dist/migrations/add-task-tables.js.map +0 -1
  103. package/dist/migrations/add-token-tracking.d.ts +0 -28
  104. package/dist/migrations/add-token-tracking.d.ts.map +0 -1
  105. package/dist/migrations/add-token-tracking.js +0 -108
  106. package/dist/migrations/add-token-tracking.js.map +0 -1
  107. package/dist/migrations/add-v2.1.0-features.d.ts +0 -29
  108. package/dist/migrations/add-v2.1.0-features.d.ts.map +0 -1
  109. package/dist/migrations/add-v2.1.0-features.js +0 -198
  110. package/dist/migrations/add-v2.1.0-features.js.map +0 -1
  111. package/dist/migrations/add-v3.5.0-pruned-files.d.ts +0 -26
  112. package/dist/migrations/add-v3.5.0-pruned-files.d.ts.map +0 -1
  113. package/dist/migrations/add-v3.5.0-pruned-files.js +0 -107
  114. package/dist/migrations/add-v3.5.0-pruned-files.js.map +0 -1
  115. package/dist/migrations/index.d.ts +0 -112
  116. package/dist/migrations/index.d.ts.map +0 -1
  117. package/dist/migrations/index.js +0 -411
  118. package/dist/migrations/index.js.map +0 -1
  119. package/dist/migrations/knex/20251025020452_create_master_tables.d.ts.map +0 -1
  120. package/dist/migrations/knex/20251025020452_create_master_tables.js.map +0 -1
  121. package/dist/migrations/knex/20251025021152_create_transaction_tables.d.ts.map +0 -1
  122. package/dist/migrations/knex/20251025021152_create_transaction_tables.js.map +0 -1
  123. package/dist/migrations/knex/20251025021351_create_indexes.d.ts.map +0 -1
  124. package/dist/migrations/knex/20251025021351_create_indexes.js +0 -62
  125. package/dist/migrations/knex/20251025021351_create_indexes.js.map +0 -1
  126. package/dist/migrations/knex/20251025021416_seed_master_data.d.ts.map +0 -1
  127. package/dist/migrations/knex/20251025021416_seed_master_data.js +0 -58
  128. package/dist/migrations/knex/20251025021416_seed_master_data.js.map +0 -1
  129. package/dist/migrations/knex/20251025070349_create_views.d.ts.map +0 -1
  130. package/dist/migrations/knex/20251025070349_create_views.js.map +0 -1
  131. package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.d.ts.map +0 -1
  132. package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.js.map +0 -1
  133. package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.d.ts.map +0 -1
  134. package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.js.map +0 -1
  135. package/dist/migrations/knex/20251025090000_create_help_system_tables.d.ts.map +0 -1
  136. package/dist/migrations/knex/20251025090000_create_help_system_tables.js.map +0 -1
  137. package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.d.ts.map +0 -1
  138. package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.js.map +0 -1
  139. package/dist/migrations/knex/20251025100000_seed_help_metadata.d.ts.map +0 -1
  140. package/dist/migrations/knex/20251025100000_seed_help_metadata.js.map +0 -1
  141. package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.d.ts.map +0 -1
  142. package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.js.map +0 -1
  143. package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.d.ts.map +0 -1
  144. package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.js.map +0 -1
  145. package/dist/migrations/knex/20251027000000_add_agent_reuse_system.d.ts.map +0 -1
  146. package/dist/migrations/knex/20251027000000_add_agent_reuse_system.js.map +0 -1
  147. package/dist/migrations/knex/20251027010000_add_task_constraint_to_decision_context.d.ts.map +0 -1
  148. package/dist/migrations/knex/20251027010000_add_task_constraint_to_decision_context.js.map +0 -1
  149. package/dist/migrations/knex/20251027020000_update_agent_reusability.d.ts.map +0 -1
  150. package/dist/migrations/knex/20251027020000_update_agent_reusability.js.map +0 -1
  151. package/dist/migrations/migrate-decisions-to-tasks.d.ts +0 -61
  152. package/dist/migrations/migrate-decisions-to-tasks.d.ts.map +0 -1
  153. package/dist/migrations/migrate-decisions-to-tasks.js +0 -442
  154. package/dist/migrations/migrate-decisions-to-tasks.js.map +0 -1
  155. package/dist/migrations/seed-help-data.d.ts +0 -48
  156. package/dist/migrations/seed-help-data.d.ts.map +0 -1
  157. package/dist/migrations/seed-help-data.js +0 -1466
  158. package/dist/migrations/seed-help-data.js.map +0 -1
  159. package/dist/migrations/seed-tool-metadata.d.ts +0 -24
  160. package/dist/migrations/seed-tool-metadata.d.ts.map +0 -1
  161. package/dist/migrations/seed-tool-metadata.js +0 -392
  162. package/dist/migrations/seed-tool-metadata.js.map +0 -1
  163. package/dist/migrations/v3.6.0-help-system-refactor.d.ts +0 -46
  164. package/dist/migrations/v3.6.0-help-system-refactor.d.ts.map +0 -1
  165. package/dist/migrations/v3.6.0-help-system-refactor.js +0 -223
  166. package/dist/migrations/v3.6.0-help-system-refactor.js.map +0 -1
  167. package/dist/tests/migrations/test-v3.2-migration.d.ts +0 -6
  168. package/dist/tests/migrations/test-v3.2-migration.d.ts.map +0 -1
  169. package/dist/tests/migrations/test-v3.2-migration.js +0 -191
  170. package/dist/tests/migrations/test-v3.2-migration.js.map +0 -1
  171. /package/dist/migrations/knex/{20251025020452_create_master_tables.d.ts → bootstrap/20251025020452_create_master_tables.d.ts} +0 -0
  172. /package/dist/migrations/knex/{20251025021152_create_transaction_tables.d.ts → bootstrap/20251025021152_create_transaction_tables.d.ts} +0 -0
  173. /package/dist/migrations/knex/{20251025021351_create_indexes.d.ts → bootstrap/20251025021351_create_indexes.d.ts} +0 -0
  174. /package/dist/migrations/knex/{20251025021416_seed_master_data.d.ts → bootstrap/20251025021416_seed_master_data.d.ts} +0 -0
  175. /package/dist/migrations/knex/{20251025070349_create_views.d.ts → bootstrap/20251025070349_create_views.d.ts} +0 -0
  176. /package/dist/migrations/knex/{20251025070349_create_views.js → bootstrap/20251025070349_create_views.js} +0 -0
  177. /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
  178. /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
  179. /package/dist/migrations/knex/{20251025082220_fix_task_dependencies_columns.d.ts → enhancements/20251025082220_fix_task_dependencies_columns.d.ts} +0 -0
  180. /package/dist/migrations/knex/{20251025082220_fix_task_dependencies_columns.js → enhancements/20251025082220_fix_task_dependencies_columns.js} +0 -0
  181. /package/dist/migrations/knex/{20251025090000_create_help_system_tables.d.ts → enhancements/20251025090000_create_help_system_tables.d.ts} +0 -0
  182. /package/dist/migrations/knex/{20251025090000_create_help_system_tables.js → enhancements/20251025090000_create_help_system_tables.js} +0 -0
  183. /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
  184. /package/dist/migrations/knex/{20251025090100_seed_help_categories_and_use_cases.js → enhancements/20251025090100_seed_help_categories_and_use_cases.js} +0 -0
  185. /package/dist/migrations/knex/{20251025100000_seed_help_metadata.d.ts → enhancements/20251025100000_seed_help_metadata.d.ts} +0 -0
  186. /package/dist/migrations/knex/{20251025100000_seed_help_metadata.js → enhancements/20251025100000_seed_help_metadata.js} +0 -0
  187. /package/dist/migrations/knex/{20251025100100_seed_remaining_use_cases.d.ts → enhancements/20251025100100_seed_remaining_use_cases.d.ts} +0 -0
  188. /package/dist/migrations/knex/{20251025100100_seed_remaining_use_cases.js → enhancements/20251025100100_seed_remaining_use_cases.js} +0 -0
  189. /package/dist/migrations/knex/{20251025120000_add_cascade_to_task_dependencies.d.ts → enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts} +0 -0
  190. /package/dist/migrations/knex/{20251025120000_add_cascade_to_task_dependencies.js → enhancements/20251025120000_add_cascade_to_task_dependencies.js} +0 -0
  191. /package/dist/migrations/knex/{20251027000000_add_agent_reuse_system.d.ts → enhancements/20251027000000_add_agent_reuse_system.d.ts} +0 -0
  192. /package/dist/migrations/knex/{20251027000000_add_agent_reuse_system.js → enhancements/20251027000000_add_agent_reuse_system.js} +0 -0
  193. /package/dist/migrations/knex/{20251027010000_add_task_constraint_to_decision_context.d.ts → enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts} +0 -0
  194. /package/dist/migrations/knex/{20251027010000_add_task_constraint_to_decision_context.js → enhancements/20251027010000_add_task_constraint_to_decision_context.js} +0 -0
  195. /package/dist/migrations/knex/{20251027020000_update_agent_reusability.d.ts → enhancements/20251027020000_update_agent_reusability.d.ts} +0 -0
  196. /package/dist/migrations/knex/{20251027020000_update_agent_reusability.js → enhancements/20251027020000_update_agent_reusability.js} +0 -0
@@ -1,285 +0,0 @@
1
- /**
2
- * Migration: Add Task Management Tables (v2.1.x -> v3.0.0)
3
- *
4
- * Adds Kanban-style task tracking system to reduce token usage
5
- * from decisions table being misused for task tracking.
6
- *
7
- * Tables Added:
8
- * - m_task_statuses (master table for task statuses)
9
- * - t_tasks (core task data, token-efficient)
10
- * - t_task_details (large text stored separately)
11
- * - t_task_tags (many-to-many task tagging)
12
- * - t_task_decision_links (link tasks to decisions)
13
- * - t_task_constraint_links (link tasks to constraints)
14
- * - t_task_file_links (link tasks to files)
15
- *
16
- * View Added:
17
- * - v_task_board (token-efficient task board view)
18
- *
19
- * Triggers Added:
20
- * - trg_log_task_create (activity log for task creation)
21
- * - trg_log_task_status_change (activity log for status changes)
22
- * - trg_update_task_timestamp (auto-update updated_ts)
23
- *
24
- * Initial Data:
25
- * - Task statuses: todo, in_progress, waiting_review, blocked, done, archived
26
- * - Config keys for stale task detection
27
- */
28
- /**
29
- * Check if migration is needed
30
- */
31
- export function needsMigration(db) {
32
- // Check if new table doesn't exist (m_task_statuses)
33
- const tableExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='m_task_statuses'").get();
34
- return tableExists === undefined;
35
- }
36
- /**
37
- * Run the migration
38
- */
39
- export function runMigration(db) {
40
- const details = [];
41
- try {
42
- // Start transaction
43
- db.exec('BEGIN TRANSACTION');
44
- // ============================================================================
45
- // 1. Create Master Table: m_task_statuses
46
- // ============================================================================
47
- db.exec(`
48
- CREATE TABLE IF NOT EXISTS m_task_statuses (
49
- id INTEGER PRIMARY KEY,
50
- name TEXT UNIQUE NOT NULL
51
- );
52
- `);
53
- details.push('Created table: m_task_statuses');
54
- // ============================================================================
55
- // 2. Create Transaction Tables
56
- // ============================================================================
57
- // Task core data (token-efficient: no large text here)
58
- db.exec(`
59
- CREATE TABLE IF NOT EXISTS t_tasks (
60
- id INTEGER PRIMARY KEY AUTOINCREMENT,
61
- title TEXT NOT NULL,
62
- status_id INTEGER NOT NULL REFERENCES m_task_statuses(id),
63
- priority INTEGER DEFAULT 2,
64
- assigned_agent_id INTEGER REFERENCES m_agents(id),
65
- created_by_agent_id INTEGER REFERENCES m_agents(id),
66
- layer_id INTEGER REFERENCES m_layers(id),
67
- created_ts INTEGER DEFAULT (unixepoch()),
68
- updated_ts INTEGER DEFAULT (unixepoch()),
69
- completed_ts INTEGER
70
- );
71
- `);
72
- details.push('Created table: t_tasks');
73
- // Task details (large text stored separately)
74
- db.exec(`
75
- CREATE TABLE IF NOT EXISTS t_task_details (
76
- task_id INTEGER PRIMARY KEY REFERENCES t_tasks(id) ON DELETE CASCADE,
77
- description TEXT,
78
- acceptance_criteria TEXT,
79
- notes TEXT
80
- );
81
- `);
82
- details.push('Created table: t_task_details');
83
- // Task tags (many-to-many)
84
- db.exec(`
85
- CREATE TABLE IF NOT EXISTS t_task_tags (
86
- task_id INTEGER REFERENCES t_tasks(id) ON DELETE CASCADE,
87
- tag_id INTEGER REFERENCES m_tags(id),
88
- PRIMARY KEY (task_id, tag_id)
89
- );
90
- `);
91
- details.push('Created table: t_task_tags');
92
- // Task-decision links
93
- db.exec(`
94
- CREATE TABLE IF NOT EXISTS t_task_decision_links (
95
- task_id INTEGER REFERENCES t_tasks(id) ON DELETE CASCADE,
96
- decision_key_id INTEGER REFERENCES m_context_keys(id),
97
- link_type TEXT DEFAULT 'implements',
98
- PRIMARY KEY (task_id, decision_key_id)
99
- );
100
- `);
101
- details.push('Created table: t_task_decision_links');
102
- // Task-constraint links
103
- db.exec(`
104
- CREATE TABLE IF NOT EXISTS t_task_constraint_links (
105
- task_id INTEGER REFERENCES t_tasks(id) ON DELETE CASCADE,
106
- constraint_id INTEGER REFERENCES t_constraints(id),
107
- PRIMARY KEY (task_id, constraint_id)
108
- );
109
- `);
110
- details.push('Created table: t_task_constraint_links');
111
- // Task-file links
112
- db.exec(`
113
- CREATE TABLE IF NOT EXISTS t_task_file_links (
114
- task_id INTEGER REFERENCES t_tasks(id) ON DELETE CASCADE,
115
- file_id INTEGER REFERENCES m_files(id),
116
- PRIMARY KEY (task_id, file_id)
117
- );
118
- `);
119
- details.push('Created table: t_task_file_links');
120
- // ============================================================================
121
- // 3. Create Indexes
122
- // ============================================================================
123
- db.exec(`
124
- CREATE INDEX IF NOT EXISTS idx_task_status ON t_tasks(status_id);
125
- `);
126
- details.push('Created index: idx_task_status');
127
- db.exec(`
128
- CREATE INDEX IF NOT EXISTS idx_task_updated ON t_tasks(updated_ts DESC);
129
- `);
130
- details.push('Created index: idx_task_updated');
131
- db.exec(`
132
- CREATE INDEX IF NOT EXISTS idx_task_assignee ON t_tasks(assigned_agent_id);
133
- `);
134
- details.push('Created index: idx_task_assignee');
135
- // ============================================================================
136
- // 4. Create View: v_task_board
137
- // ============================================================================
138
- db.exec(`
139
- CREATE VIEW IF NOT EXISTS v_task_board AS
140
- SELECT
141
- t.id,
142
- t.title,
143
- s.name as status,
144
- t.priority,
145
- a.name as assigned_to,
146
- l.name as layer,
147
- t.created_ts,
148
- t.updated_ts,
149
- t.completed_ts,
150
- (SELECT GROUP_CONCAT(tg2.name, ', ')
151
- FROM t_task_tags tt2
152
- JOIN m_tags tg2 ON tt2.tag_id = tg2.id
153
- WHERE tt2.task_id = t.id) as tags
154
- FROM t_tasks t
155
- LEFT JOIN m_task_statuses s ON t.status_id = s.id
156
- LEFT JOIN m_agents a ON t.assigned_agent_id = a.id
157
- LEFT JOIN m_layers l ON t.layer_id = l.id;
158
- `);
159
- details.push('Created view: v_task_board');
160
- // ============================================================================
161
- // 5. Create Triggers
162
- // ============================================================================
163
- // Task creation activity log
164
- db.exec(`
165
- CREATE TRIGGER IF NOT EXISTS trg_log_task_create
166
- AFTER INSERT ON t_tasks
167
- BEGIN
168
- INSERT INTO t_activity_log (agent_id, action_type, target, layer_id, details)
169
- SELECT
170
- COALESCE(NEW.created_by_agent_id, (SELECT id FROM m_agents WHERE name = 'system' LIMIT 1)),
171
- 'task_create',
172
- 'task_id:' || NEW.id,
173
- NEW.layer_id,
174
- json_object('title', NEW.title, 'status_id', NEW.status_id, 'priority', NEW.priority);
175
- END;
176
- `);
177
- details.push('Created trigger: trg_log_task_create');
178
- // Task status change activity log
179
- db.exec(`
180
- CREATE TRIGGER IF NOT EXISTS trg_log_task_status_change
181
- AFTER UPDATE OF status_id ON t_tasks
182
- WHEN OLD.status_id != NEW.status_id
183
- BEGIN
184
- INSERT INTO t_activity_log (agent_id, action_type, target, layer_id, details)
185
- SELECT
186
- COALESCE(NEW.assigned_agent_id, (SELECT id FROM m_agents WHERE name = 'system' LIMIT 1)),
187
- 'task_status_change',
188
- 'task_id:' || NEW.id,
189
- NEW.layer_id,
190
- json_object('old_status', OLD.status_id, 'new_status', NEW.status_id);
191
- END;
192
- `);
193
- details.push('Created trigger: trg_log_task_status_change');
194
- // Auto-update task timestamp
195
- db.exec(`
196
- CREATE TRIGGER IF NOT EXISTS trg_update_task_timestamp
197
- AFTER UPDATE ON t_tasks
198
- BEGIN
199
- UPDATE t_tasks SET updated_ts = unixepoch() WHERE id = NEW.id;
200
- END;
201
- `);
202
- details.push('Created trigger: trg_update_task_timestamp');
203
- // ============================================================================
204
- // 6. Seed Initial Data
205
- // ============================================================================
206
- // Insert task statuses
207
- const statusInsert = db.prepare('INSERT INTO m_task_statuses (id, name) VALUES (?, ?)');
208
- const statuses = [
209
- { id: 1, name: 'todo' },
210
- { id: 2, name: 'in_progress' },
211
- { id: 3, name: 'waiting_review' },
212
- { id: 4, name: 'blocked' },
213
- { id: 5, name: 'done' },
214
- { id: 6, name: 'archived' }
215
- ];
216
- for (const status of statuses) {
217
- statusInsert.run(status.id, status.name);
218
- }
219
- details.push('Seeded task statuses: todo, in_progress, waiting_review, blocked, done, archived');
220
- // Insert config keys for task management
221
- const configInsert = db.prepare('INSERT INTO m_config (key, value) VALUES (?, ?)');
222
- const configs = [
223
- { key: 'task_stale_hours_in_progress', value: '2' },
224
- { key: 'task_stale_hours_waiting_review', value: '24' },
225
- { key: 'task_auto_stale_enabled', value: '1' }
226
- ];
227
- for (const config of configs) {
228
- configInsert.run(config.key, config.value);
229
- }
230
- details.push('Seeded config keys: task_stale_hours_in_progress, task_stale_hours_waiting_review, task_auto_stale_enabled');
231
- // Commit transaction
232
- db.exec('COMMIT');
233
- return {
234
- success: true,
235
- message: 'Task tables migration completed successfully (v2.1.x -> v3.0.0).',
236
- details
237
- };
238
- }
239
- catch (error) {
240
- // Rollback on error
241
- db.exec('ROLLBACK');
242
- const message = error instanceof Error ? error.message : String(error);
243
- return {
244
- success: false,
245
- message: `Task tables migration failed: ${message}`,
246
- details
247
- };
248
- }
249
- }
250
- /**
251
- * Get migration info
252
- */
253
- export function getMigrationInfo() {
254
- return `
255
- Migration: Add Task Management Tables (v2.1.x -> v3.0.0)
256
-
257
- This migration adds Kanban-style task tracking to reduce token usage
258
- from the decisions table being misused for task/todo tracking.
259
-
260
- The migration will:
261
- 1. Create m_task_statuses master table
262
- 2. Create 6 transaction tables for task management
263
- 3. Create 3 indexes for query optimization
264
- 4. Create v_task_board view for token-efficient queries
265
- 5. Create 3 triggers for activity logging and timestamp updates
266
- 6. Seed task statuses (6 statuses)
267
- 7. Seed config keys for stale task detection (3 keys)
268
-
269
- Tables Added:
270
- - m_task_statuses (1 master table)
271
- - t_tasks, t_task_details, t_task_tags (3 core tables)
272
- - t_task_decision_links, t_task_constraint_links, t_task_file_links (3 link tables)
273
-
274
- View Added:
275
- - v_task_board (token-efficient task board view)
276
-
277
- Triggers Added:
278
- - trg_log_task_create (activity log)
279
- - trg_log_task_status_change (activity log)
280
- - trg_update_task_timestamp (auto-update)
281
-
282
- This migration is safe and reversible via backup restoration.
283
- `.trim();
284
- }
285
- //# sourceMappingURL=add-task-tables.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-task-tables.js","sourceRoot":"","sources":["../../src/migrations/add-task-tables.ts"],"names":[],"mappings":"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"}
@@ -1,28 +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
- import { Database } from 'better-sqlite3';
10
- interface MigrationResult {
11
- success: boolean;
12
- message: string;
13
- details?: string[];
14
- }
15
- /**
16
- * Check if migration is needed
17
- */
18
- export declare function needsTokenTrackingMigration(db: Database): boolean;
19
- /**
20
- * Run the migration
21
- */
22
- export declare function migrateToTokenTracking(db: Database): MigrationResult;
23
- /**
24
- * Get migration info
25
- */
26
- export declare function getTokenTrackingMigrationInfo(): string;
27
- export {};
28
- //# sourceMappingURL=add-token-tracking.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-token-tracking.d.ts","sourceRoot":"","sources":["../../src/migrations/add-token-tracking.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;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,2BAA2B,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAOjE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,QAAQ,GAAG,eAAe,CA4DpE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,CA+BtD"}
@@ -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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"}