sqlew 4.1.1 → 4.3.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 (302) hide show
  1. package/CHANGELOG.md +1862 -1817
  2. package/README.md +25 -165
  3. package/assets/claude-md-snippets/plan-mode-integration.md +48 -24
  4. package/assets/sample-skills/sqlew-decision-format/SKILL.md +73 -0
  5. package/dist/cli/hooks/check-completion.d.ts.map +1 -1
  6. package/dist/cli/hooks/check-completion.js +90 -2
  7. package/dist/cli/hooks/check-completion.js.map +1 -1
  8. package/dist/cli/hooks/init-hooks.d.ts.map +1 -1
  9. package/dist/cli/hooks/init-hooks.js +97 -5
  10. package/dist/cli/hooks/init-hooks.js.map +1 -1
  11. package/dist/cli/hooks/on-enter-plan.d.ts +22 -0
  12. package/dist/cli/hooks/on-enter-plan.d.ts.map +1 -0
  13. package/dist/cli/hooks/on-enter-plan.js +51 -0
  14. package/dist/cli/hooks/on-enter-plan.js.map +1 -0
  15. package/dist/cli/hooks/on-exit-plan.d.ts +20 -0
  16. package/dist/cli/hooks/on-exit-plan.d.ts.map +1 -0
  17. package/dist/cli/hooks/on-exit-plan.js +66 -0
  18. package/dist/cli/hooks/on-exit-plan.js.map +1 -0
  19. package/dist/cli/hooks/on-stop.d.ts +19 -0
  20. package/dist/cli/hooks/on-stop.d.ts.map +1 -0
  21. package/dist/cli/hooks/on-stop.js +152 -0
  22. package/dist/cli/hooks/on-stop.js.map +1 -0
  23. package/dist/cli/hooks/on-subagent-stop.d.ts +20 -0
  24. package/dist/cli/hooks/on-subagent-stop.d.ts.map +1 -0
  25. package/dist/cli/hooks/on-subagent-stop.js +94 -0
  26. package/dist/cli/hooks/on-subagent-stop.js.map +1 -0
  27. package/dist/cli/hooks/plan-pattern-extractor.d.ts +87 -0
  28. package/dist/cli/hooks/plan-pattern-extractor.d.ts.map +1 -0
  29. package/dist/cli/hooks/plan-pattern-extractor.js +218 -0
  30. package/dist/cli/hooks/plan-pattern-extractor.js.map +1 -0
  31. package/dist/cli/hooks/plan-processor.d.ts +43 -0
  32. package/dist/cli/hooks/plan-processor.d.ts.map +1 -0
  33. package/dist/cli/hooks/plan-processor.js +115 -0
  34. package/dist/cli/hooks/plan-processor.js.map +1 -0
  35. package/dist/cli/hooks/plan-toml-parser.d.ts +42 -0
  36. package/dist/cli/hooks/plan-toml-parser.d.ts.map +1 -0
  37. package/dist/cli/hooks/plan-toml-parser.js +178 -0
  38. package/dist/cli/hooks/plan-toml-parser.js.map +1 -0
  39. package/dist/cli/hooks/save.d.ts +7 -9
  40. package/dist/cli/hooks/save.d.ts.map +1 -1
  41. package/dist/cli/hooks/save.js +50 -25
  42. package/dist/cli/hooks/save.js.map +1 -1
  43. package/dist/cli/hooks/stdin-parser.d.ts +66 -2
  44. package/dist/cli/hooks/stdin-parser.d.ts.map +1 -1
  45. package/dist/cli/hooks/stdin-parser.js +57 -2
  46. package/dist/cli/hooks/stdin-parser.js.map +1 -1
  47. package/dist/cli/hooks/suggest.d.ts +8 -4
  48. package/dist/cli/hooks/suggest.d.ts.map +1 -1
  49. package/dist/cli/hooks/suggest.js +21 -123
  50. package/dist/cli/hooks/suggest.js.map +1 -1
  51. package/dist/cli/hooks/track-plan.d.ts +8 -1
  52. package/dist/cli/hooks/track-plan.d.ts.map +1 -1
  53. package/dist/cli/hooks/track-plan.js +64 -66
  54. package/dist/cli/hooks/track-plan.js.map +1 -1
  55. package/dist/cli.d.ts.map +1 -1
  56. package/dist/cli.js +139 -38
  57. package/dist/cli.js.map +1 -1
  58. package/dist/config/global-config.d.ts +90 -0
  59. package/dist/config/global-config.d.ts.map +1 -1
  60. package/dist/config/global-config.js +86 -1
  61. package/dist/config/global-config.js.map +1 -1
  62. package/dist/database/initialization/init.js +3 -3
  63. package/dist/database/initialization/init.js.map +1 -1
  64. package/dist/database/initialization/schema-version.js +1 -1
  65. package/dist/database/initialization/schema-version.js.map +1 -1
  66. package/dist/database/migrations/v4/20251126000000_v4_bootstrap.js +32 -32
  67. package/dist/database/migrations/v4/20251225000000_v4_seed_missing_help_data.d.ts +14 -0
  68. package/dist/database/migrations/v4/20251225000000_v4_seed_missing_help_data.d.ts.map +1 -0
  69. package/dist/database/migrations/v4/20251225000000_v4_seed_missing_help_data.js +201 -0
  70. package/dist/database/migrations/v4/20251225000000_v4_seed_missing_help_data.js.map +1 -0
  71. package/dist/database/migrations/v4/20251225000001_v4_fix_help_params.d.ts +12 -0
  72. package/dist/database/migrations/v4/20251225000001_v4_fix_help_params.d.ts.map +1 -0
  73. package/dist/database/migrations/v4/20251225000001_v4_fix_help_params.js +61 -0
  74. package/dist/database/migrations/v4/20251225000001_v4_fix_help_params.js.map +1 -0
  75. package/dist/database/migrations/v4/20260102204000_v4_fix_decision_set_example.d.ts +15 -0
  76. package/dist/database/migrations/v4/20260102204000_v4_fix_decision_set_example.d.ts.map +1 -0
  77. package/dist/database/migrations/v4/20260102204000_v4_fix_decision_set_example.js +74 -0
  78. package/dist/database/migrations/v4/20260102204000_v4_fix_decision_set_example.js.map +1 -0
  79. package/dist/index.js +8 -4
  80. package/dist/index.js.map +1 -1
  81. package/dist/init-skills.d.ts +6 -1
  82. package/dist/init-skills.d.ts.map +1 -1
  83. package/dist/init-skills.js +50 -1
  84. package/dist/init-skills.js.map +1 -1
  85. package/dist/knexfile.d.ts.map +1 -1
  86. package/dist/knexfile.js +16 -12
  87. package/dist/knexfile.js.map +1 -1
  88. package/dist/server/setup.d.ts.map +1 -1
  89. package/dist/server/setup.js +33 -11
  90. package/dist/server/setup.js.map +1 -1
  91. package/dist/server/tool-handlers.d.ts.map +1 -1
  92. package/dist/server/tool-handlers.js +7 -1
  93. package/dist/server/tool-handlers.js.map +1 -1
  94. package/dist/server/tool-registry.js +1 -1
  95. package/dist/server/tool-registry.js.map +1 -1
  96. package/dist/tests/database/sql-dump/table-ordering.test.js +6 -1
  97. package/dist/tests/database/sql-dump/table-ordering.test.js.map +1 -1
  98. package/dist/tests/docker/native/constraint-operations.test.js +74 -137
  99. package/dist/tests/docker/native/constraint-operations.test.js.map +1 -1
  100. package/dist/tests/docker/native/decision-operations.test.js +52 -40
  101. package/dist/tests/docker/native/decision-operations.test.js.map +1 -1
  102. package/dist/tests/docker/native/help-system.test.d.ts +3 -2
  103. package/dist/tests/docker/native/help-system.test.d.ts.map +1 -1
  104. package/dist/tests/docker/native/help-system.test.js +90 -80
  105. package/dist/tests/docker/native/help-system.test.js.map +1 -1
  106. package/dist/tests/docker/native/suggest-tool.test.d.ts +2 -2
  107. package/dist/tests/docker/native/suggest-tool.test.js +130 -63
  108. package/dist/tests/docker/native/suggest-tool.test.js.map +1 -1
  109. package/dist/tests/docker/native/task-operations.test.js +9 -19
  110. package/dist/tests/docker/native/task-operations.test.js.map +1 -1
  111. package/dist/tests/docker/native/test-harness.d.ts.map +1 -1
  112. package/dist/tests/docker/native/test-harness.js +6 -5
  113. package/dist/tests/docker/native/test-harness.js.map +1 -1
  114. package/dist/tests/feature/decision/batch-validation-comprehensive.test.js +7 -8
  115. package/dist/tests/feature/decision/batch-validation-comprehensive.test.js.map +1 -1
  116. package/dist/tests/feature/decision/context-modular.test.js +1 -3
  117. package/dist/tests/feature/decision/context-modular.test.js.map +1 -1
  118. package/dist/tests/feature/decision/truncate.test.d.ts +8 -0
  119. package/dist/tests/feature/decision/truncate.test.d.ts.map +1 -0
  120. package/dist/tests/feature/decision/truncate.test.js +192 -0
  121. package/dist/tests/feature/decision/truncate.test.js.map +1 -0
  122. package/dist/tests/feature/help/help-system.test.d.ts +1 -13
  123. package/dist/tests/feature/help/help-system.test.d.ts.map +1 -1
  124. package/dist/tests/feature/help/help-system.test.js +107 -331
  125. package/dist/tests/feature/help/help-system.test.js.map +1 -1
  126. package/dist/tests/feature/task/auto-pruning-decision-link.test.js +2 -4
  127. package/dist/tests/feature/task/auto-pruning-decision-link.test.js.map +1 -1
  128. package/dist/tests/integration/all-features.standalone.js +1 -3
  129. package/dist/tests/integration/all-features.standalone.js.map +1 -1
  130. package/dist/tests/migrations/test-all-versions-real.js +2 -4
  131. package/dist/tests/migrations/test-all-versions-real.js.map +1 -1
  132. package/dist/tests/migrations/test-all-versions.js +3 -7
  133. package/dist/tests/migrations/test-all-versions.js.map +1 -1
  134. package/dist/tests/unit/config/plan-toml-cache.test.d.ts +9 -0
  135. package/dist/tests/unit/config/plan-toml-cache.test.d.ts.map +1 -0
  136. package/dist/tests/unit/config/plan-toml-cache.test.js +230 -0
  137. package/dist/tests/unit/config/plan-toml-cache.test.js.map +1 -0
  138. package/dist/tests/unit/hooks/plan-toml-parser.test.d.ts +10 -0
  139. package/dist/tests/unit/hooks/plan-toml-parser.test.d.ts.map +1 -0
  140. package/dist/tests/unit/hooks/plan-toml-parser.test.js +316 -0
  141. package/dist/tests/unit/hooks/plan-toml-parser.test.js.map +1 -0
  142. package/dist/tests/unit/universal-knex.test.js +3 -0
  143. package/dist/tests/unit/universal-knex.test.js.map +1 -1
  144. package/dist/tests/unit/utils/config-loader.test.js +130 -191
  145. package/dist/tests/unit/utils/config-loader.test.js.map +1 -1
  146. package/dist/tests/unit/utils/project-detector.test.js +24 -0
  147. package/dist/tests/unit/utils/project-detector.test.js.map +1 -1
  148. package/dist/tests/unit/validation/parameter-validation.test.js +2 -2
  149. package/dist/tests/unit/validation/parameter-validation.test.js.map +1 -1
  150. package/dist/tests/unit/validation/policy-validation.test.js +1 -3
  151. package/dist/tests/unit/validation/policy-validation.test.js.map +1 -1
  152. package/dist/tools/constraints/actions/activate.d.ts +46 -0
  153. package/dist/tools/constraints/actions/activate.d.ts.map +1 -0
  154. package/dist/tools/constraints/actions/activate.js +105 -0
  155. package/dist/tools/constraints/actions/activate.js.map +1 -0
  156. package/dist/tools/constraints/actions/add.d.ts.map +1 -1
  157. package/dist/tools/constraints/actions/add.js +30 -13
  158. package/dist/tools/constraints/actions/add.js.map +1 -1
  159. package/dist/tools/constraints/actions/deactivate.d.ts.map +1 -1
  160. package/dist/tools/constraints/actions/deactivate.js +7 -4
  161. package/dist/tools/constraints/actions/deactivate.js.map +1 -1
  162. package/dist/tools/constraints/actions/get.d.ts.map +1 -1
  163. package/dist/tools/constraints/actions/get.js +10 -7
  164. package/dist/tools/constraints/actions/get.js.map +1 -1
  165. package/dist/tools/constraints/actions/suggest-pending.d.ts +41 -0
  166. package/dist/tools/constraints/actions/suggest-pending.d.ts.map +1 -0
  167. package/dist/tools/constraints/actions/suggest-pending.js +71 -0
  168. package/dist/tools/constraints/actions/suggest-pending.js.map +1 -0
  169. package/dist/tools/constraints/help/example.d.ts.map +1 -1
  170. package/dist/tools/constraints/help/example.js +65 -1
  171. package/dist/tools/constraints/help/example.js.map +1 -1
  172. package/dist/tools/constraints/help/help.d.ts.map +1 -1
  173. package/dist/tools/constraints/help/help.js +10 -5
  174. package/dist/tools/constraints/help/help.js.map +1 -1
  175. package/dist/tools/constraints/index.d.ts +2 -0
  176. package/dist/tools/constraints/index.d.ts.map +1 -1
  177. package/dist/tools/constraints/index.js +2 -0
  178. package/dist/tools/constraints/index.js.map +1 -1
  179. package/dist/tools/context/actions/add-context.d.ts.map +1 -1
  180. package/dist/tools/context/actions/add-context.js +13 -6
  181. package/dist/tools/context/actions/add-context.js.map +1 -1
  182. package/dist/tools/context/actions/list-contexts.d.ts.map +1 -1
  183. package/dist/tools/context/actions/list-contexts.js +12 -7
  184. package/dist/tools/context/actions/list-contexts.js.map +1 -1
  185. package/dist/tools/context/actions/list.d.ts.map +1 -1
  186. package/dist/tools/context/actions/list.js +8 -0
  187. package/dist/tools/context/actions/list.js.map +1 -1
  188. package/dist/tools/context/actions/search-advanced.d.ts.map +1 -1
  189. package/dist/tools/context/actions/search-advanced.js +41 -27
  190. package/dist/tools/context/actions/search-advanced.js.map +1 -1
  191. package/dist/tools/context/actions/search-layer.d.ts.map +1 -1
  192. package/dist/tools/context/actions/search-layer.js +8 -0
  193. package/dist/tools/context/actions/search-layer.js.map +1 -1
  194. package/dist/tools/context/actions/search-tags.d.ts.map +1 -1
  195. package/dist/tools/context/actions/search-tags.js +8 -0
  196. package/dist/tools/context/actions/search-tags.js.map +1 -1
  197. package/dist/tools/files/actions/check-lock.d.ts.map +1 -1
  198. package/dist/tools/files/actions/check-lock.js +9 -3
  199. package/dist/tools/files/actions/check-lock.js.map +1 -1
  200. package/dist/tools/files/actions/get.d.ts.map +1 -1
  201. package/dist/tools/files/actions/get.js +18 -13
  202. package/dist/tools/files/actions/get.js.map +1 -1
  203. package/dist/tools/files/actions/record-batch.d.ts.map +1 -1
  204. package/dist/tools/files/actions/record-batch.js +11 -6
  205. package/dist/tools/files/actions/record-batch.js.map +1 -1
  206. package/dist/tools/files/actions/record.d.ts.map +1 -1
  207. package/dist/tools/files/actions/record.js +8 -2
  208. package/dist/tools/files/actions/record.js.map +1 -1
  209. package/dist/tools/files/help/example.js +8 -8
  210. package/dist/tools/files/help/example.js.map +1 -1
  211. package/dist/tools/files/help/help.js +4 -4
  212. package/dist/tools/files/help/help.js.map +1 -1
  213. package/dist/tools/files/internal/validation.d.ts.map +1 -1
  214. package/dist/tools/files/internal/validation.js +1 -2
  215. package/dist/tools/files/internal/validation.js.map +1 -1
  216. package/dist/tools/help-queries.d.ts.map +1 -1
  217. package/dist/tools/help-queries.js +57 -27
  218. package/dist/tools/help-queries.js.map +1 -1
  219. package/dist/tools/suggest/actions/by-tags.d.ts.map +1 -1
  220. package/dist/tools/suggest/actions/by-tags.js +3 -1
  221. package/dist/tools/suggest/actions/by-tags.js.map +1 -1
  222. package/dist/tools/suggest/help/constraint-help.js +2 -2
  223. package/dist/tools/suggest/help/constraint-help.js.map +1 -1
  224. package/dist/tools/tasks/help/example.d.ts.map +1 -1
  225. package/dist/tools/tasks/help/example.js +10 -0
  226. package/dist/tools/tasks/help/example.js.map +1 -1
  227. package/dist/tools/tasks/help/help.d.ts.map +1 -1
  228. package/dist/tools/tasks/help/help.js +10 -0
  229. package/dist/tools/tasks/help/help.js.map +1 -1
  230. package/dist/tools/use_case/actions/search.js +5 -5
  231. package/dist/tools/use_case/actions/search.js.map +1 -1
  232. package/dist/tools/use_case/help/example.d.ts +2 -7
  233. package/dist/tools/use_case/help/example.d.ts.map +1 -1
  234. package/dist/tools/use_case/help/example.js +24 -37
  235. package/dist/tools/use_case/help/example.js.map +1 -1
  236. package/dist/tools/use_case/help/help.js +1 -1
  237. package/dist/tools/use_case/help/help.js.map +1 -1
  238. package/dist/types/actions.d.ts +1 -1
  239. package/dist/types/actions.d.ts.map +1 -1
  240. package/dist/types.d.ts +11 -4
  241. package/dist/types.d.ts.map +1 -1
  242. package/dist/utils/action-specs/constraint-specs.d.ts +1 -1
  243. package/dist/utils/action-specs/constraint-specs.d.ts.map +1 -1
  244. package/dist/utils/action-specs/constraint-specs.js +22 -5
  245. package/dist/utils/action-specs/constraint-specs.js.map +1 -1
  246. package/dist/utils/action-specs/decision-specs.js +13 -13
  247. package/dist/utils/action-specs/decision-specs.js.map +1 -1
  248. package/dist/utils/action-specs/file-specs.d.ts.map +1 -1
  249. package/dist/utils/action-specs/file-specs.js +8 -10
  250. package/dist/utils/action-specs/file-specs.js.map +1 -1
  251. package/dist/utils/db-aggregations.d.ts.map +1 -1
  252. package/dist/utils/db-aggregations.js +44 -1
  253. package/dist/utils/db-aggregations.js.map +1 -1
  254. package/dist/utils/hook-queue.d.ts +43 -3
  255. package/dist/utils/hook-queue.d.ts.map +1 -1
  256. package/dist/utils/hook-queue.js +326 -32
  257. package/dist/utils/hook-queue.js.map +1 -1
  258. package/dist/utils/param-normalizer.d.ts +52 -0
  259. package/dist/utils/param-normalizer.d.ts.map +1 -0
  260. package/dist/utils/param-normalizer.js +70 -0
  261. package/dist/utils/param-normalizer.js.map +1 -0
  262. package/dist/utils/parameter-validator.d.ts.map +1 -1
  263. package/dist/utils/parameter-validator.js +2 -0
  264. package/dist/utils/parameter-validator.js.map +1 -1
  265. package/dist/utils/project-detector.js +21 -6
  266. package/dist/utils/project-detector.js.map +1 -1
  267. package/dist/utils/suggestion-scorer.d.ts.map +1 -1
  268. package/dist/utils/suggestion-scorer.js +5 -0
  269. package/dist/utils/suggestion-scorer.js.map +1 -1
  270. package/dist/utils/text-truncate.d.ts +13 -0
  271. package/dist/utils/text-truncate.d.ts.map +1 -0
  272. package/dist/utils/text-truncate.js +18 -0
  273. package/dist/utils/text-truncate.js.map +1 -0
  274. package/dist/utils/validators.d.ts +1 -1
  275. package/dist/utils/validators.d.ts.map +1 -1
  276. package/dist/utils/validators.js +1 -1
  277. package/dist/utils/validators.js.map +1 -1
  278. package/dist/watcher/base-watcher.d.ts.map +1 -1
  279. package/dist/watcher/base-watcher.js +4 -3
  280. package/dist/watcher/base-watcher.js.map +1 -1
  281. package/dist/watcher/file-watcher.d.ts.map +1 -1
  282. package/dist/watcher/file-watcher.js +5 -1
  283. package/dist/watcher/file-watcher.js.map +1 -1
  284. package/dist/watcher/queue-watcher.d.ts +12 -1
  285. package/dist/watcher/queue-watcher.d.ts.map +1 -1
  286. package/dist/watcher/queue-watcher.js +92 -12
  287. package/dist/watcher/queue-watcher.js.map +1 -1
  288. package/docs/ADR_CONCEPTS.md +4 -0
  289. package/docs/HOOKS_GUIDE.md +1 -1
  290. package/package.json +87 -123
  291. package/dist/tests/feature/vcs/git-aware-completion.test.d.ts +0 -6
  292. package/dist/tests/feature/vcs/git-aware-completion.test.d.ts.map +0 -1
  293. package/dist/tests/feature/vcs/git-aware-completion.test.js +0 -197
  294. package/dist/tests/feature/vcs/git-aware-completion.test.js.map +0 -1
  295. package/dist/tests/feature/vcs/two-step-git-completion.test.d.ts +0 -6
  296. package/dist/tests/feature/vcs/two-step-git-completion.test.d.ts.map +0 -1
  297. package/dist/tests/feature/vcs/two-step-git-completion.test.js +0 -305
  298. package/dist/tests/feature/vcs/two-step-git-completion.test.js.map +0 -1
  299. package/dist/tests/feature/vcs/vcs-staging.test.d.ts +0 -6
  300. package/dist/tests/feature/vcs/vcs-staging.test.d.ts.map +0 -1
  301. package/dist/tests/feature/vcs/vcs-staging.test.js +0 -142
  302. package/dist/tests/feature/vcs/vcs-staging.test.js.map +0 -1
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Activate constraints (by tag or by ID)
3
+ *
4
+ * - activateConstraintsByTag: Bulk activate by tag (for plan-based workflow)
5
+ * - activateConstraint: Single constraint by ID (MCP action)
6
+ *
7
+ * @since v4.2.1
8
+ */
9
+ import { DatabaseAdapter } from '../../../adapters/index.js';
10
+ /**
11
+ * Activate constraints by tag response
12
+ */
13
+ export interface ActivateConstraintsResponse {
14
+ success: boolean;
15
+ activated_count: number;
16
+ }
17
+ /**
18
+ * Activate constraint by ID response
19
+ */
20
+ export interface ActivateConstraintByIdResponse {
21
+ success: boolean;
22
+ constraint_id: number;
23
+ message: string;
24
+ }
25
+ /**
26
+ * Activate all constraints matching a specific tag
27
+ *
28
+ * Used by queue-watcher to activate constraints when implementation starts.
29
+ * The tag typically contains the plan_id short form (8 chars).
30
+ *
31
+ * @param tag - Tag to match (e.g., plan_id short form)
32
+ * @param adapter - Optional database adapter (for testing)
33
+ * @returns Number of constraints activated
34
+ */
35
+ export declare function activateConstraintsByTag(tag: string, adapter?: DatabaseAdapter): Promise<ActivateConstraintsResponse>;
36
+ /**
37
+ * Activate a single constraint by ID
38
+ *
39
+ * @param params - Parameters containing constraint_id
40
+ * @param adapter - Optional database adapter (for testing)
41
+ * @returns Success response with constraint ID
42
+ */
43
+ export declare function activateConstraint(params: {
44
+ constraint_id: number;
45
+ }, adapter?: DatabaseAdapter): Promise<ActivateConstraintByIdResponse>;
46
+ //# sourceMappingURL=activate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activate.d.ts","sourceRoot":"","sources":["../../../../src/tools/constraints/actions/activate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAO7D;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,2BAA2B,CAAC,CAqCtC;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,EACjC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,8BAA8B,CAAC,CA6CzC"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Activate constraints (by tag or by ID)
3
+ *
4
+ * - activateConstraintsByTag: Bulk activate by tag (for plan-based workflow)
5
+ * - activateConstraint: Single constraint by ID (MCP action)
6
+ *
7
+ * @since v4.2.1
8
+ */
9
+ import { getAdapter } from '../../../database.js';
10
+ import { getProjectContext } from '../../../utils/project-context.js';
11
+ import { normalizeParams, CONSTRAINT_ALIASES } from '../../../utils/param-normalizer.js';
12
+ import connectionManager from '../../../utils/connection-manager.js';
13
+ import { SQLITE_TRUE } from '../../../constants.js';
14
+ /**
15
+ * Activate all constraints matching a specific tag
16
+ *
17
+ * Used by queue-watcher to activate constraints when implementation starts.
18
+ * The tag typically contains the plan_id short form (8 chars).
19
+ *
20
+ * @param tag - Tag to match (e.g., plan_id short form)
21
+ * @param adapter - Optional database adapter (for testing)
22
+ * @returns Number of constraints activated
23
+ */
24
+ export async function activateConstraintsByTag(tag, adapter) {
25
+ const actualAdapter = adapter ?? getAdapter();
26
+ const knex = actualAdapter.getKnex();
27
+ try {
28
+ return await connectionManager.executeWithRetry(async () => {
29
+ const projectId = getProjectContext().getProjectId();
30
+ // Find constraints with matching tag that are inactive
31
+ const constraintIds = await knex('v4_constraints as c')
32
+ .join('v4_constraint_tags as ct', 'c.id', 'ct.constraint_id')
33
+ .join('v4_tags as t', 'ct.tag_id', 't.id')
34
+ .where('c.project_id', projectId)
35
+ .where('c.active', 0)
36
+ .where('t.name', tag)
37
+ .select('c.id')
38
+ .then(rows => rows.map(r => r.id));
39
+ if (constraintIds.length === 0) {
40
+ return { success: true, activated_count: 0 };
41
+ }
42
+ // Activate all matching constraints
43
+ await knex('v4_constraints')
44
+ .whereIn('id', constraintIds)
45
+ .where('project_id', projectId)
46
+ .update({ active: SQLITE_TRUE });
47
+ return {
48
+ success: true,
49
+ activated_count: constraintIds.length,
50
+ };
51
+ });
52
+ }
53
+ catch (error) {
54
+ const message = error instanceof Error ? error.message : String(error);
55
+ throw new Error(`Failed to activate constraints: ${message}`);
56
+ }
57
+ }
58
+ /**
59
+ * Activate a single constraint by ID
60
+ *
61
+ * @param params - Parameters containing constraint_id
62
+ * @param adapter - Optional database adapter (for testing)
63
+ * @returns Success response with constraint ID
64
+ */
65
+ export async function activateConstraint(params, adapter) {
66
+ const actualAdapter = adapter ?? getAdapter();
67
+ const knex = actualAdapter.getKnex();
68
+ // Normalize aliases: id → constraint_id
69
+ const normalizedParams = normalizeParams(params, CONSTRAINT_ALIASES);
70
+ try {
71
+ return await connectionManager.executeWithRetry(async () => {
72
+ const projectId = getProjectContext().getProjectId();
73
+ // Check if constraint exists
74
+ const constraint = await knex('v4_constraints')
75
+ .where('id', normalizedParams.constraint_id)
76
+ .where('project_id', projectId)
77
+ .first();
78
+ if (!constraint) {
79
+ throw new Error(`Constraint not found: ${normalizedParams.constraint_id}`);
80
+ }
81
+ if (constraint.active === 1) {
82
+ return {
83
+ success: true,
84
+ constraint_id: normalizedParams.constraint_id,
85
+ message: 'Constraint already active',
86
+ };
87
+ }
88
+ // Activate the constraint
89
+ await knex('v4_constraints')
90
+ .where('id', normalizedParams.constraint_id)
91
+ .where('project_id', projectId)
92
+ .update({ active: SQLITE_TRUE });
93
+ return {
94
+ success: true,
95
+ constraint_id: normalizedParams.constraint_id,
96
+ message: 'Constraint activated',
97
+ };
98
+ });
99
+ }
100
+ catch (error) {
101
+ const message = error instanceof Error ? error.message : String(error);
102
+ throw new Error(`Failed to activate constraint: ${message}`);
103
+ }
104
+ }
105
+ //# sourceMappingURL=activate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activate.js","sourceRoot":"","sources":["../../../../src/tools/constraints/actions/activate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../../src/tools/constraints/actions/add.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAkB7D,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAErB;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,qBAAqB,CAAC,CA6EhC"}
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../../src/tools/constraints/actions/add.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAmB7D,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAErB;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,qBAAqB,CAAC,CA+FhC"}
@@ -6,6 +6,7 @@ import { getAdapter, getLayerId, getOrCreateTag, getOrCreateCategoryId } from '.
6
6
  import { STRING_TO_PRIORITY, DEFAULT_PRIORITY, SQLITE_TRUE, STANDARD_LAYERS } from '../../../constants.js';
