sqlew 3.6.9 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/CHANGELOG.md +398 -1
  2. package/README.md +58 -39
  3. package/assets/config.example.toml +93 -0
  4. package/assets/kanban-visualizer.png +0 -0
  5. package/assets/sample-agents/sqlew-architect.md +32 -13
  6. package/assets/sample-agents/sqlew-researcher.md +70 -17
  7. package/assets/sample-agents/sqlew-scrum-master.md +60 -25
  8. package/assets/schema.sql +2 -2
  9. package/dist/adapters/auth/auth-factory.d.ts +86 -0
  10. package/dist/adapters/auth/auth-factory.d.ts.map +1 -0
  11. package/dist/adapters/auth/auth-factory.js +103 -0
  12. package/dist/adapters/auth/auth-factory.js.map +1 -0
  13. package/dist/adapters/auth/auth-types.d.ts +30 -0
  14. package/dist/adapters/auth/auth-types.d.ts.map +1 -0
  15. package/dist/adapters/auth/auth-types.js +30 -0
  16. package/dist/adapters/auth/auth-types.js.map +1 -0
  17. package/dist/adapters/auth/base-auth-provider.d.ts +327 -0
  18. package/dist/adapters/auth/base-auth-provider.d.ts.map +1 -0
  19. package/dist/adapters/auth/base-auth-provider.js +111 -0
  20. package/dist/adapters/auth/base-auth-provider.js.map +1 -0
  21. package/dist/adapters/auth/direct-auth-provider.d.ts +356 -0
  22. package/dist/adapters/auth/direct-auth-provider.d.ts.map +1 -0
  23. package/dist/adapters/auth/direct-auth-provider.js +406 -0
  24. package/dist/adapters/auth/direct-auth-provider.js.map +1 -0
  25. package/dist/adapters/base-adapter.d.ts +638 -0
  26. package/dist/adapters/base-adapter.d.ts.map +1 -0
  27. package/dist/adapters/base-adapter.js +557 -0
  28. package/dist/adapters/base-adapter.js.map +1 -0
  29. package/dist/adapters/index.d.ts +13 -2
  30. package/dist/adapters/index.d.ts.map +1 -1
  31. package/dist/adapters/index.js +27 -5
  32. package/dist/adapters/index.js.map +1 -1
  33. package/dist/adapters/mysql-adapter.d.ts +547 -6
  34. package/dist/adapters/mysql-adapter.d.ts.map +1 -1
  35. package/dist/adapters/mysql-adapter.js +651 -32
  36. package/dist/adapters/mysql-adapter.js.map +1 -1
  37. package/dist/adapters/postgresql-adapter.d.ts +15 -4
  38. package/dist/adapters/postgresql-adapter.d.ts.map +1 -1
  39. package/dist/adapters/postgresql-adapter.js +19 -2
  40. package/dist/adapters/postgresql-adapter.js.map +1 -1
  41. package/dist/adapters/sqlite-adapter.d.ts +35 -5
  42. package/dist/adapters/sqlite-adapter.d.ts.map +1 -1
  43. package/dist/adapters/sqlite-adapter.js +57 -18
  44. package/dist/adapters/sqlite-adapter.js.map +1 -1
  45. package/dist/cli/db-dump.d.ts +32 -0
  46. package/dist/cli/db-dump.d.ts.map +1 -0
  47. package/dist/cli/db-dump.js +409 -0
  48. package/dist/cli/db-dump.js.map +1 -0
  49. package/dist/cli.js +24 -14
  50. package/dist/cli.js.map +1 -1
  51. package/dist/config/example-generator.d.ts.map +1 -1
  52. package/dist/config/example-generator.js +4 -3
  53. package/dist/config/example-generator.js.map +1 -1
  54. package/dist/config/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +1 -0
  55. package/dist/{migrations → config}/knex/bootstrap/20251025020452_create_master_tables.js +7 -2
  56. package/dist/config/knex/bootstrap/20251025020452_create_master_tables.js.map +1 -0
  57. package/dist/config/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +1 -0
  58. package/dist/{migrations → config}/knex/bootstrap/20251025021152_create_transaction_tables.js +49 -50
  59. package/dist/config/knex/bootstrap/20251025021152_create_transaction_tables.js.map +1 -0
  60. package/dist/config/knex/bootstrap/20251025021351_create_indexes.d.ts.map +1 -0
  61. package/dist/config/knex/bootstrap/20251025021351_create_indexes.js.map +1 -0
  62. package/dist/config/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +1 -0
  63. package/dist/{migrations → config}/knex/bootstrap/20251025021416_seed_master_data.js +11 -6
  64. package/dist/config/knex/bootstrap/20251025021416_seed_master_data.js.map +1 -0
  65. package/dist/config/knex/bootstrap/20251025070349_create_views.d.ts.map +1 -0
  66. package/dist/{migrations → config}/knex/bootstrap/20251025070349_create_views.js +66 -14
  67. package/dist/config/knex/bootstrap/20251025070349_create_views.js.map +1 -0
  68. package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts.map +1 -0
  69. package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js +22 -0
  70. package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js.map +1 -0
  71. package/dist/config/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts.map +1 -0
  72. package/dist/config/knex/enhancements/20251025082220_fix_task_dependencies_columns.js.map +1 -0
  73. package/dist/config/knex/enhancements/20251025090000_create_help_system_tables.d.ts.map +1 -0
  74. package/dist/{migrations → config}/knex/enhancements/20251025090000_create_help_system_tables.js +6 -0
  75. package/dist/config/knex/enhancements/20251025090000_create_help_system_tables.js.map +1 -0
  76. package/dist/config/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts.map +1 -0
  77. package/dist/{migrations → config}/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js +6 -0
  78. package/dist/config/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js.map +1 -0
  79. package/dist/config/knex/enhancements/20251025100000_seed_help_metadata.d.ts.map +1 -0
  80. package/dist/{migrations → config}/knex/enhancements/20251025100000_seed_help_metadata.js +6 -0
  81. package/dist/config/knex/enhancements/20251025100000_seed_help_metadata.js.map +1 -0
  82. package/dist/config/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts.map +1 -0
  83. package/dist/config/knex/enhancements/20251025100100_seed_remaining_use_cases.js.map +1 -0
  84. package/dist/config/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts.map +1 -0
  85. package/dist/{migrations → config}/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js +7 -0
  86. package/dist/config/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js.map +1 -0
  87. package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts.map +1 -0
  88. package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.js +62 -0
  89. package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.js.map +1 -0
  90. package/dist/config/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts.map +1 -0
  91. package/dist/config/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js.map +1 -0
  92. package/dist/config/knex/enhancements/20251027020000_update_agent_reusability.d.ts.map +1 -0
  93. package/dist/{migrations → config}/knex/enhancements/20251027020000_update_agent_reusability.js +6 -0
  94. package/dist/config/knex/enhancements/20251027020000_update_agent_reusability.js.map +1 -0
  95. package/dist/config/knex/enhancements/20251028000000_simplify_agent_system.d.ts.map +1 -0
  96. package/dist/{migrations → config}/knex/enhancements/20251028000000_simplify_agent_system.js +6 -0
  97. package/dist/config/knex/enhancements/20251028000000_simplify_agent_system.js.map +1 -0
  98. package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.d.ts +13 -0
  99. package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.d.ts.map +1 -0
  100. package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.js +48 -0
  101. package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.js.map +1 -0
  102. package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.d.ts +24 -0
  103. package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.d.ts.map +1 -0
  104. package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.js +189 -0
  105. package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.js.map +1 -0
  106. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.d.ts +16 -0
  107. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.d.ts.map +1 -0
  108. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.js +65 -0
  109. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.js.map +1 -0
  110. package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.d.ts +23 -0
  111. package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.d.ts.map +1 -0
  112. package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.js +118 -0
  113. package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.js.map +1 -0
  114. package/dist/config/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +1 -0
  115. package/dist/config/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js.map +1 -0
  116. package/dist/config/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +1 -0
  117. package/dist/config/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js.map +1 -0
  118. package/dist/config/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +1 -0
  119. package/dist/config/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js.map +1 -0
  120. package/dist/config/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +1 -0
  121. package/dist/config/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js.map +1 -0
  122. package/dist/config/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +1 -0
  123. package/dist/config/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +1 -0
  124. package/dist/config/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +1 -0
  125. package/dist/config/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js.map +1 -0
  126. package/dist/config/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +1 -0
  127. package/dist/config/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js.map +1 -0
  128. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.d.ts +49 -0
  129. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.d.ts.map +1 -0
  130. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js +864 -0
  131. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js.map +1 -0
  132. package/dist/config/loader.d.ts +23 -3
  133. package/dist/config/loader.d.ts.map +1 -1
  134. package/dist/config/loader.js +155 -8
  135. package/dist/config/loader.js.map +1 -1
  136. package/dist/config/types.d.ts +261 -2
  137. package/dist/config/types.d.ts.map +1 -1
  138. package/dist/config/types.js.map +1 -1
  139. package/dist/config/writer.d.ts +65 -0
  140. package/dist/config/writer.d.ts.map +1 -0
  141. package/dist/config/writer.js +139 -0
  142. package/dist/config/writer.js.map +1 -0
  143. package/dist/database.d.ts +11 -2
  144. package/dist/database.d.ts.map +1 -1
  145. package/dist/database.js +65 -8
  146. package/dist/database.js.map +1 -1
  147. package/dist/index.js +186 -32
  148. package/dist/index.js.map +1 -1
  149. package/dist/knexfile.d.ts.map +1 -1
  150. package/dist/knexfile.js +88 -12
  151. package/dist/knexfile.js.map +1 -1
  152. package/dist/tests/all-features.test.js +15 -3
  153. package/dist/tests/all-features.test.js.map +1 -1
  154. package/dist/tests/config-loader.test.d.ts +6 -0
  155. package/dist/tests/config-loader.test.d.ts.map +1 -0
  156. package/dist/tests/config-loader.test.js +201 -0
  157. package/dist/tests/config-loader.test.js.map +1 -0
  158. package/dist/tests/connection-manager-integration.test.d.ts +2 -0
  159. package/dist/tests/connection-manager-integration.test.d.ts.map +1 -0
  160. package/dist/tests/connection-manager-integration.test.js +431 -0
  161. package/dist/tests/connection-manager-integration.test.js.map +1 -0
  162. package/dist/tests/connection-manager.test.d.ts +2 -0
  163. package/dist/tests/connection-manager.test.d.ts.map +1 -0
  164. package/dist/tests/connection-manager.test.js +361 -0
  165. package/dist/tests/connection-manager.test.js.map +1 -0
  166. package/dist/tests/dump-import.test.d.ts +15 -0
  167. package/dist/tests/dump-import.test.d.ts.map +1 -0
  168. package/dist/tests/dump-import.test.js +430 -0
  169. package/dist/tests/dump-import.test.js.map +1 -0
  170. package/dist/tests/migration-idempotency.test.d.ts +2 -0
  171. package/dist/tests/migration-idempotency.test.d.ts.map +1 -0
  172. package/dist/tests/migration-idempotency.test.js +330 -0
  173. package/dist/tests/migration-idempotency.test.js.map +1 -0
  174. package/dist/tests/migration-upgrade-paths.test.d.ts +2 -0
  175. package/dist/tests/migration-upgrade-paths.test.d.ts.map +1 -0
  176. package/dist/tests/migration-upgrade-paths.test.js +248 -0
  177. package/dist/tests/migration-upgrade-paths.test.js.map +1 -0
  178. package/dist/tests/multi-project-migration.test.d.ts +17 -0
  179. package/dist/tests/multi-project-migration.test.d.ts.map +1 -0
  180. package/dist/tests/multi-project-migration.test.js +399 -0
  181. package/dist/tests/multi-project-migration.test.js.map +1 -0
  182. package/dist/tests/multi-project.test.d.ts +5 -0
  183. package/dist/tests/multi-project.test.d.ts.map +1 -0
  184. package/dist/tests/multi-project.test.js +238 -0
  185. package/dist/tests/multi-project.test.js.map +1 -0
  186. package/dist/tests/schema-migration.test.d.ts +8 -0
  187. package/dist/tests/schema-migration.test.d.ts.map +1 -0
  188. package/dist/tests/schema-migration.test.js +108 -0
  189. package/dist/tests/schema-migration.test.js.map +1 -0
  190. package/dist/tests/sql-dump-converters.test.d.ts +7 -0
  191. package/dist/tests/sql-dump-converters.test.d.ts.map +1 -0
  192. package/dist/tests/sql-dump-converters.test.js +314 -0
  193. package/dist/tests/sql-dump-converters.test.js.map +1 -0
  194. package/dist/tests/sql-dump-cross-database.test.d.ts +21 -0
  195. package/dist/tests/sql-dump-cross-database.test.d.ts.map +1 -0
  196. package/dist/tests/sql-dump-cross-database.test.js +314 -0
  197. package/dist/tests/sql-dump-cross-database.test.js.map +1 -0
  198. package/dist/tests/sql-dump-default-conversions.test.d.ts +8 -0
  199. package/dist/tests/sql-dump-default-conversions.test.d.ts.map +1 -0
  200. package/dist/tests/sql-dump-default-conversions.test.js +141 -0
  201. package/dist/tests/sql-dump-default-conversions.test.js.map +1 -0
  202. package/dist/tests/sql-dump-fk-constraints.test.d.ts +13 -0
  203. package/dist/tests/sql-dump-fk-constraints.test.d.ts.map +1 -0
  204. package/dist/tests/sql-dump-fk-constraints.test.js +381 -0
  205. package/dist/tests/sql-dump-fk-constraints.test.js.map +1 -0
  206. package/dist/tests/sql-dump-indexes.test.d.ts +12 -0
  207. package/dist/tests/sql-dump-indexes.test.d.ts.map +1 -0
  208. package/dist/tests/sql-dump-indexes.test.js +269 -0
  209. package/dist/tests/sql-dump-indexes.test.js.map +1 -0
  210. package/dist/tests/sql-dump-integration.test.d.ts +16 -0
  211. package/dist/tests/sql-dump-integration.test.d.ts.map +1 -0
  212. package/dist/tests/sql-dump-integration.test.js +342 -0
  213. package/dist/tests/sql-dump-integration.test.js.map +1 -0
  214. package/dist/tests/sql-dump-table-ordering.test.d.ts +8 -0
  215. package/dist/tests/sql-dump-table-ordering.test.d.ts.map +1 -0
  216. package/dist/tests/sql-dump-table-ordering.test.js +253 -0
  217. package/dist/tests/sql-dump-table-ordering.test.js.map +1 -0
  218. package/dist/tests/tasks.link-file-backward-compat.test.js +11 -1
  219. package/dist/tests/tasks.link-file-backward-compat.test.js.map +1 -1
  220. package/dist/tests/tasks.watch-files-action.test.js +11 -1
  221. package/dist/tests/tasks.watch-files-action.test.js.map +1 -1
  222. package/dist/tests/type-conversion.test.d.ts +8 -0
  223. package/dist/tests/type-conversion.test.d.ts.map +1 -0
  224. package/dist/tests/type-conversion.test.js +312 -0
  225. package/dist/tests/type-conversion.test.js.map +1 -0
  226. package/dist/tests/utils/test-helpers.d.ts +93 -0
  227. package/dist/tests/utils/test-helpers.d.ts.map +1 -0
  228. package/dist/tests/utils/test-helpers.js +407 -0
  229. package/dist/tests/utils/test-helpers.js.map +1 -0
  230. package/dist/tools/config.d.ts +58 -0
  231. package/dist/tools/config.d.ts.map +1 -0
  232. package/dist/tools/config.js +281 -0
  233. package/dist/tools/config.js.map +1 -0
  234. package/dist/tools/constraints.d.ts.map +1 -1
  235. package/dist/tools/constraints.js +138 -122
  236. package/dist/tools/constraints.js.map +1 -1
  237. package/dist/tools/context.d.ts.map +1 -1
  238. package/dist/tools/context.js +216 -109
  239. package/dist/tools/context.js.map +1 -1
  240. package/dist/tools/files.d.ts.map +1 -1
  241. package/dist/tools/files.js +123 -102
  242. package/dist/tools/files.js.map +1 -1
  243. package/dist/tools/tasks.d.ts.map +1 -1
  244. package/dist/tools/tasks.js +583 -521
  245. package/dist/tools/tasks.js.map +1 -1
  246. package/dist/tools/utils.d.ts +5 -0
  247. package/dist/tools/utils.d.ts.map +1 -1
  248. package/dist/tools/utils.js +176 -122
  249. package/dist/tools/utils.js.map +1 -1
  250. package/dist/types.d.ts +9 -26
  251. package/dist/types.d.ts.map +1 -1
  252. package/dist/utils/cleanup.d.ts +3 -0
  253. package/dist/utils/cleanup.d.ts.map +1 -1
  254. package/dist/utils/cleanup.js +14 -2
  255. package/dist/utils/cleanup.js.map +1 -1
  256. package/dist/utils/connection-manager.d.ts +59 -0
  257. package/dist/utils/connection-manager.d.ts.map +1 -0
  258. package/dist/utils/connection-manager.js +178 -0
  259. package/dist/utils/connection-manager.js.map +1 -0
  260. package/dist/utils/debug-logger.d.ts +8 -4
  261. package/dist/utils/debug-logger.d.ts.map +1 -1
  262. package/dist/utils/debug-logger.js +27 -7
  263. package/dist/utils/debug-logger.js.map +1 -1
  264. package/dist/utils/error-handler.d.ts +12 -2
  265. package/dist/utils/error-handler.d.ts.map +1 -1
  266. package/dist/utils/error-handler.js +22 -21
  267. package/dist/utils/error-handler.js.map +1 -1
  268. package/dist/utils/parameter-validator.d.ts.map +1 -1
  269. package/dist/utils/parameter-validator.js +36 -15
  270. package/dist/utils/parameter-validator.js.map +1 -1
  271. package/dist/utils/project-context.d.ts +111 -0
  272. package/dist/utils/project-context.d.ts.map +1 -0
  273. package/dist/utils/project-context.js +187 -0
  274. package/dist/utils/project-context.js.map +1 -0
  275. package/dist/utils/project-root.d.ts +79 -0
  276. package/dist/utils/project-root.d.ts.map +1 -0
  277. package/dist/utils/project-root.js +108 -0
  278. package/dist/utils/project-root.js.map +1 -0
  279. package/dist/utils/sql-dump-converters.d.ts +188 -0
  280. package/dist/utils/sql-dump-converters.d.ts.map +1 -0
  281. package/dist/utils/sql-dump-converters.js +311 -0
  282. package/dist/utils/sql-dump-converters.js.map +1 -0
  283. package/dist/utils/sql-dump.d.ts +102 -0
  284. package/dist/utils/sql-dump.d.ts.map +1 -0
  285. package/dist/utils/sql-dump.js +1550 -0
  286. package/dist/utils/sql-dump.js.map +1 -0
  287. package/dist/utils/vcs-adapter.d.ts +42 -0
  288. package/dist/utils/vcs-adapter.d.ts.map +1 -1
  289. package/dist/utils/vcs-adapter.js +154 -0
  290. package/dist/utils/vcs-adapter.js.map +1 -1
  291. package/dist/watcher/file-watcher.d.ts.map +1 -1
  292. package/dist/watcher/file-watcher.js +48 -49
  293. package/dist/watcher/file-watcher.js.map +1 -1
  294. package/dist/watcher/gitignore-parser.d.ts.map +1 -1
  295. package/dist/watcher/gitignore-parser.js +2 -1
  296. package/dist/watcher/gitignore-parser.js.map +1 -1
  297. package/docs/BASEADAPTER_IMPLEMENTATION.md +399 -0
  298. package/docs/DATABASE_AUTH.md +445 -0
  299. package/docs/DATABASE_MIGRATION.md +247 -0
  300. package/docs/MULTI_PROJECT_ARCHITECTURE.md +497 -0
  301. package/package.json +12 -4
  302. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +0 -1
  303. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.js.map +0 -1
  304. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +0 -1
  305. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.js.map +0 -1
  306. package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.d.ts.map +0 -1
  307. package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.js.map +0 -1
  308. package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +0 -1
  309. package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.js.map +0 -1
  310. package/dist/migrations/knex/bootstrap/20251025070349_create_views.d.ts.map +0 -1
  311. package/dist/migrations/knex/bootstrap/20251025070349_create_views.js.map +0 -1
  312. package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts.map +0 -1
  313. package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js +0 -15
  314. package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js.map +0 -1
  315. package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts.map +0 -1
  316. package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.js.map +0 -1
  317. package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.d.ts.map +0 -1
  318. package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.js.map +0 -1
  319. package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts.map +0 -1
  320. package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js.map +0 -1
  321. package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.d.ts.map +0 -1
  322. package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.js.map +0 -1
  323. package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts.map +0 -1
  324. package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.js.map +0 -1
  325. package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts.map +0 -1
  326. package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js.map +0 -1
  327. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts.map +0 -1
  328. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js +0 -34
  329. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js.map +0 -1
  330. package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts.map +0 -1
  331. package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js.map +0 -1
  332. package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.d.ts.map +0 -1
  333. package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.js.map +0 -1
  334. package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.d.ts.map +0 -1
  335. package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.js.map +0 -1
  336. package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +0 -1
  337. package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js.map +0 -1
  338. package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +0 -1
  339. package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js.map +0 -1
  340. package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +0 -1
  341. package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js.map +0 -1
  342. package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +0 -1
  343. package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js.map +0 -1
  344. package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +0 -1
  345. package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +0 -1
  346. package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +0 -1
  347. package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js.map +0 -1
  348. package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +0 -1
  349. package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js.map +0 -1
  350. /package/dist/{migrations → config}/knex/bootstrap/20251025020452_create_master_tables.d.ts +0 -0
  351. /package/dist/{migrations → config}/knex/bootstrap/20251025021152_create_transaction_tables.d.ts +0 -0
  352. /package/dist/{migrations → config}/knex/bootstrap/20251025021351_create_indexes.d.ts +0 -0
  353. /package/dist/{migrations → config}/knex/bootstrap/20251025021351_create_indexes.js +0 -0
  354. /package/dist/{migrations → config}/knex/bootstrap/20251025021416_seed_master_data.d.ts +0 -0
  355. /package/dist/{migrations → config}/knex/bootstrap/20251025070349_create_views.d.ts +0 -0
  356. /package/dist/{migrations → config}/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts +0 -0
  357. /package/dist/{migrations → config}/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts +0 -0
  358. /package/dist/{migrations → config}/knex/enhancements/20251025082220_fix_task_dependencies_columns.js +0 -0
  359. /package/dist/{migrations → config}/knex/enhancements/20251025090000_create_help_system_tables.d.ts +0 -0
  360. /package/dist/{migrations → config}/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts +0 -0
  361. /package/dist/{migrations → config}/knex/enhancements/20251025100000_seed_help_metadata.d.ts +0 -0
  362. /package/dist/{migrations → config}/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts +0 -0
  363. /package/dist/{migrations → config}/knex/enhancements/20251025100100_seed_remaining_use_cases.js +0 -0
  364. /package/dist/{migrations → config}/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts +0 -0
  365. /package/dist/{migrations → config}/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts +0 -0
  366. /package/dist/{migrations → config}/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts +0 -0
  367. /package/dist/{migrations → config}/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js +0 -0
  368. /package/dist/{migrations → config}/knex/enhancements/20251027020000_update_agent_reusability.d.ts +0 -0
  369. /package/dist/{migrations → config}/knex/enhancements/20251028000000_simplify_agent_system.d.ts +0 -0
  370. /package/dist/{migrations → config}/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts +0 -0
  371. /package/dist/{migrations → config}/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js +0 -0
  372. /package/dist/{migrations → config}/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts +0 -0
  373. /package/dist/{migrations → config}/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js +0 -0
  374. /package/dist/{migrations → config}/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts +0 -0
  375. /package/dist/{migrations → config}/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js +0 -0
  376. /package/dist/{migrations → config}/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts +0 -0
  377. /package/dist/{migrations → config}/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js +0 -0
  378. /package/dist/{migrations → config}/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts +0 -0
  379. /package/dist/{migrations → config}/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js +0 -0
  380. /package/dist/{migrations → config}/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts +0 -0
  381. /package/dist/{migrations → config}/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js +0 -0
  382. /package/dist/{migrations → config}/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts +0 -0
  383. /package/dist/{migrations → config}/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js +0 -0
