sqlew 4.3.0 → 4.3.1

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 (47) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +268 -269
  3. package/assets/claude-md-snippets/plan-mode-integration.md +50 -48
  4. package/assets/config.example.toml +120 -282
  5. package/dist/cli.js +54 -54
  6. package/dist/cli.js.map +1 -1
  7. package/dist/init-skills.d.ts +8 -4
  8. package/dist/init-skills.d.ts.map +1 -1
  9. package/dist/init-skills.js +50 -27
  10. package/dist/init-skills.js.map +1 -1
  11. package/dist/tools/context/actions/has-updates.d.ts.map +1 -1
  12. package/dist/tools/context/actions/has-updates.js +0 -4
  13. package/dist/tools/context/actions/has-updates.js.map +1 -1
  14. package/dist/tools/files/help/example.d.ts.map +1 -1
  15. package/dist/tools/files/help/example.js +11 -0
  16. package/dist/tools/files/help/example.js.map +1 -1
  17. package/dist/tools/files/help/help.d.ts.map +1 -1
  18. package/dist/tools/files/help/help.js +11 -0
  19. package/dist/tools/files/help/help.js.map +1 -1
  20. package/dist/tools/suggest/actions/by-context.d.ts.map +1 -1
  21. package/dist/tools/suggest/actions/by-context.js +5 -15
  22. package/dist/tools/suggest/actions/by-context.js.map +1 -1
  23. package/dist/tools/suggest/actions/by-key.d.ts.map +1 -1
  24. package/dist/tools/suggest/actions/by-key.js +5 -15
  25. package/dist/tools/suggest/actions/by-key.js.map +1 -1
  26. package/dist/tools/suggest/actions/by-tags.d.ts.map +1 -1
  27. package/dist/tools/suggest/actions/by-tags.js +5 -15
  28. package/dist/tools/suggest/actions/by-tags.js.map +1 -1
  29. package/dist/tools/suggest/actions/constraint-by-context.d.ts +1 -1
  30. package/dist/tools/suggest/actions/constraint-by-context.d.ts.map +1 -1
  31. package/dist/tools/suggest/actions/constraint-by-context.js +9 -16
  32. package/dist/tools/suggest/actions/constraint-by-context.js.map +1 -1
  33. package/dist/tools/suggest/actions/constraint-by-tags.d.ts +1 -1
  34. package/dist/tools/suggest/actions/constraint-by-tags.d.ts.map +1 -1
  35. package/dist/tools/suggest/actions/constraint-by-tags.js +11 -17
  36. package/dist/tools/suggest/actions/constraint-by-tags.js.map +1 -1
  37. package/dist/tools/suggest/actions/constraint-by-text.d.ts +1 -1
  38. package/dist/tools/suggest/actions/constraint-by-text.d.ts.map +1 -1
  39. package/dist/tools/suggest/actions/constraint-by-text.js +6 -15
  40. package/dist/tools/suggest/actions/constraint-by-text.js.map +1 -1
  41. package/dist/types.d.ts +0 -228
  42. package/dist/types.d.ts.map +1 -1
  43. package/dist/utils/suggest-helpers.d.ts +82 -0
  44. package/dist/utils/suggest-helpers.d.ts.map +1 -0
  45. package/dist/utils/suggest-helpers.js +93 -0
  46. package/dist/utils/suggest-helpers.js.map +1 -0
  47. package/package.json +1 -1
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Suggest Helper Functions
3
+ *
4
+ * Shared transformation and scoring logic for suggest actions.
5
+ * Reduces code duplication across decision and constraint suggest operations.
6
+ *
7
+ * @since v4.3.1
8
+ */
9
+ import { parseGroupConcatTags } from './tag-parser.js';
10
+ import { scoreAndRankSuggestions, filterByThreshold as filterDecisionsByThreshold, limitSuggestions as limitDecisionSuggestions } from './suggestion-scorer.js';
11
+ import { scoreConstraints, filterByThreshold as filterConstraintsByThreshold, limitSuggestions as limitConstraintSuggestions } from './constraint-scorer.js';
12
+ // ============================================================================
13
+ // Decision Helpers
14
+ // ============================================================================
15
+ /**
16
+ * Transform decision candidates and score them
17
+ *
18
+ * Consolidates the common pattern of:
19
+ * 1. Parse GROUP_CONCAT tags
20
+ * 2. Map to scorer format
21
+ * 3. Score and rank
22
+ * 4. Filter by threshold
23
+ * 5. Apply limit
24
+ *
25
+ * @param candidates - Raw candidates from database query
26
+ * @param context - Scoring context (key, tags, layer, priority)
27
+ * @param options - Optional min_score and limit
28
+ * @returns Scored and filtered suggestions
29
+ */
30
+ export function transformAndScoreDecisions(candidates, context, options) {
31
+ // Parse tags from GROUP_CONCAT and map to scorer format
32
+ const parsed = candidates.map((c) => ({
33
+ key_id: c.key_id,
34
+ key: c.key,
35
+ value: String(c.value), // Convert to string for scorer
36
+ tags: parseGroupConcatTags(c.tags),
37
+ layer: c.layer,
38
+ priority: 0, // Default priority (not stored in DB)
39
+ updated_ts: c.ts, // Rename ts to updated_ts for scorer
40
+ }));
41
+ // Score, filter, and limit
42
+ let suggestions = scoreAndRankSuggestions(context, parsed);
43
+ suggestions = filterDecisionsByThreshold(suggestions, options?.minScore ?? 30);
44
+ suggestions = limitDecisionSuggestions(suggestions, options?.limit ?? 5);
45
+ return suggestions;
46
+ }
47
+ // ============================================================================
48
+ // Constraint Helpers
49
+ // ============================================================================
50
+ /**
51
+ * Parse constraint tags from GROUP_CONCAT result
52
+ *
53
+ * @param tags - Comma-separated tags string or null
54
+ * @returns Array of tag strings
55
+ */
56
+ export function parseConstraintTags(tags) {
57
+ if (!tags)
58
+ return [];
59
+ return tags.split(',').map(t => t.trim()).filter(t => t.length > 0);
60
+ }
61
+ /**
62
+ * Transform constraint candidates and score them
63
+ *
64
+ * Consolidates the common pattern of:
65
+ * 1. Parse GROUP_CONCAT tags
66
+ * 2. Map to scorer format
67
+ * 3. Score constraints
68
+ * 4. Filter by threshold
69
+ * 5. Apply limit
70
+ *
71
+ * @param candidates - Raw candidates from database query
72
+ * @param context - Scoring context (text, tags, layer, priority)
73
+ * @param options - Optional min_score and limit
74
+ * @returns Scored and filtered constraint suggestions
75
+ */
76
+ export function transformAndScoreConstraints(candidates, context, options) {
77
+ // Parse tags from GROUP_CONCAT and map to scorer format
78
+ const parsed = candidates.map((c) => ({
79
+ id: c.constraint_id,
80
+ constraint_text: c.constraint_text,
81
+ category: c.category,
82
+ tags: parseConstraintTags(c.tags),
83
+ layer: c.layer ?? '', // Convert null to empty string
84
+ priority: c.priority,
85
+ ts: c.ts,
86
+ }));
87
+ // Score, filter, and limit
88
+ let suggestions = scoreConstraints(parsed, context);
89
+ suggestions = filterConstraintsByThreshold(suggestions, options?.minScore ?? 30);
90
+ suggestions = limitConstraintSuggestions(suggestions, options?.limit ?? 5);
91
+ return suggestions;
92
+ }
93
+ //# sourceMappingURL=suggest-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest-helpers.js","sourceRoot":"","sources":["../../src/utils/suggest-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,uBAAuB,EACvB,iBAAiB,IAAI,0BAA0B,EAC/C,gBAAgB,IAAI,wBAAwB,EAG7C,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,IAAI,4BAA4B,EACjD,gBAAgB,IAAI,0BAA0B,EAG/C,MAAM,wBAAwB,CAAC;AAyChC,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,0BAA0B,CACxC,UAA+B,EAC/B,OAA0B,EAC1B,OAA+B;IAE/B,wDAAwD;IACxD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAoB,EAAE,EAAE,CAAC,CAAC;QACvD,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAG,+BAA+B;QACxD,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC;QAClC,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,QAAQ,EAAE,CAAC,EAAG,sCAAsC;QACpD,UAAU,EAAE,CAAC,CAAC,EAAE,EAAG,qCAAqC;KACzD,CAAC,CAAC,CAAC;IAEJ,2BAA2B;IAC3B,IAAI,WAAW,GAAG,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3D,WAAW,GAAG,0BAA0B,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC/E,WAAW,GAAG,wBAAwB,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;IAEzE,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAmB;IACrD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,4BAA4B,CAC1C,UAAsC,EACtC,OAAiC,EACjC,OAA+B;IAE/B,wDAAwD;IACxD,MAAM,MAAM,GAAuB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxD,EAAE,EAAE,CAAC,CAAC,aAAa;QACnB,eAAe,EAAE,CAAC,CAAC,eAAe;QAClC,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;QACjC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,EAAG,+BAA+B;QACtD,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,EAAE,EAAE,CAAC,CAAC,EAAE;KACT,CAAC,CAAC,CAAC;IAEJ,2BAA2B;IAC3B,IAAI,WAAW,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,WAAW,GAAG,4BAA4B,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IACjF,WAAW,GAAG,0BAA0B,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;IAE3E,OAAO,WAAW,CAAC;AACrB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sqlew",
3
3
  "description": "Automated ADR (Architecture Decision Records) for Claude Code - MCP server with SQL-backed decision repository",
4
- "version": "4.3.0",
4
+ "version": "4.3.1",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
7
7
  "bin": {