sqlew 5.2.1 → 5.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 (90) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/README.md +63 -13
  3. package/dist/cli/hooks/on-prompt.d.ts +2 -2
  4. package/dist/cli/hooks/on-prompt.d.ts.map +1 -1
  5. package/dist/cli/hooks/on-prompt.js +34 -2
  6. package/dist/cli/hooks/on-prompt.js.map +1 -1
  7. package/dist/cli/hooks/plan-pattern-extractor.d.ts +2 -0
  8. package/dist/cli/hooks/plan-pattern-extractor.d.ts.map +1 -1
  9. package/dist/cli/hooks/plan-pattern-extractor.js +1 -0
  10. package/dist/cli/hooks/plan-pattern-extractor.js.map +1 -1
  11. package/dist/cli/hooks/plan-processor.d.ts.map +1 -1
  12. package/dist/cli/hooks/plan-processor.js +1 -0
  13. package/dist/cli/hooks/plan-processor.js.map +1 -1
  14. package/dist/cli/hooks/save.js +1 -1
  15. package/dist/cli/hooks/save.js.map +1 -1
  16. package/dist/cli/hooks/stdin-parser.d.ts +10 -3
  17. package/dist/cli/hooks/stdin-parser.d.ts.map +1 -1
  18. package/dist/cli/hooks/stdin-parser.js +110 -6
  19. package/dist/cli/hooks/stdin-parser.js.map +1 -1
  20. package/dist/database/migrations/v4/20260613000000_add_constraint_reason.d.ts +9 -0
  21. package/dist/database/migrations/v4/20260613000000_add_constraint_reason.d.ts.map +1 -0
  22. package/dist/database/migrations/v4/20260613000000_add_constraint_reason.js +31 -0
  23. package/dist/database/migrations/v4/20260613000000_add_constraint_reason.js.map +1 -0
  24. package/dist/help-data/constraint.toml +6 -0
  25. package/dist/schema.d.ts.map +1 -1
  26. package/dist/schema.js +4 -5
  27. package/dist/schema.js.map +1 -1
  28. package/dist/tests/docker/native/constraint-operations.test.js +38 -0
  29. package/dist/tests/docker/native/constraint-operations.test.js.map +1 -1
  30. package/dist/tests/feature/constraint/reason.test.d.ts +7 -0
  31. package/dist/tests/feature/constraint/reason.test.d.ts.map +1 -0
  32. package/dist/tests/feature/constraint/reason.test.js +68 -0
  33. package/dist/tests/feature/constraint/reason.test.js.map +1 -0
  34. package/dist/tests/integration/hermes-on-prompt.test.d.ts +7 -0
  35. package/dist/tests/integration/hermes-on-prompt.test.d.ts.map +1 -0
  36. package/dist/tests/integration/hermes-on-prompt.test.js +34 -0
  37. package/dist/tests/integration/hermes-on-prompt.test.js.map +1 -0
  38. package/dist/tests/integration/hermes-pr-adr.test.d.ts +7 -0
  39. package/dist/tests/integration/hermes-pr-adr.test.d.ts.map +1 -0
  40. package/dist/tests/integration/hermes-pr-adr.test.js +38 -0
  41. package/dist/tests/integration/hermes-pr-adr.test.js.map +1 -0
  42. package/dist/tests/integration/hermes-side-effect-hooks.test.d.ts +7 -0
  43. package/dist/tests/integration/hermes-side-effect-hooks.test.d.ts.map +1 -0
  44. package/dist/tests/integration/hermes-side-effect-hooks.test.js +57 -0
  45. package/dist/tests/integration/hermes-side-effect-hooks.test.js.map +1 -0
  46. package/dist/tests/unit/hooks/codex-hook-normalization.test.js +3 -0
  47. package/dist/tests/unit/hooks/codex-hook-normalization.test.js.map +1 -1
  48. package/dist/tests/unit/hooks/hermes-hook-normalization.test.d.ts +7 -0
  49. package/dist/tests/unit/hooks/hermes-hook-normalization.test.d.ts.map +1 -0
  50. package/dist/tests/unit/hooks/hermes-hook-normalization.test.js +104 -0
  51. package/dist/tests/unit/hooks/hermes-hook-normalization.test.js.map +1 -0
  52. package/dist/tests/unit/hooks/plan-pattern-extractor.test.d.ts +8 -0
  53. package/dist/tests/unit/hooks/plan-pattern-extractor.test.d.ts.map +1 -0
  54. package/dist/tests/unit/hooks/plan-pattern-extractor.test.js +110 -0
  55. package/dist/tests/unit/hooks/plan-pattern-extractor.test.js.map +1 -0
  56. package/dist/tools/constraints/actions/add.d.ts.map +1 -1
  57. package/dist/tools/constraints/actions/add.js +1 -0
  58. package/dist/tools/constraints/actions/add.js.map +1 -1
  59. package/dist/tools/constraints/actions/get.d.ts.map +1 -1
  60. package/dist/tools/constraints/actions/get.js +4 -2
  61. package/dist/tools/constraints/actions/get.js.map +1 -1
  62. package/dist/tools/constraints/help/example.js +1 -1
  63. package/dist/tools/constraints/help/example.js.map +1 -1
  64. package/dist/types/constraint/params.d.ts +2 -0
  65. package/dist/types/constraint/params.d.ts.map +1 -1
  66. package/dist/types/view-entities.d.ts +1 -0
  67. package/dist/types/view-entities.d.ts.map +1 -1
  68. package/dist/utils/action-specs/constraint-specs.d.ts.map +1 -1
  69. package/dist/utils/action-specs/constraint-specs.js +4 -3
  70. package/dist/utils/action-specs/constraint-specs.js.map +1 -1
  71. package/dist/utils/hook-queue.d.ts +2 -0
  72. package/dist/utils/hook-queue.d.ts.map +1 -1
  73. package/dist/utils/hook-queue.js.map +1 -1
  74. package/dist/utils/project-root.d.ts +1 -0
  75. package/dist/utils/project-root.d.ts.map +1 -1
  76. package/dist/utils/project-root.js +6 -0
  77. package/dist/utils/project-root.js.map +1 -1
  78. package/dist/utils/view-queries.d.ts.map +1 -1
  79. package/dist/utils/view-queries.js +1 -0
  80. package/dist/utils/view-queries.js.map +1 -1
  81. package/dist/watcher/queue-watcher.d.ts.map +1 -1
  82. package/dist/watcher/queue-watcher.js +1 -0
  83. package/dist/watcher/queue-watcher.js.map +1 -1
  84. package/docs/HERMES_HOOKS.md +142 -0
  85. package/docs/HOOKS_GUIDE.md +33 -8
  86. package/package.json +1 -1
  87. package/dist/tests/docker/native/help-system.test.d.ts +0 -8
  88. package/dist/tests/docker/native/help-system.test.d.ts.map +0 -1
  89. package/dist/tests/docker/native/help-system.test.js +0 -508
  90. package/dist/tests/docker/native/help-system.test.js.map +0 -1
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Hermes pr-adr integration tests
3
+ *
4
+ * @since v5.3.0
5
+ */
6
+ import { describe, it } from 'node:test';
7
+ import assert from 'node:assert';
8
+ import { execFileSync } from 'node:child_process';
9
+ import { existsSync } from 'node:fs';
10
+ import { join } from 'path';
11
+ const projectRoot = join(import.meta.dirname, '../../..');
12
+ const distEntry = join(projectRoot, 'dist/index.js');
13
+ describe('pr-adr (Hermes)', () => {
14
+ it('blocks gh pr create without ADR markers under Hermes', () => {
15
+ assert.ok(existsSync(distEntry), 'dist/index.js missing — run npm run build first');
16
+ let out = '';
17
+ try {
18
+ out = execFileSync('node', [distEntry, 'pr-adr'], {
19
+ input: JSON.stringify({
20
+ hook_event_name: 'pre_tool_call',
21
+ tool_name: 'terminal',
22
+ tool_input: { command: 'gh pr create --title x --body "no markers"' },
23
+ cwd: projectRoot,
24
+ }),
25
+ encoding: 'utf8',
26
+ cwd: projectRoot,
27
+ env: { ...process.env, HERMES_SESSION_ID: 's1' },
28
+ });
29
+ }
30
+ catch (e) {
31
+ const err = e;
32
+ out = (err.stdout || '').toString();
33
+ }
34
+ const parsed = JSON.parse(out.trim().split('\n').pop());
35
+ assert.strictEqual(parsed.decision, 'block');
36
+ });
37
+ });
38
+ //# sourceMappingURL=hermes-pr-adr.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes-pr-adr.test.js","sourceRoot":"","sources":["../../../src/tests/integration/hermes-pr-adr.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AAErD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,iDAAiD,CAAC,CAAC;QACpF,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YACH,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE;gBAChD,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;oBACpB,eAAe,EAAE,eAAe;oBAChC,SAAS,EAAE,UAAU;oBACrB,UAAU,EAAE,EAAE,OAAO,EAAE,4CAA4C,EAAE;oBACrE,GAAG,EAAE,WAAW;iBACjB,CAAC;gBACF,QAAQ,EAAE,MAAM;gBAChB,GAAG,EAAE,WAAW;gBAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE;aACjD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,CAAiC,CAAC;YAC9C,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QACtC,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAG,CAAC,CAAC;QACzD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Hermes side-effect hook integration tests
3
+ *
4
+ * @since v5.3.0
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=hermes-side-effect-hooks.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes-side-effect-hooks.test.d.ts","sourceRoot":"","sources":["../../../src/tests/integration/hermes-side-effect-hooks.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Hermes side-effect hook integration tests
3
+ *
4
+ * @since v5.3.0
5
+ */
6
+ import { describe, it } from 'node:test';
7
+ import assert from 'node:assert';
8
+ import { execFileSync } from 'node:child_process';
9
+ import { existsSync } from 'node:fs';
10
+ import { join } from 'path';
11
+ import { areAllTodosCompleted, normalizeHookInput } from '../../cli/hooks/stdin-parser.js';
12
+ const projectRoot = join(import.meta.dirname, '../../..');
13
+ const distEntry = join(projectRoot, 'dist/index.js');
14
+ describe('hermes side-effect hooks', () => {
15
+ it('normalizes Hermes write_file for track-plan matching', () => {
16
+ const input = normalizeHookInput({
17
+ hook_event_name: 'pre_tool_call',
18
+ tool_name: 'write_file',
19
+ tool_input: { path: '.hermes/plans/2026-06-27_test.md' },
20
+ cwd: projectRoot,
21
+ extra: {},
22
+ });
23
+ assert.strictEqual(input.tool_name, 'Write');
24
+ assert.strictEqual(input.tool_input?.file_path, '.hermes/plans/2026-06-27_test.md');
25
+ });
26
+ it('does not treat cancelled todos as all completed', () => {
27
+ const input = normalizeHookInput({
28
+ hook_event_name: 'post_tool_call',
29
+ tool_name: 'todo',
30
+ tool_input: {
31
+ todos: [
32
+ { content: 'a', status: 'completed' },
33
+ { content: 'b', status: 'cancelled' },
34
+ ],
35
+ },
36
+ cwd: projectRoot,
37
+ extra: {},
38
+ });
39
+ assert.strictEqual(areAllTodosCompleted(input), false);
40
+ });
41
+ it('runs save hook with exit 0 for Hermes write_file payload', () => {
42
+ assert.ok(existsSync(distEntry), 'dist/index.js missing — run npm run build first');
43
+ const out = execFileSync('node', [distEntry, 'save'], {
44
+ input: JSON.stringify({
45
+ hook_event_name: 'post_tool_call',
46
+ tool_name: 'write_file',
47
+ tool_input: { path: 'README.md' },
48
+ cwd: projectRoot,
49
+ }),
50
+ encoding: 'utf8',
51
+ cwd: projectRoot,
52
+ env: { ...process.env, HERMES_SESSION_ID: 's1' },
53
+ });
54
+ assert.ok(out.includes('continue') || out.trim() === '' || out.includes('hookSpecificOutput'));
55
+ });
56
+ });
57
+ //# sourceMappingURL=hermes-side-effect-hooks.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes-side-effect-hooks.test.js","sourceRoot":"","sources":["../../../src/tests/integration/hermes-side-effect-hooks.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE3F,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AAErD,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,KAAK,GAAG,kBAAkB,CAAC;YAC/B,eAAe,EAAE,eAAe;YAChC,SAAS,EAAE,YAAY;YACvB,UAAU,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE;YACxD,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,kCAAkC,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,KAAK,GAAG,kBAAkB,CAAC;YAC/B,eAAe,EAAE,gBAAgB;YACjC,SAAS,EAAE,MAAM;YACjB,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE;oBACrC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE;iBACtC;aACF;YACD,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,iDAAiD,CAAC,CAAC;QACpF,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;YACpD,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpB,eAAe,EAAE,gBAAgB;gBACjC,SAAS,EAAE,YAAY;gBACvB,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBACjC,GAAG,EAAE,WAAW;aACjB,CAAC;YACF,QAAQ,EAAE,MAAM;YAChB,GAAG,EAAE,WAAW;YAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE;SACjD,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -20,6 +20,9 @@ describe('codex-hook-normalization', () => {
20
20
  delete process.env.GROK_WORKSPACE_ROOT;