@@ -8,11 +8,51 @@
8
8
  # Database Settings
9
9
  # ============================================================================
10
10
  [database]
11
+ # SQLite Configuration (default, local development)
11
12
  # Database file path (relative to project root or absolute)
12
13
  # Default: ".sqlew/sqlew.db"
13
14
  # path = ".sqlew/custom.db"
14
15
  # path = "/absolute/path/to/database.db"
15
16
 
17
+ # PostgreSQL/MySQL/MariaDB Configuration (multi-agent production)
18
+ # Uncomment and configure for remote database access
19
+ # type = "postgres" # or "mysql" (also works with MariaDB 10.5+)
20
+
21
+ # Connection settings (required for postgres/mysql/mariadb)
22
+ # IMPORTANT: Database must already exist! User does NOT need CREATE DATABASE privilege.
23
+ # [database.connection]
24
+ # host = "localhost"
25
+ # port = 5432 # PostgreSQL: 5432, MySQL/MariaDB: 3306
26
+ # database = "sqlew" # Must be created beforehand!
27
+
28
+ # Authentication settings (required for postgres/mysql/mariadb)
29
+ # Required user privileges: SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, DROP, REFERENCES
30
+ # [database.auth]
31
+ # type = "direct" # Options: "direct", "ssh", "aws-iam", "gcp-iam"
32
+ # user = "postgres" # or mysql_user, etc.
33
+ # password = "your-password"
34
+
35
+ # SSL/TLS Configuration (optional, for encrypted connections)
36
+ # [database.auth.ssl]
37
+ # ca = "/path/to/ca-cert.pem" # or inline certificate content
38
+ # cert = "/path/to/client-cert.pem" # for mutual TLS
39
+ # key = "/path/to/client-key.pem" # for mutual TLS
40
+ # rejectUnauthorized = true # set to false for self-signed certs (not recommended for production)
41
+
42
+ # SSH Tunnel Configuration (when type = "ssh")
43
+ # Used for bastion host / jump server access
44
+ # [database.auth.ssh]
45
+ # host = "bastion.example.com"
46
+ # port = 22
47
+ # username = "deploy"
48
+ # privateKeyPath = "/home/user/.ssh/id_rsa" # or use password
49
+ # password = "ssh-password" # alternative to privateKeyPath
50
+ # passphrase = "key-passphrase" # if private key is encrypted
51
+ # timeout = 30000 # SSH connection timeout in ms
52
+ # keepalive = true
53
+ # keepaliveInterval = 10000
54
+ # localPort = 50000 # auto-allocated from 50000-60000 if not specified
55
+
16
56
  # ============================================================================
