sqlew 3.6.0 → 3.6.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 (71) hide show
  1. package/assets/config.example.toml +9 -0
  2. package/dist/config/types.d.ts +2 -0
  3. package/dist/config/types.d.ts.map +1 -1
  4. package/dist/config/types.js.map +1 -1
  5. package/dist/database.d.ts +14 -1
  6. package/dist/database.d.ts.map +1 -1
  7. package/dist/database.js +128 -5
  8. package/dist/database.js.map +1 -1
  9. package/dist/index.js +136 -82
  10. package/dist/index.js.map +1 -1
  11. package/dist/migrations/knex/20251027000000_add_agent_reuse_system.d.ts +14 -0
  12. package/dist/migrations/knex/20251027000000_add_agent_reuse_system.d.ts.map +1 -0
  13. package/dist/migrations/knex/20251027000000_add_agent_reuse_system.js +34 -0
  14. package/dist/migrations/knex/20251027000000_add_agent_reuse_system.js.map +1 -0
  15. package/dist/migrations/knex/20251027010000_add_task_constraint_to_decision_context.d.ts +4 -0
  16. package/dist/migrations/knex/20251027010000_add_task_constraint_to_decision_context.d.ts.map +1 -0
  17. package/dist/migrations/knex/20251027010000_add_task_constraint_to_decision_context.js +24 -0
  18. package/dist/migrations/knex/20251027010000_add_task_constraint_to_decision_context.js.map +1 -0
  19. package/dist/migrations/knex/20251027020000_update_agent_reusability.d.ts +16 -0
  20. package/dist/migrations/knex/20251027020000_update_agent_reusability.d.ts.map +1 -0
  21. package/dist/migrations/knex/20251027020000_update_agent_reusability.js +27 -0
  22. package/dist/migrations/knex/20251027020000_update_agent_reusability.js.map +1 -0
  23. package/dist/tests/agent-reuse.test.d.ts +6 -0
  24. package/dist/tests/agent-reuse.test.d.ts.map +1 -0
  25. package/dist/tests/agent-reuse.test.js +242 -0
  26. package/dist/tests/agent-reuse.test.js.map +1 -0
  27. package/dist/tests/all-features.test.d.ts +7 -0
  28. package/dist/tests/all-features.test.d.ts.map +1 -0
  29. package/dist/tests/all-features.test.js +514 -0
  30. package/dist/tests/all-features.test.js.map +1 -0
  31. package/dist/tools/constraints.d.ts.map +1 -1
  32. package/dist/tools/constraints.js +11 -7
  33. package/dist/tools/constraints.js.map +1 -1
  34. package/dist/tools/context.d.ts.map +1 -1
  35. package/dist/tools/context.js +73 -16
  36. package/dist/tools/context.js.map +1 -1
  37. package/dist/tools/messaging.d.ts.map +1 -1
  38. package/dist/tools/messaging.js +23 -1
  39. package/dist/tools/messaging.js.map +1 -1
  40. package/dist/tools/tasks.d.ts.map +1 -1
  41. package/dist/tools/tasks.js +8 -5
  42. package/dist/tools/tasks.js.map +1 -1
  43. package/dist/tools/utils.d.ts.map +1 -1
  44. package/dist/tools/utils.js +4 -1
  45. package/dist/tools/utils.js.map +1 -1
  46. package/dist/types.d.ts +1 -0
  47. package/dist/types.d.ts.map +1 -1
  48. package/dist/utils/cleanup.d.ts +3 -1
  49. package/dist/utils/cleanup.d.ts.map +1 -1
  50. package/dist/utils/cleanup.js +6 -3
  51. package/dist/utils/cleanup.js.map +1 -1
  52. package/dist/utils/debug-logger.d.ts +57 -2
  53. package/dist/utils/debug-logger.d.ts.map +1 -1
  54. package/dist/utils/debug-logger.js +155 -4
  55. package/dist/utils/debug-logger.js.map +1 -1
  56. package/dist/utils/error-handler.d.ts +28 -0
  57. package/dist/utils/error-handler.d.ts.map +1 -0
  58. package/dist/utils/error-handler.js +121 -0
  59. package/dist/utils/error-handler.js.map +1 -0
  60. package/dist/utils/help-tracking.d.ts +3 -3
  61. package/dist/utils/help-tracking.d.ts.map +1 -1
  62. package/dist/utils/help-tracking.js.map +1 -1
  63. package/dist/utils/param-parser.d.ts +23 -0
  64. package/dist/utils/param-parser.d.ts.map +1 -0
  65. package/dist/utils/param-parser.js +52 -0
  66. package/dist/utils/param-parser.js.map +1 -0
  67. package/dist/utils/retention.d.ts +10 -0
  68. package/dist/utils/retention.d.ts.map +1 -1
  69. package/dist/utils/retention.js +19 -0
  70. package/dist/utils/retention.js.map +1 -1
  71. package/package.json +2 -1
