sqlew 5.1.0 → 5.2.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 (48) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +17 -8
  3. package/dist/cli/hooks/on-exit-plan.d.ts.map +1 -1
  4. package/dist/cli/hooks/on-exit-plan.js +42 -1
  5. package/dist/cli/hooks/on-exit-plan.js.map +1 -1
  6. package/dist/cli/hooks/on-prompt.d.ts.map +1 -1
  7. package/dist/cli/hooks/on-prompt.js +5 -0
  8. package/dist/cli/hooks/on-prompt.js.map +1 -1
  9. package/dist/cli/hooks/plan-processor.d.ts.map +1 -1
  10. package/dist/cli/hooks/plan-processor.js +16 -2
  11. package/dist/cli/hooks/plan-processor.js.map +1 -1
  12. package/dist/cli/hooks/stdin-parser.d.ts +41 -0
  13. package/dist/cli/hooks/stdin-parser.d.ts.map +1 -1
  14. package/dist/cli/hooks/stdin-parser.js +140 -4
  15. package/dist/cli/hooks/stdin-parser.js.map +1 -1
  16. package/dist/cli/hooks/track-plan.d.ts +13 -0
  17. package/dist/cli/hooks/track-plan.d.ts.map +1 -1
  18. package/dist/cli/hooks/track-plan.js +58 -3
  19. package/dist/cli/hooks/track-plan.js.map +1 -1
  20. package/dist/config/global-config.d.ts +7 -1
  21. package/dist/config/global-config.d.ts.map +1 -1
  22. package/dist/config/global-config.js +24 -45
  23. package/dist/config/global-config.js.map +1 -1
  24. package/dist/database/migrations/v4/20251126000001_v4_migrate_data.d.ts.map +1 -1
  25. package/dist/database/migrations/v4/20251126000001_v4_migrate_data.js +2 -1
  26. package/dist/database/migrations/v4/20251126000001_v4_migrate_data.js.map +1 -1
  27. package/dist/tests/unit/hooks/grok-hook-normalization.test.d.ts +9 -0
  28. package/dist/tests/unit/hooks/grok-hook-normalization.test.d.ts.map +1 -0
  29. package/dist/tests/unit/hooks/grok-hook-normalization.test.js +98 -0
  30. package/dist/tests/unit/hooks/grok-hook-normalization.test.js.map +1 -0
  31. package/dist/tests/unit/hooks/grok-plan-template-injection.test.d.ts +7 -0
  32. package/dist/tests/unit/hooks/grok-plan-template-injection.test.d.ts.map +1 -0
  33. package/dist/tests/unit/hooks/grok-plan-template-injection.test.js +55 -0
  34. package/dist/tests/unit/hooks/grok-plan-template-injection.test.js.map +1 -0
  35. package/dist/utils/path-normalize.d.ts +23 -0
  36. package/dist/utils/path-normalize.d.ts.map +1 -0
  37. package/dist/utils/path-normalize.js +38 -0
  38. package/dist/utils/path-normalize.js.map +1 -0
  39. package/dist/utils/project-root.d.ts +6 -3
  40. package/dist/utils/project-root.d.ts.map +1 -1
  41. package/dist/utils/project-root.js +11 -3
  42. package/dist/utils/project-root.js.map +1 -1
  43. package/dist/watcher/base-watcher.d.ts +0 -4
  44. package/dist/watcher/base-watcher.d.ts.map +1 -1
  45. package/dist/watcher/base-watcher.js +11 -22
  46. package/dist/watcher/base-watcher.js.map +1 -1
  47. package/docs/HOOKS_GUIDE.md +40 -6
  48. package/package.json +3 -3
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Path Normalization Utilities
3
+ *
4
+ * Cross-platform path normalization for Windows environments.
5
+ * Handles Git Bash/MSYS2 path conversion and drive letter consistency.
6
+ *
7
+ * @since v5.2.0
8
+ */
9
+ import { resolve } from 'path';
10
+ /**
11
+ * Normalize a path for Windows cross-platform consistency.
12
+ *
13
+ * Performs:
14
+ * 1. Git Bash/MSYS2 path conversion (/c/Users/... -> C:\Users\...)
15
+ * 2. Absolute path resolution via resolve()
16
+ * 3. Drive letter lowercase normalization
17
+ *
18
+ * On non-Windows platforms, only resolve() is applied.
19
+ *
20
+ * @param inputPath - Path to normalize
21
+ * @returns Normalized absolute path
22
+ */
23
+ export function normalizeWindowsPath(inputPath) {
24
+ let normalizedPath = inputPath;
25
+ // Convert Git Bash/MSYS2 paths (/c/Users/...) to Windows paths (C:\Users\...)
26
+ if (process.platform === 'win32' && /^\/[a-zA-Z]\//.test(normalizedPath)) {
27
+ const driveLetter = normalizedPath[1].toUpperCase();
28
+ normalizedPath = driveLetter + ':' + normalizedPath.slice(2).replace(/\//g, '\\');
29
+ }
30
+ // Resolve to absolute path
31
+ normalizedPath = resolve(normalizedPath);
32
+ // Lowercase drive letter for consistency
33
+ if (process.platform === 'win32' && /^[A-Z]:/.test(normalizedPath)) {
34
+ normalizedPath = normalizedPath[0].toLowerCase() + normalizedPath.slice(1);
35
+ }
36
+ return normalizedPath;
37
+ }
38
+ //# sourceMappingURL=path-normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-normalize.js","sourceRoot":"","sources":["../../src/utils/path-normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,IAAI,cAAc,GAAG,SAAS,CAAC;IAE/B,8EAA8E;IAC9E,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QACzE,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACpD,cAAc,GAAG,WAAW,GAAG,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACpF,CAAC;IAED,2BAA2B;IAC3B,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAEzC,yCAAyC;IACzC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QACnE,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -2,7 +2,8 @@
2
2
  * Project Root Determination Utility
3
3
  *
4
4
  * Determines the project root directory with correct priority order:
5
- * 0. CLAUDE_PROJECT_DIR environment variable (Claude Code Hooks set this automatically)
5
+ * 0. CLAUDE_PROJECT_DIR environment variable (Claude Code / Grok Build hooks)
6
+ * 0b. GROK_WORKSPACE_ROOT environment variable (Grok Build hooks / MCP)
6
7
  * 1. SQLEW_PROJECT_ROOT environment variable (MCP client can set this)
7
8
  * 2. CLI --db-path argument (absolute path) → use dirname
8
9
  * 3. CLI --config-path argument (absolute path) → use dirname
@@ -13,7 +14,8 @@
13
14
  * like C:\Windows\System32 (e.g., by MCP hosts like Claude Desktop or Junie AI).
14
15
  *
15
16
  * Environment Variable Support:
16
- * - CLAUDE_PROJECT_DIR: Set automatically by Claude Code Hooks (v4.1.0+)
17
+ * - CLAUDE_PROJECT_DIR: Set automatically by Claude Code / Grok Build hooks (v4.1.0+)
18
+ * - GROK_WORKSPACE_ROOT: Set automatically by Grok Build hooks (v5.2.0+)
17
19
  * - SQLEW_PROJECT_ROOT: MCP clients can set this (Serena-MCP pattern)
18
20
  * This allows project-relative database paths without absolute CLI arguments.
19
21
  */
@@ -38,7 +40,8 @@ export interface ProjectRootOptions {
38
40
  * Determines the project root directory based on available path information.
39
41
  *
40
42
  * Priority order (highest to lowest):
41
- * 0. CLAUDE_PROJECT_DIR environment variable (Claude Code Hooks)
43
+ * 0. CLAUDE_PROJECT_DIR environment variable (Claude Code / Grok Build hooks)
44
+ * 0b. GROK_WORKSPACE_ROOT environment variable (Grok Build)
42
45
  * 1. SQLEW_PROJECT_ROOT environment variable
43
46
  * 2. CLI --db-path (absolute)
44
47
  * 3. CLI --config-path (absolute)
@@ -1 +1 @@
1
- {"version":3,"file":"project-root.d.ts","sourceRoot":"","sources":["../../src/utils/project-root.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,CA2C7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAiB1D"}
1
+ {"version":3,"file":"project-root.d.ts","sourceRoot":"","sources":["../../src/utils/project-root.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,CAiD7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAiB1D"}
@@ -2,7 +2,8 @@
2
2
  * Project Root Determination Utility
3
3
  *
4
4
  * Determines the project root directory with correct priority order:
5
- * 0. CLAUDE_PROJECT_DIR environment variable (Claude Code Hooks set this automatically)
5
+ * 0. CLAUDE_PROJECT_DIR environment variable (Claude Code / Grok Build hooks)
6
+ * 0b. GROK_WORKSPACE_ROOT environment variable (Grok Build hooks / MCP)
6
7
  * 1. SQLEW_PROJECT_ROOT environment variable (MCP client can set this)
7
8
  * 2. CLI --db-path argument (absolute path) → use dirname
8
9
  * 3. CLI --config-path argument (absolute path) → use dirname
@@ -13,7 +14,8 @@
13
14
  * like C:\Windows\System32 (e.g., by MCP hosts like Claude Desktop or Junie AI).
14
15
  *
15
16
  * Environment Variable Support:
16
- * - CLAUDE_PROJECT_DIR: Set automatically by Claude Code Hooks (v4.1.0+)
17
+ * - CLAUDE_PROJECT_DIR: Set automatically by Claude Code / Grok Build hooks (v4.1.0+)
18
+ * - GROK_WORKSPACE_ROOT: Set automatically by Grok Build hooks (v5.2.0+)
17
19
  * - SQLEW_PROJECT_ROOT: MCP clients can set this (Serena-MCP pattern)
18
20
  * This allows project-relative database paths without absolute CLI arguments.
19
21
  */
@@ -22,7 +24,8 @@ import * as path from 'path';
22
24
  * Determines the project root directory based on available path information.
23
25
  *
24
26
  * Priority order (highest to lowest):
25
- * 0. CLAUDE_PROJECT_DIR environment variable (Claude Code Hooks)
27
+ * 0. CLAUDE_PROJECT_DIR environment variable (Claude Code / Grok Build hooks)
28
+ * 0b. GROK_WORKSPACE_ROOT environment variable (Grok Build)
26
29
  * 1. SQLEW_PROJECT_ROOT environment variable
27
30
  * 2. CLI --db-path (absolute)
28
31
  * 3. CLI --config-path (absolute)
@@ -64,6 +67,11 @@ export function determineProjectRoot(options = {}) {
64
67
  // Normalize to forward slashes for cross-platform consistency
65
68
  return claudeProjectDir.replace(/\\/g, '/');
66
69
  }
70
+ // Priority 0b: GROK_WORKSPACE_ROOT (Grok Build hooks inject this on every hook process)
71
+ const grokWorkspaceRoot = process.env.GROK_WORKSPACE_ROOT;
72
+ if (grokWorkspaceRoot && path.isAbsolute(grokWorkspaceRoot)) {
73
+ return grokWorkspaceRoot.replace(/\\/g, '/');
74
+ }
67
75
  // Priority 1: SQLEW_PROJECT_ROOT environment variable
68
76
  // MCP clients (Junie, Claude Desktop, etc.) can set this to specify project directory
69
77
  const envProjectRoot = process.env.SQLEW_PROJECT_ROOT;
@@ -1 +1 @@
1
- {"version":3,"file":"project-root.js","sourceRoot":"","sources":["../../src/utils/project-root.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAsB7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAA8B,EAAE;IACnE,gEAAgE;IAChE,wEAAwE;IACxE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACxD,IAAI,gBAAgB,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC1D,8DAA8D;QAC9D,OAAO,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,sDAAsD;IACtD,sFAAsF;IACtF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACtD,IAAI,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACtD,8DAA8D;QAC9D,OAAO,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,qDAAqD;IACrD,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpD,8DAA8D;QAC9D,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,yDAAyD;IACzD,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QACpE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACxD,8DAA8D;QAC9D,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,wDAAwD;IACxD,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAClE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACvD,8DAA8D;QAC9D,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,wCAAwC;IACxC,kFAAkF;IAClF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,8DAA8D;IAC9D,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEjE,oCAAoC;IACpC,MAAM,UAAU,GAAG;QACjB,mBAAmB;QACnB,mBAAmB;QACnB,UAAU;QACV,gBAAgB;QAChB,sBAAsB;KACvB,CAAC;IAEF,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACpE,CAAC"}
1
+ {"version":3,"file":"project-root.js","sourceRoot":"","sources":["../../src/utils/project-root.ts"],"names":[],"mappings":"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"}
@@ -37,10 +37,6 @@ export declare abstract class BaseWatcher {
37
37
  protected readonly debounceMs: number;
38
38
  protected readonly watcherName: string;
39
39
  constructor(name: string, debounceMs?: number);
40
- /**
41
- * Detect if running on WSL (Windows Subsystem for Linux)
42
- */
43
- protected isWSL(): boolean;
44
40
  /**
45
41
  * Initialize chokidar watcher with common options
46
42
  */
@@ -1 +1 @@
1
- {"version":3,"file":"base-watcher.d.ts","sourceRoot":"","sources":["../../src/watcher/base-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAiB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAI/C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACpC,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,8BAAsB,WAAW;IAC/B,SAAS,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAAQ;IAC3C,SAAS,CAAC,SAAS,EAAE,OAAO,CAAS;IACrC,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAa;IAClE,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAE3B,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,MAAa;IAKnD;;OAEG;IACH,SAAS,CAAC,KAAK,IAAI,OAAO;IAmB1B;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS;IAyB/D;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAsB1E;;OAEG;aACa,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAEtC;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBlC;;OAEG;IACI,YAAY,IAAI,OAAO;IAI9B;;OAEG;IACI,OAAO,IAAI,MAAM;CAGzB"}
1
+ {"version":3,"file":"base-watcher.d.ts","sourceRoot":"","sources":["../../src/watcher/base-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAiB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAI/C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACpC,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,8BAAsB,WAAW;IAC/B,SAAS,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAAQ;IAC3C,SAAS,CAAC,SAAS,EAAE,OAAO,CAAS;IACrC,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAa;IAClE,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAE3B,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,MAAa;IAKnD;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS;IAmC/D;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAsB1E;;OAEG;aACa,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAEtC;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBlC;;OAEG;IACI,YAAY,IAAI,OAAO;IAI9B;;OAEG;IACI,OAAO,IAAI,MAAM;CAGzB"}
@@ -10,7 +10,7 @@
10
10
  * @since v4.1.0
11
11
  */
12
12
  import chokidar from 'chokidar';
13
- import { execSync } from 'child_process';
13
+ import { detectEnvironment } from '../utils/environment-detector.js';
14
14
  import { debugLog } from '../utils/debug-logger.js';
15
15
  /**
16
16
  * Abstract base class for file watchers
@@ -25,33 +25,22 @@ export class BaseWatcher {
25
25
  this.watcherName = name;
26
26
  this.debounceMs = debounceMs;
27
27
  }
28
- /**
29
- * Detect if running on WSL (Windows Subsystem for Linux)
30
- */
31
- isWSL() {
32
- if (process.platform !== 'linux') {
33
- return false;
34
- }
35
- try {
36
- const result = execSync('uname -r', {
37
- encoding: 'utf-8',
38
- stdio: ['pipe', 'pipe', 'ignore'],
39
- });
40
- return (result.toLowerCase().includes('microsoft') ||
41
- result.toLowerCase().includes('wsl'));
42
- }
43
- catch {
44
- return false;
45
- }
46
- }
47
28
  /**
48
29
  * Initialize chokidar watcher with common options
49
30
  */
50
31
  initializeWatcher(options) {
51
- const isWSL = this.isWSL();
32
+ const env = detectEnvironment();
33
+ const isWSL = env === 'wsl';
52
34
  if (isWSL) {
53
35
  debugLog('INFO', `${this.watcherName}: WSL detected`);
54
36
  }
37
+ // WSL2 + Windows FS (/mnt/) requires polling because inotify doesn't work
38
+ const paths = Array.isArray(options.paths) ? options.paths : [options.paths];
39
+ const needsPolling = isWSL && paths.some(p => p.startsWith('/mnt/'));
40
+ const usePolling = options.usePolling ?? needsPolling;
41
+ if (needsPolling && options.usePolling === undefined) {
42
+ debugLog('INFO', `${this.watcherName}: Auto-enabling polling for WSL2 Windows FS`);
43
+ }
55
44
  const watcherConfig = {
56
45
  persistent: true,
57
46
  ignoreInitial: options.ignoreInitial ?? true,
@@ -60,7 +49,7 @@ export class BaseWatcher {
60
49
  stabilityThreshold: Math.max(options.debounceMs ?? this.debounceMs, 1000),
61
50
  pollInterval: 500, // Reduced polling frequency to avoid duplicate events
62
51
  },
63
- usePolling: options.usePolling ?? false,
52
+ usePolling,
64
53
  interval: options.pollInterval ?? 500, // Match polling interval
65
54
  };
66
55
  if (options.ignored && watcherConfig) {
@@ -1 +1 @@
1
- {"version":3,"file":"base-watcher.js","sourceRoot":"","sources":["../../src/watcher/base-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,QAAuB,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAoBpD;;GAEG;AACH,MAAM,OAAgB,WAAW;IACrB,OAAO,GAAqB,IAAI,CAAC;IACjC,SAAS,GAAY,KAAK,CAAC;IAC3B,cAAc,GAAgC,IAAI,GAAG,EAAE,CAAC;IAC/C,UAAU,CAAS;IACnB,WAAW,CAAS;IAEvC,YAAY,IAAY,EAAE,aAAqB,IAAI;QACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACO,KAAK;QACb,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,EAAE;gBAClC,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;aAClC,CAAC,CAAC;YACH,OAAO,CACL,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC1C,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CACrC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACO,iBAAiB,CAAC,OAAuB;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,KAAK,EAAE,CAAC;YACV,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,gBAAgB,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,aAAa,GAAyC;YAC1D,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;YAC5C,gBAAgB,EAAE;gBAChB,oFAAoF;gBACpF,kBAAkB,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;gBACzE,YAAY,EAAE,GAAG,EAAG,sDAAsD;aAC3E;YACD,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK;YACvC,QAAQ,EAAE,OAAO,CAAC,YAAY,IAAI,GAAG,EAAG,yBAAyB;SAClE,CAAC;QAEF,IAAI,OAAO,CAAC,OAAO,IAAI,aAAa,EAAE,CAAC;YACrC,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC1C,CAAC;QAED,OAAO,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACO,QAAQ,CAAC,GAAW,EAAE,OAAmC;QACjE,oCAAoC;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,aAAa,EAAE,CAAC;YAClB,YAAY,CAAC,aAAa,CAAC,CAAC;QAC9B,CAAC;QAED,gBAAgB;QAChB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;YAClC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,OAAO,EAAE,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,8BAA8B,EAAE;oBACnE,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAOD;;OAEG;IACI,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,4BAA4B;YAC5B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAE5B,gBAAgB;YAChB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,CAAC;YAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,WAAW,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACpE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACI,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"base-watcher.js","sourceRoot":"","sources":["../../src/watcher/base-watcher.ts"],"names":[],"mappings":"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"}
@@ -51,17 +51,51 @@ To uninstall, remove the copied skill directories and config entries.
51
51
 
52
52
  Source: https://github.com/sqlew-io/sqlew-codex
53
53
 
54
+ ## Grok Build
55
+
56
+ sqlew-plugin provides unified support for Claude Code and Grok Build (v5.2+).
57
+ No separate adapter is required.
58
+
59
+ ```bash
60
+ npm i -g sqlew
61
+ grok plugin install sqlew-io/sqlew-plugin --trust
62
+ grok plugin update
63
+ ```
64
+
65
+ For local development, install from a cloned directory instead:
66
+
67
+ ```bash
68
+ git clone https://github.com/sqlew-io/sqlew-plugin.git
69
+ grok plugin install ./sqlew-plugin --trust
70
+ ```
71
+
72
+ Verify installation:
73
+
74
+ ```bash
75
+ grok plugin list # sqlew enabled + trusted
76
+ grok inspect # hooks, MCP, skills visible
77
+ ```
78
+
79
+ **Important**:
80
+ - Do NOT register sqlew hooks in `~/.grok/hooks/` (causes double-firing with plugin hooks)
81
+ - Do NOT add `[mcp_servers.sqlew]` to `~/.grok/config.toml` (plugin `.mcp.json` handles MCP)
82
+ - Plan mode guidance uses plugin skills (`sqlew-plan-guidance`, `sqlew-decision-format`), not hook injection
83
+ - Plan-to-ADR extracts `### 📌 Decision:` / `### 🚫 Constraint:` from `plan.md` on `exit_plan_mode`
84
+
85
+ Source: https://github.com/sqlew-io/sqlew-plugin
86
+
54
87
  ## What Gets Configured
55
88
 
56
- | Feature | Claude Code | Codex |
57
- |---------|-------------|-------|
58
- | MCP server | Auto-configured | Manual (config.toml) |
59
- | Plan-to-ADR | Skills + Hooks | Skills + System prompt |
60
- | PR enrichment | Skill (sqlew-pr-adr) | Skill (sqlew-pr-adr) |
61
- | Decision format guidance | Skill (sqlew-decision-format) | Skill (sqlew-decision-format) |
89
+ | Feature | Claude Code | Codex | Grok Build |
90
+ |---------|-------------|-------|------------|
91
+ | MCP server | Auto-configured | Manual (config.toml) | Plugin `.mcp.json` |
92
+ | Plan-to-ADR | Skills + Hooks | Skills + System prompt | Skills + Hooks |
93
+ | PR enrichment | Skill (sqlew-pr-adr) | Skill (sqlew-pr-adr) | Skill (sqlew-pr-adr) |
94
+ | Decision format guidance | Skill (sqlew-decision-format) | Skill (sqlew-decision-format) | Skill (sqlew-decision-format) |
62
95
 
63
96
  ## Version History
64
97
 
98
+ - **v5.2.0**: Grok Build support via sqlew-plugin (hook normalization, Grok plan path, skills-based plan guidance)
65
99
  - **v5.0.0**: Plugin-first architecture (sqlew-plugin for Claude Code, sqlew-codex for Codex)
66
100
  - **v4.3.0**: Plan-to-ADR - Automatic ADR from Plan Mode
67
101
  - **v4.1.0**: Initial Claude Code Hooks integration
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sqlew",
3
- "description": "Automated ADR (Architecture Decision Records) for Claude Code - MCP server with SQL-backed decision repository",
4
- "version": "5.1.0",
3
+ "description": "Automated ADR (Architecture Decision Records) for AI Coding Agents - MCP server with SQL-backed decision repository",
4
+ "version": "5.2.0",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
7
7
  "bin": {
@@ -35,7 +35,7 @@
35
35
  "migrate:rollback": "npm run knex migrate:rollback",
36
36
  "test:backend": "node --test --test-force-exit --import tsx \"src/tests/backend/**/*.test.ts\" | node scripts/filter-test-output.js",
37
37
  "test:backend:verbose": "node --test --test-force-exit --import tsx \"src/tests/backend/**/*.test.ts\"",
38
- "migrate:status": "npm run knex migrate:status"
38
+ "migrate:status": "npm run knex migrate:status"
39
39
  },
40
40
  "engines": {
41
41
  "node": ">=20.0.0"