17
57
  # Auto-Deletion Settings
18
58
  # ============================================================================
@@ -154,6 +194,59 @@ architect = true
154
194
  # Example Configurations
155
195
  # ============================================================================
156
196
 
197
+ # Example 1: PostgreSQL with Direct Authentication + SSL
198
+ # [database]
199
+ # type = "postgres"
200
+ # [database.connection]
201
+ # host = "db.example.com"
202
+ # port = 5432
203
+ # database = "sqlew_production"
204
+ # [database.auth]
205
+ # type = "direct"
206
+ # user = "postgres"
207
+ # password = "secure-password"
208
+ # [database.auth.ssl]
209
+ # ca = "/path/to/ca-cert.pem"
210
+ # rejectUnauthorized = true
211
+
212
+ # Example 2: PostgreSQL through SSH Tunnel
213
+ # [database]
214
+ # type = "postgres"
215
+ # [database.connection]
216
+ # host = "db.internal.example.com"
217
+ # port = 5432
218
+ # database = "sqlew_production"
219
+ # [database.auth]
220
+ # type = "ssh"
221
+ # user = "postgres"
222
+ # password = "db-password"
223
+ # [database.auth.ssh]
224
+ # host = "bastion.example.com"
225
+ # username = "deploy"
226
+ # privateKeyPath = "/home/user/.ssh/id_rsa"
227
+
228
+ # Example 3: MySQL with SSL and SSH
229
+ # [database]
230
+ # type = "mysql"
231
+ # [database.connection]
232
+ # host = "mysql.internal.example.com"
233
+ # port = 3306
234
+ # database = "sqlew_db"
235
+ # [database.auth]
236
+ # type = "ssh"
237
+ # user = "mysql_user"
238
+ # password = "db-password"
239
+ # [database.auth.ssl]
240
+ # ca = "-----BEGIN CERTIFICATE-----\nMIIE...\n-----END CERTIFICATE-----"
241
+ # rejectUnauthorized = true
242
+ # [database.auth.ssh]
243
+ # host = "jump.example.com"
244
+ # port = 22
245
+ # username = "deploy"
246
+ # privateKeyPath = "/home/user/.ssh/deploy_key"
247
+ # passphrase = "key-passphrase"
248
+ # localPort = 53306
249
+
157
250
  # Aggressive cleanup (development)
