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
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Workflow 1 Debug - Isolate the failure
3
+ */
4
+ import { describe, it, before, after } from 'node:test';
5
+ import assert from 'node:assert';
6
+ import { mkdirSync } from 'node:fs';
7
+ import { initializeDatabase, closeDatabase, getAdapter } from '../../database.js';
8
+ import { ProjectContext } from '../../utils/project-context.js';
9
+ import { validateAgainstPolicies } from '../../utils/policy-validator.js';
10
+ const TEST_DB_PATH = '.tmp-test/e2e-workflow1-debug.db';
11
+ describe('Workflow 1 Debug', () => {
12
+ before(async () => {
13
+ // Ensure test directory exists
14
+ mkdirSync('.tmp-test', { recursive: true });
15
+ const adapter = await initializeDatabase({
16
+ databaseType: 'sqlite',
17
+ connection: { filename: TEST_DB_PATH }
18
+ });
19
+ const knex = adapter.getKnex();
20
+ const projectContext = ProjectContext.getInstance();
21
+ await projectContext.ensureProject(knex, 'test-e2e-w1', 'config', {
22
+ projectRootPath: process.cwd(),
23
+ });
24
+ });
25
+ after(async () => {
26
+ try {
27
+ // Clean up test policy
28
+ const adapter = getAdapter();
29
+ const knex = adapter.getKnex();
30
+ const projectId = ProjectContext.getInstance().getProjectId();
31
+ await knex('t_decision_policies')
32
+ .where({ name: 'test-cve-policy', project_id: projectId })
33
+ .del();
34
+ }
35
+ catch (error) {
36
+ // Ignore cleanup errors
37
+ }
38
+ await closeDatabase();
39
+ });
40
+ it('should create policy and validate CVE-ID', async () => {
41
+ try {
42
+ console.log('Step 1: Creating policy...');
43
+ const adapter = getAdapter();
44
+ const knex = adapter.getKnex();
45
+ const projectId = ProjectContext.getInstance().getProjectId();
46
+ // Delete existing policy if present (from failed previous run)
47
+ await knex('t_decision_policies')
48
+ .where({ name: 'test-cve-policy', project_id: projectId })
49
+ .del();
50
+ // Get system agent ID
51
+ let systemAgentId;
52
+ const systemAgent = await knex('m_agents').where('name', 'system').select('id').first();
53
+ if (systemAgent) {
54
+ systemAgentId = systemAgent.id;
55
+ }
56
+ else {
57
+ const [agentId] = await knex('m_agents').insert({
58
+ name: 'system',
59
+ last_active_ts: Math.floor(Date.now() / 1000)
60
+ });
61
+ systemAgentId = agentId;
62
+ }
63
+ await knex('t_decision_policies').insert({
64
+ project_id: projectId,
65
+ name: 'test-cve-policy',
66
+ category: 'security',
67
+ defaults: JSON.stringify({
68
+ layer: 'cross-cutting',
69
+ tags: ['security', 'vulnerability']
70
+ }),
71
+ validation_rules: JSON.stringify({
72
+ patterns: {
73
+ key: '^test/cve/CVE-\\d{4}-\\d{4,7}$'
74
+ }
75
+ }),
76
+ quality_gates: JSON.stringify({
77
+ required_fields: ['severity']
78
+ }),
79
+ created_by: systemAgentId,
80
+ ts: Math.floor(Date.now() / 1000)
81
+ });
82
+ console.log('Step 2: Validating against policy...');
83
+ const validation = await validateAgainstPolicies(adapter, 'test/cve/CVE-2024-12345', 'Test vulnerability', {
84
+ severity: 'high',
85
+ policy_name: 'test-cve-policy' // Explicit policy reference
86
+ }, undefined);
87
+ console.log('Validation result:', JSON.stringify(validation, null, 2));
88
+ assert.strictEqual(validation.valid, true, 'Should pass validation');
89
+ assert.strictEqual(validation.violations.length, 0);
90
+ assert.ok(validation.matchedPolicy, 'Should match policy');
91
+ console.log('✅ Test passed');
92
+ }
93
+ catch (error) {
94
+ console.error('❌ Test failed:', error);
95
+ throw error;
96
+ }
97
+ });
98
+ });
99
+ //# sourceMappingURL=e2e-workflow1-debug.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e-workflow1-debug.test.js","sourceRoot":"","sources":["../../../src/tests/integration/e2e-workflow1-debug.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,MAAM,YAAY,GAAG,kCAAkC,CAAC;AAExD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,+BAA+B;QAC/B,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5C,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC;YACvC,YAAY,EAAE,QAAQ;YACtB,UAAU,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE;SACvC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,cAAc,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC;QACpD,MAAM,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE;YAChE,eAAe,EAAE,OAAO,CAAC,GAAG,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,IAAI,CAAC;YACH,uBAAuB;YACvB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;YAE9D,MAAM,IAAI,CAAC,qBAAqB,CAAC;iBAC9B,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;iBACzD,GAAG,EAAE,CAAC;QACX,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wBAAwB;QAC1B,CAAC;QAED,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;YAE9D,+DAA+D;YAC/D,MAAM,IAAI,CAAC,qBAAqB,CAAC;iBAC9B,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;iBACzD,GAAG,EAAE,CAAC;YAET,sBAAsB;YACtB,IAAI,aAAqB,CAAC;YAC1B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACxF,IAAI,WAAW,EAAE,CAAC;gBAChB,aAAa,GAAG,WAAW,CAAC,EAAE,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;oBAC9C,IAAI,EAAE,QAAQ;oBACd,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;iBAC9C,CAAC,CAAC;gBACH,aAAa,GAAG,OAAO,CAAC;YAC1B,CAAC;YAED,MAAM,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC;gBACvC,UAAU,EAAE,SAAS;gBACrB,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;oBACvB,KAAK,EAAE,eAAe;oBACtB,IAAI,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC;iBACpC,CAAC;gBACF,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC;oBAC/B,QAAQ,EAAE;wBACR,GAAG,EAAE,gCAAgC;qBACtC;iBACF,CAAC;gBACF,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC;oBAC5B,eAAe,EAAE,CAAC,UAAU,CAAC;iBAC9B,CAAC;gBACF,UAAU,EAAE,aAAa;gBACzB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;aAClC,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAC9C,OAAO,EACP,yBAAyB,EACzB,oBAAoB,EACpB;gBACE,QAAQ,EAAE,MAAM;gBAChB,WAAW,EAAE,iBAAiB,CAAE,4BAA4B;aAC7D,EACD,SAAS,CACV,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAEvE,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,wBAAwB,CAAC,CAAC;YACrE,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;YAE3D,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YACvC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Integration tests for v3.9.0 Hybrid Similarity Detection
3
+ * Tests three-tier duplicate detection (35-44 gentle nudge, 45-59 hard block, 60+ auto-update)
4
+ * v3.9.1: Three-tier system with AI-friendly auto-update (Option B thresholds)
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=hybrid-similarity-detection.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hybrid-similarity-detection.test.d.ts","sourceRoot":"","sources":["../../../src/tests/integration/hybrid-similarity-detection.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,512 @@
1
+ /**
2
+ * Integration tests for v3.9.0 Hybrid Similarity Detection
3
+ * Tests three-tier duplicate detection (35-44 gentle nudge, 45-59 hard block, 60+ auto-update)
4
+ * v3.9.1: Three-tier system with AI-friendly auto-update (Option B thresholds)
5
+ */
6
+ import { describe, it, before, after } from 'node:test';
7
+ import * as assert from 'node:assert';
8
+ import { initializeDatabase, getAdapter, closeDatabase } from '../../database.js';
9
+ import { setDecision } from '../../tools/context/index.js';
10
+ import { SUGGEST_THRESHOLDS } from '../../constants.js';
11
+ import { ProjectContext } from '../../utils/project-context.js';
12
+ describe('Hybrid Similarity Detection (v3.9.0)', () => {
13
+ let projectId;
14
+ // Helper function to call setDecision (uses transaction for rollback on error)
15
+ async function createDecision(params) {
16
+ return setDecision(params);
17
+ }
18
+ before(async () => {
19
+ // Initialize database with SQLite using test-specific database
20
+ const adapter = await initializeDatabase({
21
+ databaseType: 'sqlite',
22
+ connection: { filename: '.tmp-test/hybrid-similarity-detection.db' }
23
+ });
24
+ // Set up project context (required after v3.7.0)
25
+ const knex = adapter.getKnex();
26
+ const projectContext = ProjectContext.getInstance();
27
+ await projectContext.ensureProject(knex, 'test-hybrid-similarity', 'config', {
28
+ projectRootPath: process.cwd(),
29
+ });
30
+ projectId = projectContext.getProjectId();
31
+ // Clean up any existing test data from previous runs (including old key patterns)
32
+ const testKeyIds = await knex('m_context_keys')
33
+ .select('id')
34
+ .where(function () {
35
+ this.where('key', 'like', 'test-%')
36
+ .orWhere('key', 'like', 'infra-%')
37
+ .orWhere('key', 'like', 'pattern-%')
38
+ .orWhere('key', 'like', 'tier2-%')
39
+ .orWhere('key', 'like', 'v390-%') // Covers v390-tier2 and v390-tier3
40
+ .orWhere('key', 'like', 'config-%')
41
+ .orWhere('key', 'like', 'DB-%');
42
+ });
43
+ const keyIds = testKeyIds.map((row) => row.id);
44
+ if (keyIds.length > 0) {
45
+ // Delete in order of dependencies (child tables first)
46
+ await knex('t_decision_tags')
47
+ .whereIn('decision_key_id', keyIds)
48
+ .where('project_id', projectId)
49
+ .delete();
50
+ await knex('t_decision_scopes')
51
+ .whereIn('decision_key_id', keyIds)
52
+ .where('project_id', projectId)
53
+ .delete();
54
+ await knex('t_decision_history')
55
+ .whereIn('key_id', keyIds)
56
+ .delete();
57
+ await knex('t_decisions')
58
+ .whereIn('key_id', keyIds)
59
+ .where('project_id', projectId)
60
+ .delete();
61
+ await knex('t_decisions_numeric')
62
+ .whereIn('key_id', keyIds)
63
+ .where('project_id', projectId)
64
+ .delete();
65
+ await knex('m_context_keys')
66
+ .whereIn('id', keyIds)
67
+ .delete();
68
+ }
69
+ // Clean up existing policies
70
+ await knex('t_decision_policies')
71
+ .where('project_id', projectId)
72
+ .where(function () {
73
+ this.where('name', 'like', '%test%')
74
+ .orWhere('name', 'no-suggest-policy');
75
+ })
76
+ .delete();
77
+ // Get or create system agent
78
+ let systemAgentId;
79
+ const systemAgent = await knex('m_agents').where('name', 'system').select('id').first();
80
+ if (systemAgent) {
81
+ systemAgentId = systemAgent.id;
82
+ }
83
+ else {
84
+ const [agentId] = await knex('m_agents').insert({
85
+ name: 'system',
86
+ last_active_ts: Math.floor(Date.now() / 1000)
87
+ });
88
+ systemAgentId = agentId;
89
+ }
90
+ // Create test policy with suggest_similar=1 (no validation_rules to match all decisions)
91
+ await knex('t_decision_policies').insert({
92
+ project_id: projectId,
93
+ name: 'test-policy',
94
+ category: 'testing',
95
+ defaults: JSON.stringify({}), // Empty defaults (NOT NULL column)
96
+ validation_rules: null, // No validation rules - match all decisions for similarity detection
97
+ quality_gates: null,
98
+ suggest_similar: 1,
99
+ created_by: systemAgentId,
100
+ ts: Math.floor(Date.now() / 1000)
101
+ });
102
+ });
103
+ after(async () => {
104
+ await closeDatabase();
105
+ });
106
+ describe('Tier 1: Gentle Nudge (35-44)', () => {
107
+ it('should return duplicate_risk warning for similar decisions (non-blocking)', async () => {
108
+ // Create baseline decision
109
+ await createDecision({
110
+ key: 'test-2024-0001',
111
+ value: 'Fixed buffer overflow in auth module',
112
+ tags: ['security', 'vulnerability', 'auth'],
113
+ layer: 'infrastructure',
114
+ version: '1.0.0'
115
+ });
116
+ // Create similar decision (should trigger gentle nudge)
117
+ // Different layer and minimal tag overlap to score in 35-44 range
118
+ const result = await createDecision({
119
+ key: 'test-2024-0002',
120
+ value: 'Implemented input validation for user registration form',
121
+ tags: ['security', 'validation', 'frontend'], // Only 1/3 tag match (security)
122
+ layer: 'presentation', // Different layer (no layer match bonus)
123
+ version: '1.0.0'
124
+ });
125
+ // Assert decision was created (non-blocking)
126
+ assert.strictEqual(result.success, true);
127
+ assert.strictEqual(result.key, 'test-2024-0002');
128
+ // Assert duplicate_risk warning exists
129
+ assert.ok(result.duplicate_risk, 'duplicate_risk should be present');
130
+ const risk = result.duplicate_risk;
131
+ assert.strictEqual(risk.severity, 'MODERATE');
132
+ assert.ok(risk.max_score >= SUGGEST_THRESHOLDS.GENTLE_NUDGE, 'Score should be >= 35');
133
+ assert.ok(risk.max_score < SUGGEST_THRESHOLDS.HARD_BLOCK, 'Score should be < 45');
134
+ // Assert confidence scores
135
+ assert.ok(risk.confidence.is_duplicate >= 0 && risk.confidence.is_duplicate <= 1);
136
+ assert.ok(risk.confidence.should_update >= 0 && risk.confidence.should_update <= 1);
137
+ // Assert suggestions structure
138
+ assert.ok(Array.isArray(risk.suggestions), 'suggestions should be an array');
139
+ assert.ok(risk.suggestions.length > 0 && risk.suggestions.length <= 3, 'Max 3 suggestions');
140
+ const suggestion = risk.suggestions[0];
141
+ assert.strictEqual(suggestion.key, 'test-2024-0001');
142
+ assert.ok(suggestion.recommended, 'First suggestion should be recommended');
143
+ assert.ok(suggestion.matches, 'Should have matches details');
144
+ assert.ok(suggestion.version_info, 'Should have version info');
145
+ assert.ok(suggestion.reasoning, 'Should have reasoning');
146
+ assert.ok(suggestion.update_command, 'Should have update command');
147
+ });
148
+ it('should include enriched suggestion details', async () => {
149
+ // Create baseline with distinct key prefix to avoid matching first test
150
+ await createDecision({
151
+ key: 'test-db-001',
152
+ value: 'Optimized database query performance',
153
+ tags: ['database', 'performance', 'optimization'],
154
+ layer: 'data',
155
+ version: '1.0.0'
156
+ });
157
+ // Create similar decision - minimal tag overlap, different layer, different value
158
+ const result = await createDecision({
159
+ key: 'test-db-002',
160
+ value: 'Added connection pooling to Redis cache layer', // Different value
161
+ tags: ['database', 'redis', 'caching'], // Only 1/3 tag match (database)
162
+ layer: 'infrastructure', // Different layer to reduce score
163
+ version: '1.0.0'
164
+ });
165
+ const risk = result.duplicate_risk;
166
+ assert.ok(risk, 'Should have duplicate_risk');
167
+ const suggestion = risk.suggestions[0];
168
+ // Check matches details exist
169
+ assert.ok(suggestion.matches, 'Should have matches object');
170
+ assert.ok(Array.isArray(suggestion.matches.tags), 'Should have tags array');
171
+ // Note: Tags may be empty due to how similarity engine populates metadata
172
+ // Check version_info
173
+ assert.ok(suggestion.version_info.current, 'Should have current version');
174
+ assert.ok(suggestion.version_info.next_suggested, 'Should have next suggested version');
175
+ assert.ok(Array.isArray(suggestion.version_info.recent_changes), 'Should have recent changes');
176
+ // Check update_command
177
+ assert.strictEqual(suggestion.update_command.key, 'test-db-001');
178
+ assert.ok(suggestion.update_command.version, 'Should have version in command');
179
+ assert.ok(Array.isArray(suggestion.update_command.tags), 'Should have tags in command');
180
+ });
181
+ });
182
+ describe('Tier 2: Hard Block (45-59)', () => {
183
+ it('should throw error for similar decisions (blocking)', async () => {
184
+ // Create baseline decision
185
+ await createDecision({
186
+ key: 'v390-tier2-baseline-001',
187
+ value: 'Configured HAProxy load balancer with health monitoring',
188
+ tags: ['v390-tier2', 'loadbalancer', 'monitoring'],
189
+ layer: 'infrastructure',
190
+ version: '1.0.0'
191
+ });
192
+ // Try to create similar decision
193
+ // 2/3 tags (+20) + same layer (+25) + key similarity (+12) + recency (+10) = ~67 points
194
+ // Wait - still Tier 3. Need to use DIFFERENT keys to reduce key similarity
195
+ try {
196
+ await createDecision({
197
+ key: 'nginx-proxy-ssl-001', // Completely different key pattern (-10 key pts)
198
+ value: 'Configured nginx reverse proxy with SSL configuration', // Different value
199
+ tags: ['loadbalancer', 'monitoring', 'nginx'], // 2/3 tag match (+20 pts)
200
+ layer: 'infrastructure', // Same layer (+25 pts)
201
+ version: '1.0.0'
202
+ });
203
+ assert.fail('Should have thrown HARD BLOCK error');
204
+ }
205
+ catch (error) {
206
+ assert.ok(error.message.includes('DUPLICATE DETECTED'), 'Should contain DUPLICATE DETECTED');
207
+ assert.ok(error.message.includes('v390-tier2-baseline-001'), 'Should mention existing decision');
208
+ assert.ok(error.message.includes('Update existing decision'), 'Should suggest update action');
209
+ }
210
+ // Verify decision was NOT created
211
+ const adapter = getAdapter();
212
+ const check = await adapter.getKnex()('t_decisions')
213
+ .join('m_context_keys', 't_decisions.key_id', 'm_context_keys.id')
214
+ .where('m_context_keys.key', 'v390-tier2-duplicate-001')
215
+ .first();
216
+ assert.strictEqual(check, undefined, 'Decision should not have been created');
217
+ });
218
+ it('should include actionable resolution in error message', async () => {
219
+ // Create baseline
220
+ await createDecision({
221
+ key: 'v390-tier2-resolution-002',
222
+ value: 'Implemented circuit breaker pattern for external API calls',
223
+ tags: ['v390-tier2', 'circuit-breaker', 'resilience'],
224
+ layer: 'cross-cutting',
225
+ version: '1.0.0'
226
+ });
227
+ // Try to create similar decision
228
+ // 2/3 tags (+20) + same layer (+25) + different key (+3) + recency (+10) = ~58 points
229
+ try {
230
+ await createDecision({
231
+ key: 'retry-db-pattern-001', // Completely different key pattern
232
+ value: 'Implemented retry pattern for database connections', // Different enough
233
+ tags: ['circuit-breaker', 'resilience', 'database'], // 2/3 tag match (+20 pts)
234
+ layer: 'cross-cutting', // Same layer (+25 pts)
235
+ version: '1.0.0'
236
+ });
237
+ assert.fail('Should have thrown error');
238
+ }
239
+ catch (error) {
240
+ // Check error structure - verify key fields are present
241
+ assert.ok(error.message.includes('DUPLICATE DETECTED'), 'Should indicate duplicate');
242
+ assert.ok(error.message.includes('v390-tier2-resolution-002'), 'Should mention existing decision');
243
+ assert.ok(error.message.includes('Update existing decision'), 'Should suggest update');
244
+ assert.ok(error.message.includes('ignore_suggest'), 'Should mention bypass option');
245
+ }
246
+ });
247
+ });
248
+ describe('Tier 3: Auto-Update (60+)', () => {
249
+ it('should auto-update existing decision for very high similarity', async () => {
250
+ // Create baseline decision
251
+ await createDecision({
252
+ key: 'v390-tier3-baseline-001',
253
+ value: 'Implemented rate limiting for public API endpoints',
254
+ tags: ['tier3-test1', 'rate-limiting', 'api-security'], // Unique tag prefix
255
+ layer: 'infrastructure',
256
+ version: '1.0.0'
257
+ });
258
+ // Try to create near-identical decision (should auto-update)
259
+ // 3/3 tags (+30) + same layer (+25) + key similarity (~12) + identical value (+15) + recency (+10) = ~92 points
260
+ const result = await createDecision({
261
+ key: 'v390-tier3-duplicate-001',
262
+ value: 'Implemented rate limiting for public API endpoints', // Identical value
263
+ tags: ['tier3-test1', 'rate-limiting', 'api-security'], // 3/3 tag match (+30)
264
+ layer: 'infrastructure', // Same layer (+25)
265
+ version: '1.0.0'
266
+ });
267
+ // Assert auto-update occurred
268
+ assert.strictEqual(result.success, true, 'Should succeed');
269
+ assert.strictEqual(result.auto_updated, true, 'Should have auto_updated flag');
270
+ assert.strictEqual(result.requested_key, 'v390-tier3-duplicate-001', 'Should track requested key');
271
+ assert.strictEqual(result.actual_key, 'v390-tier3-baseline-001', 'Should track actual key');
272
+ assert.ok(result.similarity_score >= SUGGEST_THRESHOLDS.AUTO_UPDATE, 'Score should be >= 60');
273
+ // Assert duplicate_reason metadata
274
+ assert.ok(result.duplicate_reason, 'Should have duplicate_reason');
275
+ assert.ok(result.duplicate_reason.similarity, 'Should have similarity explanation');
276
+ assert.ok(Array.isArray(result.duplicate_reason.matched_tags), 'Should have matched tags');
277
+ assert.strictEqual(result.duplicate_reason.layer, 'infrastructure', 'Should track layer match');
278
+ // Verify decision 'v390-tier3-duplicate-001' was NOT created (updated existing instead)
279
+ const adapter = getAdapter();
280
+ const check = await adapter.getKnex()('t_decisions')
281
+ .join('m_context_keys', 't_decisions.key_id', 'm_context_keys.id')
282
+ .where('m_context_keys.key', 'v390-tier3-duplicate-001')
283
+ .first();
284
+ assert.strictEqual(check, undefined, 'New decision should not have been created');
285
+ // Verify 'v390-tier3-baseline-001' was updated to version 1.0.1
286
+ const updated = await adapter.getKnex()('t_decisions')
287
+ .join('m_context_keys', 't_decisions.key_id', 'm_context_keys.id')
288
+ .where('m_context_keys.key', 'v390-tier3-baseline-001')
289
+ .select('t_decisions.version')
290
+ .first();
291
+ assert.ok(updated, 'Original decision should still exist');
292
+ assert.ok(updated.version > '1.0.0', 'Version should have been incremented');
293
+ });
294
+ it('should include transparent metadata in response', async () => {
295
+ // Create baseline
296
+ await createDecision({
297
+ key: 'v390-tier3-transparent-002',
298
+ value: 'Configured Redis cluster for distributed session storage',
299
+ tags: ['tier3-test2-unique', 'tier3-redis', 'tier3-sessions'], // All unique tags
300
+ layer: 'infrastructure',
301
+ version: '1.0.0'
302
+ });
303
+ // Auto-update with identical content
304
+ // 3/3 tags (+30) + same layer (+25) + key similarity (~12) + identical value (+15) + recency (+10) = ~92 points
305
+ const result = await createDecision({
306
+ key: 'v390-tier3-transparent-003',
307
+ value: 'Configured Redis cluster for distributed session storage', // Identical value
308
+ tags: ['tier3-test2-unique', 'tier3-redis', 'tier3-sessions'], // 3/3 tag match (+30)
309
+ layer: 'infrastructure', // Same layer (+25)
310
+ version: '1.0.0'
311
+ });
312
+ // Check response structure
313
+ assert.strictEqual(result.auto_updated, true);
314
+ assert.strictEqual(result.key, 'v390-tier3-transparent-002', 'Should return actual key');
315
+ assert.ok(result.message, 'Should have message');
316
+ assert.ok(result.message.includes('Auto-updated'), 'Message should mention auto-update');
317
+ assert.ok(result.message.includes('similarity'), 'Message should mention similarity');
318
+ });
319
+ it('should preserve value from new decision when auto-updating', async () => {
320
+ // Create baseline
321
+ await createDecision({
322
+ key: 'v390-tier3-preserve-004',
323
+ value: 'Use PostgreSQL 14 for primary database',
324
+ tags: ['tier3-test3-unique', 'tier3-postgres', 'tier3-db'], // All unique tags
325
+ layer: 'infrastructure',
326
+ version: '1.0.0'
327
+ });
328
+ // Auto-update with different value (upgrade decision)
329
+ // 3/3 tags (+30) + same layer (+25) + key similarity (~12) + similar value (~12) + recency (+10) = ~89 points
330
+ const newValue = 'Use PostgreSQL 15 for primary database';
331
+ const result = await createDecision({
332
+ key: 'v390-tier3-preserve-005',
333
+ value: newValue, // Different value (upgrade version)
334
+ tags: ['tier3-test3-unique', 'tier3-postgres', 'tier3-db'], // 3/3 tag match (+30)
335
+ layer: 'infrastructure', // Same layer (+25)
336
+ version: '1.0.0'
337
+ });
338
+ // Assert auto-update preserved new value
339
+ assert.strictEqual(result.auto_updated, true);
340
+ assert.strictEqual(result.value, newValue, 'Should preserve new value from request');
341
+ // Verify database was updated with new value
342
+ const adapter = getAdapter();
343
+ const updated = await adapter.getKnex()('t_decisions')
344
+ .join('m_context_keys', 't_decisions.key_id', 'm_context_keys.id')
345
+ .where('m_context_keys.key', 'v390-tier3-preserve-004')
346
+ .select('t_decisions.value')
347
+ .first();
348
+ assert.strictEqual(updated.value, newValue, 'Database should have new value');
349
+ });
350
+ });
351
+ describe('Bypass Mechanism', () => {
352
+ it('should skip detection when ignore_suggest=true', async () => {
353
+ // Create baseline
354
+ await createDecision({
355
+ key: 'test-queue-rabbitmq',
356
+ value: 'Use RabbitMQ for message queue',
357
+ tags: ['queue', 'rabbitmq', 'messaging'],
358
+ layer: 'infrastructure',
359
+ version: '1.0.0'
360
+ });
361
+ // Create similar decision with ignore_suggest=true
362
+ const result = await createDecision({
363
+ key: 'test-queue-implementation',
364
+ value: 'Use RabbitMQ for messaging',
365
+ tags: ['queue', 'rabbitmq', 'messaging'],
366
+ layer: 'infrastructure',
367
+ version: '1.0.0',
368
+ ignore_suggest: true,
369
+ ignore_reason: 'Different use case - async tasks vs event bus'
370
+ });
371
+ // Should succeed without warning or error
372
+ assert.strictEqual(result.success, true);
373
+ assert.strictEqual(result.duplicate_risk, undefined, 'Should not have duplicate_risk');
374
+ });
375
+ it('should bypass both gentle nudge and hard block tiers', async () => {
376
+ // Create baseline
377
+ await createDecision({
378
+ key: 'test-search-elasticsearch',
379
+ value: 'Use Elasticsearch for full-text search',
380
+ tags: ['search', 'elasticsearch'],
381
+ layer: 'infrastructure',
382
+ version: '1.0.0'
383
+ });
384
+ // Try to create near-identical decision with bypass
385
+ const result = await createDecision({
386
+ key: 'test-search-engine',
387
+ value: 'Use Elasticsearch for search',
388
+ tags: ['search', 'elasticsearch'],
389
+ layer: 'infrastructure',
390
+ version: '1.0.0',
391
+ ignore_suggest: true,
392
+ ignore_reason: 'Testing bypass functionality'
393
+ });
394
+ // Should succeed
395
+ assert.strictEqual(result.success, true);
396
+ assert.strictEqual(result.key, 'test-search-engine');
397
+ });
398
+ });
399
+ describe('Operation Scope', () => {
400
+ it('should only apply to CREATE operations', async () => {
401
+ // Create baseline
402
+ const created = await createDecision({
403
+ key: 'test-update-scope',
404
+ value: 'Initial value for scope testing',
405
+ tags: ['scope-test', 'update-test'],
406
+ layer: 'business',
407
+ version: '1.0.0'
408
+ });
409
+ // Update the decision (should not trigger detection)
410
+ const updated = await createDecision({
411
+ key: 'test-update-scope',
412
+ value: 'Updated value for scope testing',
413
+ tags: ['scope-test', 'update-test'],
414
+ layer: 'business',
415
+ version: '1.1.0'
416
+ });
417
+ // Should succeed without duplicate_risk
418
+ assert.strictEqual(updated.success, true);
419
+ assert.strictEqual(updated.duplicate_risk, undefined, 'Updates should not trigger detection');
420
+ });
421
+ });
422
+ describe('Policy Respect', () => {
423
+ it('should only trigger when suggest_similar=1', async () => {
424
+ // Create policy with suggest_similar=0
425
+ const adapter = getAdapter();
426
+ const knex = adapter.getKnex();
427
+ // Get system agent
428
+ const systemAgent = await knex('m_agents').where('name', 'system').select('id').first();
429
+ const systemAgentId = systemAgent.id;
430
+ await knex('t_decision_policies').insert({
431
+ project_id: projectId,
432
+ name: 'no-suggest-policy',
433
+ category: 'testing',
434
+ defaults: JSON.stringify({}), // Empty defaults (NOT NULL column)
435
+ validation_rules: JSON.stringify({
436
+ patterns: {
437
+ key: '^nosuggest-'
438
+ }
439
+ }),
440
+ quality_gates: null,
441
+ suggest_similar: 0,
442
+ created_by: systemAgentId,
443
+ ts: Math.floor(Date.now() / 1000)
444
+ });
445
+ // Create baseline
446
+ await createDecision({
447
+ key: 'nosuggest-baseline',
448
+ value: 'Baseline decision',
449
+ tags: ['test'],
450
+ layer: 'business',
451
+ version: '1.0.0'
452
+ });
453
+ // Create similar decision (should NOT trigger detection)
454
+ const result = await createDecision({
455
+ key: 'nosuggest-similar',
456
+ value: 'Similar decision',
457
+ tags: ['test'],
458
+ layer: 'business',
459
+ version: '1.0.0'
460
+ });
461
+ // Should succeed without warning
462
+ assert.strictEqual(result.success, true);
463
+ assert.strictEqual(result.duplicate_risk, undefined, 'Should not detect when suggest_similar=0');
464
+ });
465
+ });
466
+ describe('Edge Cases', () => {
467
+ it('should handle decisions with no matching suggestions', async () => {
468
+ // Create unique decision with no matches
469
+ const result = await createDecision({
470
+ key: 'test-unique-decision',
471
+ value: 'Completely unique decision with no matches',
472
+ tags: ['unique', 'special', 'isolated'],
473
+ layer: 'business',
474
+ version: '1.0.0'
475
+ });
476
+ // Should succeed without warning
477
+ assert.strictEqual(result.success, true);
478
+ assert.strictEqual(result.duplicate_risk, undefined, 'No warning for unique decisions');
479
+ });
480
+ it('should handle decisions without tags', async () => {
481
+ // Create baseline without tags
482
+ await createDecision({
483
+ key: 'config-auth-jwt-001',
484
+ value: 'Enable JWT token authentication mechanism for REST API endpoints',
485
+ layer: 'business',
486
+ version: '1.0.0'
487
+ });
488
+ // Create very dissimilar decision without tags (different key pattern, layer, and completely different value)
489
+ const result = await createDecision({
490
+ key: 'infra-redis-cluster-xyz',
491
+ value: 'Configure Redis cache cluster with master-slave replication for production environment',
492
+ layer: 'infrastructure', // Different layer to reduce score
493
+ version: '1.0.0'
494
+ });
495
+ // Should still work (detection may not trigger due to low score)
496
+ assert.strictEqual(result.success, true);
497
+ });
498
+ it('should handle empty suggestion list gracefully', async () => {
499
+ // Create decision with very unique tags and value that won't match anything
500
+ const result = await createDecision({
501
+ key: 'test-isolated-xyz123',
502
+ value: 'Initialize blockchain consensus mechanism for distributed ledger',
503
+ tags: ['blockchain', 'consensus', 'experimental'],
504
+ layer: 'documentation',
505
+ version: '1.0.0'
506
+ });
507
+ // Should succeed without issues
508
+ assert.strictEqual(result.success, true);
509
+ });
510
+ });
511
+ });
512
+ //# sourceMappingURL=hybrid-similarity-detection.test.js.map