sqlew 4.0.2 → 4.0.4

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 +79 -0
  2. package/README.md +17 -105
  3. package/assets/claude-md-snippets/plan-mode-integration.md +13 -0
  4. package/assets/config.example.toml +16 -0
  5. package/assets/sample-agents/sqlew-architect.md +1 -0
  6. package/assets/sample-agents/sqlew-researcher.md +1 -0
  7. package/assets/sample-agents/sqlew-scrum-master.md +1 -0
  8. package/assets/sample-commands/sqlew.md +144 -0
  9. package/assets/sample-skills/sqlew-plan-guidance/SKILL.md +55 -0
  10. package/dist/config/minimal-generator.d.ts.map +1 -1
  11. package/dist/config/minimal-generator.js +72 -91
  12. package/dist/config/minimal-generator.js.map +1 -1
  13. package/dist/config/types.d.ts +2 -12
  14. package/dist/config/types.d.ts.map +1 -1
  15. package/dist/config/types.js +1 -6
  16. package/dist/config/types.js.map +1 -1
  17. package/dist/init-commands.d.ts +5 -2
  18. package/dist/init-commands.d.ts.map +1 -1
  19. package/dist/init-commands.js +36 -175
  20. package/dist/init-commands.js.map +1 -1
  21. package/dist/init-skills.d.ts +19 -0
  22. package/dist/init-skills.d.ts.map +1 -0
  23. package/dist/init-skills.js +104 -0
  24. package/dist/init-skills.js.map +1 -0
  25. package/dist/server/setup.d.ts.map +1 -1
  26. package/dist/server/setup.js +9 -0
  27. package/dist/server/setup.js.map +1 -1
  28. package/dist/sync-commands.d.ts.map +1 -1
  29. package/dist/sync-commands.js +2 -7
  30. package/dist/sync-commands.js.map +1 -1
  31. package/dist/tests/unit/case-insensitive-validator.test.d.ts +14 -0
  32. package/dist/tests/unit/case-insensitive-validator.test.d.ts.map +1 -0
  33. package/dist/tests/unit/case-insensitive-validator.test.js +390 -0
  34. package/dist/tests/unit/case-insensitive-validator.test.js.map +1 -0
  35. package/dist/tools/tasks/actions/get.d.ts.map +1 -1
  36. package/dist/tools/tasks/actions/get.js +1 -4
  37. package/dist/tools/tasks/actions/get.js.map +1 -1
  38. package/dist/tools/tasks/internal/task-queries.d.ts.map +1 -1
  39. package/dist/tools/tasks/internal/task-queries.js +2 -8
  40. package/dist/tools/tasks/internal/task-queries.js.map +1 -1
  41. package/docs/SLASH_COMMANDS.md +192 -478
  42. package/docs/SPECIALIZED_AGENTS.md +81 -43
  43. package/package.json +1 -1
  44. package/assets/sample-commands/sqw-documentor.md +0 -204
  45. package/assets/sample-commands/sqw-plan.md +0 -348
  46. package/assets/sample-commands/sqw-research.md +0 -359
  47. package/assets/sample-commands/sqw-review.md +0 -377
  48. package/assets/sample-commands/sqw-scrum.md +0 -457