158
251
  # [autodelete]
159
252
  # message_hours = 1
Binary file
@@ -86,22 +86,22 @@ decision({ action: "help" })
86
86
  constraint({ action: "help" })
87
87
 
88
88
  // 2. Get focused syntax examples and templates
89
- decision({ action: "example" })
90
- constraint({ action: "example" })
91
- task({ action: "example" })
89
+ decision({ action: "example" }) // Complete decision template with all fields
90
+ constraint({ action: "example" }) // Constraint creation examples
91
+ task({ action: "example" }) // Task linking examples (if needed)
92
92
  ```
93
93
 
94
94
  **When stuck or troubleshooting (higher token cost):**
95
95
 
96
96
  ```typescript
97
97
  // Get comprehensive scenarios with multi-step workflows
98
- decision({ action: "use_case" }) // ~3-5k tokens, includes ADR templates
99
- constraint({ action: "use_case" })
98
+ decision({ action: "use_case" }) // ~3-5k tokens, full ADR scenarios
99
+ constraint({ action: "use_case" }) // Constraint enforcement patterns
100
100
  ```
101
101
 
102
102
  **Benefits:**
103
- - ✅ `help` + `example` = Low token cost, complete templates
104
- - ✅ `use_case` = Comprehensive ADR scenarios when you need full context
103
+ - ✅ `help` + `example` = Low token cost, complete templates with all required/optional fields
104
+ - ✅ `use_case` = Comprehensive ADR scenarios with decision-making frameworks
105
105
  - ✅ Error messages will suggest `use_case` when parameters fail validation
106
106
 
107
107
  ## Your Operational Approach
@@ -120,10 +120,23 @@ constraint({ action: "use_case" })
120
120
 
121
121
  **Quick Template Reference**: Use `decision({ action: "example" })` to get the complete template with all required/optional fields.
122
122
 
123
+ **Available Decision Actions**:
124
+ - `set` - Create or update a decision with full metadata
125
+ - `get` - Retrieve specific decision by key
126
+ - `list` - List all decisions with optional filters
127
+ - `search_tags` - Find decisions by tags (all/any matching)
128
+ - `search_layer` - Filter by architecture layer
129
+ - `versions` - Track decision evolution history
130
+ - `add_decision_context` - Add rich context to existing decisions
131
+ - `list_decision_contexts` - Retrieve decision contexts with filters
132
+ - `quick_set` - Simplified decision creation for rapid documentation
133
+ - `set_batch` - Create multiple decisions atomically
134
+
123
135
  **Rich Context Enhancement**: Use `add_decision_context` for extended details:
124
136
  - `rationale_extended` - Team expertise, cost analysis, performance benchmarks
125
- - `alternatives_research` - Testing results, comparison data
137
+ - `alternatives_research` - Testing results, comparison data, prototyping findings
126
138
  - `tradeoffs_analysis` - Short-term vs. long-term implications, risk assessment
139
+ - `implementation_notes` - Migration paths, rollback procedures
127
140
 
128
141
  ### Constraint Creation Protocol
129
142
 
@@ -138,16 +151,22 @@ constraint({ action: "use_case" })
138
151
 
139
152
  **Quick Template Reference**: Use `constraint({ action: "example" })` to get the constraint template.
140
153
 
154
+ **Available Constraint Actions**:
155
+ - `add` - Create a new architectural constraint
156
+ - `get` - Retrieve constraints by category, priority, or key
157
+ - `deactivate` - Disable outdated constraints without deleting them
158
+
141
159
  **Best Practice**: Always create constraints AFTER documenting the decision. Link via `related_context_key` or tags.
142
160
 
143
161
  ### Validation Protocol
144
162
 
145
163
  **Before Approving Code/Design**:
146
- 1. **Check Active Constraints**: `constraint.get({ category: "..." })`
147
- 2. **Review Related Decisions**: `decision.search_tags({ tags: [...] })`
148
- 3. **Identify Violations**: Compare proposed code against constraints
149
- 4. **Provide Alternatives**: Show compliant approaches if violations found
150
- 5. **Update Constraints**: Deactivate outdated rules, add new ones as needed
164
+ 1. **Check Active Constraints**: `constraint({ action: "get", category: "..." })`
165
+ 2. **Review Related Decisions**: `decision({ action: "search_tags", tags: [...] })`
166
+ 3. **Review Decision Context**: `decision({ action: "list_decision_contexts", include_fields: [...] })`
167
+ 4. **Identify Violations**: Compare proposed code against constraints
168
+ 5. **Provide Alternatives**: Show compliant approaches if violations found
169
+ 6. **Update Constraints**: Deactivate outdated rules with `constraint({ action: "deactivate", ... })`
151
170
 
152
171
  **Constraint Violation Response Template**:
153
172
  ```
