sqlew 3.8.1 → 3.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (881) hide show
  1. package/CHANGELOG.md +155 -285
  2. package/README.md +150 -32
  3. package/assets/sample-agents/sqlew-architect.md +72 -17
  4. package/assets/sample-agents/sqlew-researcher.md +62 -1
  5. package/assets/sample-agents/sqlew-scrum-master.md +5 -1
  6. package/assets/sample-commands/README.md +57 -0
  7. package/assets/sample-commands/sqw-documentor.md +158 -0
  8. package/assets/sample-commands/sqw-plan.md +301 -0
  9. package/assets/sample-commands/sqw-research.md +298 -0
  10. package/assets/sample-commands/sqw-review.md +340 -0
  11. package/assets/sample-commands/sqw-scrum.md +423 -0
  12. package/assets/sample-commands/sqw-secretary.md +187 -0
  13. package/dist/adapters/sqlite-adapter.d.ts +0 -6
  14. package/dist/adapters/sqlite-adapter.d.ts.map +1 -1
  15. package/dist/adapters/sqlite-adapter.js +10 -14
  16. package/dist/adapters/sqlite-adapter.js.map +1 -1
  17. package/dist/cli/db-dump.d.ts +1 -1
  18. package/dist/cli/db-dump.d.ts.map +1 -1
  19. package/dist/cli/db-dump.js +1 -1
  20. package/dist/cli/db-dump.js.map +1 -1
  21. package/dist/config/knex/bootstrap/20251025021352_fix_mysql_index_syntax.d.ts +4 -0
  22. package/dist/config/knex/bootstrap/20251025021352_fix_mysql_index_syntax.d.ts.map +1 -0
  23. package/dist/config/knex/bootstrap/20251025021352_fix_mysql_index_syntax.js +146 -0
  24. package/dist/config/knex/bootstrap/20251025021352_fix_mysql_index_syntax.js.map +1 -0
  25. package/dist/config/knex/enhancements/20251112000001_fix_task_file_links_schema_v3_9_0.d.ts +22 -0
  26. package/dist/config/knex/enhancements/20251112000001_fix_task_file_links_schema_v3_9_0.d.ts.map +1 -0
  27. package/dist/config/knex/enhancements/20251112000001_fix_task_file_links_schema_v3_9_0.js +106 -0
  28. package/dist/config/knex/enhancements/20251112000001_fix_task_file_links_schema_v3_9_0.js.map +1 -0
  29. package/dist/config/knex/enhancements/20251112000002_fix_task_pruned_files_schema_v3_9_0.d.ts +21 -0
  30. package/dist/config/knex/enhancements/20251112000002_fix_task_pruned_files_schema_v3_9_0.d.ts.map +1 -0
  31. package/dist/config/knex/enhancements/20251112000002_fix_task_pruned_files_schema_v3_9_0.js +106 -0
  32. package/dist/config/knex/enhancements/20251112000002_fix_task_pruned_files_schema_v3_9_0.js.map +1 -0
  33. package/dist/config/knex/enhancements/20251114000000_fix_v_tagged_decisions_numeric_support.d.ts +21 -0
  34. package/dist/config/knex/enhancements/20251114000000_fix_v_tagged_decisions_numeric_support.d.ts.map +1 -0
  35. package/dist/config/knex/enhancements/20251114000000_fix_v_tagged_decisions_numeric_support.js +91 -0
  36. package/dist/config/knex/enhancements/20251114000000_fix_v_tagged_decisions_numeric_support.js.map +1 -0
  37. package/dist/config/knex/enhancements/20251114120000_add_suggest_tool_to_help_system_v3_9_0.d.ts +15 -0
  38. package/dist/config/knex/enhancements/20251114120000_add_suggest_tool_to_help_system_v3_9_0.d.ts.map +1 -0
  39. package/dist/config/knex/enhancements/20251114120000_add_suggest_tool_to_help_system_v3_9_0.js +270 -0
  40. package/dist/config/knex/enhancements/20251114120000_add_suggest_tool_to_help_system_v3_9_0.js.map +1 -0
  41. package/dist/config/knex/enhancements/20251114121000_add_suggest_tool_use_cases_v3_9_0.d.ts +15 -0
  42. package/dist/config/knex/enhancements/20251114121000_add_suggest_tool_use_cases_v3_9_0.d.ts.map +1 -0
  43. package/dist/config/knex/enhancements/20251114121000_add_suggest_tool_use_cases_v3_9_0.js +241 -0
  44. package/dist/config/knex/enhancements/20251114121000_add_suggest_tool_use_cases_v3_9_0.js.map +1 -0
  45. package/dist/config/knex/enhancements/20251114130000_seed_builtin_policies_v3_9_0.d.ts +16 -0
  46. package/dist/config/knex/enhancements/20251114130000_seed_builtin_policies_v3_9_0.d.ts.map +1 -0
  47. package/dist/config/knex/enhancements/20251114130000_seed_builtin_policies_v3_9_0.js +168 -0
  48. package/dist/config/knex/enhancements/20251114130000_seed_builtin_policies_v3_9_0.js.map +1 -0
  49. package/dist/config/knex/enhancements/20251114140000_add_policy_help_v3_9_0.d.ts +14 -0
  50. package/dist/config/knex/enhancements/20251114140000_add_policy_help_v3_9_0.d.ts.map +1 -0
  51. package/dist/config/knex/enhancements/20251114140000_add_policy_help_v3_9_0.js +228 -0
  52. package/dist/config/knex/enhancements/20251114140000_add_policy_help_v3_9_0.js.map +1 -0
  53. package/dist/config/knex/enhancements/20251114141000_add_policy_use_cases_v3_9_0.d.ts +14 -0
  54. package/dist/config/knex/enhancements/20251114141000_add_policy_use_cases_v3_9_0.d.ts.map +1 -0
  55. package/dist/config/knex/enhancements/20251114141000_add_policy_use_cases_v3_9_0.js +237 -0
  56. package/dist/config/knex/enhancements/20251114141000_add_policy_use_cases_v3_9_0.js.map +1 -0
  57. package/dist/config/knex/enhancements/20251114150000_fix_policy_unique_constraint_v3_9_0.d.ts +14 -0
  58. package/dist/config/knex/enhancements/20251114150000_fix_policy_unique_constraint_v3_9_0.d.ts.map +1 -0
  59. package/dist/config/knex/enhancements/20251114150000_fix_policy_unique_constraint_v3_9_0.js +61 -0
  60. package/dist/config/knex/enhancements/20251114150000_fix_policy_unique_constraint_v3_9_0.js.map +1 -0
  61. package/dist/config/knex/enhancements/20251115000000_fix_task_decision_links_unique_constraint.d.ts +21 -0
  62. package/dist/config/knex/enhancements/20251115000000_fix_task_decision_links_unique_constraint.d.ts.map +1 -0
  63. package/dist/config/knex/enhancements/20251115000000_fix_task_decision_links_unique_constraint.js +127 -0
  64. package/dist/config/knex/enhancements/20251115000000_fix_task_decision_links_unique_constraint.js.map +1 -0
  65. package/dist/config/knex/enhancements/20251115100000_fix_read_keyword_index_v3_9_0.d.ts +15 -0
  66. package/dist/config/knex/enhancements/20251115100000_fix_read_keyword_index_v3_9_0.d.ts.map +1 -0
  67. package/dist/config/knex/enhancements/20251115100000_fix_read_keyword_index_v3_9_0.js +69 -0
  68. package/dist/config/knex/enhancements/20251115100000_fix_read_keyword_index_v3_9_0.js.map +1 -0
  69. package/dist/config/knex/enhancements/20251115110000_fix_cross_database_timestamps_v3_9_0.d.ts +15 -0
  70. package/dist/config/knex/enhancements/20251115110000_fix_cross_database_timestamps_v3_9_0.d.ts.map +1 -0
  71. package/dist/config/knex/enhancements/20251115110000_fix_cross_database_timestamps_v3_9_0.js +132 -0
  72. package/dist/config/knex/enhancements/20251115110000_fix_cross_database_timestamps_v3_9_0.js.map +1 -0
  73. package/dist/config/knex/enhancements/20251115120000_fix_all_cross_db_issues_v3_9_0.d.ts +18 -0
  74. package/dist/config/knex/enhancements/20251115120000_fix_all_cross_db_issues_v3_9_0.d.ts.map +1 -0
  75. package/dist/config/knex/enhancements/20251115120000_fix_all_cross_db_issues_v3_9_0.js +47 -0
  76. package/dist/config/knex/enhancements/20251115120000_fix_all_cross_db_issues_v3_9_0.js.map +1 -0
  77. package/dist/config/knex/enhancements/20251118000000_fix_native_db_test_issues_v3_9_1.d.ts +20 -0
  78. package/dist/config/knex/enhancements/20251118000000_fix_native_db_test_issues_v3_9_1.d.ts.map +1 -0
  79. package/dist/config/knex/enhancements/20251118000000_fix_native_db_test_issues_v3_9_1.js +119 -0
  80. package/dist/config/knex/enhancements/20251118000000_fix_native_db_test_issues_v3_9_1.js.map +1 -0
  81. package/dist/config/knex/upgrades/20251111235959_preemptive_fix_cross_database_v3_9_0.d.ts +19 -0
  82. package/dist/config/knex/upgrades/20251111235959_preemptive_fix_cross_database_v3_9_0.d.ts.map +1 -0
  83. package/dist/config/knex/upgrades/20251111235959_preemptive_fix_cross_database_v3_9_0.js +196 -0
  84. package/dist/config/knex/upgrades/20251111235959_preemptive_fix_cross_database_v3_9_0.js.map +1 -0
  85. package/dist/config/knex/upgrades/20251112000000_decision_intelligence_v3_9_0.d.ts +22 -0
  86. package/dist/config/knex/upgrades/20251112000000_decision_intelligence_v3_9_0.d.ts.map +1 -0
  87. package/dist/config/knex/upgrades/20251112000000_decision_intelligence_v3_9_0.js +375 -0
  88. package/dist/config/knex/upgrades/20251112000000_decision_intelligence_v3_9_0.js.map +1 -0
  89. package/dist/config/loader.d.ts.map +1 -1
  90. package/dist/config/loader.js +4 -0
  91. package/dist/config/loader.js.map +1 -1
  92. package/dist/config/minimal-generator.d.ts.map +1 -1
  93. package/dist/config/minimal-generator.js +34 -0
  94. package/dist/config/minimal-generator.js.map +1 -1
  95. package/dist/config/types.d.ts +19 -0
  96. package/dist/config/types.d.ts.map +1 -1
  97. package/dist/config/types.js +8 -0
  98. package/dist/config/types.js.map +1 -1
  99. package/dist/constants.d.ts +30 -0
  100. package/dist/constants.d.ts.map +1 -1
  101. package/dist/constants.js +33 -0
  102. package/dist/constants.js.map +1 -1
  103. package/dist/database/initialization/cleanup.d.ts +1 -1
  104. package/dist/database/initialization/cleanup.d.ts.map +1 -1
  105. package/dist/database/initialization/cleanup.js +15 -1
  106. package/dist/database/initialization/cleanup.js.map +1 -1
  107. package/dist/database/initialization/init.d.ts.map +1 -1
  108. package/dist/database/initialization/init.js +3 -0
  109. package/dist/database/initialization/init.js.map +1 -1
  110. package/dist/database/migrations/20251024010000_upgrade_v1_0_to_v1_1.d.ts +16 -0
  111. package/dist/database/migrations/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +1 -0
  112. package/dist/database/migrations/20251024010000_upgrade_v1_0_to_v1_1.js +84 -0
  113. package/dist/database/migrations/20251024010000_upgrade_v1_0_to_v1_1.js.map +1 -0
  114. package/dist/database/migrations/20251024020000_upgrade_v2_0_to_v2_1.d.ts +14 -0
  115. package/dist/database/migrations/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +1 -0
  116. package/dist/database/migrations/20251024020000_upgrade_v2_0_to_v2_1.js +42 -0
  117. package/dist/database/migrations/20251024020000_upgrade_v2_0_to_v2_1.js.map +1 -0
  118. package/dist/database/migrations/20251024030000_upgrade_v2_1_to_v3_0.d.ts +17 -0
  119. package/dist/database/migrations/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +1 -0
  120. package/dist/database/migrations/20251024030000_upgrade_v2_1_to_v3_0.js +122 -0
  121. package/dist/database/migrations/20251024030000_upgrade_v2_1_to_v3_0.js.map +1 -0
  122. package/dist/database/migrations/20251024040000_upgrade_v3_0_to_v3_2.d.ts +12 -0
  123. package/dist/database/migrations/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +1 -0
  124. package/dist/database/migrations/20251024040000_upgrade_v3_0_to_v3_2.js +49 -0
  125. package/dist/database/migrations/20251024040000_upgrade_v3_0_to_v3_2.js.map +1 -0
  126. package/dist/database/migrations/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts +12 -0
  127. package/dist/database/migrations/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +1 -0
  128. package/dist/database/migrations/20251024050000_upgrade_v3_2_0_to_v3_2_2.js +53 -0
  129. package/dist/database/migrations/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +1 -0
  130. package/dist/database/migrations/20251024060000_upgrade_v3_4_to_v3_5.d.ts +12 -0
  131. package/dist/database/migrations/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +1 -0
  132. package/dist/database/migrations/20251024060000_upgrade_v3_4_to_v3_5.js +44 -0
  133. package/dist/database/migrations/20251024060000_upgrade_v3_4_to_v3_5.js.map +1 -0
  134. package/dist/database/migrations/20251024070000_upgrade_v3_5_to_v3_6.d.ts +13 -0
  135. package/dist/database/migrations/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +1 -0
  136. package/dist/database/migrations/20251024070000_upgrade_v3_5_to_v3_6.js +33 -0
  137. package/dist/database/migrations/20251024070000_upgrade_v3_5_to_v3_6.js.map +1 -0
  138. package/dist/database/migrations/20251025020452_create_master_tables_wrapper.d.ts +17 -0
  139. package/dist/database/migrations/20251025020452_create_master_tables_wrapper.d.ts.map +1 -0
  140. package/dist/database/migrations/20251025020452_create_master_tables_wrapper.js +119 -0
  141. package/dist/database/migrations/20251025020452_create_master_tables_wrapper.js.map +1 -0
  142. package/dist/database/migrations/20251025021152_create_transaction_tables_wrapper.d.ts +15 -0
  143. package/dist/database/migrations/20251025021152_create_transaction_tables_wrapper.d.ts.map +1 -0
  144. package/dist/database/migrations/20251025021152_create_transaction_tables_wrapper.js +282 -0
  145. package/dist/database/migrations/20251025021152_create_transaction_tables_wrapper.js.map +1 -0
  146. package/dist/database/migrations/20251025021351_create_indexes_wrapper.d.ts +21 -0
  147. package/dist/database/migrations/20251025021351_create_indexes_wrapper.d.ts.map +1 -0
  148. package/dist/database/migrations/20251025021351_create_indexes_wrapper.js +83 -0
  149. package/dist/database/migrations/20251025021351_create_indexes_wrapper.js.map +1 -0
  150. package/dist/database/migrations/20251025021352_fix_mysql_index_syntax_wrapper.d.ts +22 -0
  151. package/dist/database/migrations/20251025021352_fix_mysql_index_syntax_wrapper.d.ts.map +1 -0
  152. package/dist/database/migrations/20251025021352_fix_mysql_index_syntax_wrapper.js +94 -0
  153. package/dist/database/migrations/20251025021352_fix_mysql_index_syntax_wrapper.js.map +1 -0
  154. package/dist/database/migrations/20251025021416_seed_master_data_wrapper.d.ts +19 -0
  155. package/dist/database/migrations/20251025021416_seed_master_data_wrapper.d.ts.map +1 -0
  156. package/dist/database/migrations/20251025021416_seed_master_data_wrapper.js +120 -0
  157. package/dist/database/migrations/20251025021416_seed_master_data_wrapper.js.map +1 -0
  158. package/dist/database/migrations/20251025070349_create_views_wrapper.d.ts +14 -0
  159. package/dist/database/migrations/20251025070349_create_views_wrapper.d.ts.map +1 -0
  160. package/dist/database/migrations/20251025070349_create_views_wrapper.js +160 -0
  161. package/dist/database/migrations/20251025070349_create_views_wrapper.js.map +1 -0
  162. package/dist/database/migrations/20251025081221_add_link_type_to_task_decision_links.d.ts +9 -0
  163. package/dist/database/migrations/20251025081221_add_link_type_to_task_decision_links.d.ts.map +1 -0
  164. package/dist/database/migrations/20251025081221_add_link_type_to_task_decision_links.js +21 -0
  165. package/dist/database/migrations/20251025081221_add_link_type_to_task_decision_links.js.map +1 -0
  166. package/dist/database/migrations/20251025082220_fix_task_dependencies_columns.d.ts +13 -0
  167. package/dist/database/migrations/20251025082220_fix_task_dependencies_columns.d.ts.map +1 -0
  168. package/dist/database/migrations/20251025082220_fix_task_dependencies_columns.js +17 -0
  169. package/dist/database/migrations/20251025082220_fix_task_dependencies_columns.js.map +1 -0
  170. package/dist/database/migrations/20251025090000_create_help_system_tables.d.ts +27 -0
  171. package/dist/database/migrations/20251025090000_create_help_system_tables.d.ts.map +1 -0
  172. package/dist/database/migrations/20251025090000_create_help_system_tables.js +120 -0
  173. package/dist/database/migrations/20251025090000_create_help_system_tables.js.map +1 -0
  174. package/dist/database/migrations/20251025090100_seed_help_categories_and_use_cases.d.ts +18 -0
  175. package/dist/database/migrations/20251025090100_seed_help_categories_and_use_cases.d.ts.map +1 -0
  176. package/dist/database/migrations/20251025090100_seed_help_categories_and_use_cases.js +388 -0
  177. package/dist/database/migrations/20251025090100_seed_help_categories_and_use_cases.js.map +1 -0
  178. package/dist/database/migrations/20251025100000_seed_help_metadata.d.ts +20 -0
  179. package/dist/database/migrations/20251025100000_seed_help_metadata.d.ts.map +1 -0
  180. package/dist/database/migrations/20251025100000_seed_help_metadata.js +264 -0
  181. package/dist/database/migrations/20251025100000_seed_help_metadata.js.map +1 -0
  182. package/dist/database/migrations/20251025100100_seed_remaining_use_cases.d.ts +21 -0
  183. package/dist/database/migrations/20251025100100_seed_remaining_use_cases.d.ts.map +1 -0
  184. package/dist/database/migrations/20251025100100_seed_remaining_use_cases.js +281 -0
  185. package/dist/database/migrations/20251025100100_seed_remaining_use_cases.js.map +1 -0
  186. package/dist/database/migrations/20251025120000_add_cascade_to_task_dependencies.d.ts +13 -0
  187. package/dist/database/migrations/20251025120000_add_cascade_to_task_dependencies.d.ts.map +1 -0
  188. package/dist/database/migrations/20251025120000_add_cascade_to_task_dependencies.js +76 -0
  189. package/dist/database/migrations/20251025120000_add_cascade_to_task_dependencies.js.map +1 -0
  190. package/dist/database/migrations/20251027000000_add_agent_reuse_system.d.ts +17 -0
  191. package/dist/database/migrations/20251027000000_add_agent_reuse_system.d.ts.map +1 -0
  192. package/dist/database/migrations/20251027000000_add_agent_reuse_system.js +42 -0
  193. package/dist/database/migrations/20251027000000_add_agent_reuse_system.js.map +1 -0
  194. package/dist/database/migrations/20251027010000_add_task_constraint_to_decision_context.d.ts +10 -0
  195. package/dist/database/migrations/20251027010000_add_task_constraint_to_decision_context.d.ts.map +1 -0
  196. package/dist/database/migrations/20251027010000_add_task_constraint_to_decision_context.js +28 -0
  197. package/dist/database/migrations/20251027010000_add_task_constraint_to_decision_context.js.map +1 -0
  198. package/dist/database/migrations/20251027020000_update_agent_reusability.d.ts +21 -0
  199. package/dist/database/migrations/20251027020000_update_agent_reusability.d.ts.map +1 -0
  200. package/dist/database/migrations/20251027020000_update_agent_reusability.js +38 -0
  201. package/dist/database/migrations/20251027020000_update_agent_reusability.js.map +1 -0
  202. package/dist/database/migrations/20251028000000_simplify_agent_system.d.ts +26 -0
  203. package/dist/database/migrations/20251028000000_simplify_agent_system.d.ts.map +1 -0
  204. package/dist/database/migrations/20251028000000_simplify_agent_system.js +56 -0
  205. package/dist/database/migrations/20251028000000_simplify_agent_system.js.map +1 -0
  206. package/dist/database/migrations/20251031000000_drop_orphaned_message_view.d.ts +16 -0
  207. package/dist/database/migrations/20251031000000_drop_orphaned_message_view.d.ts.map +1 -0
  208. package/dist/database/migrations/20251031000000_drop_orphaned_message_view.js +52 -0
  209. package/dist/database/migrations/20251031000000_drop_orphaned_message_view.js.map +1 -0
  210. package/dist/database/migrations/20251104000000_add_multi_project_v3_7_0.d.ts +56 -0
  211. package/dist/database/migrations/20251104000000_add_multi_project_v3_7_0.d.ts.map +1 -0
  212. package/dist/database/migrations/20251104000000_add_multi_project_v3_7_0.js +701 -0
  213. package/dist/database/migrations/20251104000000_add_multi_project_v3_7_0.js.map +1 -0
  214. package/dist/database/migrations/20251104000003_rename_constraints_created_by_to_agent_id.d.ts +30 -0
  215. package/dist/database/migrations/20251104000003_rename_constraints_created_by_to_agent_id.d.ts.map +1 -0
  216. package/dist/database/migrations/20251104000003_rename_constraints_created_by_to_agent_id.js +180 -0
  217. package/dist/database/migrations/20251104000003_rename_constraints_created_by_to_agent_id.js.map +1 -0
  218. package/dist/database/migrations/20251105000000_add_token_usage_table.d.ts +19 -0
  219. package/dist/database/migrations/20251105000000_add_token_usage_table.d.ts.map +1 -0
  220. package/dist/database/migrations/20251105000000_add_token_usage_table.js +47 -0
  221. package/dist/database/migrations/20251105000000_add_token_usage_table.js.map +1 -0
  222. package/dist/database/migrations/20251105000001_rename_decision_context_decided_by_to_agent_id.d.ts +28 -0
  223. package/dist/database/migrations/20251105000001_rename_decision_context_decided_by_to_agent_id.d.ts.map +1 -0
  224. package/dist/database/migrations/20251105000001_rename_decision_context_decided_by_to_agent_id.js +123 -0
  225. package/dist/database/migrations/20251105000001_rename_decision_context_decided_by_to_agent_id.js.map +1 -0
  226. package/dist/database/migrations/20251106000000_fix_master_tables_project_id_v3_7_3.d.ts +36 -0
  227. package/dist/database/migrations/20251106000000_fix_master_tables_project_id_v3_7_3.d.ts.map +1 -0
  228. package/dist/database/migrations/20251106000000_fix_master_tables_project_id_v3_7_3.js +559 -0
  229. package/dist/database/migrations/20251106000000_fix_master_tables_project_id_v3_7_3.js.map +1 -0
  230. package/dist/database/migrations/20251108000000_add_planning_layers_v3_8_0.d.ts +26 -0
  231. package/dist/database/migrations/20251108000000_add_planning_layers_v3_8_0.d.ts.map +1 -0
  232. package/dist/database/migrations/20251108000000_add_planning_layers_v3_8_0.js +78 -0
  233. package/dist/database/migrations/20251108000000_add_planning_layers_v3_8_0.js.map +1 -0
  234. package/dist/database/migrations/20251108000000_hotfix_v_tagged_constraints_project_id.d.ts +17 -0
  235. package/dist/database/migrations/20251108000000_hotfix_v_tagged_constraints_project_id.d.ts.map +1 -0
  236. package/dist/database/migrations/20251108000000_hotfix_v_tagged_constraints_project_id.js +78 -0
  237. package/dist/database/migrations/20251108000000_hotfix_v_tagged_constraints_project_id.js.map +1 -0
  238. package/dist/database/migrations/20251109000000_fix_task_file_links_unique_constraint_v3_8_0.d.ts +24 -0
  239. package/dist/database/migrations/20251109000000_fix_task_file_links_unique_constraint_v3_8_0.d.ts.map +1 -0
  240. package/dist/database/migrations/20251109000000_fix_task_file_links_unique_constraint_v3_8_0.js +63 -0
  241. package/dist/database/migrations/20251109000000_fix_task_file_links_unique_constraint_v3_8_0.js.map +1 -0
  242. package/dist/database/migrations/20251109000002_multi_project_cross_db_compat_v3_7_5.d.ts +27 -0
  243. package/dist/database/migrations/20251109000002_multi_project_cross_db_compat_v3_7_5.d.ts.map +1 -0
  244. package/dist/database/migrations/20251109000002_multi_project_cross_db_compat_v3_7_5.js +276 -0
  245. package/dist/database/migrations/20251109000002_multi_project_cross_db_compat_v3_7_5.js.map +1 -0
  246. package/dist/database/migrations/20251109000003_token_usage_cross_db_compat_v3_7_5.d.ts +27 -0
  247. package/dist/database/migrations/20251109000003_token_usage_cross_db_compat_v3_7_5.d.ts.map +1 -0
  248. package/dist/database/migrations/20251109000003_token_usage_cross_db_compat_v3_7_5.js +67 -0
  249. package/dist/database/migrations/20251109000003_token_usage_cross_db_compat_v3_7_5.js.map +1 -0
  250. package/dist/database/migrations/20251109010000_tool_cleanup_v3_8_0.d.ts +32 -0
  251. package/dist/database/migrations/20251109010000_tool_cleanup_v3_8_0.d.ts.map +1 -0
  252. package/dist/database/migrations/20251109010000_tool_cleanup_v3_8_0.js +352 -0
  253. package/dist/database/migrations/20251109010000_tool_cleanup_v3_8_0.js.map +1 -0
  254. package/dist/database/migrations/20251109020000_fix_missing_help_actions_v3_8_0.d.ts +35 -0
  255. package/dist/database/migrations/20251109020000_fix_missing_help_actions_v3_8_0.d.ts.map +1 -0
  256. package/dist/database/migrations/20251109020000_fix_missing_help_actions_v3_8_0.js +237 -0
  257. package/dist/database/migrations/20251109020000_fix_missing_help_actions_v3_8_0.js.map +1 -0
  258. package/dist/database/migrations/20251111235959_preemptive_fix_cross_database_v3_9_0.d.ts +22 -0
  259. package/dist/database/migrations/20251111235959_preemptive_fix_cross_database_v3_9_0.d.ts.map +1 -0
  260. package/dist/database/migrations/20251111235959_preemptive_fix_cross_database_v3_9_0.js +190 -0
  261. package/dist/database/migrations/20251111235959_preemptive_fix_cross_database_v3_9_0.js.map +1 -0
  262. package/dist/database/migrations/20251112000000_decision_intelligence_v3_9_0.d.ts +32 -0
  263. package/dist/database/migrations/20251112000000_decision_intelligence_v3_9_0.d.ts.map +1 -0
  264. package/dist/database/migrations/20251112000000_decision_intelligence_v3_9_0.js +342 -0
  265. package/dist/database/migrations/20251112000000_decision_intelligence_v3_9_0.js.map +1 -0
  266. package/dist/database/migrations/20251112000001_fix_task_file_links_schema_v3_9_0.d.ts +25 -0
  267. package/dist/database/migrations/20251112000001_fix_task_file_links_schema_v3_9_0.d.ts.map +1 -0
  268. package/dist/database/migrations/20251112000001_fix_task_file_links_schema_v3_9_0.js +109 -0
  269. package/dist/database/migrations/20251112000001_fix_task_file_links_schema_v3_9_0.js.map +1 -0
  270. package/dist/database/migrations/20251112000002_fix_task_pruned_files_schema_v3_9_0.d.ts +24 -0
  271. package/dist/database/migrations/20251112000002_fix_task_pruned_files_schema_v3_9_0.d.ts.map +1 -0
  272. package/dist/database/migrations/20251112000002_fix_task_pruned_files_schema_v3_9_0.js +111 -0
  273. package/dist/database/migrations/20251112000002_fix_task_pruned_files_schema_v3_9_0.js.map +1 -0
  274. package/dist/database/migrations/20251114000000_fix_v_tagged_decisions_numeric_support.d.ts +24 -0
  275. package/dist/database/migrations/20251114000000_fix_v_tagged_decisions_numeric_support.d.ts.map +1 -0
  276. package/dist/database/migrations/20251114000000_fix_v_tagged_decisions_numeric_support.js +90 -0
  277. package/dist/database/migrations/20251114000000_fix_v_tagged_decisions_numeric_support.js.map +1 -0
  278. package/dist/database/migrations/20251114120000_add_suggest_tool_to_help_system_v3_9_0.d.ts +20 -0
  279. package/dist/database/migrations/20251114120000_add_suggest_tool_to_help_system_v3_9_0.d.ts.map +1 -0
  280. package/dist/database/migrations/20251114120000_add_suggest_tool_to_help_system_v3_9_0.js +275 -0
  281. package/dist/database/migrations/20251114120000_add_suggest_tool_to_help_system_v3_9_0.js.map +1 -0
  282. package/dist/database/migrations/20251114121000_add_suggest_tool_use_cases_v3_9_0.d.ts +20 -0
  283. package/dist/database/migrations/20251114121000_add_suggest_tool_use_cases_v3_9_0.d.ts.map +1 -0
  284. package/dist/database/migrations/20251114121000_add_suggest_tool_use_cases_v3_9_0.js +246 -0
  285. package/dist/database/migrations/20251114121000_add_suggest_tool_use_cases_v3_9_0.js.map +1 -0
  286. package/dist/database/migrations/20251114130000_seed_builtin_policies_v3_9_0.d.ts +23 -0
  287. package/dist/database/migrations/20251114130000_seed_builtin_policies_v3_9_0.d.ts.map +1 -0
  288. package/dist/database/migrations/20251114130000_seed_builtin_policies_v3_9_0.js +175 -0
  289. package/dist/database/migrations/20251114130000_seed_builtin_policies_v3_9_0.js.map +1 -0
  290. package/dist/database/migrations/20251114140000_add_policy_help_v3_9_0.d.ts +21 -0
  291. package/dist/database/migrations/20251114140000_add_policy_help_v3_9_0.d.ts.map +1 -0
  292. package/dist/database/migrations/20251114140000_add_policy_help_v3_9_0.js +235 -0
  293. package/dist/database/migrations/20251114140000_add_policy_help_v3_9_0.js.map +1 -0
  294. package/dist/database/migrations/20251114141000_add_policy_use_cases_v3_9_0.d.ts +21 -0
  295. package/dist/database/migrations/20251114141000_add_policy_use_cases_v3_9_0.d.ts.map +1 -0
  296. package/dist/database/migrations/20251114141000_add_policy_use_cases_v3_9_0.js +244 -0
  297. package/dist/database/migrations/20251114141000_add_policy_use_cases_v3_9_0.js.map +1 -0
  298. package/dist/database/migrations/20251114150000_fix_policy_unique_constraint_v3_9_0.d.ts +23 -0
  299. package/dist/database/migrations/20251114150000_fix_policy_unique_constraint_v3_9_0.d.ts.map +1 -0
  300. package/dist/database/migrations/20251114150000_fix_policy_unique_constraint_v3_9_0.js +70 -0
  301. package/dist/database/migrations/20251114150000_fix_policy_unique_constraint_v3_9_0.js.map +1 -0
  302. package/dist/database/migrations/20251115000000_fix_task_decision_links_unique_constraint.d.ts +29 -0
  303. package/dist/database/migrations/20251115000000_fix_task_decision_links_unique_constraint.d.ts.map +1 -0
  304. package/dist/database/migrations/20251115000000_fix_task_decision_links_unique_constraint.js +135 -0
  305. package/dist/database/migrations/20251115000000_fix_task_decision_links_unique_constraint.js.map +1 -0
  306. package/dist/database/migrations/20251115100000_fix_read_keyword_index_v3_9_0.d.ts +23 -0
  307. package/dist/database/migrations/20251115100000_fix_read_keyword_index_v3_9_0.d.ts.map +1 -0
  308. package/dist/database/migrations/20251115100000_fix_read_keyword_index_v3_9_0.js +42 -0
  309. package/dist/database/migrations/20251115100000_fix_read_keyword_index_v3_9_0.js.map +1 -0
  310. package/dist/database/migrations/20251115110000_fix_cross_database_timestamps_v3_9_0.d.ts +25 -0
  311. package/dist/database/migrations/20251115110000_fix_cross_database_timestamps_v3_9_0.d.ts.map +1 -0
  312. package/dist/database/migrations/20251115110000_fix_cross_database_timestamps_v3_9_0.js +102 -0
  313. package/dist/database/migrations/20251115110000_fix_cross_database_timestamps_v3_9_0.js.map +1 -0
  314. package/dist/database/migrations/20251115120000_fix_all_cross_db_issues_v3_9_0.d.ts +25 -0
  315. package/dist/database/migrations/20251115120000_fix_all_cross_db_issues_v3_9_0.d.ts.map +1 -0
  316. package/dist/database/migrations/20251115120000_fix_all_cross_db_issues_v3_9_0.js +55 -0
  317. package/dist/database/migrations/20251115120000_fix_all_cross_db_issues_v3_9_0.js.map +1 -0
  318. package/dist/database/migrations/20251118000000_eliminate_views_v3_9_0.d.ts +29 -0
  319. package/dist/database/migrations/20251118000000_eliminate_views_v3_9_0.d.ts.map +1 -0
  320. package/dist/database/migrations/20251118000000_eliminate_views_v3_9_0.js +62 -0
  321. package/dist/database/migrations/20251118000000_eliminate_views_v3_9_0.js.map +1 -0
  322. package/dist/database/migrations/20251119000000_add_constraint_text_hash_v3_9_1.d.ts +25 -0
  323. package/dist/database/migrations/20251119000000_add_constraint_text_hash_v3_9_1.d.ts.map +1 -0
  324. package/dist/database/migrations/20251119000000_add_constraint_text_hash_v3_9_1.js +100 -0
  325. package/dist/database/migrations/20251119000000_add_constraint_text_hash_v3_9_1.js.map +1 -0
  326. package/dist/init-commands.d.ts +7 -0
  327. package/dist/init-commands.d.ts.map +1 -0
  328. package/dist/init-commands.js +185 -0
  329. package/dist/init-commands.js.map +1 -0
  330. package/dist/schema.d.ts +11 -19
  331. package/dist/schema.d.ts.map +1 -1
  332. package/dist/schema.js +51 -63
  333. package/dist/schema.js.map +1 -1
  334. package/dist/server/tool-handlers.d.ts.map +1 -1
  335. package/dist/server/tool-handlers.js +20 -1
  336. package/dist/server/tool-handlers.js.map +1 -1
  337. package/dist/server/tool-registry.d.ts.map +1 -1
  338. package/dist/server/tool-registry.js +42 -1
  339. package/dist/server/tool-registry.js.map +1 -1
  340. package/dist/sync-commands.d.ts +13 -0
  341. package/dist/sync-commands.d.ts.map +1 -0
  342. package/dist/sync-commands.js +115 -0
  343. package/dist/sync-commands.js.map +1 -0
  344. package/dist/tests/database/connection/connection-manager-integration.test.d.ts.map +1 -0
  345. package/dist/tests/{connection-manager-integration.test.js → database/connection/connection-manager-integration.test.js} +1 -1
  346. package/dist/tests/database/connection/connection-manager-integration.test.js.map +1 -0
  347. package/dist/tests/database/connection/connection-manager.test.d.ts.map +1 -0
  348. package/dist/tests/{connection-manager.test.js → database/connection/connection-manager.test.js} +1 -1
  349. package/dist/tests/database/connection/connection-manager.test.js.map +1 -0
  350. package/dist/tests/database/migrations/idempotency.test.d.ts +2 -0
  351. package/dist/tests/database/migrations/idempotency.test.d.ts.map +1 -0
  352. package/dist/tests/{migration-idempotency.test.js → database/migrations/idempotency.test.js} +1 -1
  353. package/dist/tests/database/migrations/idempotency.test.js.map +1 -0
  354. package/dist/tests/database/migrations/upgrade-paths.test.d.ts +2 -0
  355. package/dist/tests/database/migrations/upgrade-paths.test.d.ts.map +1 -0
  356. package/dist/tests/{migration-upgrade-paths.test.js → database/migrations/upgrade-paths.test.js} +1 -1
  357. package/dist/tests/database/migrations/upgrade-paths.test.js.map +1 -0
  358. package/dist/tests/database/multi-project/multi-project.test.d.ts.map +1 -0
  359. package/dist/tests/{multi-project.test.js → database/multi-project/multi-project.test.js} +5 -5
  360. package/dist/tests/database/multi-project/multi-project.test.js.map +1 -0
  361. package/dist/tests/{sql-dump-converters.test.d.ts → database/sql-dump/converters.test.d.ts} +1 -1
  362. package/dist/tests/database/sql-dump/converters.test.d.ts.map +1 -0
  363. package/dist/tests/{sql-dump-converters.test.js → database/sql-dump/converters.test.js} +2 -2
  364. package/dist/tests/database/sql-dump/converters.test.js.map +1 -0
  365. package/dist/tests/{sql-dump-default-conversions.test.d.ts → database/sql-dump/default-conversions.test.d.ts} +1 -1
  366. package/dist/tests/database/sql-dump/default-conversions.test.d.ts.map +1 -0
  367. package/dist/tests/{sql-dump-default-conversions.test.js → database/sql-dump/default-conversions.test.js} +2 -2
  368. package/dist/tests/database/sql-dump/default-conversions.test.js.map +1 -0
  369. package/dist/tests/database/sql-dump/table-ordering.test.d.ts +27 -0
  370. package/dist/tests/database/sql-dump/table-ordering.test.d.ts.map +1 -0
  371. package/dist/tests/{sql-dump-table-ordering.test.js → database/sql-dump/table-ordering.test.js} +34 -8
  372. package/dist/tests/database/sql-dump/table-ordering.test.js.map +1 -0
  373. package/dist/tests/database/sql-dump/type-conversion.test.d.ts.map +1 -0
  374. package/dist/tests/{type-conversion.test.js → database/sql-dump/type-conversion.test.js} +1 -1
  375. package/dist/tests/database/sql-dump/type-conversion.test.js.map +1 -0
  376. package/dist/tests/database/testing-config.d.ts +105 -0
  377. package/dist/tests/database/testing-config.d.ts.map +1 -0
  378. package/dist/tests/database/testing-config.js +192 -0
  379. package/dist/tests/database/testing-config.js.map +1 -0
  380. package/dist/tests/{sql-dump-cross-database.test.d.ts → docker/cross-database.test.d.ts} +1 -1
  381. package/dist/tests/docker/cross-database.test.d.ts.map +1 -0
  382. package/dist/tests/{sql-dump-cross-database.test.js → docker/cross-database.test.js} +3 -3
  383. package/dist/tests/docker/cross-database.test.js.map +1 -0
  384. package/dist/tests/docker/dump-import.test.d.ts.map +1 -0
  385. package/dist/tests/{dump-import.test.js → docker/dump-import.test.js} +25 -31
  386. package/dist/tests/docker/dump-import.test.js.map +1 -0
  387. package/dist/tests/{sql-dump-fk-constraints.test.d.ts → docker/fk-constraints.test.d.ts} +1 -1
  388. package/dist/tests/docker/fk-constraints.test.d.ts.map +1 -0
  389. package/dist/tests/{sql-dump-fk-constraints.test.js → docker/fk-constraints.test.js} +3 -3
  390. package/dist/tests/docker/fk-constraints.test.js.map +1 -0
  391. package/dist/tests/{sql-dump-indexes.test.d.ts → docker/indexes.test.d.ts} +1 -1
  392. package/dist/tests/docker/indexes.test.d.ts.map +1 -0
  393. package/dist/tests/{sql-dump-indexes.test.js → docker/indexes.test.js} +10 -29
  394. package/dist/tests/docker/indexes.test.js.map +1 -0
  395. package/dist/tests/{sql-dump-integration.test.d.ts → docker/integration.test.d.ts} +1 -1
  396. package/dist/tests/docker/integration.test.d.ts.map +1 -0
  397. package/dist/tests/{sql-dump-integration.test.js → docker/integration.test.js} +9 -28
  398. package/dist/tests/docker/integration.test.js.map +1 -0
  399. package/dist/tests/docker/multi-project-migration.test.d.ts.map +1 -0
  400. package/dist/tests/{multi-project-migration.test.js → docker/multi-project-migration.test.js} +20 -8
  401. package/dist/tests/docker/multi-project-migration.test.js.map +1 -0
  402. package/dist/tests/docker/native/constraint-operations.test.d.ts +23 -0
  403. package/dist/tests/docker/native/constraint-operations.test.d.ts.map +1 -0
  404. package/dist/tests/docker/native/constraint-operations.test.js +693 -0
  405. package/dist/tests/docker/native/constraint-operations.test.js.map +1 -0
  406. package/dist/tests/docker/native/db-init.d.ts +59 -0
  407. package/dist/tests/docker/native/db-init.d.ts.map +1 -0
  408. package/dist/tests/docker/native/db-init.js +207 -0
  409. package/dist/tests/docker/native/db-init.js.map +1 -0
  410. package/dist/tests/docker/native/decision-operations.test.d.ts +16 -0
  411. package/dist/tests/docker/native/decision-operations.test.d.ts.map +1 -0
  412. package/dist/tests/docker/native/decision-operations.test.js +590 -0
  413. package/dist/tests/docker/native/decision-operations.test.js.map +1 -0
  414. package/dist/tests/docker/native/help-system.test.d.ts +10 -0
  415. package/dist/tests/docker/native/help-system.test.d.ts.map +1 -0
  416. package/dist/tests/docker/native/help-system.test.js +568 -0
  417. package/dist/tests/docker/native/help-system.test.js.map +1 -0
  418. package/dist/tests/docker/native/suggest-tool.test.d.ts +16 -0
  419. package/dist/tests/docker/native/suggest-tool.test.d.ts.map +1 -0
  420. package/dist/tests/docker/native/suggest-tool.test.js +607 -0
  421. package/dist/tests/docker/native/suggest-tool.test.js.map +1 -0
  422. package/dist/tests/docker/native/task-operations.test.d.ts +16 -0
  423. package/dist/tests/docker/native/task-operations.test.d.ts.map +1 -0
  424. package/dist/tests/docker/native/task-operations.test.js +836 -0
  425. package/dist/tests/docker/native/task-operations.test.js.map +1 -0
  426. package/dist/tests/docker/native/test-harness.d.ts +129 -0
  427. package/dist/tests/docker/native/test-harness.d.ts.map +1 -0
  428. package/dist/tests/docker/native/test-harness.js +314 -0
  429. package/dist/tests/docker/native/test-harness.js.map +1 -0
  430. package/dist/tests/docker/schema-migration.test.d.ts.map +1 -0
  431. package/dist/tests/{schema-migration.test.js → docker/schema-migration.test.js} +8 -18
  432. package/dist/tests/docker/schema-migration.test.js.map +1 -0
  433. package/dist/tests/feature/decision/analytics.test.d.ts +7 -0
  434. package/dist/tests/feature/decision/analytics.test.d.ts.map +1 -0
  435. package/dist/tests/feature/decision/analytics.test.js +140 -0
  436. package/dist/tests/feature/decision/analytics.test.js.map +1 -0
  437. package/dist/tests/feature/decision/batch-validation-comprehensive.test.d.ts.map +1 -0
  438. package/dist/tests/{batch-validation-comprehensive.test.js → feature/decision/batch-validation-comprehensive.test.js} +5 -5
  439. package/dist/tests/feature/decision/batch-validation-comprehensive.test.js.map +1 -0
  440. package/dist/tests/feature/decision/batch-validation-integration.test.d.ts.map +1 -0
  441. package/dist/tests/{batch-validation-integration.test.js → feature/decision/batch-validation-integration.test.js} +3 -3
  442. package/dist/tests/feature/decision/batch-validation-integration.test.js.map +1 -0
  443. package/dist/tests/{decision-batch-validation.test.d.ts → feature/decision/batch-validation.test.d.ts} +1 -1
  444. package/dist/tests/feature/decision/batch-validation.test.d.ts.map +1 -0
  445. package/dist/tests/{decision-batch-validation.test.js → feature/decision/batch-validation.test.js} +4 -4
  446. package/dist/tests/feature/decision/batch-validation.test.js.map +1 -0
  447. package/dist/tests/feature/decision/context-modular.test.d.ts.map +1 -0
  448. package/dist/tests/{context-modular.test.js → feature/decision/context-modular.test.js} +17 -8
  449. package/dist/tests/feature/decision/context-modular.test.js.map +1 -0
  450. package/dist/tests/feature/help/help-system.test.d.ts.map +1 -0
  451. package/dist/tests/{help-system.test.js → feature/help/help-system.test.js} +9 -9
  452. package/dist/tests/feature/help/help-system.test.js.map +1 -0
  453. package/dist/tests/{tasks.auto-pruning-decision-link.test.d.ts → feature/task/auto-pruning-decision-link.test.d.ts} +1 -1
  454. package/dist/tests/feature/task/auto-pruning-decision-link.test.d.ts.map +1 -0
  455. package/dist/tests/{tasks.auto-pruning-decision-link.test.js → feature/task/auto-pruning-decision-link.test.js} +30 -8
  456. package/dist/tests/feature/task/auto-pruning-decision-link.test.js.map +1 -0
  457. package/dist/tests/{tasks.auto-pruning-partial.test.d.ts → feature/task/auto-pruning-partial.test.d.ts} +1 -1
  458. package/dist/tests/feature/task/auto-pruning-partial.test.d.ts.map +1 -0
  459. package/dist/tests/{tasks.auto-pruning-partial.test.js → feature/task/auto-pruning-partial.test.js} +26 -4
  460. package/dist/tests/feature/task/auto-pruning-partial.test.js.map +1 -0
  461. package/dist/tests/{tasks.auto-pruning-persistence.test.d.ts → feature/task/auto-pruning-persistence.test.d.ts} +1 -1
  462. package/dist/tests/feature/task/auto-pruning-persistence.test.d.ts.map +1 -0
  463. package/dist/tests/{tasks.auto-pruning-persistence.test.js → feature/task/auto-pruning-persistence.test.js} +23 -3
  464. package/dist/tests/feature/task/auto-pruning-persistence.test.js.map +1 -0
  465. package/dist/tests/{tasks.auto-pruning-safety.test.d.ts → feature/task/auto-pruning-safety.test.d.ts} +1 -1
  466. package/dist/tests/feature/task/auto-pruning-safety.test.d.ts.map +1 -0
  467. package/dist/tests/{tasks.auto-pruning-safety.test.js → feature/task/auto-pruning-safety.test.js} +46 -20
  468. package/dist/tests/feature/task/auto-pruning-safety.test.js.map +1 -0
  469. package/dist/tests/{tasks.dependencies.test.d.ts → feature/task/dependencies.test.d.ts} +1 -1
  470. package/dist/tests/feature/task/dependencies.test.d.ts.map +1 -0
  471. package/dist/tests/{tasks.dependencies.test.js → feature/task/dependencies.test.js} +46 -30
  472. package/dist/tests/feature/task/dependencies.test.js.map +1 -0
  473. package/dist/tests/{tasks.file-actions-integration.test.d.ts → feature/task/file-actions-integration.test.d.ts} +1 -1
  474. package/dist/tests/feature/task/file-actions-integration.test.d.ts.map +1 -0
  475. package/dist/tests/{tasks.file-actions-integration.test.js → feature/task/file-actions-integration.test.js} +6 -6
  476. package/dist/tests/feature/task/file-actions-integration.test.js.map +1 -0
  477. package/dist/tests/{tasks.file-actions-validation.test.d.ts → feature/task/file-actions-validation.test.d.ts} +1 -1
  478. package/dist/tests/feature/task/file-actions-validation.test.d.ts.map +1 -0
  479. package/dist/tests/{tasks.file-actions-validation.test.js → feature/task/file-actions-validation.test.js} +11 -4
  480. package/dist/tests/feature/task/file-actions-validation.test.js.map +1 -0
  481. package/dist/tests/{tasks.link-file-backward-compat.test.d.ts → feature/task/link-file-backward-compat.test.d.ts} +1 -1
  482. package/dist/tests/feature/task/link-file-backward-compat.test.d.ts.map +1 -0
  483. package/dist/tests/{tasks.link-file-backward-compat.test.js → feature/task/link-file-backward-compat.test.js} +65 -40
  484. package/dist/tests/feature/task/link-file-backward-compat.test.js.map +1 -0
  485. package/dist/tests/{tasks.watch-files-action.test.d.ts → feature/task/watch-files-action.test.d.ts} +3 -1
  486. package/dist/tests/feature/task/watch-files-action.test.d.ts.map +1 -0
  487. package/dist/tests/{tasks.watch-files-action.test.js → feature/task/watch-files-action.test.js} +58 -36
  488. package/dist/tests/feature/task/watch-files-action.test.js.map +1 -0
  489. package/dist/tests/{tasks.watch-files-parameter.test.d.ts → feature/task/watch-files-parameter.test.d.ts} +3 -1
  490. package/dist/tests/feature/task/watch-files-parameter.test.d.ts.map +1 -0
  491. package/dist/tests/{tasks.watch-files-parameter.test.js → feature/task/watch-files-parameter.test.js} +64 -39
  492. package/dist/tests/feature/task/watch-files-parameter.test.js.map +1 -0
  493. package/dist/tests/feature/vcs/git-aware-completion.test.d.ts.map +1 -0
  494. package/dist/tests/{git-aware-completion.test.js → feature/vcs/git-aware-completion.test.js} +25 -11
  495. package/dist/tests/feature/vcs/git-aware-completion.test.js.map +1 -0
  496. package/dist/tests/feature/vcs/two-step-git-completion.test.d.ts.map +1 -0
  497. package/dist/tests/{two-step-git-completion.test.js → feature/vcs/two-step-git-completion.test.js} +2 -2
  498. package/dist/tests/feature/vcs/two-step-git-completion.test.js.map +1 -0
  499. package/dist/tests/feature/vcs/vcs-staging.test.d.ts.map +1 -0
  500. package/dist/tests/{vcs-staging.test.js → feature/vcs/vcs-staging.test.js} +8 -3
  501. package/dist/tests/feature/vcs/vcs-staging.test.js.map +1 -0
  502. package/dist/tests/{all-features.test.d.ts → integration/all-features.standalone.d.ts} +1 -1
  503. package/dist/tests/integration/all-features.standalone.d.ts.map +1 -0
  504. package/dist/tests/{all-features.test.js → integration/all-features.standalone.js} +7 -9
  505. package/dist/tests/integration/all-features.standalone.js.map +1 -0
  506. package/dist/tests/integration/auto-trigger-suggestions.test.d.ts +7 -0
  507. package/dist/tests/integration/auto-trigger-suggestions.test.d.ts.map +1 -0
  508. package/dist/tests/integration/auto-trigger-suggestions.test.js +331 -0
  509. package/dist/tests/integration/auto-trigger-suggestions.test.js.map +1 -0
  510. package/dist/tests/integration/decision-intelligence-e2e.test.d.ts +13 -0
  511. package/dist/tests/integration/decision-intelligence-e2e.test.d.ts.map +1 -0
  512. package/dist/tests/integration/decision-intelligence-e2e.test.js +558 -0
  513. package/dist/tests/integration/decision-intelligence-e2e.test.js.map +1 -0
  514. package/dist/tests/integration/e2e-workflow1-debug.test.d.ts +5 -0
  515. package/dist/tests/integration/e2e-workflow1-debug.test.d.ts.map +1 -0
  516. package/dist/tests/integration/e2e-workflow1-debug.test.js +99 -0
  517. package/dist/tests/integration/e2e-workflow1-debug.test.js.map +1 -0
  518. package/dist/tests/integration/hybrid-similarity-detection.test.d.ts +7 -0
  519. package/dist/tests/integration/hybrid-similarity-detection.test.d.ts.map +1 -0
  520. package/dist/tests/integration/hybrid-similarity-detection.test.js +512 -0
  521. package/dist/tests/integration/hybrid-similarity-detection.test.js.map +1 -0
  522. package/dist/tests/integration/suggest-simple.test.d.ts +5 -0
  523. package/dist/tests/integration/suggest-simple.test.d.ts.map +1 -0
  524. package/dist/tests/integration/suggest-simple.test.js +72 -0
  525. package/dist/tests/integration/suggest-simple.test.js.map +1 -0
  526. package/dist/tests/unit/universal-knex.test.d.ts +2 -0
  527. package/dist/tests/unit/universal-knex.test.d.ts.map +1 -0
  528. package/dist/tests/unit/universal-knex.test.js +250 -0
  529. package/dist/tests/unit/universal-knex.test.js.map +1 -0
  530. package/dist/tests/unit/utils/config-loader.test.d.ts.map +1 -0
  531. package/dist/tests/{config-loader.test.js → unit/utils/config-loader.test.js} +63 -42
  532. package/dist/tests/unit/utils/config-loader.test.js.map +1 -0
  533. package/dist/tests/unit/utils/project-detector.test.d.ts.map +1 -0
  534. package/dist/tests/{project-detector.test.js → unit/utils/project-detector.test.js} +1 -1
  535. package/dist/tests/unit/utils/project-detector.test.js.map +1 -0
  536. package/dist/tests/unit/utils/semver.test.d.ts +2 -0
  537. package/dist/tests/unit/utils/semver.test.d.ts.map +1 -0
  538. package/dist/tests/unit/utils/semver.test.js +72 -0
  539. package/dist/tests/unit/utils/semver.test.js.map +1 -0
  540. package/dist/tests/unit/validation/batch-validation.test.d.ts.map +1 -0
  541. package/dist/tests/{batch-validation.test.js → unit/validation/batch-validation.test.js} +2 -2
  542. package/dist/tests/unit/validation/batch-validation.test.js.map +1 -0
  543. package/dist/tests/unit/validation/parameter-validation.test.d.ts.map +1 -0
  544. package/dist/tests/{parameter-validation.test.js → unit/validation/parameter-validation.test.js} +9 -12
  545. package/dist/tests/unit/validation/parameter-validation.test.js.map +1 -0
  546. package/dist/tests/unit/validation/policy-validation.test.d.ts +15 -0
  547. package/dist/tests/unit/validation/policy-validation.test.d.ts.map +1 -0
  548. package/dist/tests/unit/validation/policy-validation.test.js +343 -0
  549. package/dist/tests/unit/validation/policy-validation.test.js.map +1 -0
  550. package/dist/tests/utils/db-config.d.ts +21 -0
  551. package/dist/tests/utils/db-config.d.ts.map +1 -0
  552. package/dist/tests/utils/db-config.js +59 -0
  553. package/dist/tests/utils/db-config.js.map +1 -0
  554. package/dist/tests/utils/db-import.d.ts +11 -0
  555. package/dist/tests/utils/db-import.d.ts.map +1 -0
  556. package/dist/tests/utils/db-import.js +38 -0
  557. package/dist/tests/utils/db-import.js.map +1 -0
  558. package/dist/tests/utils/db-schema.d.ts +58 -0
  559. package/dist/tests/utils/db-schema.d.ts.map +1 -0
  560. package/dist/tests/utils/db-schema.js +218 -0
  561. package/dist/tests/utils/db-schema.js.map +1 -0
  562. package/dist/tests/utils/db-seeding.d.ts +18 -0
  563. package/dist/tests/utils/db-seeding.d.ts.map +1 -0
  564. package/dist/tests/utils/db-seeding.js +54 -0
  565. package/dist/tests/utils/db-seeding.js.map +1 -0
  566. package/dist/tests/utils/index.d.ts +20 -0
  567. package/dist/tests/utils/index.d.ts.map +1 -0
  568. package/dist/tests/utils/index.js +26 -0
  569. package/dist/tests/utils/index.js.map +1 -0
  570. package/dist/tests/utils/task-helpers.d.ts +67 -0
  571. package/dist/tests/utils/task-helpers.d.ts.map +1 -0
  572. package/dist/tests/utils/task-helpers.js +151 -0
  573. package/dist/tests/utils/task-helpers.js.map +1 -0
  574. package/dist/tests/utils/test-helpers.d.ts +93 -1
  575. package/dist/tests/utils/test-helpers.d.ts.map +1 -1
  576. package/dist/tests/utils/test-helpers.js +232 -64
  577. package/dist/tests/utils/test-helpers.js.map +1 -1
  578. package/dist/tests/utils/test-lifecycle.d.ts +52 -0
  579. package/dist/tests/utils/test-lifecycle.d.ts.map +1 -0
  580. package/dist/tests/utils/test-lifecycle.js +88 -0
  581. package/dist/tests/utils/test-lifecycle.js.map +1 -0
  582. package/dist/tools/context/actions/analytics.d.ts +88 -0
  583. package/dist/tools/context/actions/analytics.d.ts.map +1 -0
  584. package/dist/tools/context/actions/analytics.js +92 -0
  585. package/dist/tools/context/actions/analytics.js.map +1 -0
  586. package/dist/tools/context/actions/create-policy.d.ts +38 -0
  587. package/dist/tools/context/actions/create-policy.d.ts.map +1 -0
  588. package/dist/tools/context/actions/create-policy.js +87 -0
  589. package/dist/tools/context/actions/create-policy.js.map +1 -0
  590. package/dist/tools/context/actions/create-template.js +2 -2
  591. package/dist/tools/context/actions/create-template.js.map +1 -1
  592. package/dist/tools/context/actions/get.d.ts.map +1 -1
  593. package/dist/tools/context/actions/get.js +5 -4
  594. package/dist/tools/context/actions/get.js.map +1 -1
  595. package/dist/tools/context/actions/has-updates.d.ts.map +1 -1
  596. package/dist/tools/context/actions/has-updates.js +4 -19
  597. package/dist/tools/context/actions/has-updates.js.map +1 -1
  598. package/dist/tools/context/actions/list-policies.d.ts +31 -0
  599. package/dist/tools/context/actions/list-policies.d.ts.map +1 -0
  600. package/dist/tools/context/actions/list-policies.js +55 -0
  601. package/dist/tools/context/actions/list-policies.js.map +1 -0
  602. package/dist/tools/context/actions/list-templates.d.ts.map +1 -1
  603. package/dist/tools/context/actions/list-templates.js +2 -1
  604. package/dist/tools/context/actions/list-templates.js.map +1 -1
  605. package/dist/tools/context/actions/list.d.ts +1 -1
  606. package/dist/tools/context/actions/list.d.ts.map +1 -1
  607. package/dist/tools/context/actions/list.js +24 -18
  608. package/dist/tools/context/actions/list.js.map +1 -1
  609. package/dist/tools/context/actions/search-advanced.d.ts.map +1 -1
  610. package/dist/tools/context/actions/search-advanced.js +61 -42
  611. package/dist/tools/context/actions/search-advanced.js.map +1 -1
  612. package/dist/tools/context/actions/search-layer.d.ts.map +1 -1
  613. package/dist/tools/context/actions/search-layer.js +16 -7
  614. package/dist/tools/context/actions/search-layer.js.map +1 -1
  615. package/dist/tools/context/actions/search-tags.d.ts.map +1 -1
  616. package/dist/tools/context/actions/search-tags.js +22 -14
  617. package/dist/tools/context/actions/search-tags.js.map +1 -1
  618. package/dist/tools/context/actions/set-from-policy.d.ts +28 -0
  619. package/dist/tools/context/actions/set-from-policy.d.ts.map +1 -0
  620. package/dist/tools/context/actions/set-from-policy.js +54 -0
  621. package/dist/tools/context/actions/set-from-policy.js.map +1 -0
  622. package/dist/tools/context/actions/set-from-template.d.ts.map +1 -1
  623. package/dist/tools/context/actions/set-from-template.js +2 -1
  624. package/dist/tools/context/actions/set-from-template.js.map +1 -1
  625. package/dist/tools/context/index.d.ts +5 -0
  626. package/dist/tools/context/index.d.ts.map +1 -1
  627. package/dist/tools/context/index.js +5 -0
  628. package/dist/tools/context/index.js.map +1 -1
  629. package/dist/tools/context/internal/queries.d.ts.map +1 -1
  630. package/dist/tools/context/internal/queries.js +551 -31
  631. package/dist/tools/context/internal/queries.js.map +1 -1
  632. package/dist/tools/context/internal/validation.d.ts +4 -0
  633. package/dist/tools/context/internal/validation.d.ts.map +1 -1
  634. package/dist/tools/context/internal/validation.js +13 -0
  635. package/dist/tools/context/internal/validation.js.map +1 -1
  636. package/dist/tools/help/actions/query-action.js +1 -1
  637. package/dist/tools/help/actions/query-action.js.map +1 -1
  638. package/dist/tools/help/actions/query-params.js +1 -1
  639. package/dist/tools/help/actions/query-params.js.map +1 -1
  640. package/dist/tools/help/actions/query-tool.js +1 -1
  641. package/dist/tools/help/actions/query-tool.js.map +1 -1
  642. package/dist/tools/help-queries.d.ts +12 -12
  643. package/dist/tools/help-queries.d.ts.map +1 -1
  644. package/dist/tools/help-queries.js +121 -140
  645. package/dist/tools/help-queries.js.map +1 -1
  646. package/dist/tools/suggest/actions/by-context.d.ts +28 -0
  647. package/dist/tools/suggest/actions/by-context.d.ts.map +1 -0
  648. package/dist/tools/suggest/actions/by-context.js +68 -0
  649. package/dist/tools/suggest/actions/by-context.js.map +1 -0
  650. package/dist/tools/suggest/actions/by-key.d.ts +20 -0
  651. package/dist/tools/suggest/actions/by-key.d.ts.map +1 -0
  652. package/dist/tools/suggest/actions/by-key.js +55 -0
  653. package/dist/tools/suggest/actions/by-key.js.map +1 -0
  654. package/dist/tools/suggest/actions/by-tags.d.ts +23 -0
  655. package/dist/tools/suggest/actions/by-tags.d.ts.map +1 -0
  656. package/dist/tools/suggest/actions/by-tags.js +58 -0
  657. package/dist/tools/suggest/actions/by-tags.js.map +1 -0
  658. package/dist/tools/suggest/actions/check-duplicate.d.ts +20 -0
  659. package/dist/tools/suggest/actions/check-duplicate.d.ts.map +1 -0
  660. package/dist/tools/suggest/actions/check-duplicate.js +59 -0
  661. package/dist/tools/suggest/actions/check-duplicate.js.map +1 -0
  662. package/dist/tools/suggest/help/help.d.ts +5 -0
  663. package/dist/tools/suggest/help/help.d.ts.map +1 -0
  664. package/dist/tools/suggest/help/help.js +50 -0
  665. package/dist/tools/suggest/help/help.js.map +1 -0
  666. package/dist/tools/suggest/index.d.ts +18 -0
  667. package/dist/tools/suggest/index.d.ts.map +1 -0
  668. package/dist/tools/suggest/index.js +55 -0
  669. package/dist/tools/suggest/index.js.map +1 -0
  670. package/dist/tools/suggest/internal/queries.d.ts +60 -0
  671. package/dist/tools/suggest/internal/queries.d.ts.map +1 -0
  672. package/dist/tools/suggest/internal/queries.js +154 -0
  673. package/dist/tools/suggest/internal/queries.js.map +1 -0
  674. package/dist/tools/suggest/types.d.ts +70 -0
  675. package/dist/tools/suggest/types.d.ts.map +1 -0
  676. package/dist/tools/suggest/types.js +5 -0
  677. package/dist/tools/suggest/types.js.map +1 -0
  678. package/dist/tools/tasks/actions/link-pruned-file.d.ts +1 -0
  679. package/dist/tools/tasks/actions/link-pruned-file.d.ts.map +1 -1
  680. package/dist/tools/tasks/actions/link-pruned-file.js +7 -2
  681. package/dist/tools/tasks/actions/link-pruned-file.js.map +1 -1
  682. package/dist/tools/tasks/actions/link.d.ts.map +1 -1
  683. package/dist/tools/tasks/actions/link.js +4 -2
  684. package/dist/tools/tasks/actions/link.js.map +1 -1
  685. package/dist/tools/tasks/actions/list.d.ts.map +1 -1
  686. package/dist/tools/tasks/actions/list.js +37 -35
  687. package/dist/tools/tasks/actions/list.js.map +1 -1
  688. package/dist/tools/use_case/actions/search.d.ts +1 -1
  689. package/dist/tools/use_case/actions/search.d.ts.map +1 -1
  690. package/dist/tools/use_case/actions/search.js +31 -40
  691. package/dist/tools/use_case/actions/search.js.map +1 -1
  692. package/dist/types/actions.d.ts +10 -0
  693. package/dist/types/actions.d.ts.map +1 -1
  694. package/dist/types/decision/params.d.ts +7 -0
  695. package/dist/types/decision/params.d.ts.map +1 -1
  696. package/dist/types/decision/responses.d.ts +38 -0
  697. package/dist/types/decision/responses.d.ts.map +1 -1
  698. package/dist/types/view-entities.d.ts +1 -0
  699. package/dist/types/view-entities.d.ts.map +1 -1
  700. package/dist/types.d.ts +33 -1
  701. package/dist/types.d.ts.map +1 -1
  702. package/dist/utils/action-specs/decision-specs.js +3 -3
  703. package/dist/utils/action-specs/decision-specs.js.map +1 -1
  704. package/dist/utils/activity-logging.d.ts.map +1 -1
  705. package/dist/utils/activity-logging.js +7 -0
  706. package/dist/utils/activity-logging.js.map +1 -1
  707. package/dist/utils/db-aggregations.d.ts +88 -0
  708. package/dist/utils/db-aggregations.d.ts.map +1 -0
  709. package/dist/utils/db-aggregations.js +158 -0
  710. package/dist/utils/db-aggregations.js.map +1 -0
  711. package/dist/utils/file-pruning.d.ts +37 -13
  712. package/dist/utils/file-pruning.d.ts.map +1 -1
  713. package/dist/utils/file-pruning.js +93 -84
  714. package/dist/utils/file-pruning.js.map +1 -1
  715. package/dist/utils/policy-validator.d.ts +37 -0
  716. package/dist/utils/policy-validator.d.ts.map +1 -0
  717. package/dist/utils/policy-validator.js +240 -0
  718. package/dist/utils/policy-validator.js.map +1 -0
  719. package/dist/utils/quality-checks.d.ts +7 -7
  720. package/dist/utils/quality-checks.d.ts.map +1 -1
  721. package/dist/utils/quality-checks.js +18 -21
  722. package/dist/utils/quality-checks.js.map +1 -1
  723. package/dist/utils/semver.d.ts +50 -0
  724. package/dist/utils/semver.d.ts.map +1 -0
  725. package/dist/utils/semver.js +78 -0
  726. package/dist/utils/semver.js.map +1 -0
  727. package/dist/utils/sql-dump/schema/tables.d.ts.map +1 -1
  728. package/dist/utils/sql-dump/schema/tables.js +125 -7
  729. package/dist/utils/sql-dump/schema/tables.js.map +1 -1
  730. package/dist/utils/sql-dump/schema/views.d.ts.map +1 -1
  731. package/dist/utils/sql-dump/schema/views.js +6 -0
  732. package/dist/utils/sql-dump/schema/views.js.map +1 -1
  733. package/dist/utils/suggestion-scorer.d.ts +62 -0
  734. package/dist/utils/suggestion-scorer.d.ts.map +1 -0
  735. package/dist/utils/suggestion-scorer.js +169 -0
  736. package/dist/utils/suggestion-scorer.js.map +1 -0
  737. package/dist/utils/tag-parser.d.ts +52 -0
  738. package/dist/utils/tag-parser.d.ts.map +1 -0
  739. package/dist/utils/tag-parser.js +65 -0
  740. package/dist/utils/tag-parser.js.map +1 -0
  741. package/dist/utils/task-stale-detection.d.ts.map +1 -1
  742. package/dist/utils/task-stale-detection.js +40 -4
  743. package/dist/utils/task-stale-detection.js.map +1 -1
  744. package/dist/utils/token-logging.d.ts +9 -9
  745. package/dist/utils/token-logging.d.ts.map +1 -1
  746. package/dist/utils/token-logging.js +36 -38
  747. package/dist/utils/token-logging.js.map +1 -1
  748. package/dist/utils/universal-knex.d.ts +169 -0
  749. package/dist/utils/universal-knex.d.ts.map +1 -0
  750. package/dist/utils/universal-knex.js +318 -0
  751. package/dist/utils/universal-knex.js.map +1 -0
  752. package/dist/utils/validators.d.ts +2 -2
  753. package/dist/utils/validators.d.ts.map +1 -1
  754. package/dist/utils/validators.js +3 -2
  755. package/dist/utils/validators.js.map +1 -1
  756. package/dist/utils/vcs-adapter.d.ts.map +1 -1
  757. package/dist/utils/vcs-adapter.js +21 -14
  758. package/dist/utils/vcs-adapter.js.map +1 -1
  759. package/dist/utils/view-queries.d.ts +11 -3
  760. package/dist/utils/view-queries.d.ts.map +1 -1
  761. package/dist/utils/view-queries.js +122 -87
  762. package/dist/utils/view-queries.js.map +1 -1
  763. package/dist/watcher/file-watcher.d.ts.map +1 -1
  764. package/dist/watcher/file-watcher.js +99 -84
  765. package/dist/watcher/file-watcher.js.map +1 -1
  766. package/docs/BEST_PRACTICES.md +10 -0
  767. package/docs/DECISION_CONTEXT.md +190 -1
  768. package/docs/DECISION_INTELLIGENCE.md +594 -0
  769. package/docs/MIGRATION_GUIDE_V3.9.0.md +371 -0
  770. package/docs/SLASH_COMMANDS.md +652 -0
  771. package/docs/TOOL_REFERENCE.md +164 -22
  772. package/docs/TOOL_SELECTION.md +16 -2
  773. package/docs/WORKFLOWS.md +163 -0
  774. package/docs/changelogs/CHANGELOG_ARCHIVE_v3.4_and_older.md +296 -0
  775. package/package.json +121 -96
  776. package/scripts/check-cross-db-patterns.sh +105 -0
  777. package/scripts/filter-test-output.js +74 -0
  778. package/scripts/verify-migrations.sh +129 -0
  779. package/dist/tests/all-features.test.d.ts.map +0 -1
  780. package/dist/tests/all-features.test.js.map +0 -1
  781. package/dist/tests/batch-validation-comprehensive.test.d.ts.map +0 -1
  782. package/dist/tests/batch-validation-comprehensive.test.js.map +0 -1
  783. package/dist/tests/batch-validation-integration.test.d.ts.map +0 -1
  784. package/dist/tests/batch-validation-integration.test.js.map +0 -1
  785. package/dist/tests/batch-validation.test.d.ts.map +0 -1
  786. package/dist/tests/batch-validation.test.js.map +0 -1
  787. package/dist/tests/config-loader.test.d.ts.map +0 -1
  788. package/dist/tests/config-loader.test.js.map +0 -1
  789. package/dist/tests/connection-manager-integration.test.d.ts.map +0 -1
  790. package/dist/tests/connection-manager-integration.test.js.map +0 -1
  791. package/dist/tests/connection-manager.test.d.ts.map +0 -1
  792. package/dist/tests/connection-manager.test.js.map +0 -1
  793. package/dist/tests/context-modular.test.d.ts.map +0 -1
  794. package/dist/tests/context-modular.test.js.map +0 -1
  795. package/dist/tests/decision-batch-validation.test.d.ts.map +0 -1
  796. package/dist/tests/decision-batch-validation.test.js.map +0 -1
  797. package/dist/tests/dump-import.test.d.ts.map +0 -1
  798. package/dist/tests/dump-import.test.js.map +0 -1
  799. package/dist/tests/git-aware-completion.test.d.ts.map +0 -1
  800. package/dist/tests/git-aware-completion.test.js.map +0 -1
  801. package/dist/tests/help-system.test.d.ts.map +0 -1
  802. package/dist/tests/help-system.test.js.map +0 -1
  803. package/dist/tests/migration-idempotency.test.d.ts +0 -2
  804. package/dist/tests/migration-idempotency.test.d.ts.map +0 -1
  805. package/dist/tests/migration-idempotency.test.js.map +0 -1
  806. package/dist/tests/migration-upgrade-paths.test.d.ts +0 -2
  807. package/dist/tests/migration-upgrade-paths.test.d.ts.map +0 -1
  808. package/dist/tests/migration-upgrade-paths.test.js.map +0 -1
  809. package/dist/tests/multi-project-migration.test.d.ts.map +0 -1
  810. package/dist/tests/multi-project-migration.test.js.map +0 -1
  811. package/dist/tests/multi-project.test.d.ts.map +0 -1
  812. package/dist/tests/multi-project.test.js.map +0 -1
  813. package/dist/tests/parameter-validation.test.d.ts.map +0 -1
  814. package/dist/tests/parameter-validation.test.js.map +0 -1
  815. package/dist/tests/project-detector.test.d.ts.map +0 -1
  816. package/dist/tests/project-detector.test.js.map +0 -1
  817. package/dist/tests/schema-migration.test.d.ts.map +0 -1
  818. package/dist/tests/schema-migration.test.js.map +0 -1
  819. package/dist/tests/sql-dump-converters.test.d.ts.map +0 -1
  820. package/dist/tests/sql-dump-converters.test.js.map +0 -1
  821. package/dist/tests/sql-dump-cross-database.test.d.ts.map +0 -1
  822. package/dist/tests/sql-dump-cross-database.test.js.map +0 -1
  823. package/dist/tests/sql-dump-default-conversions.test.d.ts.map +0 -1
  824. package/dist/tests/sql-dump-default-conversions.test.js.map +0 -1
  825. package/dist/tests/sql-dump-fk-constraints.test.d.ts.map +0 -1
  826. package/dist/tests/sql-dump-fk-constraints.test.js.map +0 -1
  827. package/dist/tests/sql-dump-indexes.test.d.ts.map +0 -1
  828. package/dist/tests/sql-dump-indexes.test.js.map +0 -1
  829. package/dist/tests/sql-dump-integration.test.d.ts.map +0 -1
  830. package/dist/tests/sql-dump-integration.test.js.map +0 -1
  831. package/dist/tests/sql-dump-table-ordering.test.d.ts +0 -8
  832. package/dist/tests/sql-dump-table-ordering.test.d.ts.map +0 -1
  833. package/dist/tests/sql-dump-table-ordering.test.js.map +0 -1
  834. package/dist/tests/tasks.auto-pruning-decision-link.test.d.ts.map +0 -1
  835. package/dist/tests/tasks.auto-pruning-decision-link.test.js.map +0 -1
  836. package/dist/tests/tasks.auto-pruning-partial.test.d.ts.map +0 -1
  837. package/dist/tests/tasks.auto-pruning-partial.test.js.map +0 -1
  838. package/dist/tests/tasks.auto-pruning-persistence.test.d.ts.map +0 -1
  839. package/dist/tests/tasks.auto-pruning-persistence.test.js.map +0 -1
  840. package/dist/tests/tasks.auto-pruning-safety.test.d.ts.map +0 -1
  841. package/dist/tests/tasks.auto-pruning-safety.test.js.map +0 -1
  842. package/dist/tests/tasks.dependencies.test.d.ts.map +0 -1
  843. package/dist/tests/tasks.dependencies.test.js.map +0 -1
  844. package/dist/tests/tasks.file-actions-integration.test.d.ts.map +0 -1
  845. package/dist/tests/tasks.file-actions-integration.test.js.map +0 -1
  846. package/dist/tests/tasks.file-actions-validation.test.d.ts.map +0 -1
  847. package/dist/tests/tasks.file-actions-validation.test.js.map +0 -1
  848. package/dist/tests/tasks.link-file-backward-compat.test.d.ts.map +0 -1
  849. package/dist/tests/tasks.link-file-backward-compat.test.js.map +0 -1
  850. package/dist/tests/tasks.watch-files-action.test.d.ts.map +0 -1
  851. package/dist/tests/tasks.watch-files-action.test.js.map +0 -1
  852. package/dist/tests/tasks.watch-files-parameter.test.d.ts.map +0 -1
  853. package/dist/tests/tasks.watch-files-parameter.test.js.map +0 -1
  854. package/dist/tests/two-step-git-completion.test.d.ts.map +0 -1
  855. package/dist/tests/two-step-git-completion.test.js.map +0 -1
  856. package/dist/tests/type-conversion.test.d.ts.map +0 -1
  857. package/dist/tests/type-conversion.test.js.map +0 -1
  858. package/dist/tests/vcs-staging.test.d.ts.map +0 -1
  859. package/dist/tests/vcs-staging.test.js.map +0 -1
  860. package/dist/utils/sql-dump.d.ts +0 -102
  861. package/dist/utils/sql-dump.d.ts.map +0 -1
  862. package/dist/utils/sql-dump.js +0 -1590
  863. package/dist/utils/sql-dump.js.map +0 -1
  864. /package/dist/tests/{connection-manager-integration.test.d.ts → database/connection/connection-manager-integration.test.d.ts} +0 -0
  865. /package/dist/tests/{connection-manager.test.d.ts → database/connection/connection-manager.test.d.ts} +0 -0
  866. /package/dist/tests/{multi-project.test.d.ts → database/multi-project/multi-project.test.d.ts} +0 -0
  867. /package/dist/tests/{type-conversion.test.d.ts → database/sql-dump/type-conversion.test.d.ts} +0 -0
  868. /package/dist/tests/{dump-import.test.d.ts → docker/dump-import.test.d.ts} +0 -0
  869. /package/dist/tests/{multi-project-migration.test.d.ts → docker/multi-project-migration.test.d.ts} +0 -0
  870. /package/dist/tests/{schema-migration.test.d.ts → docker/schema-migration.test.d.ts} +0 -0
  871. /package/dist/tests/{batch-validation-comprehensive.test.d.ts → feature/decision/batch-validation-comprehensive.test.d.ts} +0 -0
  872. /package/dist/tests/{batch-validation-integration.test.d.ts → feature/decision/batch-validation-integration.test.d.ts} +0 -0
  873. /package/dist/tests/{context-modular.test.d.ts → feature/decision/context-modular.test.d.ts} +0 -0
  874. /package/dist/tests/{help-system.test.d.ts → feature/help/help-system.test.d.ts} +0 -0
  875. /package/dist/tests/{git-aware-completion.test.d.ts → feature/vcs/git-aware-completion.test.d.ts} +0 -0
  876. /package/dist/tests/{two-step-git-completion.test.d.ts → feature/vcs/two-step-git-completion.test.d.ts} +0 -0
  877. /package/dist/tests/{vcs-staging.test.d.ts → feature/vcs/vcs-staging.test.d.ts} +0 -0
  878. /package/dist/tests/{config-loader.test.d.ts → unit/utils/config-loader.test.d.ts} +0 -0
  879. /package/dist/tests/{project-detector.test.d.ts → unit/utils/project-detector.test.d.ts} +0 -0
  880. /package/dist/tests/{batch-validation.test.d.ts → unit/validation/batch-validation.test.d.ts} +0 -0
  881. /package/dist/tests/{parameter-validation.test.d.ts → unit/validation/parameter-validation.test.d.ts} +0 -0
