sqlew 4.0.5 → 4.1.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 (201) hide show
  1. package/CHANGELOG.md +1805 -1782
  2. package/README.md +409 -468
  3. package/assets/claude-md-snippets/plan-mode-integration.md +17 -6
  4. package/assets/config.example.toml +282 -284
  5. package/assets/sample-agents/README.md +36 -40
  6. package/assets/sample-agents/sqlew-architect.md +321 -322
  7. package/assets/sample-agents/sqlew-researcher.md +292 -293
  8. package/assets/sample-agents/sqlew-scrum-master.md +286 -287
  9. package/assets/sample-commands/README.md +56 -57
  10. package/assets/sample-skills/sqlew-plan-guidance/SKILL.md +33 -26
  11. package/dist/cli/hooks/check-completion.d.ts +19 -0
  12. package/dist/cli/hooks/check-completion.d.ts.map +1 -0
  13. package/dist/cli/hooks/check-completion.js +104 -0
  14. package/dist/cli/hooks/check-completion.js.map +1 -0
  15. package/dist/cli/hooks/init-hooks.d.ts +35 -0
  16. package/dist/cli/hooks/init-hooks.d.ts.map +1 -0
  17. package/dist/cli/hooks/init-hooks.js +425 -0
  18. package/dist/cli/hooks/init-hooks.js.map +1 -0
  19. package/dist/cli/hooks/mark-done.d.ts +25 -0
  20. package/dist/cli/hooks/mark-done.d.ts.map +1 -0
  21. package/dist/cli/hooks/mark-done.js +128 -0
  22. package/dist/cli/hooks/mark-done.js.map +1 -0
  23. package/dist/cli/hooks/plan-id-utils.d.ts +83 -0
  24. package/dist/cli/hooks/plan-id-utils.d.ts.map +1 -0
  25. package/dist/cli/hooks/plan-id-utils.js +183 -0
  26. package/dist/cli/hooks/plan-id-utils.js.map +1 -0
  27. package/dist/cli/hooks/save.d.ts +23 -0
  28. package/dist/cli/hooks/save.d.ts.map +1 -0
  29. package/dist/cli/hooks/save.js +90 -0
  30. package/dist/cli/hooks/save.js.map +1 -0
  31. package/dist/cli/hooks/stdin-parser.d.ts +139 -0
  32. package/dist/cli/hooks/stdin-parser.d.ts.map +1 -0
  33. package/dist/cli/hooks/stdin-parser.js +127 -0
  34. package/dist/cli/hooks/stdin-parser.js.map +1 -0
  35. package/dist/cli/hooks/suggest.d.ts +19 -0
  36. package/dist/cli/hooks/suggest.d.ts.map +1 -0
  37. package/dist/cli/hooks/suggest.js +157 -0
  38. package/dist/cli/hooks/suggest.js.map +1 -0
  39. package/dist/cli/hooks/track-plan.d.ts +36 -0
  40. package/dist/cli/hooks/track-plan.d.ts.map +1 -0
  41. package/dist/cli/hooks/track-plan.js +152 -0
  42. package/dist/cli/hooks/track-plan.js.map +1 -0
  43. package/dist/cli.d.ts.map +1 -1
  44. package/dist/cli.js +56 -16
  45. package/dist/cli.js.map +1 -1
  46. package/dist/config/global-config.d.ts +187 -0
  47. package/dist/config/global-config.d.ts.map +1 -0
  48. package/dist/config/global-config.js +206 -0
  49. package/dist/config/global-config.js.map +1 -0
  50. package/dist/config/loader.d.ts +42 -0
  51. package/dist/config/loader.d.ts.map +1 -1
  52. package/dist/config/loader.js +96 -0
  53. package/dist/config/loader.js.map +1 -1
  54. package/dist/constants.d.ts +4 -0
  55. package/dist/constants.d.ts.map +1 -1
  56. package/dist/constants.js +10 -0
  57. package/dist/constants.js.map +1 -1
  58. package/dist/database/operations/queries.d.ts.map +1 -1
  59. package/dist/database/operations/queries.js +11 -2
  60. package/dist/database/operations/queries.js.map +1 -1
  61. package/dist/index.js +4 -1
  62. package/dist/index.js.map +1 -1
  63. package/dist/init-agents.js +0 -1
  64. package/dist/init-agents.js.map +1 -1
  65. package/dist/init-skills.d.ts +4 -3
  66. package/dist/init-skills.d.ts.map +1 -1
  67. package/dist/init-skills.js +10 -3
  68. package/dist/init-skills.js.map +1 -1
  69. package/dist/server/setup.d.ts +8 -0
  70. package/dist/server/setup.d.ts.map +1 -1
  71. package/dist/server/setup.js +141 -21
  72. package/dist/server/setup.js.map +1 -1
  73. package/dist/sync-agents.d.ts.map +1 -1
  74. package/dist/sync-agents.js +48 -3
  75. package/dist/sync-agents.js.map +1 -1
  76. package/dist/sync-commands.d.ts.map +1 -1
  77. package/dist/sync-commands.js +43 -3
  78. package/dist/sync-commands.js.map +1 -1
  79. package/dist/tools/constraints/actions/get.d.ts.map +1 -1
  80. package/dist/tools/constraints/actions/get.js +5 -8
  81. package/dist/tools/constraints/actions/get.js.map +1 -1
  82. package/dist/tools/constraints/help/help.d.ts.map +1 -1
  83. package/dist/tools/constraints/help/help.js +1 -6
  84. package/dist/tools/constraints/help/help.js.map +1 -1
  85. package/dist/tools/context/actions/get.d.ts.map +1 -1
  86. package/dist/tools/context/actions/get.js.map +1 -1
  87. package/dist/tools/context/actions/search-layer.d.ts.map +1 -1
  88. package/dist/tools/context/actions/search-layer.js +5 -3
  89. package/dist/tools/context/actions/search-layer.js.map +1 -1
  90. package/dist/tools/context/actions/set-from-policy.d.ts +2 -1
  91. package/dist/tools/context/actions/set-from-policy.d.ts.map +1 -1
  92. package/dist/tools/context/actions/set-from-policy.js.map +1 -1
  93. package/dist/tools/context/help/help.d.ts.map +1 -1
  94. package/dist/tools/context/help/help.js +1 -7
  95. package/dist/tools/context/help/help.js.map +1 -1
  96. package/dist/tools/context/internal/queries.d.ts.map +1 -1
  97. package/dist/tools/context/internal/queries.js +5 -2
  98. package/dist/tools/context/internal/queries.js.map +1 -1
  99. package/dist/tools/context/types.d.ts +1 -1
  100. package/dist/tools/context/types.d.ts.map +1 -1
  101. package/dist/tools/files/actions/get.d.ts.map +1 -1
  102. package/dist/tools/files/actions/get.js +4 -6
  103. package/dist/tools/files/actions/get.js.map +1 -1
  104. package/dist/tools/files/help/help.d.ts.map +1 -1
  105. package/dist/tools/files/help/help.js +1 -6
  106. package/dist/tools/files/help/help.js.map +1 -1
  107. package/dist/tools/suggest/help/constraint-help.d.ts.map +1 -1
  108. package/dist/tools/suggest/help/constraint-help.js +0 -2
  109. package/dist/tools/suggest/help/constraint-help.js.map +1 -1
  110. package/dist/tools/suggest/internal/constraint-queries.d.ts.map +1 -1
  111. package/dist/tools/suggest/internal/constraint-queries.js +12 -5
  112. package/dist/tools/suggest/internal/constraint-queries.js.map +1 -1
  113. package/dist/tools/suggest/internal/queries.js +2 -2
  114. package/dist/tools/suggest/internal/queries.js.map +1 -1
  115. package/dist/tools/tasks/help/help.d.ts.map +1 -1
  116. package/dist/tools/tasks/help/help.js +0 -6
  117. package/dist/tools/tasks/help/help.js.map +1 -1
  118. package/dist/tools/tasks/help/use-case.d.ts.map +1 -1
  119. package/dist/tools/tasks/help/use-case.js +0 -1
  120. package/dist/tools/tasks/help/use-case.js.map +1 -1
  121. package/dist/tools/tasks/watcher/status.d.ts.map +1 -1
  122. package/dist/tools/tasks/watcher/status.js +5 -1
  123. package/dist/tools/tasks/watcher/status.js.map +1 -1
  124. package/dist/types/decision/params.d.ts +7 -6
  125. package/dist/types/decision/params.d.ts.map +1 -1
  126. package/dist/types/decision/templates.d.ts +3 -2
  127. package/dist/types/decision/templates.d.ts.map +1 -1
  128. package/dist/types/view-entities.d.ts +2 -1
  129. package/dist/types/view-entities.d.ts.map +1 -1
  130. package/dist/types.d.ts +19 -11
  131. package/dist/types.d.ts.map +1 -1
  132. package/dist/types.js +4 -1
  133. package/dist/types.js.map +1 -1
  134. package/dist/utils/enum-converter.d.ts +72 -0
  135. package/dist/utils/enum-converter.d.ts.map +1 -0
  136. package/dist/utils/enum-converter.js +76 -0
  137. package/dist/utils/enum-converter.js.map +1 -0
  138. package/dist/utils/hook-queue.d.ts +81 -0
  139. package/dist/utils/hook-queue.d.ts.map +1 -0
  140. package/dist/utils/hook-queue.js +156 -0
  141. package/dist/utils/hook-queue.js.map +1 -0
  142. package/dist/utils/project-root.d.ts +9 -2
  143. package/dist/utils/project-root.d.ts.map +1 -1
  144. package/dist/utils/project-root.js +16 -2
  145. package/dist/utils/project-root.js.map +1 -1
  146. package/dist/utils/tag-parser.d.ts.map +1 -1
  147. package/dist/utils/tag-parser.js +6 -0
  148. package/dist/utils/tag-parser.js.map +1 -1
  149. package/dist/utils/validators.d.ts +1 -1
  150. package/dist/utils/validators.d.ts.map +1 -1
  151. package/dist/utils/validators.js +1 -1
  152. package/dist/utils/validators.js.map +1 -1
  153. package/dist/utils/vcs-adapter.d.ts +44 -0
  154. package/dist/utils/vcs-adapter.d.ts.map +1 -1
  155. package/dist/utils/vcs-adapter.js +88 -0
  156. package/dist/utils/vcs-adapter.js.map +1 -1
  157. package/dist/utils/view-queries.d.ts.map +1 -1
  158. package/dist/utils/view-queries.js +9 -19
  159. package/dist/utils/view-queries.js.map +1 -1
  160. package/dist/watcher/base-watcher.d.ts +69 -0
  161. package/dist/watcher/base-watcher.d.ts.map +1 -0
  162. package/dist/watcher/base-watcher.js +130 -0
  163. package/dist/watcher/base-watcher.js.map +1 -0
  164. package/dist/watcher/index.d.ts +3 -0
  165. package/dist/watcher/index.d.ts.map +1 -1
  166. package/dist/watcher/index.js +2 -0
  167. package/dist/watcher/index.js.map +1 -1
  168. package/dist/watcher/queue-watcher.d.ts +64 -0
  169. package/dist/watcher/queue-watcher.d.ts.map +1 -0
  170. package/dist/watcher/queue-watcher.js +187 -0
  171. package/dist/watcher/queue-watcher.js.map +1 -0
  172. package/docs/ADR_CONCEPTS.md +140 -0
  173. package/docs/CONFIGURATION.md +922 -925
  174. package/docs/CROSS_DATABASE.md +153 -0
  175. package/docs/DATABASE_AUTH.md +70 -356
  176. package/docs/HOOKS_GUIDE.md +159 -0
  177. package/docs/SLASH_COMMANDS.md +329 -337
  178. package/docs/TASK_SYSTEM_DEPRECATED.md +88 -0
  179. package/docs/changelogs/CHANGELOG_ARCHIVE_v3.4_and_older.md +293 -296
  180. package/docs/cli/DATA_EXPORT_IMPORT.md +699 -700
  181. package/docs/cli/README.md +276 -277
  182. package/package.json +123 -124
  183. package/docs/ACCEPTANCE_CRITERIA.md +0 -625
  184. package/docs/AI_AGENT_GUIDE.md +0 -299
  185. package/docs/ARCHITECTURE.md +0 -167
  186. package/docs/AUTO_FILE_TRACKING.md +0 -841
  187. package/docs/BATCH_VALIDATION.md +0 -617
  188. package/docs/BEST_PRACTICES.md +0 -168
  189. package/docs/CONSTRAINT_INTELLIGENCE.md +0 -339
  190. package/docs/DECISION_CONTEXT.md +0 -697
  191. package/docs/DECISION_INTELLIGENCE.md +0 -605
  192. package/docs/GIT_AWARE_AUTO_COMPLETE.md +0 -646
  193. package/docs/MIGRATION_GUIDE_V3.9.0.md +0 -371
  194. package/docs/SHARED_CONCEPTS.md +0 -225
  195. package/docs/SPECIALIZED_AGENTS.md +0 -126
  196. package/docs/TASK_ACTIONS.md +0 -1177
  197. package/docs/TASK_OVERVIEW.md +0 -452
  198. package/docs/TASK_PRUNING.md +0 -594
  199. package/docs/TOOL_REFERENCE.md +0 -1077
  200. package/docs/TOOL_SELECTION.md +0 -83
  201. package/docs/WORKFLOWS.md +0 -941
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Suggest Hook Command
3
+ *
4
+ * PreToolUse hook for Task tool - suggests related decisions.
5
+ * Extracts keywords from task description/prompt and finds related decisions.
6
+ *
7
+ * Usage:
8
+ * echo '{"tool_input": {"description": "implement auth"}}' | sqlew suggest
9
+ *
10
+ * @since v4.1.0
11
+ */
12
+ /**
13
+ * Main suggest command entry point
14
+ *
15
+ * Called as PreToolUse hook when Task tool is invoked.
16
+ * Finds related decisions and injects them as context.
17
+ */
18
+ export declare function suggestCommand(): Promise<void>;
19
+ //# sourceMappingURL=suggest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../../src/cli/hooks/suggest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAyFH;;;;;GAKG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA2EpD"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Suggest Hook Command
3
+ *
4
+ * PreToolUse hook for Task tool - suggests related decisions.
5
+ * Extracts keywords from task description/prompt and finds related decisions.
6
+ *
7
+ * Usage:
8
+ * echo '{"tool_input": {"description": "implement auth"}}' | sqlew suggest
9
+ *
10
+ * @since v4.1.0
11
+ */
12
+ import { readStdinJson, sendContinue, getProjectPath } from './stdin-parser.js';
13
+ import { initializeDatabase } from '../../database.js';
14
+ import { suggestByContext } from '../../tools/suggest/actions/by-context.js';
15
+ import { join } from 'path';
16
+ // ============================================================================
17
+ // Constants
18
+ // ============================================================================
19
+ /** Minimum keyword length to use for search */
20
+ const MIN_KEYWORD_LENGTH = 3;
21
+ /** Default limit for suggestions */
22
+ const DEFAULT_LIMIT = 5;
23
+ /** Minimum score for suggestions */
24
+ const MIN_SCORE = 30;
25
+ // ============================================================================
26
+ // Keyword Extraction
27
+ // ============================================================================
28
+ /**
29
+ * Extract meaningful keywords from text
30
+ *
31
+ * Removes common stop words and short words.
32
+ *
33
+ * @param text - Text to extract keywords from
34
+ * @returns Array of keywords
35
+ */
36
+ function extractKeywords(text) {
37
+ // Common stop words to filter out
38
+ const stopWords = new Set([
39
+ 'the', 'a', 'an', 'and', 'or', 'but', 'in', 'on', 'at', 'to', 'for',
40
+ 'of', 'with', 'by', 'from', 'as', 'is', 'was', 'are', 'were', 'been',
41
+ 'be', 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could',
42
+ 'should', 'may', 'might', 'must', 'shall', 'can', 'need', 'this', 'that',
43
+ 'these', 'those', 'i', 'you', 'he', 'she', 'it', 'we', 'they', 'what',
44
+ 'which', 'who', 'when', 'where', 'why', 'how', 'all', 'each', 'every',
45
+ 'both', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'not',
46
+ 'only', 'same', 'so', 'than', 'too', 'very', 'just', 'also', 'now',
47
+ 'use', 'using', 'implement', 'create', 'add', 'update', 'fix', 'make',
48
+ 'get', 'set', 'new', 'file', 'code', 'function', 'method', 'class',
49
+ ]);
50
+ // Split on word boundaries and filter
51
+ const words = text
52
+ .toLowerCase()
53
+ .replace(/[^a-z0-9\s-_]/g, ' ')
54
+ .split(/\s+/)
55
+ .filter(word => word.length >= MIN_KEYWORD_LENGTH &&
56
+ !stopWords.has(word) &&
57
+ !/^\d+$/.test(word) // Filter out pure numbers
58
+ );
59
+ // Deduplicate while preserving order
60
+ return [...new Set(words)];
61
+ }
62
+ /**
63
+ * Extract search context from hook input
64
+ *
65
+ * Combines description and prompt from Task tool input.
66
+ *
67
+ * @param input - Hook input
68
+ * @returns Combined search text
69
+ */
70
+ function extractSearchContext(input) {
71
+ const parts = [];
72
+ // Task tool uses description and prompt
73
+ if (input.tool_input?.description) {
74
+ parts.push(input.tool_input.description);
75
+ }
76
+ if (input.tool_input?.prompt) {
77
+ parts.push(input.tool_input.prompt);
78
+ }
79
+ return parts.join(' ');
80
+ }
81
+ // ============================================================================
82
+ // Main Entry Point
83
+ // ============================================================================
84
+ /**
85
+ * Main suggest command entry point
86
+ *
87
+ * Called as PreToolUse hook when Task tool is invoked.
88
+ * Finds related decisions and injects them as context.
89
+ */
90
+ export async function suggestCommand() {
91
+ try {
92
+ const input = await readStdinJson();
93
+ // Only process Task tool
94
+ if (input.tool_name !== 'Task') {
95
+ sendContinue();
96
+ return;
97
+ }
98
+ const projectPath = getProjectPath(input);
99
+ if (!projectPath) {
100
+ sendContinue();
101
+ return;
102
+ }
103
+ // Extract search context
104
+ const searchText = extractSearchContext(input);
105
+ if (!searchText.trim()) {
106
+ sendContinue();
107
+ return;
108
+ }
109
+ // Extract keywords for search
110
+ const keywords = extractKeywords(searchText);
111
+ if (keywords.length === 0) {
112
+ sendContinue();
113
+ return;
114
+ }
115
+ // Initialize database
116
+ const dbPath = join(projectPath, '.sqlew', 'sqlew.db');
117
+ try {
118
+ await initializeDatabase({ configPath: dbPath });
119
+ }
120
+ catch {
121
+ // Database not initialized - continue without suggestions
122
+ sendContinue();
123
+ return;
124
+ }
125
+ // Build search key from keywords
126
+ const searchKey = keywords.slice(0, 5).join(' ');
127
+ // Find related decisions
128
+ const result = await suggestByContext({
129
+ key: searchKey,
130
+ limit: DEFAULT_LIMIT,
131
+ min_score: MIN_SCORE,
132
+ });
133
+ if (result.suggestions.length === 0) {
134
+ sendContinue();
135
+ return;
136
+ }
137
+ // Format suggestions as context
138
+ const contextLines = [
139
+ '[sqlew] Related decisions found:',
140
+ '',
141
+ ];
142
+ for (const suggestion of result.suggestions) {
143
+ contextLines.push(`- **${suggestion.key}**: ${suggestion.value}`);
144
+ if (suggestion.reason) {
145
+ contextLines.push(` (${suggestion.reason})`);
146
+ }
147
+ }
148
+ sendContinue(contextLines.join('\n'));
149
+ }
150
+ catch (error) {
151
+ // On error, log to stderr but continue execution
152
+ const message = error instanceof Error ? error.message : String(error);
153
+ console.error(`[sqlew suggest] Error: ${message}`);
154
+ sendContinue();
155
+ }
156
+ }
157
+ //# sourceMappingURL=suggest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../../src/cli/hooks/suggest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Track Plan Hook Command
3
+ *
4
+ * PreToolUse hook for Write tool - tracks plan files.
5
+ * When a .claude/plans/*.md file is being written:
6
+ * 1. Ensures plan has sqlew-plan-id in YAML frontmatter
7
+ * 2. Saves current plan info to session cache
8
+ *
9
+ * Usage:
10
+ * echo '{"tool_input": {"file_path": ".claude/plans/my-plan.md"}}' | sqlew track-plan
11
+ *
12
+ * @since v4.1.0
13
+ */
14
+ import { type CurrentPlanInfo } from '../../config/global-config.js';
15
+ /**
16
+ * Main track-plan command entry point
17
+ *
18
+ * Called as PreToolUse hook when Write tool is invoked.
19
+ * Only processes .claude/plans/*.md files.
20
+ */
21
+ export declare function trackPlanCommand(): Promise<void>;
22
+ /**
23
+ * Check if a plan is currently being tracked for a project
24
+ *
25
+ * @param projectPath - Project root path
26
+ * @returns Current plan info or null
27
+ */
28
+ export declare function getCurrentTrackedPlan(projectPath: string): CurrentPlanInfo | null;
29
+ /**
30
+ * Get plan ID from a file path (convenience wrapper)
31
+ *
32
+ * @param filePath - Path to plan file
33
+ * @returns Plan ID or null
34
+ */
35
+ export declare function getPlanIdFromFile(filePath: string): string | null;
36
+ //# sourceMappingURL=track-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track-plan.d.ts","sourceRoot":"","sources":["../../../src/cli/hooks/track-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAoC,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAgBvG;;;;;GAKG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAyHtD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAGjF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEjE"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Track Plan Hook Command
3
+ *
4
+ * PreToolUse hook for Write tool - tracks plan files.
5
+ * When a .claude/plans/*.md file is being written:
6
+ * 1. Ensures plan has sqlew-plan-id in YAML frontmatter
7
+ * 2. Saves current plan info to session cache
8
+ *
9
+ * Usage:
10
+ * echo '{"tool_input": {"file_path": ".claude/plans/my-plan.md"}}' | sqlew track-plan
11
+ *
12
+ * @since v4.1.0
13
+ */
14
+ import { readStdinJson, sendContinue, isPlanFile, getProjectPath } from './stdin-parser.js';
15
+ import { ensurePlanId, extractPlanFileName, getPlanId, parseFrontmatter, generatePlanId } from './plan-id-utils.js';
16
+ import { saveCurrentPlan, loadCurrentPlan } from '../../config/global-config.js';
17
+ import { enqueueDecisionCreate } from '../../utils/hook-queue.js';
18
+ import { existsSync } from 'fs';
19
+ import { resolve } from 'path';
20
+ // ============================================================================
21
+ // Constants
22
+ // ============================================================================
23
+ /** Decision key prefix for plan-based decisions */
24
+ const PLAN_DECISION_PREFIX = 'plan/implementation';
25
+ // ============================================================================
26
+ // Main Entry Point
27
+ // ============================================================================
28
+ /**
29
+ * Main track-plan command entry point
30
+ *
31
+ * Called as PreToolUse hook when Write tool is invoked.
32
+ * Only processes .claude/plans/*.md files.
33
+ */
34
+ export async function trackPlanCommand() {
35
+ try {
36
+ const input = await readStdinJson();
37
+ // Only process plan files
38
+ if (!isPlanFile(input)) {
39
+ // Not a plan file - continue without action
40
+ sendContinue();
41
+ return;
42
+ }
43
+ const projectPath = getProjectPath(input);
44
+ if (!projectPath) {
45
+ // No project path - continue without action
46
+ sendContinue();
47
+ return;
48
+ }
49
+ const filePath = input.tool_input?.file_path;
50
+ if (!filePath) {
51
+ sendContinue();
52
+ return;
53
+ }
54
+ // Resolve absolute path
55
+ const absolutePath = resolve(projectPath, filePath);
56
+ // Check if file exists (it might be a new file being created)
57
+ if (!existsSync(absolutePath)) {
58
+ // File doesn't exist yet - this is PreToolUse for new file creation
59
+ // Try to extract plan_id from the content being written (tool_input.content)
60
+ const content = input.tool_input?.content;
61
+ if (!content) {
62
+ // No content to parse - continue without action
63
+ sendContinue(`[sqlew] New plan file detected: ${extractPlanFileName(absolutePath)}. ` +
64
+ `No content provided, skipping tracking.`);
65
+ return;
66
+ }
67
+ // Parse frontmatter from content being written
68
+ const frontmatter = parseFrontmatter(content);
69
+ let planId = frontmatter.data['sqlew-plan-id'];
70
+ // Generate new plan ID if not present in content
71
+ if (!planId) {
72
+ planId = generatePlanId();
73
+ }
74
+ const planFileName = extractPlanFileName(absolutePath);
75
+ // Save current plan info to session cache
76
+ const planInfo = {
77
+ plan_id: planId,
78
+ plan_file: planFileName,
79
+ plan_updated_at: new Date().toISOString(),
80
+ recorded: false,
81
+ decision_pending: true,
82
+ };
83
+ saveCurrentPlan(projectPath, planInfo);
84
+ // Enqueue draft decision for later processing by MCP server
85
+ const decisionKey = `${PLAN_DECISION_PREFIX}/${planFileName.replace(/\.md$/, '')}`;
86
+ enqueueDecisionCreate(projectPath, {
87
+ key: decisionKey,
88
+ value: `Plan created: ${planFileName}`,
89
+ status: 'draft',
90
+ layer: 'cross-cutting',
91
+ tags: ['plan', 'draft', planId.slice(0, 8)],
92
+ });
93
+ // Continue with context about the tracked plan
94
+ sendContinue(`[sqlew] Tracking new plan: ${planFileName} (ID: ${planId.slice(0, 8)}...)`);
95
+ return;
96
+ }
97
+ // Ensure plan has an ID (creates one if missing)
98
+ const planId = ensurePlanId(absolutePath);
99
+ const planFileName = extractPlanFileName(absolutePath);
100
+ // Check if we already have cached info for this plan
101
+ const existingPlan = loadCurrentPlan(projectPath);
102
+ const isNewPlan = !existingPlan || existingPlan.plan_id !== planId;
103
+ // Save current plan info to session cache
104
+ const planInfo = {
105
+ plan_id: planId,
106
+ plan_file: planFileName,
107
+ plan_updated_at: new Date().toISOString(),
108
+ recorded: existingPlan?.recorded ?? false,
109
+ decision_pending: isNewPlan ? true : (existingPlan?.decision_pending ?? false),
110
+ };
111
+ saveCurrentPlan(projectPath, planInfo);
112
+ // Enqueue draft decision for new plans
113
+ if (isNewPlan) {
114
+ const decisionKey = `${PLAN_DECISION_PREFIX}/${planFileName.replace(/\.md$/, '')}`;
115
+ enqueueDecisionCreate(projectPath, {
116
+ key: decisionKey,
117
+ value: `Plan created: ${planFileName}`,
118
+ status: 'draft',
119
+ layer: 'cross-cutting',
120
+ tags: ['plan', 'draft', planId.slice(0, 8)],
121
+ });
122
+ }
123
+ // Continue with context about the tracked plan
124
+ sendContinue(`[sqlew] Tracking plan: ${planFileName} (ID: ${planId.slice(0, 8)}...)`);
125
+ }
126
+ catch (error) {
127
+ // On error, log to stderr but continue execution
128
+ const message = error instanceof Error ? error.message : String(error);
129
+ console.error(`[sqlew track-plan] Error: ${message}`);
130
+ sendContinue();
131
+ }
132
+ }
133
+ /**
134
+ * Check if a plan is currently being tracked for a project
135
+ *
136
+ * @param projectPath - Project root path
137
+ * @returns Current plan info or null
138
+ */
139
+ export function getCurrentTrackedPlan(projectPath) {
140
+ const { loadCurrentPlan } = require('../../config/global-config.js');
141
+ return loadCurrentPlan(projectPath);
142
+ }
143
+ /**
144
+ * Get plan ID from a file path (convenience wrapper)
145
+ *
146
+ * @param filePath - Path to plan file
147
+ * @returns Plan ID or null
148
+ */
149
+ export function getPlanIdFromFile(filePath) {
150
+ return getPlanId(filePath);
151
+ }
152
+ //# sourceMappingURL=track-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track-plan.js","sourceRoot":"","sources":["../../../src/cli/hooks/track-plan.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;AA6PH;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2D7D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGrD"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;AAuQH;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2F7D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAOrD"}
package/dist/cli.js CHANGED
@@ -9,6 +9,13 @@ import { getFileChanges } from './tools/files/index.js';
9
9
  import { dbDumpCommand } from './cli/db-dump.js';