7
7
  import { validateCategory, validatePriority } from '../../../utils/validators.js';
8
8
  import { validateActionParams } from '../../../utils/parameter-validator.js';
9
+ import { normalizeParams, CONSTRAINT_ALIASES } from '../../../utils/param-normalizer.js';
9
10
  import { parseStringArray } from '../../../utils/param-parser.js';
10
11
  import { getProjectContext } from '../../../utils/project-context.js';
11
12
  import connectionManager from '../../../utils/connection-manager.js';
@@ -18,50 +19,65 @@ import connectionManager from '../../../utils/connection-manager.js';
18
19
  */
19
20
  export async function addConstraint(params, adapter) {
20
21
  const actualAdapter = adapter ?? getAdapter();
22
+ // Normalize aliases: text → constraint_text
23
+ const normalizedParams = normalizeParams(params, CONSTRAINT_ALIASES);
21
24
  try {
22
25
  return await connectionManager.executeWithRetry(async () => {
23
26
  // Fail-fast project_id validation (Constraint #29)
24
27
  const projectId = getProjectContext().getProjectId();
25
28
  // Validate parameters
26
- validateActionParams('constraint', 'add', params);
29
+ validateActionParams('constraint', 'add', normalizedParams);
27
30
  // Validate category
28
- validateCategory(params.category);
31
+ validateCategory(normalizedParams.category);
29
32
  // Validate priority if provided
30
- const priorityStr = params.priority || 'medium';
33
+ const priorityStr = normalizedParams.priority || 'medium';
31
34
  validatePriority(priorityStr);
32
35
  const priority = STRING_TO_PRIORITY[priorityStr] || DEFAULT_PRIORITY;
33
36
  // Validate and get layer ID if provided
34
37
  let layerId = null;
35
- if (params.layer) {
36
- if (!STANDARD_LAYERS.includes(params.layer)) {
38
+ if (normalizedParams.layer) {
39
+ if (!STANDARD_LAYERS.includes(normalizedParams.layer)) {
37
40
  throw new Error(`Invalid layer. Must be one of: ${STANDARD_LAYERS.join(', ')}`);
38
41
  }
39
- layerId = await getLayerId(actualAdapter, params.layer);
42
+ layerId = await getLayerId(actualAdapter, normalizedParams.layer);
40
43
  if (!layerId) {
41
- throw new Error(`Layer not found: ${params.layer}`);
44
+ throw new Error(`Layer not found: ${normalizedParams.layer}`);
42
45
  }
43
46
  }
44
47
  // Use transaction for multi-table insert
45
48
  const result = await actualAdapter.transaction(async (trx) => {
46
49
  // Get or create category
47
- const categoryId = await getOrCreateCategoryId(actualAdapter, params.category, trx);
50
+ const categoryId = await getOrCreateCategoryId(actualAdapter, normalizedParams.category, trx);
51
+ // Duplicate check: skip if same text + category already exists
52
+ const existing = await trx('v4_constraints')
53
+ .where({
54
+ constraint_text: normalizedParams.constraint_text,
55
+ category_id: categoryId,
56
+ project_id: projectId
57
+ })
58
+ .first();
59
+ if (existing) {
60
+ return { constraintId: existing.id, alreadyExists: true };
61
+ }
48
62
  // Note: Agent tracking removed in v4.0 (created_by param kept for API compatibility but not stored)
49
63
  // Calculate timestamp
50
64
  const ts = Math.floor(Date.now() / 1000);
51
65
  // Insert constraint with project_id (agent_id removed in v4.0)
66
+ // v4.2.1: Support active parameter for plan-based workflow
67
+ const activeValue = normalizedParams.active === false ? 0 : SQLITE_TRUE;
52
68
  const [constraintId] = await trx('v4_constraints').insert({
53
69
  category_id: categoryId,
54
70
  layer_id: layerId,
55
- constraint_text: params.constraint_text,
71
+ constraint_text: normalizedParams.constraint_text,
56
72
  priority: priority,
57
- active: SQLITE_TRUE,
73
+ active: activeValue,
58
74
  ts: ts,
59
75
  project_id: projectId
60
76
  });
61
77
  // Insert m_tags if provided
62
- if (params.tags && params.tags.length > 0) {
78
+ if (normalizedParams.tags && normalizedParams.tags.length > 0) {
63
79
  // Parse tags (handles both arrays and JSON strings from MCP)
64
- const tags = parseStringArray(params.tags);
80
+ const tags = parseStringArray(normalizedParams.tags);
65
81
  for (const tagName of tags) {
66
82
  const tagId = await getOrCreateTag(actualAdapter, projectId, tagName, trx); // v3.7.3: pass projectId
67
83
  await trx('v4_constraint_tags').insert({
@@ -70,11 +86,12 @@ export async function addConstraint(params, adapter) {
70
86
  });
71
87
  }
72
88
  }
73
- return { constraintId: Number(constraintId) };
89
+ return { constraintId: Number(constraintId), alreadyExists: false };
74
90
  });
75
91
  return {
76
92
  success: true,
77
93
  constraint_id: result.constraintId,
94
+ already_exists: result.alreadyExists,
78
95
  };
79
96
  });
80
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../src/tools/constraints/actions/add.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../src/tools/constraints/actions/add.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"deactivate.d.ts","sourceRoot":"","sources":["../../../../src/tools/constraints/actions/deactivate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAM7D,OAAO,KAAK,EACV,0BAA0B,EAC1B,4BAA4B,EAC7B,MAAM,aAAa,CAAC;AAErB;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,0BAA0B,EAClC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,4BAA4B,CAAC,CAmCvC"}
1
+ {"version":3,"file":"deactivate.d.ts","sourceRoot":"","sources":["../../../../src/tools/constraints/actions/deactivate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAO7D,OAAO,KAAK,EACV,0BAA0B,EAC1B,4BAA4B,EAC7B,MAAM,aAAa,CAAC;AAErB;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,0BAA0B,EAClC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,4BAA4B,CAAC,CAsCvC"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { getAdapter } from '../../../database.js';
6
6
  import { validateActionParams } from '../../../utils/parameter-validator.js';
7
+ import { normalizeParams, CONSTRAINT_ALIASES } from '../../../utils/param-normalizer.js';
7
8
  import { getProjectContext } from '../../../utils/project-context.js';
8
9
  import connectionManager from '../../../utils/connection-manager.js';
9
10
  import { SQLITE_FALSE } from '../../../constants.js';
@@ -18,23 +19,25 @@ import { SQLITE_FALSE } from '../../../constants.js';
18
19
  export async function deactivateConstraint(params, adapter) {
19
20
  const actualAdapter = adapter ?? getAdapter();
20
21
  const knex = actualAdapter.getKnex();
22
+ // Normalize aliases: id → constraint_id
23
+ const normalizedParams = normalizeParams(params, CONSTRAINT_ALIASES);
21
24
  try {
22
25
  return await connectionManager.executeWithRetry(async () => {
23
26
  // Fail-fast project_id validation (Constraint #29)
24
27
  const projectId = getProjectContext().getProjectId();
25
28
  // Validate parameters
26
- validateActionParams('constraint', 'deactivate', params);
29
+ validateActionParams('constraint', 'deactivate', normalizedParams);
27
30
  // Check if constraint exists in current project
28
31
  const constraint = await knex('v4_constraints')
29
- .where({ id: params.constraint_id, project_id: projectId })
32
+ .where({ id: normalizedParams.constraint_id, project_id: projectId })
30
33
  .select('id', 'active')
31
34
  .first();
32
35
  if (!constraint) {
33
- throw new Error(`Constraint not found: ${params.constraint_id}`);
36
+ throw new Error(`Constraint not found: ${normalizedParams.constraint_id}`);
34
37
  }
35
38
  // Update constraint to inactive (idempotent) with project_id filter
36
39
  await knex('v4_constraints')
37
- .where({ id: params.constraint_id, project_id: projectId })
40
+ .where({ id: normalizedParams.constraint_id, project_id: projectId })
38
41
  .update({ active: SQLITE_FALSE });
39
42
  return {
40
43
  success: true,
@@ -1 +1 @@
1
- {"version":3,"file":"deactivate.js","sourceRoot":"","sources":["../../../../src/tools/constraints/actions/deactivate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,iBAAiB,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAMrD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAkC,EAClC,OAAyB;IAEzB,MAAM,aAAa,GAAG,OAAO,IAAI,UAAU,EAAE,CAAC;IAC9C,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;IAErC,IAAI,CAAC;QACH,OAAO,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;YACzD,mDAAmD;YACnD,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC,YAAY,EAAE,CAAC;YAErD,sBAAsB;YACtB,oBAAoB,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YAEzD,gDAAgD;YAChD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;iBAC5C,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;iBAC1D,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC;iBACtB,KAAK,EAAgD,CAAC;YAEzD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;YACnE,CAAC;YAED,oEAAoE;YACpE,MAAM,IAAI,CAAC,gBAAgB,CAAC;iBACzB,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;iBAC1D,MAAM,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;YAEpC,OAAO;gBACL,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"deactivate.js","sourceRoot":"","sources":["../../../../src/tools/constraints/actions/deactivate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,iBAAiB,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAMrD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAkC,EAClC,OAAyB;IAEzB,MAAM,aAAa,GAAG,OAAO,IAAI,UAAU,EAAE,CAAC;IAC9C,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;IAErC,wCAAwC;IACxC,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,EAAE,kBAAkB,CAA+B,CAAC;IAEnG,IAAI,CAAC;QACH,OAAO,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;YACzD,mDAAmD;YACnD,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC,YAAY,EAAE,CAAC;YAErD,sBAAsB;YACtB,oBAAoB,CAAC,YAAY,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;YAEnE,gDAAgD;YAChD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;iBAC5C,KAAK,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;iBACpE,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC;iBACtB,KAAK,EAAgD,CAAC;YAEzD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC;YAC7E,CAAC;YAED,oEAAoE;YACpE,MAAM,IAAI,CAAC,gBAAgB,CAAC;iBACzB,KAAK,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;iBACpE,MAAM,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;YAEpC,OAAO;gBACL,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/tools/constraints/actions/get.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAS7D,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EAEvB,MAAM,aAAa,CAAC;AAErB;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,sBAAsB,CAAC,CAoGjC"}
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/tools/constraints/actions/get.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAS7D,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EAEvB,MAAM,aAAa,CAAC;AAErB;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,sBAAsB,CAAC,CAyGjC"}
@@ -32,8 +32,11 @@ export async function getConstraints(params, adapter) {
32
32
  let query = knex('v4_constraints as c')
33
33
  .join('v4_constraint_categories as cat', 'c.category_id', 'cat.id')
34
34
  .leftJoin('v4_layers as l', 'c.layer_id', 'l.id')
35
- .where('c.project_id', projectId)
36
- .where('c.active', db.boolTrue());
35
+ .where('c.project_id', projectId);
36
+ // Filter by active status (default: active only, unless include_inactive=true)
37
+ if (!params.include_inactive) {
38
+ query = query.where('c.active', db.boolTrue());
39
+ }
37
40
  // Filter by category
38
41
  if (params.category) {
39
42
  validateCategory(params.category);
@@ -83,11 +86,11 @@ export async function getConstraints(params, adapter) {
83
86
  'c.priority',
84
87
  knex.raw(`${db.dateFunction('c.ts')} as created_at`),
85
88
  // Tags subquery
86
- knex.raw(`(
87
- SELECT ${db.stringAgg('t2.name', ',')}
88
- FROM v4_constraint_tags ct2
89
- JOIN v4_tags t2 ON ct2.tag_id = t2.id
90
- WHERE ct2.constraint_id = c.id
89
+ knex.raw(`(
90
+ SELECT ${db.stringAgg('t2.name', ',')}
91
+ FROM v4_constraint_tags ct2
92
+ JOIN v4_tags t2 ON ct2.tag_id = t2.id
93
+ WHERE ct2.constraint_id = c.id
91
94
  ) as tags`),
92
95
  ]);
93
96
  // Convert priority integer to string and parse tags
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/tools/constraints/actions/get.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/tools/constraints/actions/get.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Suggest Pending Constraints Action (v4.2.0+)
3
+ *
4
+ * Returns constraint candidates from plan TOML cache that haven't been registered yet.
5
+ * Allows AI to re-suggest constraints after task completion.
6
+ *
7
+ * This action does NOT require database access - it reads from the session cache.
8
+ */
9
+ import { type ConstraintCandidate } from '../../../config/global-config.js';
10
+ /**
11
+ * Parameters for suggest_pending action
12
+ */
13
+ export interface SuggestPendingParams {
14
+ /** Project path (optional, uses CWD if not specified) */
15
+ project_path?: string;
16
+ }
17
+ /**
18
+ * Response from suggest_pending action
19
+ */
20
+ export interface SuggestPendingResponse {
21
+ /** Whether there are pending constraints */
22
+ has_pending: boolean;
23
+ /** Plan ID associated with the constraints */
24
+ plan_id: string | null;
25
+ /** Plan file name */
26
+ plan_file: string | null;
27
+ /** Pending constraint candidates */
28
+ constraints: ConstraintCandidate[];
29
+ /** MCP command examples for registration */
30
+ commands: string[];
31
+ /** User-friendly message */
32
+ message: string;
33
+ }
34
+ /**
35
+ * Get pending constraint candidates from plan TOML cache
36
+ *
37
+ * @param params - Action parameters
38
+ * @returns Pending constraints with registration commands
39
+ */
40
+ export declare function suggestPendingConstraints(params?: SuggestPendingParams): Promise<SuggestPendingResponse>;
41
+ //# sourceMappingURL=suggest-pending.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest-pending.d.ts","sourceRoot":"","sources":["../../../../src/tools/constraints/actions/suggest-pending.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,kCAAkC,CAAC;AAM1C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,4CAA4C;IAC5C,WAAW,EAAE,OAAO,CAAC;IACrB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,qBAAqB;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oCAAoC;IACpC,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,GAAE,oBAAyB,GAChC,OAAO,CAAC,sBAAsB,CAAC,CAwDjC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Suggest Pending Constraints Action (v4.2.0+)
3
+ *
4
+ * Returns constraint candidates from plan TOML cache that haven't been registered yet.
5
+ * Allows AI to re-suggest constraints after task completion.
6
+ *
7
+ * This action does NOT require database access - it reads from the session cache.
8
+ */
9
+ import { loadPlanTomlCache, loadCurrentPlan, } from '../../../config/global-config.js';
10
+ // ============================================================================
11
+ // Action Implementation
12
+ // ============================================================================
13
+ /**
14
+ * Get pending constraint candidates from plan TOML cache
15
+ *
16
+ * @param params - Action parameters
17
+ * @returns Pending constraints with registration commands
18
+ */
19
+ export async function suggestPendingConstraints(params = {}) {
20
+ const projectPath = params.project_path || process.cwd();
21
+ // Load current plan info
22
+ const planInfo = loadCurrentPlan(projectPath);
23
+ if (!planInfo) {
24
+ return {
25
+ has_pending: false,
26
+ plan_id: null,
27
+ plan_file: null,
28
+ constraints: [],
29
+ commands: [],
30
+ message: 'No active plan found. Use Plan agent to create a plan first.',
31
+ };
32
+ }
33
+ // Load plan TOML cache
34
+ const cache = loadPlanTomlCache(projectPath);
35
+ if (!cache || cache.plan_id !== planInfo.plan_id) {
36
+ return {
37
+ has_pending: false,
38
+ plan_id: planInfo.plan_id,
39
+ plan_file: planInfo.plan_file,
40
+ constraints: [],
41
+ commands: [],
42
+ message: `Plan "${planInfo.plan_file}" has no TOML-defined constraints.`,
43
+ };
44
+ }
45
+ if (cache.constraints.length === 0) {
46
+ return {
47
+ has_pending: false,
48
+ plan_id: cache.plan_id,
49
+ plan_file: planInfo.plan_file,
50
+ constraints: [],
51
+ commands: [],
52
+ message: `Plan "${planInfo.plan_file}" has no constraint candidates.`,
53
+ };
54
+ }
55
+ // Generate MCP commands for each constraint
56
+ const commands = cache.constraints.map((c) => {
57
+ const priority = c.priority || 'medium';
58
+ const layer = c.layer ? ` layer="${c.layer}"` : '';
59
+ const tags = c.tags && c.tags.length > 0 ? ` tags="${c.tags.join(',')}"` : '';
60
+ return `mcp__sqlew__constraint action="add" constraint_text="${c.text}" category="${c.category}" priority="${priority}"${layer}${tags}`;
61
+ });
62
+ return {
63
+ has_pending: true,
64
+ plan_id: cache.plan_id,
65
+ plan_file: planInfo.plan_file,
66
+ constraints: cache.constraints,
67
+ commands,
68
+ message: `Found ${cache.constraints.length} constraint candidate(s) from plan "${planInfo.plan_file}".`,
69
+ };
70
+ }
71
+ //# sourceMappingURL=suggest-pending.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest-pending.js","sourceRoot":"","sources":["../../../../src/tools/constraints/actions/suggest-pending.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,iBAAiB,EACjB,eAAe,GAIhB,MAAM,kCAAkC,CAAC;AAgC1C,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,SAA+B,EAAE;IAEjC,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEzD,yBAAyB;IACzB,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,WAAW,EAAE,KAAK;YAClB,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,8DAA8D;SACxE,CAAC;IACJ,CAAC;IAED,uBAAuB;IACvB,MAAM,KAAK,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;QACjD,OAAO;YACL,WAAW,EAAE,KAAK;YAClB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,SAAS,QAAQ,CAAC,SAAS,oCAAoC;SACzE,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO;YACL,WAAW,EAAE,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,SAAS,QAAQ,CAAC,SAAS,iCAAiC;SACtE,CAAC;IACJ,CAAC;IAED,4CAA4C;IAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC;QACxC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,OAAO,wDAAwD,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,QAAQ,eAAe,QAAQ,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;IAC1I,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ;QACR,OAAO,EAAE,SAAS,KAAK,CAAC,WAAW,CAAC,MAAM,uCAAuC,QAAQ,CAAC,SAAS,IAAI;KACxG,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../../../../src/tools/constraints/help/example.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,GAAG,CAuIvC"}
1
+ {"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../../../../src/tools/constraints/help/example.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,GAAG,CAuMvC"}
@@ -69,16 +69,78 @@ export function constraintExample() {
69
69
  rationale: 'Prevents injection attacks (SQL, XSS, etc.)'
70
70
  }
71
71
  ]
72
+ },
73
+ 'code-style': {
74
+ description: 'Code style constraints for naming conventions, formatting, documentation',
75
+ examples: [
76
+ {
77
+ scenario: 'Naming Convention',
78
+ example: '{ action: "add", category: "code-style", constraint_text: "All public functions must use camelCase naming", priority: "medium", layer: "cross-cutting", tags: ["naming", "convention"] }',
79
+ rationale: 'Ensures consistent code readability across the codebase'
80
+ },
81
+ {
82
+ scenario: 'Documentation Required',
83
+ example: '{ action: "add", category: "code-style", constraint_text: "All public APIs must have JSDoc comments", priority: "medium", layer: "documentation", tags: ["jsdoc", "api"] }',
84
+ rationale: 'Improves maintainability and developer experience'
85
+ }
86
+ ]
87
+ }
88
+ },
89
+ management: {
90
+ activate: {
91
+ description: 'Reactivate a previously deactivated constraint',
92
+ examples: [
93
+ {
94
+ scenario: 'Reactivate Constraint',
95
+ example: '{ action: "activate", constraint_id: 5 }',
96
+ rationale: 'Use when a temporarily deactivated constraint should be enforced again'
97
+ }
98
+ ]
99
+ },
100
+ deactivate: {
101
+ description: 'Deactivate a constraint without deleting it',
102
+ examples: [
103
+ {
104
+ scenario: 'Temporarily Disable Constraint',
105
+ example: '{ action: "deactivate", constraint_id: 5 }',
106
+ rationale: 'Useful for temporary exceptions or during refactoring'
107
+ }
108
+ ]
109
+ },
110
+ get_with_inactive: {
111
+ description: 'Retrieve all constraints including inactive ones',
112
+ examples: [
113
+ {
114
+ scenario: 'List All Constraints',
115
+ example: '{ action: "get", include_inactive: true }',
116
+ rationale: 'Review all constraints including deactivated ones for audit or reactivation'
117
+ },
118
+ {
119
+ scenario: 'Filter by Category with Inactive',
120
+ example: '{ action: "get", category: "security", include_inactive: true }',
121
+ rationale: 'See all security constraints to identify ones that might need reactivation'
122
+ }
123
+ ]
72
124
  }
73
125
  },
74
126
  workflows: {
127
+ constraint_lifecycle: {
128
+ description: 'Full lifecycle of a constraint from creation to deactivation/reactivation',
129
+ steps: [
130
+ { step: 1, action: 'Add new constraint', example: '{ action: "add", category: "security", constraint_text: "All passwords must be hashed with bcrypt", priority: "critical" }' },
131
+ { step: 2, action: 'Retrieve active constraints', example: '{ action: "get", category: "security" }' },
132
+ { step: 3, action: 'Temporarily deactivate during migration', example: '{ action: "deactivate", constraint_id: 5 }' },
133
+ { step: 4, action: 'List all including inactive for review', example: '{ action: "get", include_inactive: true }' },
134
+ { step: 5, action: 'Reactivate after migration complete', example: '{ action: "activate", constraint_id: 5 }' }
135
+ ]
136
+ },
75
137
  constraint_validation: {
76
138
  description: 'Workflow for validating code against constraints',
77
139
  steps: [
78
140
  {
79
141
  step: 1,
80
142
  action: 'Retrieve active constraints for layer',
81
- example: '{ action: "get", layer: "business", active_only: true }'
143
+ example: '{ action: "get", layer: "business" }'
82
144
  },
83
145
  {
84
146
  step: 2,
@@ -133,6 +195,8 @@ export function constraintExample() {
133
195
  ],
134
196
  managing_constraints: [
135
197
  'Review constraints regularly and deactivate outdated ones',
198
+ 'Use activate/deactivate for temporary exceptions instead of deleting',
199
+ 'Periodically review inactive constraints with include_inactive: true',
136
200
  'Link constraints to related decisions and tasks',
137
201
  'Use constraints for both technical and business requirements',
138
202
  'Validate code changes against active constraints',