@@ -0,0 +1,514 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Comprehensive feature test for MCP Sqlew
4
+ * Tests all tools and actions to detect crashes with proper TypeScript types
5
+ */
6
+ import { initializeDatabase, closeDatabase } from '../database.js';
7
+ import * as fs from 'fs';
8
+ import * as path from 'path';
9
+ // Import all tool functions
10
+ import { setDecision, getDecision, searchByTags, getVersions, searchByLayer, addDecisionContextAction, listDecisionContextsAction } from '../tools/context.js';
11
+ import { sendMessage, getMessages, markRead } from '../tools/messaging.js';
12
+ import { recordFileChange, getFileChanges, checkFileLock } from '../tools/files.js';
13
+ import { addConstraint, getConstraints, deactivateConstraint } from '../tools/constraints.js';
14
+ import { getLayerSummary, clearOldData, getStats } from '../tools/utils.js';
15
+ import { getConfig, updateConfig } from '../tools/config.js';
16
+ import { createTask, updateTask, getTask, listTasks, moveTask, linkTask, archiveTask, batchCreateTasks, addDependency, removeDependency, getDependencies } from '../tools/tasks.js';
17
+ const TEST_DB_PATH = '.sqlew/tmp/test-all-features.db';
18
+ const results = [];
19
+ function log(message) {
20
+ console.log(`[${new Date().toISOString()}] ${message}`);
21
+ }
22
+ function recordResult(tool, action, status, error, duration) {
23
+ results.push({ tool, action, status, error, duration });
24
+ const statusIcon = status === 'PASS' ? '✅' : status === 'FAIL' ? '❌' : '💥';
25
+ log(`${statusIcon} ${tool}.${action} - ${status}${error ? ': ' + error : ''}${duration ? ` (${duration}ms)` : ''}`);
26
+ }
27
+ async function testDecisionTool() {
28
+ log('\n=== Testing Decision Tool ===');
29
+ // Test set action
30
+ try {
31
+ const start = Date.now();
32
+ await setDecision({
33
+ key: 'test-decision-1',
34
+ value: 'Test decision value',
35
+ agent: 'test-agent',
36
+ tags: ['test', 'feature-testing'],
37
+ layer: 'business',
38
+ version: '1.0.0',
39
+ status: 'active'
40
+ });
41
+ recordResult('decision', 'set', 'PASS', undefined, Date.now() - start);
42
+ }
43
+ catch (error) {
44
+ recordResult('decision', 'set', 'CRASH', error instanceof Error ? error.message : String(error));
45
+ }
46
+ // Test get action
47
+ try {
48
+ const start = Date.now();
49
+ const result = await getDecision({ key: 'test-decision-1' });
50
+ recordResult('decision', 'get', result.found ? 'PASS' : 'FAIL', undefined, Date.now() - start);
51
+ }
52
+ catch (error) {
53
+ recordResult('decision', 'get', 'CRASH', error instanceof Error ? error.message : String(error));
54
+ }
55
+ // Test search_tags action
56
+ try {
57
+ const start = Date.now();
58
+ const result = await searchByTags({ tags: ['test'], match_mode: 'AND' });
59
+ recordResult('decision', 'search_tags', result.count >= 0 ? 'PASS' : 'FAIL', undefined, Date.now() - start);
60
+ }
61
+ catch (error) {
62
+ recordResult('decision', 'search_tags', 'CRASH', error instanceof Error ? error.message : String(error));
63
+ }
64
+ // Test search_layer action
65
+ try {
66
+ const start = Date.now();
67
+ const result = await searchByLayer({ layer: 'business', status: 'active' });
68
+ recordResult('decision', 'search_layer', result.count >= 0 ? 'PASS' : 'FAIL', undefined, Date.now() - start);
69
+ }
70
+ catch (error) {
71
+ recordResult('decision', 'search_layer', 'CRASH', error instanceof Error ? error.message : String(error));
72
+ }
73
+ // Test versions action
74
+ try {
75
+ const start = Date.now();
76
+ const result = await getVersions({ key: 'test-decision-1' });
77
+ recordResult('decision', 'versions', result.count >= 0 ? 'PASS' : 'FAIL', undefined, Date.now() - start);
78
+ }
79
+ catch (error) {
80
+ recordResult('decision', 'versions', 'CRASH', error instanceof Error ? error.message : String(error));
81
+ }
82
+ // Test add_decision_context action
83
+ try {
84
+ const start = Date.now();
85
+ await addDecisionContextAction({
86
+ key: 'test-decision-1',
87
+ rationale: 'Test rationale',
88
+ alternatives_considered: ['Option A', 'Option B'],
89
+ tradeoffs: 'Test tradeoffs'
90
+ });
91
+ recordResult('decision', 'add_decision_context', 'PASS', undefined, Date.now() - start);
92
+ }
93
+ catch (error) {
94
+ recordResult('decision', 'add_decision_context', 'CRASH', error instanceof Error ? error.message : String(error));
95
+ }
96
+ // Test list_decision_contexts action
97
+ try {
98
+ const start = Date.now();
99
+ const result = await listDecisionContextsAction({});
100
+ recordResult('decision', 'list_decision_contexts', Array.isArray(result.contexts) ? 'PASS' : 'FAIL', undefined, Date.now() - start);
101
+ }
102
+ catch (error) {
103
+ recordResult('decision', 'list_decision_contexts', 'CRASH', error instanceof Error ? error.message : String(error));
104
+ }
105
+ }
106
+ async function testMessageTool() {
107
+ log('\n=== Testing Message Tool ===');
108
+ // Test send action
109
+ try {
110
+ const start = Date.now();
111
+ await sendMessage({
112
+ from_agent: 'agent-1',
113
+ to_agent: 'agent-2',
114
+ msg_type: 'info',
115
+ message: 'Test message',
116
+ priority: 'medium'
117
+ });
118
+ recordResult('message', 'send', 'PASS', undefined, Date.now() - start);
119
+ }
120
+ catch (error) {
121
+ recordResult('message', 'send', 'CRASH', error instanceof Error ? error.message : String(error));
122
+ }
123
+ // Test get action
124
+ try {
125
+ const start = Date.now();
126
+ const result = await getMessages({ agent_name: 'agent-2' });
127
+ recordResult('message', 'get', result.count >= 0 ? 'PASS' : 'FAIL', undefined, Date.now() - start);
128
+ }
129
+ catch (error) {
130
+ recordResult('message', 'get', 'CRASH', error instanceof Error ? error.message : String(error));
131
+ }
132
+ // Test mark_read action
133
+ try {
134
+ const start = Date.now();
135
+ const messages = await getMessages({ agent_name: 'agent-2' });
136
+ if (messages.messages.length > 0) {
137
+ await markRead({ message_ids: [messages.messages[0].id], agent_name: 'agent-2' });
138
+ recordResult('message', 'mark_read', 'PASS', undefined, Date.now() - start);
139
+ }
140
+ else {
141
+ recordResult('message', 'mark_read', 'FAIL', 'No messages to mark as read');
142
+ }
143
+ }
144
+ catch (error) {
145
+ recordResult('message', 'mark_read', 'CRASH', error instanceof Error ? error.message : String(error));
146
+ }
147
+ }
148
+ async function testFileTool() {
149
+ log('\n=== Testing File Tool ===');
150
+ // Test record action
151
+ try {
152
+ const start = Date.now();
153
+ await recordFileChange({
154
+ file_path: '/test/file.ts',
155
+ agent_name: 'test-agent',
156
+ change_type: 'modified',
157
+ description: 'Test change',
158
+ layer: 'business'
159
+ });
160
+ recordResult('file', 'record', 'PASS', undefined, Date.now() - start);
161
+ }
162
+ catch (error) {
163
+ recordResult('file', 'record', 'CRASH', error instanceof Error ? error.message : String(error));
164
+ }
165
+ // Test get action
166
+ try {
167
+ const start = Date.now();
168
+ const result = await getFileChanges({ file_path: '/test/file.ts' });
169
+ recordResult('file', 'get', result.count >= 0 ? 'PASS' : 'FAIL', undefined, Date.now() - start);
170
+ }
171
+ catch (error) {
172
+ recordResult('file', 'get', 'CRASH', error instanceof Error ? error.message : String(error));
173
+ }
174
+ // Test check_lock action
175
+ try {
176
+ const start = Date.now();
177
+ await checkFileLock({ file_path: '/test/file.ts' });
178
+ recordResult('file', 'check_lock', 'PASS', undefined, Date.now() - start);
179
+ }
180
+ catch (error) {
181
+ recordResult('file', 'check_lock', 'CRASH', error instanceof Error ? error.message : String(error));
182
+ }
183
+ }
184
+ async function testConstraintTool() {
185
+ log('\n=== Testing Constraint Tool ===');
186
+ let constraintId;
187
+ // Test add action
188
+ try {
189
+ const start = Date.now();
190
+ const result = await addConstraint({
191
+ category: 'architecture',
192
+ constraint_text: 'Test constraint rule',
193
+ priority: 'medium',
194
+ tags: ['test'],
195
+ created_by: 'test-agent'
196
+ });
197
+ constraintId = result.constraint_id;
198
+ recordResult('constraint', 'add', 'PASS', undefined, Date.now() - start);
199
+ }
200
+ catch (error) {
201
+ recordResult('constraint', 'add', 'CRASH', error instanceof Error ? error.message : String(error));
202
+ }
203
+ // Test get action
204
+ try {
205
+ const start = Date.now();
206
+ const result = await getConstraints({ category: 'architecture' });
207
+ recordResult('constraint', 'get', result.count >= 0 ? 'PASS' : 'FAIL', undefined, Date.now() - start);
208
+ }
209
+ catch (error) {
210
+ recordResult('constraint', 'get', 'CRASH', error instanceof Error ? error.message : String(error));
211
+ }
212
+ // Test deactivate action
213
+ try {
214
+ const start = Date.now();
215
+ if (constraintId) {
216
+ await deactivateConstraint({ constraint_id: constraintId });
217
+ recordResult('constraint', 'deactivate', 'PASS', undefined, Date.now() - start);
218
+ }
219
+ else {
220
+ recordResult('constraint', 'deactivate', 'FAIL', 'No constraint ID available');
221
+ }
222
+ }
223
+ catch (error) {
224
+ recordResult('constraint', 'deactivate', 'CRASH', error instanceof Error ? error.message : String(error));
225
+ }
226
+ }
227
+ async function testStatsTool() {
228
+ log('\n=== Testing Stats Tool ===');
229
+ // Test layer_summary action
230
+ try {
231
+ const start = Date.now();
232
+ await getLayerSummary();
233
+ recordResult('stats', 'layer_summary', 'PASS', undefined, Date.now() - start);
234
+ }
235
+ catch (error) {
236
+ recordResult('stats', 'layer_summary', 'CRASH', error instanceof Error ? error.message : String(error));
237
+ }
238
+ // Test db_stats action
239
+ try {
240
+ const start = Date.now();
241
+ await getStats();
242
+ recordResult('stats', 'db_stats', 'PASS', undefined, Date.now() - start);
243
+ }
244
+ catch (error) {
245
+ recordResult('stats', 'db_stats', 'CRASH', error instanceof Error ? error.message : String(error));
246
+ }
247
+ // Test clear action
248
+ try {
249
+ const start = Date.now();
250
+ await clearOldData({});
251
+ recordResult('stats', 'clear', 'PASS', undefined, Date.now() - start);
252
+ }
253
+ catch (error) {
254
+ recordResult('stats', 'clear', 'CRASH', error instanceof Error ? error.message : String(error));
255
+ }
256
+ }
257
+ async function testConfigTool() {
258
+ log('\n=== Testing Config Tool ===');
259
+ // Test get action
260
+ try {
261
+ const start = Date.now();
262
+ await getConfig();
263
+ recordResult('config', 'get', 'PASS', undefined, Date.now() - start);
264
+ }
265
+ catch (error) {
266
+ recordResult('config', 'get', 'CRASH', error instanceof Error ? error.message : String(error));
267
+ }
268
+ // Test update action
269
+ try {
270
+ const start = Date.now();
271
+ await updateConfig({
272
+ messageRetentionHours: 72,
273
+ fileHistoryRetentionDays: 14,
274
+ ignoreWeekend: true
275
+ });
276
+ recordResult('config', 'update', 'PASS', undefined, Date.now() - start);
277
+ }
278
+ catch (error) {
279
+ recordResult('config', 'update', 'CRASH', error instanceof Error ? error.message : String(error));
280
+ }
281
+ }
282
+ async function testTaskTool() {
283
+ log('\n=== Testing Task Tool ===');
284
+ let taskId1;
285
+ let taskId2;
286
+ // Test create action
287
+ try {
288
+ const start = Date.now();
289
+ const result = await createTask({
290
+ title: 'Test Task 1',
291
+ description: 'Test description',
292
+ status: 'todo',
293
+ priority: 2,
294
+ tags: ['test'],
295
+ created_by_agent: 'test-agent'
296
+ });
297
+ taskId1 = result.task_id;
298
+ recordResult('task', 'create', 'PASS', undefined, Date.now() - start);
299
+ }
300
+ catch (error) {
301
+ recordResult('task', 'create', 'CRASH', error instanceof Error ? error.message : String(error));
302
+ }
303
+ // Test batch_create action
304
+ try {
305
+ const start = Date.now();
306
+ const results = await batchCreateTasks({
307
+ tasks: [
308
+ {
309
+ title: 'Test Task 2',
310
+ priority: 1
311
+ },
312
+ {
313
+ title: 'Test Task 3',
314
+ priority: 3
315
+ }
316
+ ]
317
+ });
318
+ taskId2 = results.results[0]?.task_id;
319
+ recordResult('task', 'batch_create', results.success ? 'PASS' : 'FAIL', undefined, Date.now() - start);
320
+ }
321
+ catch (error) {
322
+ recordResult('task', 'batch_create', 'CRASH', error instanceof Error ? error.message : String(error));
323
+ }
324
+ // Test get action
325
+ try {
326
+ const start = Date.now();
327
+ if (taskId1) {
328
+ const result = await getTask({ task_id: taskId1 });
329
+ recordResult('task', 'get', result.found ? 'PASS' : 'FAIL', undefined, Date.now() - start);
330
+ }
331
+ else {
332
+ recordResult('task', 'get', 'FAIL', 'No task ID available');
333
+ }
334
+ }
335
+ catch (error) {
336
+ recordResult('task', 'get', 'CRASH', error instanceof Error ? error.message : String(error));
337
+ }
338
+ // Test list action
339
+ try {
340
+ const start = Date.now();
341
+ const result = await listTasks({});
342
+ recordResult('task', 'list', result.count >= 0 ? 'PASS' : 'FAIL', undefined, Date.now() - start);
343
+ }
344
+ catch (error) {
345
+ recordResult('task', 'list', 'CRASH', error instanceof Error ? error.message : String(error));
346
+ }
347
+ // Test update action
348
+ try {
349
+ const start = Date.now();
350
+ if (taskId1) {
351
+ await updateTask({
352
+ task_id: taskId1,
353
+ description: 'Updated description',
354
+ priority: 3
355
+ });
356
+ recordResult('task', 'update', 'PASS', undefined, Date.now() - start);
357
+ }
358
+ else {
359
+ recordResult('task', 'update', 'FAIL', 'No task ID available');
360
+ }
361
+ }
362
+ catch (error) {
363
+ recordResult('task', 'update', 'CRASH', error instanceof Error ? error.message : String(error));
364
+ }
365
+ // Test move action
366
+ try {
367
+ const start = Date.now();
368
+ if (taskId1) {
369
+ await moveTask({ task_id: taskId1, new_status: 'in_progress' });
370
+ recordResult('task', 'move', 'PASS', undefined, Date.now() - start);
371
+ }
372
+ else {
373
+ recordResult('task', 'move', 'FAIL', 'No task ID available');
374
+ }
375
+ }
376
+ catch (error) {
377
+ recordResult('task', 'move', 'CRASH', error instanceof Error ? error.message : String(error));
378
+ }
379
+ // Test link action
380
+ try {
381
+ const start = Date.now();
382
+ if (taskId1) {
383
+ await linkTask({ task_id: taskId1, link_type: 'decision', target_id: 'test-decision-1' });
384
+ recordResult('task', 'link', 'PASS', undefined, Date.now() - start);
385
+ }
386
+ else {
387
+ recordResult('task', 'link', 'FAIL', 'No task ID available');
388
+ }
389
+ }
390
+ catch (error) {
391
+ recordResult('task', 'link', 'CRASH', error instanceof Error ? error.message : String(error));
392
+ }
393
+ // Test add_dependency action
394
+ try {
395
+ const start = Date.now();
396
+ if (taskId1 && taskId2) {
397
+ await addDependency({ blocker_task_id: taskId1, blocked_task_id: taskId2 });
398
+ recordResult('task', 'add_dependency', 'PASS', undefined, Date.now() - start);
399
+ }
400
+ else {
401
+ recordResult('task', 'add_dependency', 'FAIL', 'Need two task IDs');
402
+ }
403
+ }
404
+ catch (error) {
405
+ recordResult('task', 'add_dependency', 'CRASH', error instanceof Error ? error.message : String(error));
406
+ }
407
+ // Test get_dependencies action
408
+ try {
409
+ const start = Date.now();
410
+ if (taskId1) {
411
+ await getDependencies({ task_id: taskId1 });
412
+ recordResult('task', 'get_dependencies', 'PASS', undefined, Date.now() - start);
413
+ }
414
+ else {
415
+ recordResult('task', 'get_dependencies', 'FAIL', 'No task ID available');
416
+ }
417
+ }
418
+ catch (error) {
419
+ recordResult('task', 'get_dependencies', 'CRASH', error instanceof Error ? error.message : String(error));
420
+ }
421
+ // Test remove_dependency action
422
+ try {
423
+ const start = Date.now();
424
+ if (taskId1 && taskId2) {
425
+ await removeDependency({ blocker_task_id: taskId1, blocked_task_id: taskId2 });
426
+ recordResult('task', 'remove_dependency', 'PASS', undefined, Date.now() - start);
427
+ }
428
+ else {
429
+ recordResult('task', 'remove_dependency', 'FAIL', 'Need two task IDs');
430
+ }
431
+ }
432
+ catch (error) {
433
+ recordResult('task', 'remove_dependency', 'CRASH', error instanceof Error ? error.message : String(error));
434
+ }
435
+ // Test archive action
436
+ try {
437
+ const start = Date.now();
438
+ if (taskId1) {
439
+ await archiveTask({ task_id: taskId1 });
440
+ recordResult('task', 'archive', 'PASS', undefined, Date.now() - start);
441
+ }
442
+ else {
443
+ recordResult('task', 'archive', 'FAIL', 'No task ID available');
444
+ }
445
+ }
446
+ catch (error) {
447
+ recordResult('task', 'archive', 'CRASH', error instanceof Error ? error.message : String(error));
448
+ }
449
+ }
450
+ async function runAllTests() {
451
+ log('Starting comprehensive MCP Sqlew feature test...\n');
452
+ // Ensure test directory exists
453
+ const testDir = path.dirname(TEST_DB_PATH);
454
+ if (!fs.existsSync(testDir)) {
455
+ fs.mkdirSync(testDir, { recursive: true });
456
+ }
457
+ // Remove old test database if exists
458
+ if (fs.existsSync(TEST_DB_PATH)) {
459
+ fs.unlinkSync(TEST_DB_PATH);
460
+ }
461
+ // Initialize test database
462
+ try {
463
+ await initializeDatabase({ databaseType: 'sqlite', connection: { filename: TEST_DB_PATH } });
464
+ log('✅ Database initialized successfully\n');
465
+ }
466
+ catch (error) {
467
+ log(`❌ Failed to initialize database: ${error}`);
468
+ process.exit(1);
469
+ }
470
+ try {
471
+ await testDecisionTool();
472
+ await testMessageTool();
473
+ await testFileTool();
474
+ await testConstraintTool();
475
+ await testStatsTool();
476
+ await testConfigTool();
477
+ await testTaskTool();
478
+ }
479
+ finally {
480
+ await closeDatabase();
481
+ }
482
+ // Print summary
483
+ log('\n\n=== TEST SUMMARY ===');
484
+ const passed = results.filter(r => r.status === 'PASS').length;
485
+ const failed = results.filter(r => r.status === 'FAIL').length;
486
+ const crashed = results.filter(r => r.status === 'CRASH').length;
487
+ log(`Total tests: ${results.length}`);
488
+ log(`✅ Passed: ${passed}`);
489
+ log(`❌ Failed: ${failed}`);
490
+ log(`💥 Crashed: ${crashed}`);
491
+ if (crashed > 0) {
492
+ log('\n=== CRASHES DETECTED ===');
493
+ results.filter(r => r.status === 'CRASH').forEach(r => {
494
+ log(`💥 ${r.tool}.${r.action}: ${r.error}`);
495
+ });
496
+ }
497
+ if (failed > 0) {
498
+ log('\n=== FAILURES ===');
499
+ results.filter(r => r.status === 'FAIL').forEach(r => {
500
+ log(`❌ ${r.tool}.${r.action}: ${r.error || 'Unknown failure'}`);
501
+ });
502
+ }
503
+ // Export results as JSON
504
+ const resultsPath = path.join(testDir, 'test-results.json');
505
+ fs.writeFileSync(resultsPath, JSON.stringify(results, null, 2));
506
+ log(`\n📝 Detailed results saved to ${resultsPath}`);
507
+ process.exit(crashed > 0 ? 1 : 0);
508
+ }
509
+ runAllTests().catch(error => {
510
+ console.error('💥 Fatal error during testing:', error);
511
+ console.error(error.stack);
512
+ process.exit(1);
513
+ });
514
+ //# sourceMappingURL=all-features.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"all-features.test.js","sourceRoot":"","sources":["../../src/tests/all-features.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"constraints.d.ts","sourceRoot":"","sources":["../../src/tools/constraints.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAkBvD,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,EAG7B,MAAM,aAAa,CAAC;AAErB;;;GAGG;AAEH;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,qBAAqB,CAAC,CAwFhC;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,sBAAsB,CAAC,CAuDjC;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,0BAA0B,EAClC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,4BAA4B,CAAC,CAgCvC;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,GAAG,CAsBpC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,GAAG,CAuIvC"}
1
+ {"version":3,"file":"constraints.d.ts","sourceRoot":"","sources":["../../src/tools/constraints.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAmBvD,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,EAG7B,MAAM,aAAa,CAAC;AAErB;;;GAGG;AAEH;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,qBAAqB,CAAC,CAwFhC;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,sBAAsB,CAAC,CAyDjC;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,0BAA0B,EAClC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,4BAA4B,CAAC,CAgCvC;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,GAAG,CAsBpC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,GAAG,CAuIvC"}
@@ -8,6 +8,7 @@ import { getAdapter, getOrCreateAgent, getLayerId, getOrCreateTag, getOrCreateCa
8
8
  import { STRING_TO_PRIORITY, DEFAULT_PRIORITY, SQLITE_TRUE, SQLITE_FALSE } from '../constants.js';
9
9
  import { validateCategory, validatePriority } from '../utils/validators.js';
10
10
  import { logConstraintAdd } from '../utils/activity-logging.js';
11
+ import { parseStringArray } from '../utils/param-parser.js';
11
12
  /**
12
13
  * Get or create constraint category ID
13
14
  * Uses INSERT OR IGNORE for idempotent operation
@@ -46,11 +47,10 @@ export async function addConstraint(params, adapter) {
46
47
  }
47
48
  // Use transaction for multi-table insert
48
49
  const result = await actualAdapter.transaction(async (trx) => {
49
- const knex = actualAdapter.getKnex();
50
50
  // Get or create category
51
51
  const categoryId = await getOrCreateCategoryId(actualAdapter, params.category, trx);
52
- // Get or create created_by agent
53
- const createdBy = params.created_by || 'system';
52
+ // Get or create created_by agent (default to generic pool)
53
+ const createdBy = params.created_by || '';
54
54
  const agentId = await getOrCreateAgent(actualAdapter, createdBy, trx);
55
55
  // Calculate timestamp
56
56
  const ts = Math.floor(Date.now() / 1000);
@@ -61,12 +61,14 @@ export async function addConstraint(params, adapter) {
61
61
  constraint_text: params.constraint_text,
62
62
  priority: priority,
63
63
  active: SQLITE_TRUE,
64
- created_by: agentId,
64
+ agent_id: agentId,
65
65
  ts: ts
66
66
  });
67
67
  // Insert m_tags if provided
68
68
  if (params.tags && params.tags.length > 0) {
69
- for (const tagName of params.tags) {
69
+ // Parse tags (handles both arrays and JSON strings from MCP)
70
+ const tags = parseStringArray(params.tags);
71
+ for (const tagName of tags) {
70
72
  const tagId = await getOrCreateTag(actualAdapter, tagName, trx);
71
73
  await trx('t_constraint_tags').insert({
72
74
  constraint_id: Number(constraintId),
@@ -75,7 +77,7 @@ export async function addConstraint(params, adapter) {
75
77
  }
76
78
  }
77
79
  // Activity logging (replaces trigger)
78
- await logConstraintAdd(knex, {
80
+ await logConstraintAdd(trx, {
79
81
  constraint_id: Number(constraintId),
80
82
  category: params.category,
81
83
  constraint_text: params.constraint_text,
@@ -125,8 +127,10 @@ export async function getConstraints(params, adapter) {
125
127
  }
126
128
  // Filter by m_tags (OR logic - match ANY tag)
127
129
  if (params.tags && params.tags.length > 0) {
130
+ // Parse tags (handles both arrays and JSON strings from MCP)
131
+ const tags = parseStringArray(params.tags);
128
132
  query = query.where((builder) => {
129
- for (const tag of params.tags) {
133
+ for (const tag of tags) {
130
134
  builder.orWhere('tags', 'like', `%${tag}%`);
131
135
  }
132
136
  });
@@ -1 +1 @@
1
- {"version":3,"file":"constraints.js","sourceRoot":"","sources":["../../src/tools/constraints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constraints.js","sourceRoot":"","sources":["../../src/tools/constraints.ts"],"names":[],"mappings":"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"}