@@ -1,31 +1,55 @@
1
1
  /**
2
2
  * File pruning utilities for v3.5.0 Auto-Pruning feature
3
3
  * Automatically removes non-existent watched files with audit trail
4
+ *
5
+ * UPDATED v3.7.0: Added project_id support for multi-project compatibility
4
6
  */
5
7
  import { existsSync } from 'fs';
6
8
  import { join } from 'path';
9
+ import { getProjectContext } from './project-context.js';
7
10
  /**
8
11
  * Prune non-existent files from a task's watch list
9
12
  * Records pruned files to audit table for project archaeology
10
13
  *
14
+ * @deprecated Use pruneNonExistentFilesKnex instead
15
+ *
11
16
  * Quality gate enforcement:
12
17
  * - If ALL watched files are non-existent → throw error (prevents zero-work completion)
13
18
  * - If SOME watched files are non-existent → prune them and continue
14
19
  *
15
- * @param db - Database instance
20
+ * @param adapter - Database adapter
16
21
  * @param taskId - Task ID to prune files for
17
22
  * @param projectRoot - Project root directory (default: process.cwd())
18
23
  * @returns Object with pruned count and remaining count
19
24
  * @throws Error if ALL files are non-existent (safety check)
20
25
  */
21
- export function pruneNonExistentFiles(db, taskId, projectRoot = process.cwd()) {
26
+ export async function pruneNonExistentFiles(adapter, taskId, projectRoot = process.cwd()) {
27
+ const knex = adapter.getKnex();
28
+ // Delegate to Knex version within a transaction
29
+ return await knex.transaction(async (trx) => {
30
+ return await pruneNonExistentFilesKnex(trx, taskId, projectRoot);
31
+ });
32
+ }
33
+ /**
34
+ * Prune non-existent files from a task's watch list (Knex.js version)
35
+ * Records pruned files to audit table for project archaeology
36
+ *
37
+ * Quality gate enforcement:
38
+ * - If ALL watched files are non-existent → throw error (prevents zero-work completion)
39
+ * - If SOME watched files are non-existent → prune them and continue
40
+ *
41
+ * @param trx - Knex transaction instance
42
+ * @param taskId - Task ID to prune files for
43
+ * @param projectRoot - Project root directory (default: process.cwd())
44
+ * @returns Object with pruned count, remaining count, and pruned paths
45
+ * @throws Error if ALL files are non-existent (safety check)
46
+ */
47
+ export async function pruneNonExistentFilesKnex(trx, taskId, projectRoot = process.cwd()) {
22
48
  // 1. Get all watched files for this task
23
- const watchedFiles = db.prepare(`
24
- SELECT f.id as file_id, f.path
25
- FROM t_task_file_links tfl
26
- JOIN m_files f ON tfl.file_id = f.id
27
- WHERE tfl.task_id = ?
28
- `).all(taskId);
49
+ const watchedFiles = await trx('t_task_file_links as tfl')
50
+ .join('m_files as f', 'tfl.file_id', 'f.id')
51
+ .where('tfl.task_id', taskId)
52
+ .select('f.id as file_id', 'f.path');
29
53
  if (watchedFiles.length === 0) {
30
54
  // No watched files - nothing to prune
31
55
  return { prunedCount: 0, remainingCount: 0, prunedPaths: [] };
@@ -55,22 +79,24 @@ export function pruneNonExistentFiles(db, taskId, projectRoot = process.cwd()) {
55
79
  prunedPaths: [],
56
80
  };
57
81
  }
58
- // 5. Prune non-existent files in a transaction
59
- db.transaction(() => {
60
- const insertPruned = db.prepare(`
61
- INSERT INTO t_task_pruned_files (task_id, file_path, pruned_ts)
62
- VALUES (?, ?, unixepoch())
63
- `);
64
- const deleteLink = db.prepare(`
65
- DELETE FROM t_task_file_links
66
- WHERE task_id = ? AND file_id = ?
67
- `);
68
- // Record each pruned file to audit table and remove link
69
- for (const file of nonExistentFiles) {
70
- insertPruned.run(taskId, file.path);
71
- deleteLink.run(taskId, file.file_id);
72
- }
73
- })();
82
+ // 5. Prune non-existent files (transaction already provided)
83
+ // Get project_id (required after v3.7.0 multi-project support)
84
+ const projectId = getProjectContext().getProjectId();
85
+ const currentTs = Math.floor(Date.now() / 1000);
86
+ // Record each pruned file to audit table and remove link
87
+ for (const file of nonExistentFiles) {
88
+ // Insert audit record
89
+ await trx('t_task_pruned_files').insert({
90
+ task_id: taskId,
91
+ file_path: file.path,
92
+ pruned_ts: currentTs,
93
+ project_id: projectId,
94
+ });
95
+ // Remove link
96
+ await trx('t_task_file_links')
97
+ .where({ task_id: taskId, file_id: file.file_id })
98
+ .delete();
99
+ }
74
100
  return {
75
101
  prunedCount: nonExistentFiles.length,
76
102
  remainingCount: existingFiles.length,
@@ -80,106 +106,89 @@ export function pruneNonExistentFiles(db, taskId, projectRoot = process.cwd()) {
80
106
  /**
81
107
  * Get pruned files for a task
82
108
  *
83
- * @param db - Database instance
109
+ * @param adapter - Database adapter
84
110
  * @param taskId - Task ID
85
111
  * @param limit - Maximum number of records (default: 100)
86
112
  * @returns Array of pruned file records
87
113
  */
88
- export function getPrunedFiles(db, taskId, limit = 100) {
89
- const rows = db.prepare(`
90
- SELECT
91
- tpf.id,
92
- tpf.file_path,
93
- datetime(tpf.pruned_ts, 'unixepoch') as pruned_at,
94
- k.key as linked_decision
95
- FROM t_task_pruned_files tpf
96
- LEFT JOIN m_context_keys k ON tpf.linked_decision_key_id = k.id
97
- WHERE tpf.task_id = ?
98
- ORDER BY tpf.pruned_ts DESC
99
- LIMIT ?
100
- `).all(taskId, limit);
114
+ export async function getPrunedFiles(adapter, taskId, limit = 100) {
115
+ const knex = adapter.getKnex();
116
+ const rows = await knex('t_task_pruned_files as tpf')
117
+ .leftJoin('m_context_keys as k', 'tpf.linked_decision_key_id', 'k.id')
118
+ .where('tpf.task_id', taskId)
119
+ .select('tpf.id', 'tpf.file_path', knex.raw(`datetime(tpf.pruned_ts, 'unixepoch') as pruned_at`), 'k.key as linked_decision')
120
+ .orderBy('tpf.pruned_ts', 'desc')
121
+ .limit(limit);
101
122
  return rows;
102
123
  }
103
124
  /**
104
125
  * Link a pruned file to a decision (for WHY reasoning)
105
126
  *
106
- * @param db - Database instance
127
+ * @param adapter - Database adapter
107
128
  * @param prunedFileId - Pruned file record ID
108
129
  * @param decisionKey - Decision key to link
109
130
  * @throws Error if pruned file or decision not found
110
131
  */
111
- export function linkPrunedFileToDecision(db, prunedFileId, decisionKey) {
132
+ export async function linkPrunedFileToDecision(adapter, prunedFileId, decisionKey) {
133
+ const knex = adapter.getKnex();
112
134
  // 1. Get decision key_id
113
- const decision = db.prepare(`
114
- SELECT k.id as key_id
115
- FROM m_context_keys k
116
- WHERE k.key = ? AND EXISTS (
117
- SELECT 1 FROM t_decisions d WHERE d.key_id = k.id
118
- )
119
- `).get(decisionKey);
135
+ const decision = await knex('m_context_keys as k')
136
+ .whereExists(function () {
137
+ this.select('*')
138
+ .from('t_decisions as d')
139
+ .whereRaw('d.key_id = k.id');
140
+ })
141
+ .where('k.key', decisionKey)
142
+ .select('k.id as key_id')
143
+ .first();
120
144
  if (!decision) {
121
145
  throw new Error(`Decision not found: ${decisionKey}`);
122
146
  }
123
147
  // 2. Check if pruned file exists
124
- const prunedFile = db.prepare(`
125
- SELECT id FROM t_task_pruned_files WHERE id = ?
126
- `).get(prunedFileId);
148
+ const prunedFile = await knex('t_task_pruned_files')
149
+ .where({ id: prunedFileId })
150
+ .select('id')
151
+ .first();
127
152
  if (!prunedFile) {
128
153
  throw new Error(`Pruned file record not found: ${prunedFileId}`);
129
154
  }
130
155
  // 3. Update the link
131
- const result = db.prepare(`
132
- UPDATE t_task_pruned_files
133
- SET linked_decision_key_id = ?
134
- WHERE id = ?
135
- `).run(decision.key_id, prunedFileId);
136
- if (result.changes === 0) {
156
+ const result = await knex('t_task_pruned_files')
157
+ .where({ id: prunedFileId })
158
+ .update({ linked_decision_key_id: decision.key_id });
159
+ if (result === 0) {
137
160
  throw new Error(`Failed to link pruned file #${prunedFileId} to decision ${decisionKey}`);
138
161
  }
139
162
  }
140
163
  /**
141
164
  * Get all pruned files across all tasks (for audit purposes)
142
165
  *
143
- * @param db - Database instance
166
+ * @param adapter - Database adapter
144
167
  * @param filters - Optional filters
145
168
  * @returns Array of pruned file records with task info
146
169
  */
147
- export function getAllPrunedFiles(db, filters) {
148
- let query = `
149
- SELECT
150
- tpf.id,
151
- tpf.task_id,
152
- t.title as task_title,
153
- tpf.file_path,
154
- datetime(tpf.pruned_ts, 'unixepoch') as pruned_at,
155
- k.key as linked_decision
156
- FROM t_task_pruned_files tpf
157
- JOIN t_tasks t ON tpf.task_id = t.id
158
- LEFT JOIN m_context_keys k ON tpf.linked_decision_key_id = k.id
159
- WHERE 1=1
160
- `;
161
- const params = [];
170
+ export async function getAllPrunedFiles(adapter, filters) {
171
+ const knex = adapter.getKnex();
172
+ let query = knex('t_task_pruned_files as tpf')
173
+ .join('t_tasks as t', 'tpf.task_id', 't.id')
174
+ .leftJoin('m_context_keys as k', 'tpf.linked_decision_key_id', 'k.id')
175
+ .select('tpf.id', 'tpf.task_id', 't.title as task_title', 'tpf.file_path', knex.raw(`datetime(tpf.pruned_ts, 'unixepoch') as pruned_at`), 'k.key as linked_decision');
162
176
  if (filters?.taskId !== undefined) {
163
- query += ' AND tpf.task_id = ?';
164
- params.push(filters.taskId);
177
+ query = query.where('tpf.task_id', filters.taskId);
165
178
  }
166
179
  if (filters?.linkedDecision) {
167
- query += ' AND k.key = ?';
168
- params.push(filters.linkedDecision);
180
+ query = query.where('k.key', filters.linkedDecision);
169
181
  }
170
182
  if (filters?.since !== undefined) {
171
- query += ' AND tpf.pruned_ts >= ?';
172
- params.push(filters.since);
183
+ query = query.where('tpf.pruned_ts', '>=', filters.since);
173
184
  }
174
- query += ' ORDER BY tpf.pruned_ts DESC';
185
+ query = query.orderBy('tpf.pruned_ts', 'desc');
175
186
  if (filters?.limit) {
176
- query += ' LIMIT ?';
177
- params.push(filters.limit);
187
+ query = query.limit(filters.limit);
178
188
  }
179
189
  if (filters?.offset) {
180
- query += ' OFFSET ?';
181
- params.push(filters.offset);
190
+ query = query.offset(filters.offset);
182
191
  }
183
- return db.prepare(query).all(...params);
192
+ return await query;
184
193
  }
185
194
  //# sourceMappingURL=file-pruning.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-pruning.js","sourceRoot":"","sources":["../../src/utils/file-pruning.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-pruning.js","sourceRoot":"","sources":["../../src/utils/file-pruning.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Policy Validator - Decision Intelligence System v3.9.0
3
+ *
4
+ * Validates decisions against policy rules for:
5
+ * - Pattern matching (CVE IDs, semver, etc.)
6
+ * - Required field enforcement
7
+ * - Quality gate checking
8
+ *
9
+ * Task 401: Implement policy validation logic
10
+ * Dependencies: Task 398 (migration complete)
11
+ */
12
+ import type { DatabaseAdapter } from '../adapters/index.js';
13
+ import type { Knex } from 'knex';
14
+ /**
15
+ * Validation result structure
16
+ */
17
+ export interface ValidationResult {
18
+ valid: boolean;
19
+ violations: string[];
20
+ matchedPolicy?: {
21
+ id: number;
22
+ name: string;
23
+ category: string | null;
24
+ };
25
+ }
26
+ /**
27
+ * Validate a decision against applicable policies
28
+ *
29
+ * @param adapter - Database adapter
30
+ * @param key - Decision key (for pattern matching)
31
+ * @param value - Decision value (for completeness checking)
32
+ * @param metadata - Decision metadata (rationale, alternatives, etc.)
33
+ * @param trx - Optional Knex transaction context (prevents connection pool exhaustion)
34
+ * @returns Validation result with violations or success
35
+ */
36
+ export declare function validateAgainstPolicies(adapter: DatabaseAdapter, key: string, value: string | number, metadata?: Record<string, any>, trx?: Knex.Transaction): Promise<ValidationResult>;
37
+ //# sourceMappingURL=policy-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-validator.d.ts","sourceRoot":"","sources":["../../src/utils/policy-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE;QACd,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,CAAC;CACH;AA6BD;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,eAAe,EACxB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAClC,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAyF3B"}
@@ -0,0 +1,240 @@
1
+ /**
2
+ * Policy Validator - Decision Intelligence System v3.9.0
3
+ *
4
+ * Validates decisions against policy rules for:
5
+ * - Pattern matching (CVE IDs, semver, etc.)
6
+ * - Required field enforcement
7
+ * - Quality gate checking
8
+ *
9
+ * Task 401: Implement policy validation logic
10
+ * Dependencies: Task 398 (migration complete)
11
+ */
12
+ import { getProjectContext } from './project-context.js';
13
+ /**
14
+ * Validate a decision against applicable policies
15
+ *
16
+ * @param adapter - Database adapter
17
+ * @param key - Decision key (for pattern matching)
18
+ * @param value - Decision value (for completeness checking)
19
+ * @param metadata - Decision metadata (rationale, alternatives, etc.)
20
+ * @param trx - Optional Knex transaction context (prevents connection pool exhaustion)
21
+ * @returns Validation result with violations or success
22
+ */
23
+ export async function validateAgainstPolicies(adapter, key, value, metadata = {}, trx) {
24
+ const knex = adapter.getKnex();
25
+ const projectId = getProjectContext().getProjectId();
26
+ try {
27
+ // Fetch all active policies for current project
28
+ // Use transaction context if provided to avoid connection pool exhaustion
29
+ const policies = await (trx || knex)('t_decision_policies')
30
+ .where('project_id', projectId)
31
+ .select('id', 'name', 'validation_rules', 'quality_gates', 'category', 'required_fields', 'suggest_similar');
32
+ if (policies.length === 0) {
33
+ // No policies defined - pass validation by default
34
+ return { valid: true, violations: [] };
35
+ }
36
+ // Find matching policy (by key pattern or explicit policy reference)
37
+ const matchedPolicy = findMatchingPolicy(policies, key, metadata);
38
+ if (!matchedPolicy) {
39
+ // No policy matches this decision - pass validation
40
+ return { valid: true, violations: [] };
41
+ }
42
+ // Validate against matched policy
43
+ const violations = [];
44
+ // 1. Pattern Validation (if validation_rules defined)
45
+ if (matchedPolicy.validation_rules) {
46
+ try {
47
+ const rules = JSON.parse(matchedPolicy.validation_rules);
48
+ // Include key in validation context so patterns can validate it
49
+ const validationContext = { ...metadata, key };
50
+ const patternViolations = validatePatterns(rules, validationContext);
51
+ violations.push(...patternViolations);
52
+ }
53
+ catch (error) {
54
+ // Silently ignore JSON parse errors (expected for malformed policies)
55
+ // Set DEBUG=1 environment variable to see error details
56
+ if (process.env.DEBUG) {
57
+ console.error(`[Policy Validator] Failed to parse validation_rules for policy ${matchedPolicy.name}:`, error);
58
+ }
59
+ }
60
+ }
61
+ // 2. Required Fields Validation (legacy template system compatibility)
62
+ if (matchedPolicy.required_fields) {
63
+ try {
64
+ const requiredFields = JSON.parse(matchedPolicy.required_fields);
65
+ const fieldViolations = validateRequiredFields(requiredFields, metadata);
66
+ violations.push(...fieldViolations);
67
+ }
68
+ catch (error) {
69
+ // Silently ignore JSON parse errors (expected for malformed policies)
70
+ // Set DEBUG=1 environment variable to see error details
71
+ if (process.env.DEBUG) {
72
+ console.error(`[Policy Validator] Failed to parse required_fields for policy ${matchedPolicy.name}:`, error);
73
+ }
74
+ }
75
+ }
76
+ // 3. Quality Gates Validation (v3.9.0 enhanced system)
77
+ if (matchedPolicy.quality_gates) {
78
+ try {
79
+ const gates = JSON.parse(matchedPolicy.quality_gates);
80
+ const gateViolations = validateQualityGates(gates, metadata);
81
+ violations.push(...gateViolations);
82
+ }
83
+ catch (error) {
84
+ // Silently ignore JSON parse errors (expected for malformed policies)
85
+ // Set DEBUG=1 environment variable to see error details
86
+ if (process.env.DEBUG) {
87
+ console.error(`[Policy Validator] Failed to parse quality_gates for policy ${matchedPolicy.name}:`, error);
88
+ }
89
+ }
90
+ }
91
+ // Return validation result
92
+ return {
93
+ valid: violations.length === 0,
94
+ violations,
95
+ matchedPolicy: {
96
+ id: matchedPolicy.id,
97
+ name: matchedPolicy.name,
98
+ category: matchedPolicy.category
99
+ }
100
+ };
101
+ }
102
+ catch (error) {
103
+ console.error('[Policy Validator] Validation failed:', error);
104
+ // Fail-safe: Don't block decision creation on validation errors
105
+ return { valid: true, violations: [`Validation error: ${error instanceof Error ? error.message : String(error)}`] };
106
+ }
107
+ }
108
+ /**
109
+ * Find matching policy for decision key
110
+ *
111
+ * Matching strategy:
112
+ * 1. Check metadata.policy_name for explicit policy reference
113
+ * 2. Match key patterns (security_vulnerability → CVE-*, breaking_change → version-*, etc.)
114
+ * 3. Return null if no match
115
+ */
116
+ function findMatchingPolicy(policies, key, metadata) {
117
+ // Strategy 1: Explicit policy reference in metadata
118
+ if (metadata.policy_name) {
119
+ const explicitMatch = policies.find(p => p.name === metadata.policy_name);
120
+ if (explicitMatch)
121
+ return explicitMatch;
122
+ }
123
+ // Strategy 2: Key pattern matching
124
+ const keyLower = key.toLowerCase();
125
+ // Security Vulnerability: CVE-*, security-*, vulnerability-*
126
+ if (keyLower.startsWith('cve-') || keyLower.includes('security') || keyLower.includes('vulnerability')) {
127
+ const securityPolicy = policies.find(p => p.name === 'security_vulnerability');
128
+ if (securityPolicy)
129
+ return securityPolicy;
130
+ }
131
+ // Breaking Change: version-*, v*-breaking, breaking-*
132
+ if (keyLower.includes('version') || keyLower.includes('breaking') || /v\d+-/.test(keyLower)) {
133
+ const breakingPolicy = policies.find(p => p.name === 'breaking_change');
134
+ if (breakingPolicy)
135
+ return breakingPolicy;
136
+ }
137
+ // Architecture Decision: architecture-*, design-*, adr-*
138
+ if (keyLower.includes('architecture') || keyLower.includes('design') || keyLower.startsWith('adr-')) {
139
+ const archPolicy = policies.find(p => p.name === 'architecture_decision');
140
+ if (archPolicy)
141
+ return archPolicy;
142
+ }
143
+ // Performance Optimization: performance-*, perf-*, optimization-*
144
+ if (keyLower.includes('performance') || keyLower.includes('perf') || keyLower.includes('optimization')) {
145
+ const perfPolicy = policies.find(p => p.name === 'performance_optimization');
146
+ if (perfPolicy)
147
+ return perfPolicy;
148
+ }
149
+ // Deprecation: deprecation-*, deprecated-*, deprecate-*
150
+ if (keyLower.includes('deprecat')) {
151
+ const deprecationPolicy = policies.find(p => p.name === 'deprecation');
152
+ if (deprecationPolicy)
153
+ return deprecationPolicy;
154
+ }
155
+ // Strategy 3: Catch-all policy (validation_rules: null AND suggest_similar: 1)
156
+ // Policies with validation_rules explicitly set to null, suggest_similar=1, AND not in the predefined
157
+ // keyword-matching list match any decision. This enables similarity detection policies
158
+ // (like test policies) while preserving keyword matching for built-in policies.
159
+ // Requiring suggest_similar=1 prevents unintended catch-all matching.
160
+ const predefinedPolicyNames = [
161
+ 'security_vulnerability',
162
+ 'breaking_change',
163
+ 'architecture_decision',
164
+ 'performance_optimization',
165
+ 'deprecation'
166
+ ];
167
+ const catchAllPolicy = policies.find(p => {
168
+ try {
169
+ return (p.validation_rules === null &&
170
+ p.suggest_similar === 1 &&
171
+ !predefinedPolicyNames.includes(p.name));
172
+ }
173
+ catch {
174
+ return false;
175
+ }
176
+ });
177
+ if (catchAllPolicy)
178
+ return catchAllPolicy;
179
+ // No match found
180
+ return null;
181
+ }
182
+ /**
183
+ * Validate patterns (regex enforcement)
184
+ */
185
+ function validatePatterns(rules, metadata) {
186
+ const violations = [];
187
+ if (!rules.patterns)
188
+ return violations;
189
+ for (const [field, pattern] of Object.entries(rules.patterns)) {
190
+ const value = metadata[field];
191
+ if (value !== undefined && value !== null) {
192
+ try {
193
+ const regex = new RegExp(pattern);
194
+ const stringValue = String(value);
195
+ if (!regex.test(stringValue)) {
196
+ violations.push(`Field "${field}" value "${stringValue}" does not match required pattern: ${pattern}`);
197
+ }
198
+ }
199
+ catch (error) {
200
+ violations.push(`Invalid regex pattern for field "${field}": ${pattern}`);
201
+ }
202
+ }
203
+ // Note: Missing fields are checked by quality_gates.required_fields, not here
204
+ }
205
+ return violations;
206
+ }
207
+ /**
208
+ * Validate required fields (legacy template system compatibility)
209
+ */
210
+ function validateRequiredFields(requiredFields, metadata) {
211
+ const violations = [];
212
+ for (const field of requiredFields) {
213
+ const value = metadata[field];
214
+ if (value === undefined || value === null || value === '') {
215
+ violations.push(`Required field missing: "${field}"`);
216
+ }
217
+ }
218
+ return violations;
219
+ }
220
+ /**
221
+ * Validate quality gates (v3.9.0 enhanced system)
222
+ */
223
+ function validateQualityGates(gates, metadata) {
224
+ const violations = [];
225
+ // Required fields check (similar to legacy required_fields, but within quality_gates structure)
226
+ if (gates.required_fields) {
227
+ for (const field of gates.required_fields) {
228
+ const value = metadata[field];
229
+ if (value === undefined || value === null || value === '') {
230
+ violations.push(`Quality gate: Required field missing: "${field}"`);
231
+ }
232
+ }
233
+ }
234
+ // Future enhancements: Add more quality gate types here
235
+ // - Minimum length requirements
236
+ // - Field value ranges
237
+ // - Cross-field validations
238
+ return violations;
239
+ }
240
+ //# sourceMappingURL=policy-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-validator.js","sourceRoot":"","sources":["../../src/utils/policy-validator.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Quality Checks - Validation functions for smart review detection
3
3
  * Determines when tasks are ready for review based on quality gates
4
4
  */
5
- import type { Database } from 'better-sqlite3';
5
+ import type { DatabaseAdapter } from '../adapters/index.js';
6
6
  /**
7
7
  * Quality check result
8
8
  */
@@ -14,12 +14,12 @@ export interface QualityCheckResult {
14
14
  /**
15
15
  * Check if all watched files for a task have been modified at least once
16
16
  *
17
- * @param db - Database connection
17
+ * @param adapter - Database adapter
18
18
  * @param taskId - Task ID to check
19
19
  * @param modifiedFiles - Set of files that have been modified
20
20
  * @returns True if all watched files have been modified, false otherwise
21
21
  */
22
- export declare function checkAllFilesModified(db: Database, taskId: number, modifiedFiles: Set<string>): QualityCheckResult;
22
+ export declare function checkAllFilesModified(adapter: DatabaseAdapter, taskId: number, modifiedFiles: Set<string>): Promise<QualityCheckResult>;
23
23
  /**
24
24
  * Check if TypeScript files compile without syntax errors
25
25
  *
@@ -30,23 +30,23 @@ export declare function checkTypeScriptCompiles(filePaths: string[]): Promise<Qu
30
30
  /**
31
31
  * Check if tests pass for the task
32
32
  *
33
- * @param db - Database connection
33
+ * @param adapter - Database adapter
34
34
  * @param taskId - Task ID to check
35
35
  * @param filePaths - Array of file paths being watched
36
36
  * @returns Promise resolving to true if tests pass, false otherwise
37
37
  */
38
- export declare function checkTestsPass(db: Database, taskId: number, filePaths: string[]): Promise<QualityCheckResult>;
38
+ export declare function checkTestsPass(adapter: DatabaseAdapter, taskId: number, filePaths: string[]): Promise<QualityCheckResult>;
39
39
  /**
40
40
  * Check if task is ready for review based on all quality gates
41
41
  *
42
- * @param db - Database connection
42
+ * @param adapter - Database adapter
43
43
  * @param taskId - Task ID to check
44
44
  * @param filePaths - Array of file paths being watched
45
45
  * @param modifiedFiles - Set of files that have been modified
46
46
  * @param config - Configuration flags for which checks to run
47
47
  * @returns Promise resolving to object with overall result and individual check results
48
48
  */
49
- export declare function checkReadyForReview(db: Database, taskId: number, filePaths: string[], modifiedFiles: Set<string>, config: {
49
+ export declare function checkReadyForReview(adapter: DatabaseAdapter, taskId: number, filePaths: string[], modifiedFiles: Set<string>, config: {
50
50
  requireAllFilesModified: boolean;
51
51
  requireTestsPass: boolean;
52
52
  requireCompile: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"quality-checks.d.ts","sourceRoot":"","sources":["../../src/utils/quality-checks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GACzB,kBAAkB,CA8CpB;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA8C9F;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,kBAAkB,CAAC,CA4F7B;AAED;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,EAC1B,MAAM,EAAE;IACN,uBAAuB,EAAE,OAAO,CAAC;IACjC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;CACzB,GACA,OAAO,CAAC;IACT,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,kBAAkB,CAAA;KAAE,CAAC,CAAC;CAC/D,CAAC,CAuBD"}
1
+ {"version":3,"file":"quality-checks.d.ts","sourceRoot":"","sources":["../../src/utils/quality-checks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAI5D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GACzB,OAAO,CAAC,kBAAkB,CAAC,CA4C7B;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA8C9F;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,kBAAkB,CAAC,CA2F7B;AAED;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,EAC1B,MAAM,EAAE;IACN,uBAAuB,EAAE,OAAO,CAAC;IACjC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;CACzB,GACA,OAAO,CAAC;IACT,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,kBAAkB,CAAA;KAAE,CAAC,CAAC;CAC/D,CAAC,CAuBD"}