@@ -0,0 +1,390 @@
1
+ /**
2
+ * Unit Tests for Case-Insensitive Validator Utility
3
+ *
4
+ * Tests all normalization and duplicate detection functions:
5
+ * - normalizeIdentifier()
6
+ * - checkNormalizedDuplicate()
7
+ * - validateNoNormalizedDuplicate()
8
+ * - findNormalizedMatch()
9
+ *
10
+ * @see src/utils/case-insensitive-validator.ts
11
+ * @since v4.0.2
12
+ */
13
+ import { describe, it, before, after } from 'node:test';
14
+ import assert from 'node:assert';
15
+ import knex from 'knex';
16
+ import { normalizeIdentifier, checkNormalizedDuplicate, validateNoNormalizedDuplicate, findNormalizedMatch } from '../../utils/case-insensitive-validator.js';
17
+ // ============================================================================
18
+ // Test Suite: normalizeIdentifier()
19
+ // ============================================================================
20
+ describe('normalizeIdentifier()', () => {
21
+ it('should convert to lowercase', () => {
22
+ assert.strictEqual(normalizeIdentifier('DRY'), 'dry');
23
+ assert.strictEqual(normalizeIdentifier('API'), 'api');
24
+ assert.strictEqual(normalizeIdentifier('SOLID'), 'solid');
25
+ });
26
+ it('should handle kebab-case', () => {
27
+ assert.strictEqual(normalizeIdentifier('api-design'), 'apidesign');
28
+ assert.strictEqual(normalizeIdentifier('test-case-name'), 'testcasename');
29
+ assert.strictEqual(normalizeIdentifier('dry-principle'), 'dryprinciple');
30
+ });
31
+ it('should handle snake_case', () => {
32
+ assert.strictEqual(normalizeIdentifier('api_design'), 'apidesign');
33
+ assert.strictEqual(normalizeIdentifier('test_case_name'), 'testcasename');
34
+ assert.strictEqual(normalizeIdentifier('dry_principle'), 'dryprinciple');
35
+ });
36
+ it('should handle camelCase', () => {
37
+ assert.strictEqual(normalizeIdentifier('apiDesign'), 'apidesign');
38
+ assert.strictEqual(normalizeIdentifier('testCaseName'), 'testcasename');
39
+ assert.strictEqual(normalizeIdentifier('dryPrinciple'), 'dryprinciple');
40
+ });
41
+ it('should handle PascalCase', () => {
42
+ assert.strictEqual(normalizeIdentifier('ApiDesign'), 'apidesign');
43
+ assert.strictEqual(normalizeIdentifier('TestCaseName'), 'testcasename');
44
+ assert.strictEqual(normalizeIdentifier('DryPrinciple'), 'dryprinciple');
45
+ });
46
+ it('should handle mixed formats', () => {
47
+ assert.strictEqual(normalizeIdentifier('API-Design_Test'), 'apidesigntest');
48
+ assert.strictEqual(normalizeIdentifier('test_Case-Name'), 'testcasename');
49
+ assert.strictEqual(normalizeIdentifier('DRY_Principle-Test'), 'dryprincipletest');
50
+ });
51
+ it('should remove spaces', () => {
52
+ assert.strictEqual(normalizeIdentifier('api design'), 'apidesign');
53
+ assert.strictEqual(normalizeIdentifier('test case name'), 'testcasename');
54
+ assert.strictEqual(normalizeIdentifier('dry principle'), 'dryprinciple');
55
+ });
56
+ it('should handle all normalization at once', () => {
57
+ // Test: "API-Design_Test Case" → "apidesigntestcase"
58
+ // - Uppercase → lowercase
59
+ // - Hyphens removed
60
+ // - Underscores removed
61
+ // - Spaces removed
62
+ assert.strictEqual(normalizeIdentifier('API-Design_Test Case'), 'apidesigntestcase');
63
+ });
64
+ it('should be consistent for equivalent values', () => {
65
+ const variants = [
66
+ 'apiDesign',
67
+ 'api-design',
68
+ 'api_design',
69
+ 'API_DESIGN',
70
+ 'API-DESIGN',
71
+ 'ApiDesign',
72
+ 'api design'
73
+ ];
74
+ const normalized = variants.map(normalizeIdentifier);
75
+ const expected = 'apidesign';
76
+ // All should normalize to the same value
77
+ normalized.forEach((value, index) => {
78
+ assert.strictEqual(value, expected, `"${variants[index]}" should normalize to "${expected}"`);
79
+ });
80
+ });
81
+ });
82
+ // ============================================================================
83
+ // Test Suite: checkNormalizedDuplicate()
84
+ // ============================================================================
85
+ describe('checkNormalizedDuplicate()', () => {
86
+ let db;
87
+ before(async () => {
88
+ // Setup in-memory SQLite database
89
+ db = knex({
90
+ client: 'better-sqlite3',
91
+ connection: ':memory:',
92
+ useNullAsDefault: true
93
+ });
94
+ // Create test table
95
+ await db.schema.createTable('test_tags', (table) => {
96
+ table.increments('id').primary();
97
+ table.integer('project_id').notNullable();
98
+ table.string('name', 255).notNullable();
99
+ });
100
+ // Insert test data
101
+ await db('test_tags').insert([
102
+ { project_id: 1, name: 'DRY' },
103
+ { project_id: 1, name: 'api-design' },
104
+ { project_id: 1, name: 'testCase' },
105
+ { project_id: 2, name: 'SOLID' }, // Different project
106
+ { project_id: 2, name: 'API_DESIGN' } // Different project
107
+ ]);
108
+ });
109
+ after(async () => {
110
+ await db.destroy();
111
+ });
112
+ it('should return no duplicate for non-existing value', async () => {
113
+ const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', 'new-tag', { project_id: 1 });
114
+ assert.strictEqual(result.isDuplicate, false);
115
+ assert.strictEqual(result.existingValue, undefined);
116
+ assert.strictEqual(result.existingId, undefined);
117
+ assert.strictEqual(result.matchType, undefined);
118
+ });
119
+ it('should return no duplicate for exact match (same value)', async () => {
120
+ // Exact match should NOT be considered a duplicate
121
+ // (e.g., updating existing record with same name)
122
+ const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', 'DRY', { project_id: 1 });
123
+ assert.strictEqual(result.isDuplicate, false, 'Exact match should not be duplicate');
124
+ });
125
+ it('should detect case-only difference (matchType: case)', async () => {
126
+ const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', 'dry', // lowercase vs uppercase "DRY"
127
+ { project_id: 1 });
128
+ assert.strictEqual(result.isDuplicate, true);
129
+ assert.strictEqual(result.existingValue, 'DRY');
130
+ assert.strictEqual(result.matchType, 'case');
131
+ assert.strictEqual(typeof result.existingId, 'number');
132
+ });
133
+ it('should detect naming convention difference (matchType: naming-convention)', async () => {
134
+ const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', 'api_design', // snake_case vs kebab-case "api-design"
135
+ { project_id: 1 });
136
+ assert.strictEqual(result.isDuplicate, true);
137
+ assert.strictEqual(result.existingValue, 'api-design');
138
+ assert.strictEqual(result.matchType, 'naming-convention');
139
+ assert.strictEqual(typeof result.existingId, 'number');
140
+ });
141
+ it('should detect camelCase vs kebab-case difference', async () => {
142
+ const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', 'test-case', // kebab-case vs camelCase "testCase"
143
+ { project_id: 1 });
144
+ assert.strictEqual(result.isDuplicate, true);
145
+ assert.strictEqual(result.existingValue, 'testCase');
146
+ assert.strictEqual(result.matchType, 'naming-convention');
147
+ });
148
+ it('should respect additionalWhere conditions (project isolation)', async () => {
149
+ // "SOLID" exists in project_id: 2, should not conflict with project_id: 1
150
+ const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', 'solid', // lowercase vs "SOLID" in different project
151
+ { project_id: 1 });
152
+ assert.strictEqual(result.isDuplicate, false);
153
+ });
154
+ it('should detect duplicate in same project only', async () => {
155
+ // "SOLID" exists in project_id: 2
156
+ const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', 'solid', { project_id: 2 });
157
+ assert.strictEqual(result.isDuplicate, true);
158
+ assert.strictEqual(result.existingValue, 'SOLID');
159
+ assert.strictEqual(result.matchType, 'case');
160
+ });
161
+ it('should work without additionalWhere (global check)', async () => {
162
+ const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', 'dry' // Should find "DRY" in project_id: 1
163
+ );
164
+ assert.strictEqual(result.isDuplicate, true);
165
+ assert.strictEqual(result.existingValue, 'DRY');
166
+ });
167
+ it('should handle complex naming variations', async () => {
168
+ // "api-design" exists in project_id: 1
169
+ const variants = ['apiDesign', 'API_DESIGN', 'api_design', 'ApiDesign'];
170
+ for (const variant of variants) {
171
+ const result = await checkNormalizedDuplicate(db, 'test_tags', 'name', variant, { project_id: 1 });
172
+ assert.strictEqual(result.isDuplicate, true, `"${variant}" should be detected as duplicate of "api-design"`);
173
+ assert.strictEqual(result.existingValue, 'api-design');
174
+ }
175
+ });
176
+ });
177
+ // ============================================================================
178
+ // Test Suite: validateNoNormalizedDuplicate()
179
+ // ============================================================================
180
+ describe('validateNoNormalizedDuplicate()', () => {
181
+ let db;
182
+ before(async () => {
183
+ db = knex({
184
+ client: 'better-sqlite3',
185
+ connection: ':memory:',
186
+ useNullAsDefault: true
187
+ });
188
+ await db.schema.createTable('test_scopes', (table) => {
189
+ table.increments('id').primary();
190
+ table.integer('project_id').notNullable();
191
+ table.string('name', 255).notNullable();
192
+ });
193
+ await db('test_scopes').insert([
194
+ { project_id: 1, name: 'database' },
195
+ { project_id: 1, name: 'API-Gateway' }
196
+ ]);
197
+ });
198
+ after(async () => {
199
+ await db.destroy();
200
+ });
201
+ it('should not throw for non-duplicate value', async () => {
202
+ await assert.doesNotReject(async () => {
203
+ await validateNoNormalizedDuplicate(db, 'test_scopes', 'name', 'new-scope', 'scope', { project_id: 1 });
204
+ });
205
+ });
206
+ it('should throw for case-only duplicate', async () => {
207
+ await assert.rejects(async () => {
208
+ await validateNoNormalizedDuplicate(db, 'test_scopes', 'name', 'Database', // vs "database"
209
+ 'scope', { project_id: 1 });
210
+ }, {
211
+ name: 'Error',
212
+ message: /Scope "database" already exists \(case-insensitive match with "Database"\)/
213
+ });
214
+ });
215
+ it('should throw for naming convention duplicate', async () => {
216
+ await assert.rejects(async () => {
217
+ await validateNoNormalizedDuplicate(db, 'test_scopes', 'name', 'api_gateway', // vs "API-Gateway"
218
+ 'scope', { project_id: 1 });
219
+ }, {
220
+ name: 'Error',
221
+ message: /Scope "API-Gateway" already exists \(naming conflict with "api_gateway"\)/
222
+ });
223
+ });
224
+ it('should include entity type in error message (capitalized)', async () => {
225
+ await assert.rejects(async () => {
226
+ await validateNoNormalizedDuplicate(db, 'test_scopes', 'name', 'DATABASE', 'policy', // Different entity type
227
+ { project_id: 1 });
228
+ }, {
229
+ name: 'Error',
230
+ message: /Policy "database" already exists/
231
+ });
232
+ });
233
+ it('should respect project isolation', async () => {
234
+ // "database" exists in project_id: 1, but we're checking project_id: 2
235
+ await assert.doesNotReject(async () => {
236
+ await validateNoNormalizedDuplicate(db, 'test_scopes', 'name', 'DATABASE', 'scope', { project_id: 2 });
237
+ });
238
+ });
239
+ it('should work without additionalWhere', async () => {
240
+ await assert.rejects(async () => {
241
+ await validateNoNormalizedDuplicate(db, 'test_scopes', 'name', 'DATABASE', 'scope');
242
+ }, {
243
+ name: 'Error',
244
+ message: /Scope "database" already exists/
245
+ });
246
+ });
247
+ });
248
+ // ============================================================================
249
+ // Test Suite: findNormalizedMatch()
250
+ // ============================================================================
251
+ describe('findNormalizedMatch()', () => {
252
+ let db;
253
+ before(async () => {
254
+ db = knex({
255
+ client: 'better-sqlite3',
256
+ connection: ':memory:',
257
+ useNullAsDefault: true
258
+ });
259
+ await db.schema.createTable('test_layers', (table) => {
260
+ table.increments('id').primary();
261
+ table.integer('project_id').notNullable();
262
+ table.string('name', 255).notNullable();
263
+ });
264
+ await db('test_layers').insert([
265
+ { project_id: 1, name: 'presentation' },
266
+ { project_id: 1, name: 'Business-Layer' },
267
+ { project_id: 2, name: 'dataLayer' }
268
+ ]);
269
+ });
270
+ after(async () => {
271
+ await db.destroy();
272
+ });
273
+ it('should find exact match', async () => {
274
+ const result = await findNormalizedMatch(db, 'test_layers', 'name', 'presentation', { project_id: 1 });
275
+ assert.notStrictEqual(result, null);
276
+ assert.strictEqual(result.name, 'presentation');
277
+ assert.strictEqual(result.project_id, 1);
278
+ });
279
+ it('should find case-insensitive match', async () => {
280
+ const result = await findNormalizedMatch(db, 'test_layers', 'name', 'PRESENTATION', // vs "presentation"
281
+ { project_id: 1 });
282
+ assert.notStrictEqual(result, null);
283
+ assert.strictEqual(result.name, 'presentation');
284
+ });
285
+ it('should find naming convention match', async () => {
286
+ const result = await findNormalizedMatch(db, 'test_layers', 'name', 'business_layer', // vs "Business-Layer"
287
+ { project_id: 1 });
288
+ assert.notStrictEqual(result, null);
289
+ assert.strictEqual(result.name, 'Business-Layer');
290
+ });
291
+ it('should find camelCase match', async () => {
292
+ const result = await findNormalizedMatch(db, 'test_layers', 'name', 'data-layer', // vs "dataLayer"
293
+ { project_id: 2 });
294
+ assert.notStrictEqual(result, null);
295
+ assert.strictEqual(result.name, 'dataLayer');
296
+ assert.strictEqual(result.project_id, 2);
297
+ });
298
+ it('should return null for non-existing value', async () => {
299
+ const result = await findNormalizedMatch(db, 'test_layers', 'name', 'non-existing', { project_id: 1 });
300
+ assert.strictEqual(result, null);
301
+ });
302
+ it('should respect project isolation', async () => {
303
+ // "dataLayer" exists in project_id: 2, but not in project_id: 1
304
+ const result = await findNormalizedMatch(db, 'test_layers', 'name', 'dataLayer', { project_id: 1 });
305
+ assert.strictEqual(result, null);
306
+ });
307
+ it('should work without additionalWhere (global search)', async () => {
308
+ const result = await findNormalizedMatch(db, 'test_layers', 'name', 'PRESENTATION');
309
+ assert.notStrictEqual(result, null);
310
+ assert.strictEqual(result.name, 'presentation');
311
+ });
312
+ it('should return complete record with all fields', async () => {
313
+ const result = await findNormalizedMatch(db, 'test_layers', 'name', 'business-layer', { project_id: 1 });
314
+ assert.notStrictEqual(result, null);
315
+ assert.strictEqual(typeof result.id, 'number');
316
+ assert.strictEqual(result.project_id, 1);
317
+ assert.strictEqual(result.name, 'Business-Layer');
318
+ });
319
+ });
320
+ // ============================================================================
321
+ // Integration Tests: Real-world scenarios
322
+ // ============================================================================
323
+ describe('Integration: Real-world scenarios', () => {
324
+ let db;
325
+ before(async () => {
326
+ db = knex({
327
+ client: 'better-sqlite3',
328
+ connection: ':memory:',
329
+ useNullAsDefault: true
330
+ });
331
+ await db.schema.createTable('test_policies', (table) => {
332
+ table.increments('id').primary();
333
+ table.integer('project_id').notNullable();
334
+ table.string('name', 255).notNullable();
335
+ });
336
+ });
337
+ after(async () => {
338
+ await db.destroy();
339
+ });
340
+ it('should prevent duplicate policy creation with different formats', async () => {
341
+ // Create initial policy
342
+ await db('test_policies').insert({
343
+ project_id: 1,
344
+ name: 'api-design-pattern'
345
+ });
346
+ // Try to create duplicates with different formats
347
+ const duplicateVariants = [
348
+ 'apiDesignPattern',
349
+ 'API_DESIGN_PATTERN',
350
+ 'api_design_pattern',
351
+ 'ApiDesignPattern'
352
+ ];
353
+ for (const variant of duplicateVariants) {
354
+ await assert.rejects(async () => {
355
+ await validateNoNormalizedDuplicate(db, 'test_policies', 'name', variant, 'policy', { project_id: 1 });
356
+ }, {
357
+ name: 'Error',
358
+ message: /Policy "api-design-pattern" already exists/
359
+ }, `Should reject duplicate: ${variant}`);
360
+ }
361
+ });
362
+ it('should allow same name in different projects', async () => {
363
+ // Policy exists in project_id: 1
364
+ await assert.doesNotReject(async () => {
365
+ await validateNoNormalizedDuplicate(db, 'test_policies', 'name', 'apiDesignPattern', // Same normalized value, different project
366
+ 'policy', { project_id: 2 });
367
+ });
368
+ // Insert should succeed
369
+ await db('test_policies').insert({
370
+ project_id: 2,
371
+ name: 'apiDesignPattern'
372
+ });
373
+ });
374
+ it('should find existing record regardless of format', async () => {
375
+ // Original: "api-design-pattern" in project_id: 1
376
+ const searchVariants = [
377
+ 'api-design-pattern',
378
+ 'apiDesignPattern',
379
+ 'API_DESIGN_PATTERN',
380
+ 'api_design_pattern'
381
+ ];
382
+ for (const variant of searchVariants) {
383
+ const result = await findNormalizedMatch(db, 'test_policies', 'name', variant, { project_id: 1 });
384
+ assert.notStrictEqual(result, null, `Should find match for: ${variant}`);
385
+ assert.strictEqual(result.name, 'api-design-pattern');
386
+ assert.strictEqual(result.project_id, 1);
387
+ }
388
+ });
389
+ });
390
+ //# sourceMappingURL=case-insensitive-validator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"case-insensitive-validator.test.js","sourceRoot":"","sources":["../../../src/tests/unit/case-insensitive-validator.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/tools/tasks/actions/get.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAM7D;;GAEG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CAkG1C"}
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/tools/tasks/actions/get.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAM7D;;GAEG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CA+F1C"}
@@ -23,10 +23,7 @@ export async function getTask(params, adapter) {
23
23
  const task = await knex('v4_tasks as t')
24
24
  .leftJoin('v4_task_statuses as s', 't.status_id', 's.id')
25
25
  .leftJoin('v4_layers as l', 't.layer_id', 'l.id')
26
- .leftJoin('v4_task_details as td', function () {
27
- this.on('t.id', '=', 'td.task_id')
28
- .andOn('t.project_id', '=', 'td.project_id');
29
- })
26
+ .leftJoin('v4_task_details as td', 't.id', 'td.task_id')
30
27
  .where({ 't.id': params.task_id, 't.project_id': projectId })
31
28
  .select('t.id', 't.title', 's.name as status', 't.priority', 'l.name as layer', 't.created_ts', 't.updated_ts', 't.completed_ts', 'td.description', 'td.acceptance_criteria', 'td.notes')
32
29
  .first();
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/tools/tasks/actions/get.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAG7B,EAAE,OAAyB;IAC1B,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAG,OAAO,IAAI,UAAU,EAAE,CAAC;IAC9C,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;IAErC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,mDAAmD;IACnD,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC,YAAY,EAAE,CAAC;IAErD,IAAI,CAAC;QACH,oDAAoD;QACpD,mFAAmF;QACnF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC;aACrC,QAAQ,CAAC,uBAAuB,EAAE,aAAa,EAAE,MAAM,CAAC;aACxD,QAAQ,CAAC,gBAAgB,EAAE,YAAY,EAAE,MAAM,CAAC;aAChD,QAAQ,CAAC,uBAAuB,EAAE;YACjC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,YAAY,CAAC;iBAC7B,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;QACnD,CAAC,CAAC;aACD,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;aAC5D,MAAM,CACL,MAAM,EACN,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,UAAU,CACX;aACA,KAAK,EAAS,CAAC;QAElB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC;QACJ,CAAC;QAED,WAAW;QACX,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC;aAC1C,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC;aAC3C,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC;aACnC,MAAM,CAAC,SAAS,CAAC;aACjB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAElD,qBAAqB;QACrB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC;aAC1D,IAAI,CAAC,uBAAuB,EAAE,qBAAqB,EAAE,OAAO,CAAC;aAC7D,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC;aACpC,MAAM,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;QAEjD,uBAAuB;QACvB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC;aAC9D,IAAI,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,CAAC;aACxD,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC;aACpC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAEvC,iBAAiB;QACjB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC;aAClD,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE,MAAM,CAAC;aAC5C,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC;aACpC,MAAM,CAAC,QAAQ,CAAC;aAChB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAElD,eAAe;QACf,MAAM,MAAM,GAAQ;YAClB,KAAK,EAAE,IAAI;YACX,IAAI,EAAE;gBACJ,GAAG,IAAI;gBACP,IAAI,EAAE,IAAI;gBACV,gBAAgB,EAAE,SAAS;gBAC3B,kBAAkB,EAAE,WAAW;gBAC/B,YAAY,EAAE,KAAK;aACpB;SACF,CAAC;QAEF,qEAAqE;QACrE,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC/E,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,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,uBAAuB,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/tools/tasks/actions/get.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"task-queries.d.ts","sourceRoot":"","sources":["../../../../src/tools/tasks/internal/task-queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,OAAe,GAC9B,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAAC,QAAQ,EAAE,GAAG,EAAE,CAAA;CAAE,CAAC,CA0D/C"}
1
+ {"version":3,"file":"task-queries.d.ts","sourceRoot":"","sources":["../../../../src/tools/tasks/internal/task-queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,OAAe,GAC9B,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAAC,QAAQ,EAAE,GAAG,EAAE,CAAA;CAAE,CAAC,CAoD/C"}
@@ -34,10 +34,7 @@ export async function queryTaskDependencies(adapter, taskId, includeDetails = fa
34
34
  .select(selectFields);
35
35
  if (includeDetails) {
36
36
  blockersQuery = blockersQuery
37
- .leftJoin('v4_task_details as td', function () {
38
- this.on('t.id', '=', 'td.task_id')
39
- .andOn('t.project_id', '=', 'td.project_id');
40
- });
37
+ .leftJoin('v4_task_details as td', 't.id', 'td.task_id');
41
38
  }
42
39
  const blockers = await blockersQuery;
43
40
  // Get blocking (tasks this task blocks) - with project_id isolation
@@ -48,10 +45,7 @@ export async function queryTaskDependencies(adapter, taskId, includeDetails = fa
48
45
  .select(selectFields);
49
46
  if (includeDetails) {
50
47
  blockingQuery = blockingQuery
51
- .leftJoin('v4_task_details as td', function () {
52
- this.on('t.id', '=', 'td.task_id')
53
- .andOn('t.project_id', '=', 'td.project_id');
54
- });
48
+ .leftJoin('v4_task_details as td', 't.id', 'td.task_id');
55
49
  }
56
50
  const blocking = await blockingQuery;
57
51
  return { blockers, blocking };
@@ -1 +1 @@
1
- {"version":3,"file":"task-queries.js","sourceRoot":"","sources":["../../../../src/tools/tasks/internal/task-queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAwB,EACxB,MAAc,EACd,iBAA0B,KAAK;IAE/B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC,YAAY,EAAE,CAAC;IAErD,4CAA4C;IAC5C,mEAAmE;IACnE,MAAM,YAAY,GAAG,cAAc;QACjC,CAAC,CAAC;YACE,MAAM;YACN,SAAS;YACT,kBAAkB;YAClB,YAAY;YACZ,cAAc;YACd,cAAc;YACd,gBAAgB;SACjB;QACH,CAAC,CAAC;YACE,MAAM;YACN,SAAS;YACT,kBAAkB;YAClB,YAAY;SACb,CAAC;IAEN,wEAAwE;IACxE,IAAI,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;SACtC,IAAI,CAAC,2BAA2B,EAAE,MAAM,EAAE,mBAAmB,CAAC;SAC9D,QAAQ,CAAC,uBAAuB,EAAE,aAAa,EAAE,MAAM,CAAC;SACxD,KAAK,CAAC,EAAE,mBAAmB,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;SAC5F,MAAM,CAAC,YAAY,CAAC,CAAC;IAExB,IAAI,cAAc,EAAE,CAAC;QACnB,aAAa,GAAG,aAAa;aAC1B,QAAQ,CAAC,uBAAuB,EAAE;YACjC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,YAAY,CAAC;iBAC7B,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC;IAErC,oEAAoE;IACpE,IAAI,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;SACtC,IAAI,CAAC,2BAA2B,EAAE,MAAM,EAAE,mBAAmB,CAAC;SAC9D,QAAQ,CAAC,uBAAuB,EAAE,aAAa,EAAE,MAAM,CAAC;SACxD,KAAK,CAAC,EAAE,mBAAmB,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;SAC5F,MAAM,CAAC,YAAY,CAAC,CAAC;IAExB,IAAI,cAAc,EAAE,CAAC;QACnB,aAAa,GAAG,aAAa;aAC1B,QAAQ,CAAC,uBAAuB,EAAE;YACjC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,YAAY,CAAC;iBAC7B,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC;IAErC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"task-queries.js","sourceRoot":"","sources":["../../../../src/tools/tasks/internal/task-queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAwB,EACxB,MAAc,EACd,iBAA0B,KAAK;IAE/B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC,YAAY,EAAE,CAAC;IAErD,4CAA4C;IAC5C,mEAAmE;IACnE,MAAM,YAAY,GAAG,cAAc;QACjC,CAAC,CAAC;YACE,MAAM;YACN,SAAS;YACT,kBAAkB;YAClB,YAAY;YACZ,cAAc;YACd,cAAc;YACd,gBAAgB;SACjB;QACH,CAAC,CAAC;YACE,MAAM;YACN,SAAS;YACT,kBAAkB;YAClB,YAAY;SACb,CAAC;IAEN,wEAAwE;IACxE,IAAI,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;SACtC,IAAI,CAAC,2BAA2B,EAAE,MAAM,EAAE,mBAAmB,CAAC;SAC9D,QAAQ,CAAC,uBAAuB,EAAE,aAAa,EAAE,MAAM,CAAC;SACxD,KAAK,CAAC,EAAE,mBAAmB,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;SAC5F,MAAM,CAAC,YAAY,CAAC,CAAC;IAExB,IAAI,cAAc,EAAE,CAAC;QACnB,aAAa,GAAG,aAAa;aAC1B,QAAQ,CAAC,uBAAuB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC;IAErC,oEAAoE;IACpE,IAAI,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;SACtC,IAAI,CAAC,2BAA2B,EAAE,MAAM,EAAE,mBAAmB,CAAC;SAC9D,QAAQ,CAAC,uBAAuB,EAAE,aAAa,EAAE,MAAM,CAAC;SACxD,KAAK,CAAC,EAAE,mBAAmB,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;SAC5F,MAAM,CAAC,YAAY,CAAC,CAAC;IAExB,IAAI,cAAc,EAAE,CAAC;QACnB,aAAa,GAAG,aAAa;aAC1B,QAAQ,CAAC,uBAAuB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC;IAErC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC"}