@@ -55,11 +55,13 @@ You are an expert Context Researcher with deep expertise in querying and analyzi
55
55
  ### Sqlew Query Mastery
56
56
  You have expert knowledge of sqlew's query capabilities:
57
57
  - **Decision Search**: Query by tags, layers, context keys, versions, exact/substring matching
58
+ - **Decision Context**: Retrieve rich context (rationale, alternatives, tradeoffs) using `list_decision_contexts`
58
59
  - **Constraint Analysis**: Retrieve active constraints, understand categories and priorities
59
- - **Task Analytics**: Analyze task patterns, completion times, dependency chains, stale tasks
60
+ - **Task Analytics**: Analyze task patterns, completion times, dependency chains, stale tasks, file watchers
60
61
  - **Version History**: Track decision evolution, understand what changed and when
61
62
  - **Cross-Reference**: Link decisions to tasks, constraints to files, context to outcomes
62
63
  - **Statistics**: Interpret layer summaries, database metrics, activity patterns
64
+ - **Advanced Help System**: Query specific action documentation, parameter details, use cases, and suggested next actions
63
65
 
64
66
  ### Research Techniques
65
67
  You apply systematic investigation methods:
@@ -77,25 +79,38 @@ You apply systematic investigation methods:
77
79
  ```typescript
78
80
  // 1. Get tool overview and available actions
79
81
  decision({ action: "help" })
82
+ task({ action: "help" })
83
+ constraint({ action: "help" })
84
+ stats({ action: "help" })
80
85
 
81
86
  // 2. Get focused syntax examples for specific actions
82
87
  decision({ action: "example" })
83
88
  task({ action: "example" })
84
89
  constraint({ action: "example" })
85
90
  stats({ action: "example" })
91
+
92
+ // 3. Advanced: Query specific action documentation (stats tool only)
93
+ stats({ action: "help_action", target_tool: "decision", target_action: "set" })
94
+ stats({ action: "help_params", target_tool: "task", target_action: "create" })
86
95
  ```
