sqlew 4.0.0 → 4.0.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.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,46 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ---
9
9
 
10
+ ## [4.0.1] - 2025-11-28
11
+
12
+ ### Removed
13
+
14
+ **Database Views Eliminated**
15
+
16
+ - Dropped all database views (`v_tagged_constraints`, `v_recent_file_changes`, etc.)
17
+ - Views caused migration complexity across SQLite/MySQL/PostgreSQL due to database-specific syntax
18
+ - Migration: `20251128000000_drop_all_views.ts`
19
+
20
+ ### Changed
21
+
22
+ **JOIN-Based Queries**
23
+
24
+ - `src/tools/constraints/actions/get.ts` - Replaced `v_tagged_constraints` view with JOIN query
25
+ - `src/tools/files/actions/get.ts` - Replaced `v_recent_file_changes` view with JOIN query
26
+ - Uses `UniversalKnex` wrapper for cross-database compatibility (date functions, boolean values, string aggregation)
27
+
28
+ **VCS Test Cleanup**
29
+
30
+ - `src/tests/feature/vcs/git-aware-completion.test.ts` - Added automatic git reset after tests
31
+ - Test commits are now automatically dropped when tests complete
32
+ - Prevents test artifacts from polluting git history
33
+
34
+ ### Added
35
+
36
+ **No-Views Guardrail Skill**
37
+
38
+ - `.claude/skills/no-views/SKILL.md` - Documentation for view prohibition policy
39
+ - `.claude/skills/skill-rules.json` - Added `no-views` rule (enforcement: block)
40
+ - Blocks creation of database views, requires JOINs instead
41
+
42
+ **Documentation Updates**
43
+
44
+ - `CLAUDE.md` - Updated to reflect no-views policy
45
+ - Removed Views section from database schema documentation
46
+ - Added `no-views` to Guardrail Skills table
47
+
48
+ ---
49
+
10
50
  ## [4.0.0] - 2025-11-27
11
51
 
12
52
  ### Changed