10
10
  import { dbExportCommand } from './cli/db-export.js';
11
11
  import { dbImportCommand } from './cli/db-import.js';
12
+ // Claude Code Hooks commands
13
+ import { suggestCommand } from './cli/hooks/suggest.js';
14
+ import { trackPlanCommand } from './cli/hooks/track-plan.js';
15
+ import { saveCommand } from './cli/hooks/save.js';
16
+ import { checkCompletionCommand } from './cli/hooks/check-completion.js';
17
+ import { markDoneCommand } from './cli/hooks/mark-done.js';
18
+ import { initHooksCommand } from './cli/hooks/init-hooks.js';
12
19
  // ============================================================================
13
20
  // Helper Functions
14
21
  // ============================================================================
@@ -97,32 +104,35 @@ function showHelp() {
97
104
  console.log(`
98
105
  sqlew CLI - Query and database migration tool for mcp-sqlew
99
106
 
100
- NOTE: Database commands must be run via "npm run" from the project directory.
101
- npx is not supported for database operations.
102
-
103
107
  USAGE:
104
- npm run <command> -- [options]
108
+ sqlew <command> [options]
105
109
 
106
110
  COMMANDS:
107
- db:dump Generate SQL dump for database migration (schema + data)
108
- db:export Export project data to JSON format (data-only, for append-import)
109
- db:import Import project data from JSON export (append to existing database)
111
+ Database:
112
+ db:dump Generate SQL dump for database migration (schema + data)
113
+ db:export Export project data to JSON format (data-only, for append-import)
114
+ db:import Import project data from JSON export (append to existing database)
115
+
116
+ Claude Code Hooks (v4.1.0+):
117
+ suggest Find related decisions (PreToolUse hook for Task)
118
+ track-plan Track plan files (PreToolUse hook for Write)
119
+ save Save decisions on code edit (PostToolUse hook for Edit|Write)
120
+ check-completion Check task completion (PostToolUse hook for TodoWrite)
121
+ mark-done Mark decisions as implemented (Git hooks or manual)
122
+ init --hooks Initialize Claude Code and Git hooks
110
123
 
111
124
  OPTIONS:
112
125
  --help Show this help message
113
126
 
114
127
  EXAMPLES:
128
+ # Initialize hooks for Claude Code integration
129
+ sqlew init --hooks
130
+
115
131
  # Generate MySQL dump for database migration
116
132
  npm run db:dump -- mysql -o dump-mysql.sql
117
133
 
118
- # Generate PostgreSQL dump
119
- npm run db:dump -- postgresql -o dump-pg.sql
120
-
121
- # Export project data to JSON (for merging data across databases)
122
- npm run db:export -- --project=visualizer -o data.json
123
-
124
- # Import project data from JSON export
125
- npm run db:import -- --source=data.json --project-name=visualizer-v2
134
+ # Test hook commands manually
135
+ echo '{"tool_input": {"description": "auth"}}' | sqlew suggest
126
136
 
127
137
  For more information on commands, run:
128
138
  npm run db:dump -- --help
@@ -225,6 +235,32 @@ export async function runCli(rawArgs) {
225
235
  await dbImportCommand(rawArgs.slice(1));
226
236
  return;
227
237
  }
238
+ // Claude Code Hooks commands (v4.1.0+)
239
+ if (args.command === 'suggest') {
240
+ await suggestCommand();
241
+ return;
242
+ }
243
+ if (args.command === 'track-plan') {
244
+ await trackPlanCommand();
245
+ return;
246
+ }
247
+ if (args.command === 'save') {
248
+ await saveCommand();
249
+ return;
250
+ }
251
+ if (args.command === 'check-completion') {
252
+ await checkCompletionCommand();
253
+ return;
254
+ }
255
+ if (args.command === 'mark-done') {
256
+ await markDoneCommand(rawArgs.slice(1));
257
+ return;
258
+ }
259
+ // init --hooks command
260
+ if (args.command === 'init' && rawArgs.includes('--hooks')) {
261
+ await initHooksCommand(rawArgs.slice(1));
262
+ return;
263
+ }
228
264
  // Show help if requested or no command
229
265
  if (args.help || !args.command) {
230
266
  showHelp();
@@ -268,7 +304,11 @@ export async function runCli(rawArgs) {
268
304
  * Check if a command is a CLI command (for use by index.ts)
269
305
  */
270
306
  export function isCliCommand(command) {
271
- const cliCommands = ['db:dump', 'db:export', 'db:import', 'query'];
307
+ const cliCommands = [
308
+ 'db:dump', 'db:export', 'db:import', 'query',
309
+ // Claude Code Hooks commands (v4.1.0+)
310
+ 'suggest', 'track-plan', 'save', 'check-completion', 'mark-done', 'init',
311
+ ];
272
312
  return cliCommands.includes(command);
273
313
  }
274
314
  // Run CLI when executed directly
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}