87
96
 
88
97
  **When stuck or troubleshooting (higher token cost):**
89
98
 
90
99
  ```typescript
91
100
  // Get comprehensive scenarios with multi-step workflows
92
- decision({ action: "use_case" }) // ~3-5k tokens, all 41 scenarios
101
+ decision({ action: "use_case" }) // ~3-5k tokens, all decision scenarios
93
102
  task({ action: "use_case" })
103
+ constraint({ action: "use_case" })
104
+
105
+ // Or use the help system to list available use cases
106
+ stats({ action: "help_list_use_cases", category: "decision", complexity: "advanced" })
107
+ stats({ action: "help_next_actions", target_tool: "task", target_action: "create" })
94
108
  ```
95
109
 
96
110
  **Benefits:**
97
- - ✅ `help` + `example` = Low token cost, focused reference
98
- - ✅ `use_case` = Comprehensive scenarios when you need full context
111
+ - ✅ `help` + `example` = Low token cost, focused reference for immediate use
112
+ - ✅ `use_case` = Comprehensive scenarios with context and examples
113
+ - ✅ Advanced help system (`help_action`, `help_params`) for granular documentation lookup
99
114
  - ✅ Error messages will suggest `use_case` when parameters fail validation
100
115
 
101
116
  ## Your Operational Approach
@@ -107,13 +122,19 @@ task({ action: "use_case" })
107
122
  - Topic area: Use `tags` (e.g., "auth", "performance")
108
123
  - Architecture layer: Use `layer` (presentation, business, data, infrastructure, cross-cutting)
109
124
  - Alternatives analysis: Use `list_decision_contexts` with `include_fields`
125
+ - Advanced search: Use `search_advanced` with multiple filters
126
+
127
+ **Available Decision Actions**:
128
+ - `get` - Fetch specific decision by key
129
+ - `list` - List all decisions with optional filters
130
+ - `search_tags` - Find decisions by tags (all/any matching)
131
+ - `search_layer` - Filter by architecture layer (with optional tag inclusion)
132
+ - `search_advanced` - Multi-criteria search (layers, tags, scopes, dates, decided_by, text search)
133
+ - `versions` - Track decision evolution history
134
+ - `list_decision_contexts` - Get rich context (rationale, alternatives, tradeoffs) with field selection
135
+ - `has_updates` - Check if decisions changed since timestamp (useful for cache invalidation)
110
136
 
111
- **Query Strategy**: Use `action: "example"` to see working code for:
112
- - `decision.get` - Fetch specific decision by key
113
- - `decision.search_tags` - Find decisions by tags
114
- - `decision.search_layer` - Filter by architecture layer
115
- - `decision.versions` - Track decision evolution
116
- - `decision.list_decision_contexts` - Get rich details (rationale, alternatives, tradeoffs)
137
+ **Query Strategy**: Use `action: "example"` to see working code for each action
117
138
 
118
139
  ### Constraint Analysis Protocol
119
140
 
@@ -132,6 +153,14 @@ task({ action: "use_case" })
132
153
  - What are common blocker patterns?
133
154
  - Which agents handle which task types?
134
155
  - Are there stale tasks (in_progress > 24h)?
156
+ - What files are being watched by tasks?
157
+
158
+ **Available Task Actions**:
159
+ - `get` - Fetch specific task by ID
160
+ - `list` - List tasks with filters (status, layer, tags, priority, assigned_agent)
161
+ - `get_dependencies` - Retrieve task dependency graph (blocking relationships)
162
+ - `watch_files` - Get file watcher configuration for a task
163
+ - `watcher` - Query file watcher status (active files, change detection)
135
164
 
136
165
  **Query via**: `task({ action: "example" })` and `stats({ action: "example" })`
137
166
 
@@ -139,24 +168,48 @@ task({ action: "use_case" })
139
168
 
140
169
  **Linking Data Across Tables**:
141
170
  - Decision → Task: Search decisions by tags, then query tasks with same tags
171
+ - Decision Context → Decision: Use `list_decision_contexts` to find rich context for decisions
142
172
  - Constraint → Decision: Find constraint, search decisions with related key
143
- - File → Task: Check file changes, correlate with task file watchers
144
- - AgentTask: Query tasks by layer/tags (agent names NOT for historical queries)
173
+ - File → Task: Use `file({ action: "get" })` and correlate with task file watchers
174
+ - TaskDependencies: Use `get_dependencies` to map task relationships
175
+ - Agent → Task: Query tasks by `assigned_agent` field (NOT `m_agents` table for historical queries)
176
+
177
+ **Important**: The `m_agents` table is a simple registry for attribution only. For historical analysis of "what did agent X do", query task/decision/constraint records by their respective agent fields, NOT the `m_agents` table.
178
+
179
+ ### Advanced Help System
180
+
181
+ The stats tool provides a comprehensive help system for querying documentation:
182
+
183
+ **Available Stats Help Actions**:
184
+ - `help_action` - Get documentation for specific tool action (e.g., `target_tool: "decision", target_action: "set"`)
185
+ - `help_params` - Get parameter details for action (e.g., required vs optional parameters)
186
+ - `help_tool` - Get complete tool overview (e.g., `tool: "task"`)
187
+ - `help_use_case` - Retrieve specific use case by ID
188
+ - `help_list_use_cases` - List use cases with filters (category, complexity, limit, offset)
189
+ - `help_next_actions` - Get suggested next actions after completing an action
190
+
191
+ **When to Use**:
192
+ - Researching unfamiliar action parameters → `help_params`
193
+ - Understanding tool capabilities → `help_tool`
194
+ - Finding relevant use cases → `help_list_use_cases`
195
+ - Planning next steps in workflow → `help_next_actions`
145
196
 
146
197
  ## Token Efficiency Strategies
147
198
 
148
199
  ### Query Optimization
149
200
  - **Start Specific**: Use exact `key` or `task_id` when known
150
- - **Use Views**: `stats.layer_summary` aggregates data (cheaper than individual queries)
201
+ - **Use Views**: `stats({ action: "layer_summary" })` aggregates data (cheaper than individual queries)
151
202
  - **Limit Results**: Apply filters to reduce response size
152
203
  - **Example Over Help**: Use `action: "example"` for quick reference (not verbose `help`)
153
204
  - **Use Cases On Demand**: Use `action: "use_case"` only when you need scenario guidance
205
+ - **Advanced Help**: Use `stats` help actions for granular documentation lookup
154
206
 
155
207
  ### Progressive Disclosure