@@ -0,0 +1,24 @@
1
+ /**
2
+ * v4.0.1: Drop all database views
3
+ *
4
+ * Problem:
5
+ * - Database views cause migration complexity across different database engines
6
+ * - Views require database-specific SQL syntax (datetime functions, string aggregation)
7
+ * - Architectural decision: No views in v4+ schema - use JOINs instead
8
+ *
9
+ * Solution:
10
+ * - Drop all legacy views that may exist from v3 migrations
11
+ * - Tool files use JOIN queries via Knex query builder (cross-DB compatible)
12
+ * - Reference: src/utils/view-queries.ts for equivalent JOIN-based queries
13
+ *
14
+ * Related files updated:
15
+ * - src/tools/constraints/actions/get.ts - Now uses JOINs
16
+ * - src/tools/files/actions/get.ts - Now uses JOINs
17
+ *
18
+ * IDEMPOTENT: Can be run multiple times safely.
19
+ * SQLite, MySQL, PostgreSQL compatible.
20
+ */
21
+ import type { Knex } from 'knex';
22
+ export declare function up(knex: Knex): Promise<void>;
23
+ export declare function down(knex: Knex): Promise<void>;
24
+ //# sourceMappingURL=20251128000000_drop_all_views.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20251128000000_drop_all_views.d.ts","sourceRoot":"","sources":["../../../../src/database/migrations/v4/20251128000000_drop_all_views.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAqBjC,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBlD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpD"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * v4.0.1: Drop all database views
3
+ *
4
+ * Problem:
5
+ * - Database views cause migration complexity across different database engines
6
+ * - Views require database-specific SQL syntax (datetime functions, string aggregation)
7
+ * - Architectural decision: No views in v4+ schema - use JOINs instead
8
+ *
9
+ * Solution:
10
+ * - Drop all legacy views that may exist from v3 migrations
11
+ * - Tool files use JOIN queries via Knex query builder (cross-DB compatible)
12
+ * - Reference: src/utils/view-queries.ts for equivalent JOIN-based queries
13
+ *
14
+ * Related files updated:
15
+ * - src/tools/constraints/actions/get.ts - Now uses JOINs
16
+ * - src/tools/files/actions/get.ts - Now uses JOINs
17
+ *
18
+ * IDEMPOTENT: Can be run multiple times safely.
19
+ * SQLite, MySQL, PostgreSQL compatible.
20
+ */
21
+ // All possible views from v3 schema that may still exist
22
+ const VIEWS_TO_DROP = [
23
+ // v3 views
24
+ 'v_tagged_decisions',
25
+ 'v_active_context',
26
+ 'v_layer_summary',
27
+ 'v_unread_messages_by_priority',
28
+ 'v_recent_file_changes',
29
+ 'v_tagged_constraints',
30
+ 'v_task_board',
31
+ // v4 prefixed views (in case any were accidentally created)
32
+ 'v4_tagged_decisions',
33
+ 'v4_active_context',
34
+ 'v4_layer_summary',
35
+ 'v4_recent_file_changes',
36
+ 'v4_tagged_constraints',
37
+ 'v4_task_board',
38
+ ];
39
+ export async function up(knex) {
40
+ console.log('🔄 Dropping all database views (v4.0.1 - No views policy)...');
41
+ for (const viewName of VIEWS_TO_DROP) {
42
+ try {
43
+ await knex.raw(`DROP VIEW IF EXISTS ${viewName}`);
44
+ console.log(` ✓ Dropped view: ${viewName}`);
45
+ }
46
+ catch (error) {
47
+ // Ignore errors if view doesn't exist (different error messages per DB)
48
+ const errorMsg = error.message?.toLowerCase() || '';
49
+ if (errorMsg.includes('does not exist') ||
50
+ errorMsg.includes('unknown') ||
51
+ errorMsg.includes('no such')) {
52
+ console.log(` ⚠️ View ${viewName} does not exist, skipping`);
53
+ }
54
+ else {
55
+ throw error;
56
+ }
57
+ }
58
+ }
59
+ console.log('✅ All views dropped successfully');
60
+ console.log('📝 Policy: No views in v4+ - use JOIN queries via Knex query builder');
61
+ }
62
+ export async function down(knex) {
63
+ console.log('⚠️ WARNING: Views will NOT be recreated');
64
+ console.log(' v4+ policy: No database views - use JOINs instead');
65
+ console.log(' Reference: src/utils/view-queries.ts for equivalent queries');
66
+ }
67
+ //# sourceMappingURL=20251128000000_drop_all_views.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20251128000000_drop_all_views.js","sourceRoot":"","sources":["../../../../src/database/migrations/v4/20251128000000_drop_all_views.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,yDAAyD;AACzD,MAAM,aAAa,GAAG;IACpB,WAAW;IACX,oBAAoB;IACpB,kBAAkB;IAClB,iBAAiB;IACjB,+BAA+B;IAC/B,uBAAuB;IACvB,sBAAsB;IACtB,cAAc;IACd,4DAA4D;IAC5D,qBAAqB;IACrB,mBAAmB;IACnB,kBAAkB;IAClB,wBAAwB;IACxB,uBAAuB;IACvB,eAAe;CAChB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAE5E,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,wEAAwE;YACxE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YACpD,IACE,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBACnC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC5B,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC5B,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,2BAA2B,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;AAChF,CAAC"}
@@ -17,11 +17,40 @@ function cleanupTestDir() {
17
17
  rmSync(TEST_DIR, { recursive: true, force: true });
18
18
  }
19
19
  }