21
21
  delete process.env.CLAUDE_PROJECT_DIR;
22
22
  delete process.env.SQLEW_PROJECT_ROOT;
23
+ delete process.env.HERMES_SESSION_ID;
24
+ delete process.env.HERMES_HOME;
25
+ delete process.env._HERMES_GATEWAY;
23
26
  });
24
27
  afterEach(() => {
25
28
  process.env = { ...originalEnv };
@@ -1 +1 @@
1
- {"version":3,"file":"codex-hook-normalization.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/hooks/codex-hook-normalization.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-hook-normalization.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/hooks/codex-hook-normalization.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Hermes Hook Normalization Unit Tests
3
+ *
4
+ * @since v5.3.0
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=hermes-hook-normalization.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes-hook-normalization.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/unit/hooks/hermes-hook-normalization.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Hermes Hook Normalization Unit Tests
3
+ *
4
+ * @since v5.3.0
5
+ */
6
+ import { describe, it, beforeEach, afterEach } from 'node:test';
7
+ import assert from 'node:assert';
8
+ import { normalizeHookInput, isPlanMode, isPlanFile, getProjectPath, } from '../../../cli/hooks/stdin-parser.js';
9
+ describe('hermes-hook-normalization', () => {
10
+ const originalEnv = { ...process.env };
11
+ beforeEach(() => {
12
+ delete process.env.CODEX_SESSION_ID;
13
+ delete process.env.CODEX_CWD;
14
+ delete process.env.CODEX_HOME;
15
+ delete process.env.GROK_HOOK_EVENT;
16
+ delete process.env.GROK_WORKSPACE_ROOT;
17
+ delete process.env.HERMES_SESSION_ID;
18
+ delete process.env.HERMES_HOME;
19
+ delete process.env._HERMES_GATEWAY;
20
+ });
21
+ afterEach(() => {
22
+ process.env = { ...originalEnv };
23
+ });
24
+ describe('normalizeHookInput', () => {
25
+ it('should map Hermes pre_tool_call + terminal to PreToolUse + Bash', () => {
26
+ const result = normalizeHookInput({
27
+ hook_event_name: 'pre_tool_call',
28
+ tool_name: 'terminal',
29
+ tool_input: { command: 'gh pr create' },
30
+ session_id: 'sess-h1',
31
+ cwd: 'C:/project',
32
+ extra: { task_id: 't1' },
33
+ });
34
+ assert.strictEqual(result.client, 'hermes');
35
+ assert.strictEqual(result.hook_event_name, 'PreToolUse');
36
+ assert.strictEqual(result.tool_name, 'Bash');
37
+ assert.strictEqual(result.cwd, 'C:/project');
38
+ assert.strictEqual(result.session_id, 'sess-h1');
39
+ });
40
+ it('should map Hermes post_tool_call + write_file to PostToolUse + Write', () => {
41
+ const result = normalizeHookInput({
42
+ hook_event_name: 'post_tool_call',
43
+ tool_name: 'write_file',
44
+ tool_input: { path: 'src/foo.ts' },
45
+ cwd: 'C:/project',
46
+ });
47
+ assert.strictEqual(result.client, 'hermes');
48
+ assert.strictEqual(result.hook_event_name, 'PostToolUse');
49
+ assert.strictEqual(result.tool_name, 'Write');
50
+ assert.strictEqual(result.tool_input?.file_path, 'src/foo.ts');
51
+ });
52
+ it('should map Hermes patch to Edit and todo to TodoWrite', () => {
53
+ assert.strictEqual(normalizeHookInput({ hook_event_name: 'post_tool_call', tool_name: 'patch', cwd: 'C:/p' }).tool_name, 'Edit');
54
+ assert.strictEqual(normalizeHookInput({ hook_event_name: 'post_tool_call', tool_name: 'todo', cwd: 'C:/p' }).tool_name, 'TodoWrite');
55
+ });
56
+ it('should map pre_llm_call to UserPromptSubmit', () => {
57
+ const result = normalizeHookInput({
58
+ hook_event_name: 'pre_llm_call',
59
+ cwd: 'C:/project',
60
+ session_id: 'sess-h2',
61
+ extra: { user_message: 'do the thing' },
62
+ });
63
+ assert.strictEqual(result.client, 'hermes');
64
+ assert.strictEqual(result.hook_event_name, 'UserPromptSubmit');
65
+ });
66
+ it('should detect Hermes via env when stdin lacks tool fields', () => {
67
+ process.env.HERMES_SESSION_ID = 'sess-env';
68
+ const result = normalizeHookInput({ hook_event_name: 'on_session_start', cwd: 'C:/p' });
69
+ assert.strictEqual(result.client, 'hermes');
70
+ assert.strictEqual(result.hook_event_name, 'SessionStart');
71
+ });
72
+ it('should not misclassify a Claude payload as Hermes', () => {
73
+ const result = normalizeHookInput({
74
+ hook_event_name: 'PreToolUse',
75
+ tool_name: 'Bash',
76
+ tool_input: { command: 'ls' },
77
+ });
78
+ assert.notStrictEqual(result.client, 'hermes');
79
+ assert.strictEqual(result.tool_name, 'Bash');
80
+ });
81
+ });
82
+ describe('isPlanMode (Hermes)', () => {
83
+ it('should return false for Hermes (no native plan permission mode)', () => {
84
+ const result = normalizeHookInput({
85
+ hook_event_name: 'pre_llm_call',
86
+ cwd: 'C:/project',
87
+ extra: { user_message: 'plan something' },
88
+ });
89
+ assert.strictEqual(isPlanMode(result), false);
90
+ });
91
+ });
92
+ describe('hermes plan-file + project path', () => {
93
+ it('should recognize .hermes/plans/*.md as a plan file', () => {
94
+ assert.strictEqual(isPlanFile({ tool_input: { file_path: 'C:/proj/.hermes/plans/2026-06-27_x.md' } }), true);
95
+ });
96
+ it('should still recognize .claude/plans/*.md (no regression)', () => {
97
+ assert.strictEqual(isPlanFile({ tool_input: { file_path: '.claude/plans/foo.md' } }), true);
98
+ });
99
+ it('should resolve project path from Hermes cwd', () => {
100
+ assert.strictEqual(getProjectPath({ client: 'hermes', cwd: 'C:/proj' }), 'C:/proj');
101
+ });
102
+ });
103
+ });
104
+ //# sourceMappingURL=hermes-hook-normalization.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes-hook-normalization.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/hooks/hermes-hook-normalization.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Plan Pattern Extractor Unit Tests
3
+ *
4
+ * Tests for extracting 📌 Decision and 🚫 Constraint blocks
5
+ * from plan markdown using regex patterns.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=plan-pattern-extractor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-pattern-extractor.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/unit/hooks/plan-pattern-extractor.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Plan Pattern Extractor Unit Tests
3
+ *
4
+ * Tests for extracting 📌 Decision and 🚫 Constraint blocks
5
+ * from plan markdown using regex patterns.
6
+ */
7
+ import { describe, it } from 'node:test';
8
+ import assert from 'node:assert';
9
+ import { extractPatternsFromPlan } from '../../../cli/hooks/plan-pattern-extractor.js';
10
+ describe('plan-pattern-extractor', () => {
11
+ describe('extractPatternsFromPlan - constraint reason', () => {
12
+ it('should extract reason from constraint block with Reason field', () => {
13
+ const content = `
14
+ ### 🚫 Constraint: security
15
+ - **Rule**: No hardcoded API keys
16
+ - **Priority**: critical
17
+ - **Reason**: Keys committed to git cannot be rotated
18
+ - **Tags**: security, env
19
+ `;
20
+ const result = extractPatternsFromPlan(content);
21
+ assert.strictEqual(result.constraints.length, 1);
22
+ assert.strictEqual(result.constraints[0].category, 'security');
23
+ assert.strictEqual(result.constraints[0].rule, 'No hardcoded API keys');
24
+ assert.strictEqual(result.constraints[0].priority, 'critical');
25
+ assert.strictEqual(result.constraints[0].reason, 'Keys committed to git cannot be rotated');
26
+ assert.strictEqual(result.constraints[0].tags, 'security, env');
27
+ });
28
+ it('should leave reason undefined when Reason field is absent', () => {
29
+ const content = `
30
+ ### 🚫 Constraint: architecture
31
+ - **Rule**: Use dependency injection for services
32
+ - **Priority**: high
33
+ - **Tags**: architecture, design
34
+ `;
35
+ const result = extractPatternsFromPlan(content);
36
+ assert.strictEqual(result.constraints.length, 1);
37
+ assert.strictEqual(result.constraints[0].rule, 'Use dependency injection for services');
38
+ assert.strictEqual(result.constraints[0].priority, 'high');
39
+ assert.strictEqual(result.constraints[0].tags, 'architecture, design');
40
+ assert.strictEqual(result.constraints[0].reason, undefined);
41
+ });
42
+ it('should extract all fields correctly when Reason is mixed with other fields', () => {
43
+ const content = `
44
+ ### 🚫 Constraint: code-style
45
+ - **Rule**: No console.log in production code
46
+ - **Reason**: Logs leak sensitive data to browser consoles
47
+ - **Priority**: medium
48
+ - **Tags**: logging, quality
49
+ `;
50
+ const result = extractPatternsFromPlan(content);
51
+ assert.strictEqual(result.constraints.length, 1);
52
+ const c = result.constraints[0];
53
+ assert.strictEqual(c.category, 'code-style');
54
+ assert.strictEqual(c.rule, 'No console.log in production code');
55
+ assert.strictEqual(c.reason, 'Logs leak sensitive data to browser consoles');
56
+ assert.strictEqual(c.priority, 'medium');
57
+ assert.strictEqual(c.tags, 'logging, quality');
58
+ });
59
+ it('should process multiple constraint blocks with and without reason individually', () => {
60
+ const content = `
61
+ ### 🚫 Constraint: security
62
+ - **Rule**: No hardcoded API keys
63
+ - **Priority**: critical
64
+ - **Reason**: Keys committed to git cannot be rotated
65
+
66
+ ### 🚫 Constraint: performance
67
+ - **Rule**: Cache API responses for 5 minutes
68
+ - **Priority**: low
69
+ - **Tags**: caching
70
+ `;
71
+ const result = extractPatternsFromPlan(content);
72
+ assert.strictEqual(result.constraints.length, 2);
73
+ assert.strictEqual(result.constraints[0].category, 'security');
74
+ assert.strictEqual(result.constraints[0].rule, 'No hardcoded API keys');
75
+ assert.strictEqual(result.constraints[0].reason, 'Keys committed to git cannot be rotated');
76
+ assert.strictEqual(result.constraints[1].category, 'performance');
77
+ assert.strictEqual(result.constraints[1].rule, 'Cache API responses for 5 minutes');
78
+ assert.strictEqual(result.constraints[1].priority, 'low');
79
+ assert.strictEqual(result.constraints[1].tags, 'caching');
80
+ assert.strictEqual(result.constraints[1].reason, undefined);
81
+ });
82
+ it('should not affect decision extraction when constraints include Reason field', () => {
83
+ const content = `
84
+ ### 📌 Decision: auth/jwt-strategy
85
+ - **Value**: Use JWT with refresh tokens
86
+ - **Layer**: business
87
+ - **Tags**: auth, security
88
+ - **Rationale**: Stateless sessions scale better
89
+
90
+ ### 🚫 Constraint: security
91
+ - **Rule**: No hardcoded API keys
92
+ - **Priority**: critical
93
+ - **Reason**: Keys committed to git cannot be rotated
94
+ `;
95
+ const result = extractPatternsFromPlan(content);
96
+ assert.strictEqual(result.decisions.length, 1);
97
+ const d = result.decisions[0];
98
+ assert.strictEqual(d.key, 'auth/jwt-strategy');
99
+ assert.strictEqual(d.value, 'Use JWT with refresh tokens');
100
+ assert.strictEqual(d.layer, 'business');
101
+ assert.strictEqual(d.tags, 'auth, security');
102
+ assert.strictEqual(d.rationale, 'Stateless sessions scale better');
103
+ assert.strictEqual(d.alternatives, undefined);
104
+ assert.strictEqual(d.tradeoffs, undefined);
105
+ assert.strictEqual(result.constraints.length, 1);
106
+ assert.strictEqual(result.constraints[0].reason, 'Keys committed to git cannot be rotated');
107
+ });
108
+ });
109
+ });
110
+ //# sourceMappingURL=plan-pattern-extractor.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-pattern-extractor.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/hooks/plan-pattern-extractor.test.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;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,CA8FhC"}
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"}
@@ -68,6 +68,7 @@ export async function addConstraint(params, adapter) {
68
68
  category_id: categoryId,
69
69
  layer_id: layerId,
70
70
  constraint_text: normalizedParams.constraint_text,
71
+ reason: normalizedParams.reason ?? null,
71
72
  priority: priority,
72
73
  active: activeValue,
73
74
  ts: ts,
@@ -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":"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"}
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,CA2GjC"}
@@ -83,6 +83,7 @@ export async function getConstraints(params, adapter) {
83
83
  'cat.name as category',
84
84
  'l.name as layer',
85
85
  'c.constraint_text',
86
+ 'c.reason',
86
87
  'c.priority',
87
88
  knex.raw(`${db.dateFunction('c.ts')} as created_at`),
88
89
  // Tags subquery
@@ -95,9 +96,10 @@ export async function getConstraints(params, adapter) {
95
96
  ]);
96
97
  // Convert priority integer to string and parse tags
97
98
  const rows = convertPriorityArray(rawRows);
98
- const constraints = rows.map(row => ({
99
+ const constraints = rows.map(({ reason, tags, ...row }) => ({
99
100
  ...row,
100
- tags: row.tags ? row.tags.split(',') : null,
101
+ tags: tags ? tags.split(',') : null,
102
+ ...(reason ? { reason } : {}),
101
103
  }));
102
104
  return {
103
105
  constraints,
@@ -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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"}
@@ -188,7 +188,7 @@ export function constraintExample() {
188
188
  best_practices: {
189
189
  writing_constraints: [
190
190
  'Be specific and measurable (use numbers, percentages, time limits)',
191
- 'Include rationale in tags or separate documentation',
191
+ 'Use the reason field to record why the constraint exists',
192
192
  'Use appropriate priority (critical for must-have, high for important, medium/low for nice-to-have)',
193
193
  'Assign to correct layer (where constraint is enforced)',
194
194
  'Tag comprehensively for easy retrieval'
@@ -1 +1 @@
1
- {"version":3,"file":"example.js","sourceRoot":"","sources":["../../../../src/tools/constraints/help/example.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"example.js","sourceRoot":"","sources":["../../../../src/tools/constraints/help/example.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,yDAAyD;QACtE,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,WAAW,EAAE,gFAAgF;gBAC7F,QAAQ,EAAE;oBACR;wBACE,QAAQ,EAAE,mBAAmB;wBAC7B,OAAO,EAAE,+LAA+L;wBACxM,SAAS,EAAE,0DAA0D;qBACtE;oBACD;wBACE,QAAQ,EAAE,4BAA4B;wBACtC,OAAO,EAAE,yKAAyK;wBAClL,SAAS,EAAE,uDAAuD;qBACnE;oBACD;wBACE,QAAQ,EAAE,cAAc;wBACxB,OAAO,EAAE,kMAAkM;wBAC3M,SAAS,EAAE,6DAA6D;qBACzE;iBACF;aACF;YACD,YAAY,EAAE;gBACZ,WAAW,EAAE,sEAAsE;gBACnF,QAAQ,EAAE;oBACR;wBACE,QAAQ,EAAE,wBAAwB;wBAClC,OAAO,EAAE,kOAAkO;wBAC3O,SAAS,EAAE,wDAAwD;qBACpE;oBACD;wBACE,QAAQ,EAAE,sBAAsB;wBAChC,OAAO,EAAE,yMAAyM;wBAClN,SAAS,EAAE,2CAA2C;qBACvD;oBACD;wBACE,QAAQ,EAAE,gBAAgB;wBAC1B,OAAO,EAAE,sMAAsM;wBAC/M,SAAS,EAAE,yDAAyD;qBACrE;iBACF;aACF;YACD,QAAQ,EAAE;gBACR,WAAW,EAAE,yEAAyE;gBACtF,QAAQ,EAAE;oBACR;wBACE,QAAQ,EAAE,yBAAyB;wBACnC,OAAO,EAAE,0LAA0L;wBACnM,SAAS,EAAE,qDAAqD;qBACjE;oBACD;wBACE,QAAQ,EAAE,iBAAiB;wBAC3B,OAAO,EAAE,qNAAqN;wBAC9N,SAAS,EAAE,gDAAgD;qBAC5D;oBACD;wBACE,QAAQ,EAAE,kBAAkB;wBAC5B,OAAO,EAAE,0NAA0N;wBACnO,SAAS,EAAE,6CAA6C;qBACzD;iBACF;aACF;YACD,YAAY,EAAE;gBACZ,WAAW,EAAE,0EAA0E;gBACvF,QAAQ,EAAE;oBACR;wBACE,QAAQ,EAAE,mBAAmB;wBAC7B,OAAO,EAAE,0LAA0L;wBACnM,SAAS,EAAE,yDAAyD;qBACrE;oBACD;wBACE,QAAQ,EAAE,wBAAwB;wBAClC,OAAO,EAAE,4KAA4K;wBACrL,SAAS,EAAE,mDAAmD;qBAC/D;iBACF;aACF;SACF;QACD,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,WAAW,EAAE,gDAAgD;gBAC7D,QAAQ,EAAE;oBACR;wBACE,QAAQ,EAAE,uBAAuB;wBACjC,OAAO,EAAE,0CAA0C;wBACnD,SAAS,EAAE,wEAAwE;qBACpF;iBACF;aACF;YACD,UAAU,EAAE;gBACV,WAAW,EAAE,6CAA6C;gBAC1D,QAAQ,EAAE;oBACR;wBACE,QAAQ,EAAE,gCAAgC;wBAC1C,OAAO,EAAE,4CAA4C;wBACrD,SAAS,EAAE,uDAAuD;qBACnE;iBACF;aACF;YACD,iBAAiB,EAAE;gBACjB,WAAW,EAAE,kDAAkD;gBAC/D,QAAQ,EAAE;oBACR;wBACE,QAAQ,EAAE,sBAAsB;wBAChC,OAAO,EAAE,2CAA2C;wBACpD,SAAS,EAAE,6EAA6E;qBACzF;oBACD;wBACE,QAAQ,EAAE,kCAAkC;wBAC5C,OAAO,EAAE,iEAAiE;wBAC1E,SAAS,EAAE,4EAA4E;qBACxF;iBACF;aACF;SACF;QACD,SAAS,EAAE;YACT,oBAAoB,EAAE;gBACpB,WAAW,EAAE,2EAA2E;gBACxF,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,4HAA4H,EAAE;oBAChL,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,6BAA6B,EAAE,OAAO,EAAE,yCAAyC,EAAE;oBACtG,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,yCAAyC,EAAE,OAAO,EAAE,4CAA4C,EAAE;oBACrH,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,wCAAwC,EAAE,OAAO,EAAE,2CAA2C,EAAE;oBACnH,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,qCAAqC,EAAE,OAAO,EAAE,0CAA0C,EAAE;iBAChH;aACF;YACD,qBAAqB,EAAE;gBACrB,WAAW,EAAE,kDAAkD;gBAC/D,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,uCAAuC;wBAC/C,OAAO,EAAE,sCAAsC;qBAChD;oBACD;wBACE,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,wCAAwC;wBAChD,OAAO,EAAE,gEAAgE;qBAC1E;oBACD;wBACE,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,mBAAmB;wBAC3B,OAAO,EAAE,6DAA6D;qBACvE;oBACD;wBACE,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,0BAA0B;wBAClC,OAAO,EAAE,iEAAiE;qBAC3E;iBACF;aACF;YACD,oBAAoB,EAAE;gBACpB,WAAW,EAAE,mDAAmD;gBAChE,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,+BAA+B;wBACvC,OAAO,EAAE,0JAA0J;qBACpK;oBACD;wBACE,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,wBAAwB;wBAChC,OAAO,EAAE,iFAAiF;qBAC3F;oBACD;wBACE,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,6BAA6B;wBACrC,OAAO,EAAE,mEAAmE;qBAC7E;oBACD;wBACE,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,qBAAqB;wBAC7B,OAAO,EAAE,iDAAiD;qBAC3D;iBACF;aACF;SACF;QACD,cAAc,EAAE;YACd,mBAAmB,EAAE;gBACnB,oEAAoE;gBACpE,0DAA0D;gBAC1D,oGAAoG;gBACpG,wDAAwD;gBACxD,wCAAwC;aACzC;YACD,oBAAoB,EAAE;gBACpB,2DAA2D;gBAC3D,sEAAsE;gBACtE,sEAAsE;gBACtE,iDAAiD;gBACjD,8DAA8D;gBAC9D,kDAAkD;gBAClD,sDAAsD;aACvD;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -10,6 +10,8 @@ export interface AddConstraintParams {
10
10
  created_by?: string;
11
11
  /** @since v4.2.1 - Set to false to create inactive constraint (for plan-based workflow) */
12
12
  active?: boolean;
13
+ /** @since v5.3.0 - Why this constraint exists (stored in t_constraints.reason) */
14
+ reason?: string;
13
15
  }
14
16
  export interface GetConstraintsParams {
15
17
  category?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../../src/types/constraint/params.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IAC3D,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../../src/types/constraint/params.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IAC3D,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB"}
@@ -37,6 +37,7 @@ export interface TaggedConstraint {
37
37
  readonly category: string;
38
38
  readonly layer: string | null;
39
39
  readonly constraint_text: string;
40
+ readonly reason?: string | null;
40
41
  readonly priority: 'critical' | 'high' | 'medium' | 'low';
41
42
  readonly tags: string | null;
42
43
  readonly created_by: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"view-entities.d.ts","sourceRoot":"","sources":["../../src/types/view-entities.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,GAAG,CAAC;CACd"}
1
+ {"version":3,"file":"view-entities.d.ts","sourceRoot":"","sources":["../../src/types/view-entities.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,GAAG,CAAC;CACd"}
@@ -1 +1 @@
1
- {"version":3,"file":"constraint-specs.d.ts","sourceRoot":"","sources":["../../../src/utils/action-specs/constraint-specs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAuD9D,CAAC"}
1
+ {"version":3,"file":"constraint-specs.d.ts","sourceRoot":"","sources":["../../../src/utils/action-specs/constraint-specs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAwD9D,CAAC"}
@@ -7,16 +7,17 @@
7
7
  export const CONSTRAINT_ACTION_SPECS = {
8
8
  add: {
9
9
  required: ['category', 'constraint_text', 'priority'],
10
- optional: ['layer', 'tags', 'created_by', 'active'],
10
+ optional: ['layer', 'tags', 'created_by', 'active', 'reason'],
11
11
  example: {
12
12
  action: 'add',
13
13
  category: 'performance',
14
14
  constraint_text: 'API response time must be <100ms for 95th percentile',
15
15
  priority: 'high',
16
16
  layer: 'business',
17
- tags: ['api', 'latency']
17
+ tags: ['api', 'latency'],
18
+ reason: 'Slow responses above 100ms measurably increase checkout abandonment'
18
19
  },
19
- hint: "Valid categories: performance, architecture, security, code-style. Valid priorities: low, medium, high, critical (or 1-4). Set active=false for draft constraints. NOTE: rationale is NOT supported - include it in tags or constraint_text if needed."
20
+ hint: "Valid categories: performance, architecture, security, code-style. Valid priorities: low, medium, high, critical (or 1-4). Set active=false for draft constraints. Use 'reason' to record WHY the constraint exists."
20
21
  },
21
22
  get: {
22
23
  required: [],
@@ -1 +1 @@
1
- {"version":3,"file":"constraint-specs.js","sourceRoot":"","sources":["../../../src/utils/action-specs/constraint-specs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,CAAC,MAAM,uBAAuB,GAA+B;IACjE,GAAG,EAAE;QACH,QAAQ,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC;QACrD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC;QACnD,OAAO,EAAE;YACP,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,aAAa;YACvB,eAAe,EAAE,sDAAsD;YACvE,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;SACzB;QACD,IAAI,EAAE,wPAAwP;KAC/P;IAED,GAAG,EAAE;QACH,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,CAAC;QAChF,OAAO,EAAE;YACP,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,aAAa;YACvB,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,EAAE;SACV;QACD,IAAI,EAAE,oFAAoF;KAC3F;IAED,QAAQ,EAAE;QACR,QAAQ,EAAE,CAAC,IAAI,CAAC;QAChB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE;YACP,MAAM,EAAE,UAAU;YAClB,EAAE,EAAE,CAAC;SACN;QACD,IAAI,EAAE,gGAAgG;KACvG;IAED,UAAU,EAAE;QACV,QAAQ,EAAE,CAAC,IAAI,CAAC;QAChB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE;YACP,MAAM,EAAE,YAAY;YACpB,EAAE,EAAE,sCAAsC,CAAE,mCAAmC;SAChF;QACD,IAAI,EAAE,wKAAwK;KAC/K;IAED,eAAe,EAAE;QACf,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,CAAC,cAAc,CAAC;QAC1B,OAAO,EAAE;YACP,MAAM,EAAE,iBAAiB;SAC1B;QACD,IAAI,EAAE,2GAA2G;KAClH;CACF,CAAC"}
1
+ {"version":3,"file":"constraint-specs.js","sourceRoot":"","sources":["../../../src/utils/action-specs/constraint-specs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,CAAC,MAAM,uBAAuB,GAA+B;IACjE,GAAG,EAAE;QACH,QAAQ,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC;QACrD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAC7D,OAAO,EAAE;YACP,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,aAAa;YACvB,eAAe,EAAE,sDAAsD;YACvE,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;YACxB,MAAM,EAAE,qEAAqE;SAC9E;QACD,IAAI,EAAE,sNAAsN;KAC7N;IAED,GAAG,EAAE;QACH,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,CAAC;QAChF,OAAO,EAAE;YACP,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,aAAa;YACvB,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,EAAE;SACV;QACD,IAAI,EAAE,oFAAoF;KAC3F;IAED,QAAQ,EAAE;QACR,QAAQ,EAAE,CAAC,IAAI,CAAC;QAChB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE;YACP,MAAM,EAAE,UAAU;YAClB,EAAE,EAAE,CAAC;SACN;QACD,IAAI,EAAE,gGAAgG;KACvG;IAED,UAAU,EAAE;QACV,QAAQ,EAAE,CAAC,IAAI,CAAC;QAChB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE;YACP,MAAM,EAAE,YAAY;YACpB,EAAE,EAAE,sCAAsC,CAAE,mCAAmC;SAChF;QACD,IAAI,EAAE,wKAAwK;KAC/K;IAED,eAAe,EAAE;QACf,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,CAAC,cAAc,CAAC;QAC1B,OAAO,EAAE;YACP,MAAM,EAAE,iBAAiB;SAC1B;QACD,IAAI,EAAE,2GAA2G;KAClH;CACF,CAAC"}