156
- 1. **High-level**: `stats.layer_summary()` → understand scope
157
- 2. **Filtered list**: `decision.search_tags()` → narrow to relevant subset
158
- 3. **Detailed fetch**: `decision.get()` → retrieve full context for specific items
159
- 4. **Version dive**: `decision.versions()` → only when evolution matters
208
+ 1. **High-level**: `stats({ action: "layer_summary" })` → understand scope
209
+ 2. **Filtered list**: `decision({ action: "search_tags", tags: [...] })` → narrow to relevant subset
210
+ 3. **Detailed fetch**: `decision({ action: "get", key: "..." })` → retrieve full context for specific items
211
+ 4. **Rich context**: `decision({ action: "list_decision_contexts", include_fields: [...] })` → get rationale/alternatives
212
+ 5. **Version dive**: `decision({ action: "versions", key: "..." })` → only when evolution matters
160
213
 
161
214
  ## Your Communication Style
162
215
 
@@ -47,10 +47,11 @@ You are an expert Scrum Master with deep expertise in agile software development
47
47
  You have intimate knowledge of sqlew's capabilities:
48
48
  - **Task Management**: Create, update, move tasks through kanban states (todo → in_progress → done → archived)
49
49
  - **Dependencies**: Establish task dependencies with circular detection, understand blocking relationships
50
- - **Agent Coordination**: Track active agents for **conflict prevention only** (NOT historical queries)
50
+ - **File Watching**: Monitor file changes using task watchers, track modified files automatically
51
+ - **Agent Attribution**: Simple agent name registry for tracking "who did what" (NOT for agent pooling/reuse)
51
52
  - **Decision Context**: Record architectural decisions with rationale, alternatives, and tradeoffs
52
53
  - **Constraints**: Define and enforce architectural rules and guidelines
53
- - **Statistics**: Monitor layer summaries, database stats, task board status
54
+ - **Statistics**: Monitor layer summaries, database stats, task board status, activity logs
54
55
 
55
56
  ### Agile Workflow Management
56
57
  You orchestrate development work by:
@@ -68,24 +69,27 @@ You orchestrate development work by:
68
69
  // 1. Get tool overview and available actions
69
70
  task({ action: "help" })
70
71
  decision({ action: "help" })
72
+ stats({ action: "help" })
71
73
 
72
74
  // 2. Get focused syntax examples for task management
73
- task({ action: "example" })
74
- decision({ action: "example" })
75
- stats({ action: "example" })
75
+ task({ action: "example" }) // Task creation, linking, dependencies
76
+ decision({ action: "example" }) // Decision documentation
77
+ stats({ action: "example" }) // Statistics and monitoring
76
78
  ```
77
79
 
78
80
  **When stuck or troubleshooting (higher token cost):**
79
81
 
80
82
  ```typescript
81
83
  // Get comprehensive scenarios with multi-step workflows