20
+ // Helper to get current git HEAD hash
21
+ function getGitHead() {
22
+ try {
23
+ return execSync('git rev-parse HEAD', { encoding: 'utf-8' }).trim();
24
+ }
25
+ catch {
26
+ return null;
27
+ }
28
+ }
29
+ // Helper to reset git to a specific commit
30
+ function resetGitTo(commitHash) {
31
+ try {
32
+ execSync(`git reset --hard ${commitHash}`, { stdio: 'ignore' });
33
+ }
34
+ catch {
35
+ // Ignore errors (e.g., if reset fails)
36
+ }
37
+ }
20
38
  describe('Git-Aware Auto-Complete', () => {
21
39
  let db;
40
+ let initialGitHead = null;
22
41
  before(async () => {
42
+ // Record initial git HEAD to reset after tests (cleanup test commits)
43
+ initialGitHead = getGitHead();
23
44
  // Clean up before tests
24
45
  cleanupTestDir();
46
+ // Configure git user for test commits (required if not set globally)
47
+ try {
48
+ execSync('git config user.email 2>/dev/null || git config user.email "test@example.com"', { stdio: 'ignore' });
49
+ execSync('git config user.name 2>/dev/null || git config user.name "Test User"', { stdio: 'ignore' });
50
+ }
51
+ catch {
52
+ // Ignore - may already be configured
53
+ }
25
54
  // Create test database (in-memory)
26
55
  db = await initializeDatabase({
27
56
  databaseType: 'sqlite',
@@ -50,6 +79,10 @@ describe('Git-Aware Auto-Complete', () => {
50
79
  }
51
80
  // Clean up test directory
52
81
  cleanupTestDir();
82
+ // Reset git to initial HEAD to drop test commits
83
+ if (initialGitHead) {
84
+ resetGitTo(initialGitHead);
85
+ }
53
86
  });
54
87
  it('should auto-complete task when all watched files are committed', async () => {
55
88
  const knex = db.getKnex();
@@ -1 +1 @@
1
- {"version":3,"file":"git-aware-completion.test.js","sourceRoot":"","sources":["../../../../src/tests/feature/vcs/git-aware-completion.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-aware-completion.test.js","sourceRoot":"","sources":["../../../../src/tests/feature/vcs/git-aware-completion.test.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * Retrieve constraints with advanced filtering
3
- * Uses v_tagged_constraints view for token efficiency
3
+ * Uses JOIN queries instead of database views for cross-DB compatibility
4
4
  */
5
5
  import { DatabaseAdapter } from '../../../adapters/index.js';
6
6
  import type { GetConstraintsParams, GetConstraintsResponse } from '../types.js';
7
7
  /**
8
8
  * Retrieve v4_constraints with advanced filtering
9
- * Uses v_tagged_constraints view for token efficiency
9
+ * Uses JOIN queries for cross-database compatibility (no views)
10
10
  *
11
11
  * @param params - Filter parameters
12
12
  * @param adapter - Optional database adapter (for testing)
@@ -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;AAO7D,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,CAkEjC"}
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;AAQ7D,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,CAwGjC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Retrieve constraints with advanced filtering
3
- * Uses v_tagged_constraints view for token efficiency
3
+ * Uses JOIN queries instead of database views for cross-DB compatibility
4
4
  */
5
5
  import { getAdapter } from '../../../database.js';
6
6
  import { validateCategory } from '../../../utils/validators.js';
@@ -8,9 +8,10 @@ import { validateActionParams } from '../../../utils/parameter-validator.js';
8
8
  import { parseStringArray } from '../../../utils/param-parser.js';
9
9
  import { getProjectContext } from '../../../utils/project-context.js';
10
10
  import connectionManager from '../../../utils/connection-manager.js';
11
+ import { UniversalKnex } from '../../../utils/universal-knex.js';
11
12
  /**
12
13
  * Retrieve v4_constraints with advanced filtering
13
- * Uses v_tagged_constraints view for token efficiency
14
+ * Uses JOIN queries for cross-database compatibility (no views)
14
15
  *
15
16
  * @param params - Filter parameters
16
17
  * @param adapter - Optional database adapter (for testing)
@@ -25,39 +26,75 @@ export async function getConstraints(params, adapter) {
25
26
  const projectId = getProjectContext().getProjectId();
26
27
  // Validate parameters
27
28
  validateActionParams('constraint', 'get', params);
28
- // Build query using v_tagged_constraints view (already filters active=1)
29
- let query = knex('v_tagged_constraints')
30
- .where('project_id', projectId);
29
+ const db = new UniversalKnex(knex);
30
+ // Build query using JOINs (no views - cross-DB compatible)
31
+ let query = knex('v4_constraints as c')
32
+ .join('v4_constraint_categories as cat', 'c.category_id', 'cat.id')
33
+ .leftJoin('v4_layers as l', 'c.layer_id', 'l.id')
34
+ .where('c.project_id', projectId)
35
+ .where('c.active', db.boolTrue());
31
36
  // Filter by category
32
37
  if (params.category) {
33
38
  validateCategory(params.category);
34
- query = query.where('category', params.category);
39
+ query = query.where('cat.name', params.category);
35
40
  }
36
41
  // Filter by layer
37
42
  if (params.layer) {
38
- query = query.where('layer', params.layer);
43
+ query = query.where('l.name', params.layer);
39
44
  }
40
45
  // Filter by priority
41
46
  if (params.priority) {
42
- query = query.where('priority', params.priority);
47
+ // Convert priority string to integer for DB query
48
+ const priorityMap = {
49
+ low: 1, medium: 2, high: 3, critical: 4
50
+ };
51
+ const priorityInt = priorityMap[params.priority];
52
+ if (priorityInt !== undefined) {
53
+ query = query.where('c.priority', priorityInt);
54
+ }
43
55
  }
44
- // Filter by m_tags (OR logic - match ANY tag)
56
+ // Filter by tags (OR logic - match ANY tag)
45
57
  if (params.tags && params.tags.length > 0) {
46
- // Parse tags (handles both arrays and JSON strings from MCP)
47
58
  const tags = parseStringArray(params.tags);
48
- query = query.where((builder) => {
49
- for (const tag of tags) {
50
- builder.orWhere('tags', 'like', `%${tag}%`);
51
- }
59
+ query = query.whereExists(function () {
60
+ this.select(knex.raw('1'))
61
+ .from('v4_constraint_tags as ct')
62
+ .join('v4_tags as t', 'ct.tag_id', 't.id')
63
+ .whereRaw('ct.constraint_id = c.id')
64
+ .whereIn('t.name', tags);
52
65
  });
53
66
  }
54
- // Note: v_tagged_constraints view already orders by priority DESC, category, ts DESC
55
- // Add limit if provided
67
+ // Order by priority DESC, category, ts DESC
68
+ query = query
69
+ .orderBy('c.priority', 'desc')
70
+ .orderBy('cat.name', 'asc')
71
+ .orderBy('c.ts', 'desc');
72
+ // Add limit
56
73
  const limit = params.limit || 50;
57
74
  query = query.limit(limit);
58
- // Execute query
59
- const rows = await query.select('*');
60
- // Parse m_tags from comma-separated to array for consistency
75
+ // Select columns with tags subquery
76
+ const rows = await query.select([
77
+ 'c.id',
78
+ 'c.project_id',
79
+ 'cat.name as category',
80
+ 'l.name as layer',
81
+ 'c.constraint_text',
82
+ knex.raw(`CASE c.priority
83
+ WHEN 1 THEN 'low'
84
+ WHEN 2 THEN 'medium'
85
+ WHEN 3 THEN 'high'
86
+ ELSE 'critical'
87
+ END as priority`),
88
+ knex.raw(`${db.dateFunction('c.ts')} as created_at`),
89
+ // Tags subquery
90
+ knex.raw(`(
91
+ SELECT ${db.stringAgg('t2.name', ',')}
92
+ FROM v4_constraint_tags ct2
93
+ JOIN v4_tags t2 ON ct2.tag_id = t2.id
94
+ WHERE ct2.constraint_id = c.id
95
+ ) as tags`),
96
+ ]);
97
+ // Parse tags from comma-separated to array for consistency
61
98
  const constraints = rows.map(row => ({
62
99
  ...row,
63
100
  tags: row.tags ? row.tags.split(',') : null,
@@ -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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"}
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * Get file changes with advanced filtering
3
- * Uses token-efficient view when no specific filters are applied
3
+ * Uses JOIN queries instead of database views for cross-DB compatibility
4
4
  */
5
5
  import { DatabaseAdapter } from '../../../adapters/index.js';
6
6
  import type { GetFileChangesParams, GetFileChangesResponse } from '../types.js';
7
7
  /**
8
8
  * Get file changes with advanced filtering.
9
- * Uses token-efficient view when no specific filters are applied.
9
+ * Uses JOIN queries for cross-database compatibility (no views).
10
10
  *
11
11
  * @param params - Filter parameters
12
12
  * @param adapter - Optional database adapter (for testing)
@@ -1 +1 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/tools/files/actions/get.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAY7D,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EAEvB,MAAM,aAAa,CAAC;AAErB;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,MAAM,GAAE,oBAAyB,EACjC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,sBAAsB,CAAC,CAqHjC"}
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/tools/files/actions/get.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAY7D,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EAEvB,MAAM,aAAa,CAAC;AAErB;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,MAAM,GAAE,oBAAyB,EACjC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,sBAAsB,CAAC,CAiFjC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Get file changes with advanced filtering
3
- * Uses token-efficient view when no specific filters are applied
3
+ * Uses JOIN queries instead of database views for cross-DB compatibility
4
4
  */
5
5
  import { getAdapter } from '../../../database.js';
6
6
  import { getProjectContext } from '../../../utils/project-context.js';
@@ -8,10 +8,10 @@ import connectionManager from '../../../utils/connection-manager.js';
8
8
  import { STRING_TO_CHANGE_TYPE, STANDARD_LAYERS, DEFAULT_QUERY_LIMIT } from '../../../constants.js';
9
9
  import { validateChangeType } from '../../../utils/validators.js';
10
10
  import { validateActionParams } from '../internal/validation.js';
11
- import { buildWhereClause } from '../../../utils/query-builder.js';
11
+ import { UniversalKnex } from '../../../utils/universal-knex.js';
12
12
  /**
13
13
  * Get file changes with advanced filtering.
14
- * Uses token-efficient view when no specific filters are applied.
14
+ * Uses JOIN queries for cross-database compatibility (no views).
15
15
  *
16
16
  * @param params - Filter parameters
17
17
  * @param adapter - Optional database adapter (for testing)
@@ -27,75 +27,46 @@ export async function getFileChanges(params = {}, adapter) {
27
27
  // Execute with connection retry
28
28
  return await connectionManager.executeWithRetry(async () => {
29
29
  const knex = actualAdapter.getKnex();
30
+ const db = new UniversalKnex(knex);
30
31
  const limit = params.limit || DEFAULT_QUERY_LIMIT;
31
- // Build filter conditions using query builder
32
- const filterConditions = [];
33
- if (params.file_path) {
34
- filterConditions.push({ type: 'equals', field: 'f.path', value: params.file_path });
35
- }
36
- if (params.agent_name) {
37
- filterConditions.push({ type: 'equals', field: 'a.name', value: params.agent_name });
38
- }
39
- if (params.layer) {
40
- // Validate layer
41
- if (!STANDARD_LAYERS.includes(params.layer)) {
42
- throw new Error(`Invalid layer: ${params.layer}. Must be one of: ${STANDARD_LAYERS.join(', ')}`);
43
- }
44
- filterConditions.push({ type: 'equals', field: 'l.name', value: params.layer });
45
- }
46
- if (params.change_type) {
47
- validateChangeType(params.change_type);
48
- const changeTypeInt = STRING_TO_CHANGE_TYPE[params.change_type];
49
- filterConditions.push({ type: 'equals', field: 'fc.change_type', value: changeTypeInt });
50
- }
51
- if (params.since) {
52
- // Convert ISO 8601 to Unix epoch
53
- const sinceEpoch = Math.floor(new Date(params.since).getTime() / 1000);
54
- filterConditions.push({ type: 'greaterThanOrEqual', field: 'fc.ts', value: sinceEpoch });
55
- }
56
- // Use view if no specific filters (token efficient)
57
- // Note: View already includes project_id filtering in application layer
58
- if (filterConditions.length === 0) {
59
- const rows = await knex('v_recent_file_changes')
60
- .where('project_id', projectId)
61
- .limit(limit)
62
- .select('*');
63
- return {
64
- changes: rows,
65
- count: rows.length,
66
- };
67
- }
68
- // Build WHERE clause using query builder
69
- const { whereClause, params: queryParams } = buildWhereClause(filterConditions);
70
- // Build query dynamically with filters
32
+ // Build query using JOINs (no views - cross-DB compatible)
71
33
  // Note: Agent tracking removed in v4.0 - changed_by field removed
72
34
  let query = knex('v4_file_changes as fc')
73
35
  .join('v4_files as f', 'fc.file_id', 'f.id')
74
36
  .leftJoin('v4_layers as l', 'fc.layer_id', 'l.id')
75
- .where('fc.project_id', projectId)
76
- .select('f.path', 'l.name as layer', knex.raw(`CASE fc.change_type
77
- WHEN 1 THEN 'created'
78
- WHEN 2 THEN 'modified'
79
- ELSE 'deleted'
80
- END as change_type`), 'fc.description', knex.raw(`datetime(fc.ts, 'unixepoch') as changed_at`))
81
- .orderBy('fc.ts', 'desc')
82
- .limit(limit);
37
+ .where('fc.project_id', projectId);
83
38
  // Apply filter conditions
84
39
  if (params.file_path) {
85
40
  query = query.where('f.path', params.file_path);
86
41
  }
87
42
  // Note: agent_name filter removed in v4.0 (agent tracking removed)
88
43
  if (params.layer) {
44
+ // Validate layer
45
+ if (!STANDARD_LAYERS.includes(params.layer)) {
46
+ throw new Error(`Invalid layer: ${params.layer}. Must be one of: ${STANDARD_LAYERS.join(', ')}`);
47
+ }
89
48
  query = query.where('l.name', params.layer);
90
49
  }
91
50
  if (params.change_type) {
51
+ validateChangeType(params.change_type);
92
52
  const changeTypeInt = STRING_TO_CHANGE_TYPE[params.change_type];
93
53
  query = query.where('fc.change_type', changeTypeInt);
94
54
  }
95
55
  if (params.since) {
56
+ // Convert ISO 8601 to Unix epoch
96
57
  const sinceEpoch = Math.floor(new Date(params.since).getTime() / 1000);
97
58
  query = query.where('fc.ts', '>=', sinceEpoch);
98
59
  }
60
+ // Select columns with proper date formatting
61
+ query = query.select('f.path', 'l.name as layer', knex.raw(`CASE fc.change_type
62
+ WHEN 1 THEN 'created'
63
+ WHEN 2 THEN 'modified'
64
+ ELSE 'deleted'
65
+ END as change_type`), 'fc.description', knex.raw(`${db.dateFunction('fc.ts')} as changed_at`));
66
+ // Order and limit
67
+ query = query
68
+ .orderBy('fc.ts', 'desc')
69
+ .limit(limit);
99
70
  const rows = await query;
100
71
  return {
101
72
  changes: rows,
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/tools/files/actions/get.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,iBAAiB,MAAM,sCAAsC,CAAC;AACrE,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAwB,MAAM,iCAAiC,CAAC;AAOzF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAA+B,EAAE,EACjC,OAAyB;IAEzB,MAAM,aAAa,GAAG,OAAO,IAAI,UAAU,EAAE,CAAC;IAE9C,IAAI,CAAC;QACH,sEAAsE;QACtE,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC,YAAY,EAAE,CAAC;QAErD,sBAAsB;QACtB,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAE5C,gCAAgC;QAChC,OAAO,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;YACzD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,mBAAmB,CAAC;YAElD,8CAA8C;YAC9C,MAAM,gBAAgB,GAAsB,EAAE,CAAC;YAE/C,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACtF,CAAC;YAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtB,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YACvF,CAAC;YAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,iBAAiB;gBACjB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAY,CAAC,EAAE,CAAC;oBACnD,MAAM,IAAI,KAAK,CACb,kBAAkB,MAAM,CAAC,KAAK,qBAAqB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChF,CAAC;gBACJ,CAAC;gBACD,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAClF,CAAC;YAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBACvC,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAChE,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;YAC3F,CAAC;YAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,iCAAiC;gBACjC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;gBACvE,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YAC3F,CAAC;YAED,oDAAoD;YACpD,wEAAwE;YACxE,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC;qBAC7C,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC;qBAC9B,KAAK,CAAC,KAAK,CAAC;qBACZ,MAAM,CAAC,GAAG,CAAuB,CAAC;gBAErC,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE,IAAI,CAAC,MAAM;iBACnB,CAAC;YACJ,CAAC;YAED,yCAAyC;YACzC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;YAEhF,uCAAuC;YACvC,kEAAkE;YAClE,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;iBACtC,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,MAAM,CAAC;iBAC3C,QAAQ,CAAC,gBAAgB,EAAE,aAAa,EAAE,MAAM,CAAC;iBACjD,KAAK,CAAC,eAAe,EAAE,SAAS,CAAC;iBACjC,MAAM,CACL,QAAQ,EACR,iBAAiB,EACjB,IAAI,CAAC,GAAG,CAAC;;;;6BAIU,CAAC,EACpB,gBAAgB,EAChB,IAAI,CAAC,GAAG,CAAC,4CAA4C,CAAC,CACvD;iBACA,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;iBACxB,KAAK,CAAC,KAAK,CAAC,CAAC;YAEhB,0BAA0B;YAC1B,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAClD,CAAC;YAED,mEAAmE;YAEnE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9C,CAAC;YAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAChE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;gBACvE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,KAA2B,CAAC;YAE/C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,IAAI,CAAC,MAAM;aACnB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/tools/files/actions/get.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sqlew",
3
- "version": "4.0.0",
3
+ "version": "4.0.1",
4
4
  "description": "MCP server that gives AI agents a shared SQL-backed context repository for decisions, constraints, and tasks",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",