82
- task({ action: "use_case" }) // ~3-5k tokens, sprint planning templates
83
- decision({ action: "use_case" })
84
+ task({ action: "use_case" }) // ~3-5k tokens, sprint planning templates
85
+ decision({ action: "use_case" }) // ADR scenarios
86
+ stats({ action: "help_list_use_cases" }) // Browse available use cases
84
87
  ```
85
88
 
86
89
  **Benefits:**
87
- - ✅ `help` + `example` = Low token cost, complete task templates
88
- - ✅ `use_case` = Comprehensive sprint coordination scenarios
90
+ - ✅ `help` + `example` = Low token cost, complete task/decision templates
91
+ - ✅ `use_case` = Comprehensive sprint coordination scenarios with examples
92
+ - ✅ Advanced help system via `stats` tool for granular documentation lookup
89
93
  - ✅ Error messages will suggest `use_case` when parameters fail validation
90
94
 
91
95
  ## Your Operational Approach
@@ -100,18 +104,39 @@ decision({ action: "use_case" })
100
104
  - Assigned agent when specific expertise needed
101
105
  3. Establish dependencies using `add_dependency` action
102
106
  4. Link related tasks using `link` action for traceability
107
+ 5. Set up file watchers using `watch_files` to auto-detect changes
108
+
109
+ **Available Task Actions**:
110
+ - `create` - Create a new task with full metadata
111
+ - `update` - Modify existing task fields
112
+ - `get` - Retrieve specific task by ID
113
+ - `list` - List tasks with filters (status, layer, tags, priority, assigned_agent)
114
+ - `move` - Change task status (todo → in_progress → done → archived)
115
+ - `link` - Link tasks to decisions/constraints for traceability
116
+ - `archive` - Archive completed tasks
117
+ - `batch_create` - Create multiple tasks atomically (preferred for related work)
118
+ - `add_dependency` - Establish task dependencies with circular detection
119
+ - `remove_dependency` - Remove dependency relationships
120
+ - `get_dependencies` - Query dependency graph to identify blockers
121
+ - `watch_files` - Monitor specific files for changes related to a task
122
+ - `watcher` - Query file watcher status and detected changes
103
123
 
104
124
  **Token Optimization**: Use `batch_create` for multiple related tasks instead of individual `create` calls.
105
125
 
106
126
  **Quick Reference**: Use `task({ action: "example" })` to see batch creation template.
107
127
 
108
128
  ### Progress Monitoring
109
- - Use `stats.layer_summary` for high-level sprint status (more efficient than `task.list`)
110
- - Query `task.list` with filters only when detailed breakdown needed
111
- - Check `get_dependencies` when blocking issues suspected
112
- - Review active agents to prevent resource conflicts in parallel work
113
-
114
- **Important**: Agent table is for **conflict prevention only**, NOT for "what did this agent do in the past". Use task metadata (`assigned_agent` field) for historical analysis.
129
+ - Use `stats({ action: "layer_summary" })` for high-level sprint status (more efficient than `task.list`)
130
+ - Query `task({ action: "list", ... })` with filters only when detailed breakdown needed
131
+ - Check `task({ action: "get_dependencies", task_id: ... })` when blocking issues suspected
132
+ - Review `task({ action: "watcher", ... })` to check file change detection status
133
+ - Use `stats({ action: "activity_log" })` to monitor recent system activity
134
+
135
+ **Important Agent Model Clarification**:
136
+ - The `m_agents` table is a **simple name registry** for attribution only
137
+ - It tracks "who created/modified what" but is NOT used for agent pooling or reuse
138
+ - For historical analysis ("what did agent X do?"), query task/decision/constraint records by their `assigned_agent`/`decided_by` fields
139
+ - Agent names are permanent records; same name = same agent across all sessions
115
140
 
116
141
  ### Decision Documentation
117
142
  When architectural choices are made:
@@ -125,17 +150,20 @@ When architectural choices are made:
125
150
  ### Sub-Agent Coordination
126
151
  You leverage specialized agents by:
127
152
  - **Explicit Assignment**: Specify `assigned_agent` when creating tasks for specific expertise
128
- - **Generic Pooling**: Leave agent unassigned for general work
129
- - **Reuse Awareness**: Same agent names reuse same agent (prevents duplication)
130
- - **Conflict Prevention**: Check active agents before assigning parallel tasks on shared resources
153
+ - **Generic Work**: Leave agent unassigned for general work
154
+ - **Name Persistence**: Each unique agent name creates one permanent registry record
155
+ - **No Pooling**: Agent system simplified in v3.6.5 - no reuse/pooling complexity, just attribution tracking
156
+ - **Historical Analysis**: Query tasks by `assigned_agent` field to see what an agent worked on
131
157
 
132
158
  ## Token Efficiency Strategies
133
159
 
134
- - **Aggregated Views**: Use `stats.layer_summary` over repeated `task.list` queries
135
- - **Batch Operations**: Leverage `batch_create` for related tasks
160
+ - **Aggregated Views**: Use `stats({ action: "layer_summary" })` over repeated `task.list` queries
161
+ - **Batch Operations**: Leverage `batch_create` for related tasks (atomic, efficient)
136
162
  - **Targeted Queries**: Query `get_dependencies` only when investigating blockers
163
+ - **File Watchers**: Use `watch_files` to auto-detect changes instead of manual polling
137
164
  - **Help System**: Use `action: "example"` for quick reference (not `action: "help"` which is verbose)
138
165
  - **Pre-filtering**: Apply filters to `task.list` to reduce response size
166
+ - **Activity Logs**: Use `stats({ action: "activity_log" })` for recent activity instead of querying all tasks
139
167
 
140
168
  ## Database State Awareness
141
169
 
@@ -199,7 +227,7 @@ Use `task({ action: "example" })` to see `batch_create` template, then create ta
199
227
  - Write integration tests (test-engineer)
200
228
 
201
229
  ### 2. Set Dependencies
202
- Use `add_dependency` to chain tasks:
230
+ Use `task({ action: "add_dependency", ... })` to chain tasks:
203
231
  - OAuth flow depends on schema design
204
232
  - Session management depends on OAuth flow
205
233
  - Tests depend on session management
@@ -210,10 +238,17 @@ Use `decision({ action: "example" })` to see decision template, then record:
210
238
  - Rationale, alternatives, tradeoffs
211
239
  - Tag with ["auth", "architecture"]
212
240
 
213
- ### 4. Monitor Progress
214
- - High-level: `stats.layer_summary()`
215
- - Detailed: `task.list({ layer: "...", status: "..." })`
216
- - Blockers: `task.get_dependencies({ task_id: ... })`
241
+ ### 4. Set Up File Watchers (Optional)
242
+ Use `task({ action: "watch_files", task_id: ..., files: [...] })` to auto-detect changes:
243
+ - Monitor OAuth implementation files
244
+ - Track schema migration files
245
+ - Detect test file modifications
246
+
247
+ ### 5. Monitor Progress
248
+ - High-level: `stats({ action: "layer_summary" })`
249
+ - Detailed: `task({ action: "list", layer: "...", status: "..." })`
250
+ - Blockers: `task({ action: "get_dependencies", task_id: ... })`
251
+ - File changes: `task({ action: "watcher", task_id: ... })`
217
252
 
218
253
  ## Edge Case Handling
219
254
 
package/assets/schema.sql CHANGED
@@ -134,7 +134,7 @@ CREATE TABLE IF NOT EXISTS t_constraints (
134
134
  constraint_text TEXT NOT NULL,
135
135
  priority INTEGER DEFAULT 2, -- 1=low, 2=medium, 3=high, 4=critical
136
136
  active INTEGER DEFAULT 1,
137
- created_by INTEGER REFERENCES m_agents(id),
137
+ agent_id INTEGER REFERENCES m_agents(id),
138
138
  ts INTEGER DEFAULT (unixepoch())
139
139
  );
140
140
 
@@ -377,7 +377,7 @@ SELECT
377
377
  FROM t_constraints c
378
378
  JOIN m_constraint_categories cc ON c.category_id = cc.id
379
379
  LEFT JOIN m_layers l ON c.layer_id = l.id
380
- LEFT JOIN m_agents a ON c.created_by = a.id
380
+ LEFT JOIN m_agents a ON c.agent_id = a.id
381
381
  WHERE c.active = 1
382
382
  ORDER BY c.priority DESC, cc.name, c.ts DESC;
383
383
 
@@ -0,0 +1,86 @@
1
+ /**
2
+ * @fileoverview Authentication Provider Factory
3
+ *
4
+ * Factory module for creating appropriate authentication providers based on database configuration.
5
+ * Supports direct connections and future IAM-based authentication.
6
+ *
7
+ * **Note:** SSH tunneling is not supported. Users must set up SSH tunnels manually.
8
+ *
9
+ * @module adapters/auth/auth-factory
10
+ */
11
+ import { BaseAuthProvider } from './base-auth-provider.js';
12
+ import type { DatabaseConfig } from '../../config/types.js';
13
+ /**
14
+ * Create an authentication provider based on database configuration.
15
+ *
16
+ * Provider selection logic:
17
+ * - SQLite: Returns null (no authentication needed for file-based database)
18
+ * - MySQL/PostgreSQL: Returns DirectAuthProvider
19
+ *
20
+ * @param config - Database configuration
21
+ * @returns Authentication provider instance or null for SQLite
22
+ * @throws Error if database type is invalid
23
+ *
24
+ * @example
25
+ * // Direct connection
26
+ * const config: DatabaseConfig = {
27
+ * type: 'mysql',
28
+ * connection: {
29
+ * host: 'localhost',
30
+ * port: 3306,
31
+ * database: 'mydb'
32
+ * },
33
+ * auth: {
34
+ * type: 'direct',
35
+ * user: 'dbuser',
36
+ * password: 'dbpass'
37
+ * }
38
+ * };
39
+ * const provider = createAuthProvider(config);
40
+ * // Returns DirectAuthProvider instance
41
+ *
42
+ * @example
43
+ * // Connection via manual SSH tunnel
44
+ * // Step 1: Set up tunnel manually:
45
+ * // ssh -L 3307:db.internal.company.com:3306 user@bastion.example.com
46
+ * // Step 2: Configure to use localhost:
47
+ * const config: DatabaseConfig = {
48
+ * type: 'mysql',
49
+ * connection: {
50
+ * host: 'localhost', // Tunnel endpoint
51
+ * port: 3307, // Forwarded port
52
+ * database: 'mydb'
53
+ * },
54
+ * auth: {
55
+ * type: 'direct',
56
+ * user: 'dbuser',
57
+ * password: 'dbpass'
58
+ * }
59
+ * };
60
+ * const provider = createAuthProvider(config);
61
+ * // Returns DirectAuthProvider for localhost connection
62
+ *
63
+ * @example
64
+ * // SQLite (no authentication)
65
+ * const sqliteConfig: DatabaseConfig = {
66
+ * type: 'sqlite',
67
+ * path: './data.db'
68
+ * };
69
+ * const provider = createAuthProvider(sqliteConfig);
70
+ * // Returns null
71
+ */
72
+ export declare function createAuthProvider(config: DatabaseConfig): BaseAuthProvider | null;
73
+ /**
74
+ * Check if database type requires authentication.
75
+ *
76
+ * @param config - Database configuration
77
+ * @returns True if authentication is required (MySQL/PostgreSQL)
78
+ *
79
+ * @example
80
+ * if (requiresAuthentication(config)) {
81
+ * const provider = createAuthProvider(config);
82
+ * await provider!.authenticate();
83
+ * }
84
+ */
85
+ export declare function requiresAuthentication(config: DatabaseConfig): boolean;
86
+ //# sourceMappingURL=auth-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-factory.d.ts","sourceRoot":"","sources":["../../../src/adapters/auth/auth-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,GAAG,IAAI,CAmBlF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAEtE"}