sqlew 2.1.3 → 3.0.2

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 (84) hide show
  1. package/CHANGELOG.md +891 -535
  2. package/README.md +302 -613
  3. package/assets/kanban-style.png +0 -0
  4. package/assets/schema.sql +531 -402
  5. package/dist/database.d.ts +9 -0
  6. package/dist/database.d.ts.map +1 -1
  7. package/dist/database.js +33 -34
  8. package/dist/database.js.map +1 -1
  9. package/dist/index.js +1024 -21
  10. package/dist/index.js.map +1 -1
  11. package/dist/migrations/add-task-tables.d.ts +47 -0
  12. package/dist/migrations/add-task-tables.d.ts.map +1 -0
  13. package/dist/migrations/add-task-tables.js +285 -0
  14. package/dist/migrations/add-task-tables.js.map +1 -0
  15. package/dist/migrations/index.d.ts +96 -0
  16. package/dist/migrations/index.d.ts.map +1 -0
  17. package/dist/migrations/index.js +239 -0
  18. package/dist/migrations/index.js.map +1 -0
  19. package/dist/migrations/migrate-decisions-to-tasks.d.ts +61 -0
  20. package/dist/migrations/migrate-decisions-to-tasks.d.ts.map +1 -0
  21. package/dist/migrations/migrate-decisions-to-tasks.js +442 -0
  22. package/dist/migrations/migrate-decisions-to-tasks.js.map +1 -0
  23. package/dist/schema.d.ts.map +1 -1
  24. package/dist/schema.js +14 -3
  25. package/dist/schema.js.map +1 -1
  26. package/dist/tools/constraints.d.ts +4 -0
  27. package/dist/tools/constraints.d.ts.map +1 -1
  28. package/dist/tools/constraints.js +6 -27
  29. package/dist/tools/constraints.js.map +1 -1
  30. package/dist/tools/context.d.ts +17 -1
  31. package/dist/tools/context.d.ts.map +1 -1
  32. package/dist/tools/context.js +195 -190
  33. package/dist/tools/context.js.map +1 -1
  34. package/dist/tools/files.d.ts.map +1 -1
  35. package/dist/tools/files.js +113 -166
  36. package/dist/tools/files.js.map +1 -1
  37. package/dist/tools/messaging.d.ts +2 -9
  38. package/dist/tools/messaging.d.ts.map +1 -1
  39. package/dist/tools/messaging.js +67 -126
  40. package/dist/tools/messaging.js.map +1 -1
  41. package/dist/tools/tasks.d.ts +90 -0
  42. package/dist/tools/tasks.d.ts.map +1 -0
  43. package/dist/tools/tasks.js +732 -0
  44. package/dist/tools/tasks.js.map +1 -0
  45. package/dist/tools/utils.d.ts +8 -1
  46. package/dist/tools/utils.d.ts.map +1 -1
  47. package/dist/tools/utils.js +50 -21
  48. package/dist/tools/utils.js.map +1 -1
  49. package/dist/types.d.ts +14 -0
  50. package/dist/types.d.ts.map +1 -1
  51. package/dist/utils/batch.d.ts +69 -0
  52. package/dist/utils/batch.d.ts.map +1 -0
  53. package/dist/utils/batch.js +148 -0
  54. package/dist/utils/batch.js.map +1 -0
  55. package/dist/utils/query-builder.d.ts +68 -0
  56. package/dist/utils/query-builder.d.ts.map +1 -0
  57. package/dist/utils/query-builder.js +116 -0
  58. package/dist/utils/query-builder.js.map +1 -0
  59. package/dist/utils/task-stale-detection.d.ts +28 -0
  60. package/dist/utils/task-stale-detection.d.ts.map +1 -0
  61. package/dist/utils/task-stale-detection.js +92 -0
  62. package/dist/utils/task-stale-detection.js.map +1 -0
  63. package/dist/utils/validators.d.ts +57 -0
  64. package/dist/utils/validators.d.ts.map +1 -0
  65. package/dist/utils/validators.js +117 -0
  66. package/dist/utils/validators.js.map +1 -0
  67. package/docs/AI_AGENT_GUIDE.md +1471 -0
  68. package/{ARCHITECTURE.md → docs/ARCHITECTURE.md} +636 -636
  69. package/docs/BEST_PRACTICES.md +481 -0
  70. package/docs/DECISION_TO_TASK_MIGRATION_GUIDE.md +457 -0
  71. package/docs/MIGRATION_CHAIN.md +280 -0
  72. package/{MIGRATION_v2.md → docs/MIGRATION_v2.md} +538 -538
  73. package/docs/SHARED_CONCEPTS.md +339 -0
  74. package/docs/TASK_ACTIONS.md +854 -0
  75. package/docs/TASK_LINKING.md +729 -0
  76. package/docs/TASK_MIGRATION.md +701 -0
  77. package/docs/TASK_OVERVIEW.md +363 -0
  78. package/docs/TASK_SYSTEM.md +1244 -0
  79. package/docs/TOOL_REFERENCE.md +471 -0
  80. package/docs/TOOL_SELECTION.md +279 -0
  81. package/docs/WORKFLOWS.md +602 -0
  82. package/docs/refactoring-summary-2025-10-17.md +365 -0
  83. package/docs/requirement-2025-10-17.md +508 -0
  84. package/package.json +64 -63
@@ -0,0 +1,442 @@
1
+ /**
2
+ * Migration: Convert Task-Like Decisions to Tasks
3
+ *
4
+ * This migration detects decisions being used for task/todo tracking
5
+ * and migrates them to the dedicated task management system.
6
+ *
7
+ * Features:
8
+ * - Heuristic detection of task-like decisions
9
+ * - Dry-run mode to preview before executing
10
+ * - Confidence scoring for each detection
11
+ * - Links tasks to original decisions for traceability
12
+ * - Optional deprecation of original decisions
13
+ *
14
+ * Detection Heuristics:
15
+ * - Keys containing: task_, _task, todo_, _todo, wip_, _wip, implement_, fix_
16
+ * - Tags containing: task, todo, in_progress, wip, blocked, done
17
+ * - Values containing: TODO:, WIP:, DONE:, BLOCKED:, [ ], [x]
18
+ * - Status indicators in value (e.g., "Status: in_progress")
19
+ */
20
+ /**
21
+ * Extract status from decision value
22
+ *
23
+ * Patterns:
24
+ * - "Status: in_progress"
25
+ * - "TODO: Description"
26
+ * - "WIP: Description"
27
+ * - "DONE: Description"
28
+ * - "BLOCKED: Description"
29
+ * - "[x] Description" (done)
30
+ * - "[ ] Description" (todo)
31
+ */
32
+ function extractStatus(value) {
33
+ const valueLower = value.toLowerCase();
34
+ // Check for explicit status markers
35
+ if (valueLower.includes('status:')) {
36
+ const statusMatch = valueLower.match(/status:\s*(\w+)/);
37
+ if (statusMatch) {
38
+ const status = statusMatch[1];
39
+ if (status.includes('progress') || status === 'wip')
40
+ return 'in_progress';
41
+ if (status.includes('review') || status.includes('waiting'))
42
+ return 'waiting_review';
43
+ if (status === 'blocked')
44
+ return 'blocked';
45
+ if (status === 'done' || status === 'complete')
46
+ return 'done';
47
+ if (status === 'todo' || status === 'pending')
48
+ return 'todo';
49
+ }
50
+ }
51
+ // Check for prefix markers
52
+ if (valueLower.startsWith('wip:') || valueLower.startsWith('in progress:'))
53
+ return 'in_progress';
54
+ if (valueLower.startsWith('done:') || valueLower.startsWith('completed:'))
55
+ return 'done';
56
+ if (valueLower.startsWith('blocked:'))
57
+ return 'blocked';
58
+ if (valueLower.startsWith('todo:') || valueLower.startsWith('pending:'))
59
+ return 'todo';
60
+ if (valueLower.startsWith('review:') || valueLower.startsWith('waiting:'))
61
+ return 'waiting_review';
62
+ // Check for markdown checkboxes
63
+ if (value.trim().startsWith('[x]') || value.trim().startsWith('[X]'))
64
+ return 'done';
65
+ if (value.trim().startsWith('[ ]'))
66
+ return 'todo';
67
+ // Default to todo
68
+ return 'todo';
69
+ }
70
+ /**
71
+ * Extract priority from decision value or tags
72
+ */
73
+ function extractPriority(value, tags) {
74
+ const valueLower = value.toLowerCase();
75
+ const allTags = tags.join(',').toLowerCase();
76
+ // Check for explicit priority markers
77
+ if (valueLower.includes('priority:') || valueLower.includes('p:')) {
78
+ if (valueLower.includes('critical') || valueLower.includes('p0') || valueLower.includes('p:0'))
79
+ return 'critical';
80
+ if (valueLower.includes('high') || valueLower.includes('p1') || valueLower.includes('p:1'))
81
+ return 'high';
82
+ if (valueLower.includes('medium') || valueLower.includes('p2') || valueLower.includes('p:2'))
83
+ return 'medium';
84
+ if (valueLower.includes('low') || valueLower.includes('p3') || valueLower.includes('p:3'))
85
+ return 'low';
86
+ }
87
+ // Check tags
88
+ if (allTags.includes('critical') || allTags.includes('urgent'))
89
+ return 'critical';
90
+ if (allTags.includes('high') || allTags.includes('important'))
91
+ return 'high';
92
+ if (allTags.includes('low'))
93
+ return 'low';
94
+ // Default to medium
95
+ return 'medium';
96
+ }
97
+ /**
98
+ * Clean task title from decision key
99
+ *
100
+ * Removes prefixes like "task_", "todo_", "wip_"
101
+ * Converts snake_case to Title Case
102
+ */
103
+ function cleanTaskTitle(key) {
104
+ // Remove common prefixes
105
+ let cleaned = key
106
+ .replace(/^task_/i, '')
107
+ .replace(/^todo_/i, '')
108
+ .replace(/^wip_/i, '')
109
+ .replace(/^implement_/i, '')
110
+ .replace(/^fix_/i, '')
111
+ .replace(/_task$/i, '')
112
+ .replace(/_todo$/i, '');
113
+ // Convert snake_case to Title Case
114
+ cleaned = cleaned
115
+ .split('_')
116
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
117
+ .join(' ');
118
+ return cleaned;
119
+ }
120
+ /**
121
+ * Extract description from decision value
122
+ *
123
+ * Removes status prefixes and markers
124
+ */
125
+ function extractDescription(value) {
126
+ let description = value;
127
+ // Remove status prefixes
128
+ description = description
129
+ .replace(/^(TODO|WIP|DONE|BLOCKED|REVIEW|WAITING|STATUS):\s*/i, '')
130
+ .replace(/^Status:\s*\w+\s*-?\s*/i, '')
131
+ .replace(/^\[[ xX]\]\s*/, '');
132
+ // Trim
133
+ description = description.trim();
134
+ return description;
135
+ }
136
+ /**
137
+ * Detect if a decision is task-like
138
+ *
139
+ * @param key - Decision key
140
+ * @param value - Decision value
141
+ * @param tags - Decision tags
142
+ * @returns Confidence score (0-100) and reasons
143
+ */
144
+ function detectTaskLikeDecision(key, value, tags) {
145
+ let confidence = 0;
146
+ const reasons = [];
147
+ const keyLower = key.toLowerCase();
148
+ const valueLower = value.toLowerCase();
149
+ const allTags = tags.join(',').toLowerCase();
150
+ // Key pattern matching (high confidence)
151
+ if (keyLower.includes('task_') || keyLower.includes('_task')) {
152
+ confidence += 30;
153
+ reasons.push('Key contains "task"');
154
+ }
155
+ if (keyLower.includes('todo_') || keyLower.includes('_todo')) {
156
+ confidence += 30;
157
+ reasons.push('Key contains "todo"');
158
+ }
159
+ if (keyLower.includes('wip_') || keyLower.includes('_wip')) {
160
+ confidence += 25;
161
+ reasons.push('Key contains "wip"');
162
+ }
163
+ if (keyLower.startsWith('implement_') || keyLower.startsWith('fix_')) {
164
+ confidence += 20;
165
+ reasons.push('Key starts with "implement" or "fix"');
166
+ }
167
+ // Tag matching (high confidence)
168
+ if (allTags.includes('task')) {
169
+ confidence += 25;
170
+ reasons.push('Has "task" tag');
171
+ }
172
+ if (allTags.includes('todo')) {
173
+ confidence += 25;
174
+ reasons.push('Has "todo" tag');
175
+ }
176
+ if (allTags.includes('in_progress') || allTags.includes('wip')) {
177
+ confidence += 20;
178
+ reasons.push('Has "in_progress" or "wip" tag');
179
+ }
180
+ if (allTags.includes('blocked')) {
181
+ confidence += 20;
182
+ reasons.push('Has "blocked" tag');
183
+ }
184
+ if (allTags.includes('done') && allTags.includes('task')) {
185
+ confidence += 15;
186
+ reasons.push('Has both "done" and "task" tags');
187
+ }
188
+ // Value pattern matching (medium confidence)
189
+ if (valueLower.includes('status:')) {
190
+ confidence += 15;
191
+ reasons.push('Value contains "Status:"');
192
+ }
193
+ if (valueLower.startsWith('todo:') || valueLower.startsWith('wip:') || valueLower.startsWith('done:')) {
194
+ confidence += 15;
195
+ reasons.push('Value starts with status prefix');
196
+ }
197
+ if (value.trim().match(/^\[[ xX]\]/)) {
198
+ confidence += 15;
199
+ reasons.push('Value starts with markdown checkbox');
200
+ }
201
+ if (valueLower.includes('blocked:')) {
202
+ confidence += 15;
203
+ reasons.push('Value contains "blocked:"');
204
+ }
205
+ // Cap at 100
206
+ confidence = Math.min(100, confidence);
207
+ return { confidence, reasons };
208
+ }
209
+ /**
210
+ * Detect all task-like decisions in the database
211
+ *
212
+ * @param db - Database connection
213
+ * @param minConfidence - Minimum confidence threshold (0-100, default: 50)
214
+ * @returns Array of decision-task mappings
215
+ */
216
+ export function detectTaskLikeDecisions(db, minConfidence = 50) {
217
+ const mappings = [];
218
+ try {
219
+ // Query all active decisions with their tags and layers
220
+ const decisions = db.prepare(`
221
+ SELECT
222
+ ck.key as decision_key,
223
+ d.value,
224
+ l.name as layer,
225
+ d.agent_id,
226
+ a.name as agent_name,
227
+ GROUP_CONCAT(t.name, ',') as tags
228
+ FROM t_decisions d
229
+ JOIN m_context_keys ck ON d.key_id = ck.id
230
+ LEFT JOIN m_layers l ON d.layer_id = l.id
231
+ LEFT JOIN m_agents a ON d.agent_id = a.id
232
+ LEFT JOIN t_decision_tags dt ON d.key_id = dt.decision_key_id
233
+ LEFT JOIN m_tags t ON dt.tag_id = t.id
234
+ WHERE d.status = 1 -- active only
235
+ GROUP BY ck.key
236
+ `).all();
237
+ for (const decision of decisions) {
238
+ const tags = decision.tags ? decision.tags.split(',').filter(t => t.trim()) : [];
239
+ // Detect if task-like
240
+ const { confidence, reasons } = detectTaskLikeDecision(decision.decision_key, decision.value, tags);
241
+ if (confidence >= minConfidence) {
242
+ const mapping = {
243
+ decisionKey: decision.decision_key,
244
+ taskTitle: cleanTaskTitle(decision.decision_key),
245
+ description: extractDescription(decision.value),
246
+ status: extractStatus(decision.value),
247
+ priority: extractPriority(decision.value, tags),
248
+ tags: tags.filter(t => !['task', 'todo', 'wip', 'in_progress', 'blocked', 'done'].includes(t.toLowerCase())),
249
+ layer: decision.layer,
250
+ assignee: decision.agent_name,
251
+ confidence,
252
+ detectionReasons: reasons,
253
+ };
254
+ mappings.push(mapping);
255
+ }
256
+ }
257
+ // Sort by confidence (highest first)
258
+ mappings.sort((a, b) => b.confidence - a.confidence);
259
+ return mappings;
260
+ }
261
+ catch (error) {
262
+ const message = error instanceof Error ? error.message : String(error);
263
+ throw new Error(`Failed to detect task-like decisions: ${message}`);
264
+ }
265
+ }
266
+ /**
267
+ * Migrate decisions to tasks
268
+ *
269
+ * @param db - Database connection
270
+ * @param dryRun - If true, only preview without executing (default: true)
271
+ * @param minConfidence - Minimum confidence threshold (default: 50)
272
+ * @param deprecateOriginal - If true, mark original decisions as deprecated (default: false)
273
+ * @returns Migration result with mappings
274
+ */
275
+ export function migrateDecisionsToTasks(db, dryRun = true, minConfidence = 50, deprecateOriginal = false) {
276
+ const details = [];
277
+ try {
278
+ // Detect task-like decisions
279
+ const mappings = detectTaskLikeDecisions(db, minConfidence);
280
+ if (mappings.length === 0) {
281
+ return {
282
+ success: true,
283
+ message: 'No task-like decisions detected',
284
+ details: [`Minimum confidence threshold: ${minConfidence}%`],
285
+ mappings: [],
286
+ };
287
+ }
288
+ details.push(`Detected ${mappings.length} task-like decisions (confidence ≥ ${minConfidence}%)`);
289
+ if (dryRun) {
290
+ details.push('DRY-RUN MODE: No changes will be made');
291
+ details.push('');
292
+ details.push('Migration preview:');
293
+ mappings.forEach((mapping, i) => {
294
+ details.push('');
295
+ details.push(`${i + 1}. Decision: ${mapping.decisionKey} (${mapping.confidence}% confidence)`);
296
+ details.push(` → Task: ${mapping.taskTitle}`);
297
+ details.push(` → Status: ${mapping.status}`);
298
+ details.push(` → Priority: ${mapping.priority}`);
299
+ if (mapping.tags.length > 0) {
300
+ details.push(` → Tags: ${mapping.tags.join(', ')}`);
301
+ }
302
+ if (mapping.layer) {
303
+ details.push(` → Layer: ${mapping.layer}`);
304
+ }
305
+ if (mapping.assignee) {
306
+ details.push(` → Assignee: ${mapping.assignee}`);
307
+ }
308
+ details.push(` → Detection reasons: ${mapping.detectionReasons.join(', ')}`);
309
+ });
310
+ return {
311
+ success: true,
312
+ message: `Dry-run complete: ${mappings.length} decisions would be migrated`,
313
+ details,
314
+ mappings,
315
+ };
316
+ }
317
+ // Execute migration in transaction
318
+ db.exec('BEGIN TRANSACTION');
319
+ try {
320
+ const createdTasks = [];
321
+ for (const mapping of mappings) {
322
+ // 1. Get IDs for foreign keys
323
+ const statusId = db.prepare('SELECT id FROM m_task_statuses WHERE name = ?').get(mapping.status);
324
+ if (!statusId) {
325
+ throw new Error(`Invalid status: ${mapping.status}`);
326
+ }
327
+ let layerId = null;
328
+ if (mapping.layer) {
329
+ const layer = db.prepare('SELECT id FROM m_layers WHERE name = ?').get(mapping.layer);
330
+ layerId = layer ? layer.id : null;
331
+ }
332
+ let assigneeId = null;
333
+ if (mapping.assignee) {
334
+ const agent = db.prepare('SELECT id FROM m_agents WHERE name = ?').get(mapping.assignee);
335
+ assigneeId = agent ? agent.id : null;
336
+ }
337
+ // Priority mapping
338
+ const priorityMap = {
339
+ low: 1,
340
+ medium: 2,
341
+ high: 3,
342
+ critical: 4,
343
+ };
344
+ const priority = priorityMap[mapping.priority] || 2;
345
+ // 2. Insert task
346
+ const taskResult = db.prepare(`
347
+ INSERT INTO t_tasks (title, status_id, priority, assigned_agent_id, layer_id, created_ts, updated_ts)
348
+ VALUES (?, ?, ?, ?, ?, unixepoch(), unixepoch())
349
+ `).run(mapping.taskTitle, statusId.id, priority, assigneeId, layerId);
350
+ const taskId = taskResult.lastInsertRowid;
351
+ createdTasks.push(taskId);
352
+ // 3. Insert task details (description)
353
+ db.prepare(`
354
+ INSERT INTO t_task_details (task_id, description)
355
+ VALUES (?, ?)
356
+ `).run(taskId, mapping.description);
357
+ // 4. Insert task tags
358
+ for (const tagName of mapping.tags) {
359
+ // Get or create tag
360
+ db.prepare('INSERT OR IGNORE INTO m_tags (name) VALUES (?)').run(tagName);
361
+ const tag = db.prepare('SELECT id FROM m_tags WHERE name = ?').get(tagName);
362
+ db.prepare(`
363
+ INSERT INTO t_task_tags (task_id, tag_id)
364
+ VALUES (?, ?)
365
+ `).run(taskId, tag.id);
366
+ }
367
+ // 5. Link task to original decision
368
+ const decisionKey = db.prepare('SELECT id FROM m_context_keys WHERE key = ?').get(mapping.decisionKey);
369
+ if (decisionKey) {
370
+ db.prepare(`
371
+ INSERT INTO t_task_decision_links (task_id, decision_key_id)
372
+ VALUES (?, ?)
373
+ `).run(taskId, decisionKey.id);
374
+ }
375
+ details.push(`✓ Created task ${taskId}: ${mapping.taskTitle} (from decision: ${mapping.decisionKey})`);
376
+ // 6. Optionally deprecate original decision
377
+ if (deprecateOriginal && decisionKey) {
378
+ db.prepare(`
379
+ UPDATE t_decisions
380
+ SET status = 2 -- deprecated
381
+ WHERE key_id = ?
382
+ `).run(decisionKey.id);
383
+ details.push(` → Deprecated original decision: ${mapping.decisionKey}`);
384
+ }
385
+ }
386
+ db.exec('COMMIT');
387
+ return {
388
+ success: true,
389
+ message: `Successfully migrated ${createdTasks.length} decisions to tasks`,
390
+ details,
391
+ mappings,
392
+ };
393
+ }
394
+ catch (error) {
395
+ db.exec('ROLLBACK');
396
+ throw error;
397
+ }
398
+ }
399
+ catch (error) {
400
+ const message = error instanceof Error ? error.message : String(error);
401
+ return {
402
+ success: false,
403
+ message: `Migration failed: ${message}`,
404
+ details,
405
+ };
406
+ }
407
+ }
408
+ /**
409
+ * Get migration info
410
+ */
411
+ export function getMigrationInfo() {
412
+ return `
413
+ Migration: Convert Task-Like Decisions to Tasks
414
+
415
+ This migration detects decisions being used for task/todo tracking
416
+ and migrates them to the dedicated task management system.
417
+
418
+ Detection Heuristics:
419
+ - Keys containing: task_, _task, todo_, _todo, wip_, _wip, implement_, fix_
420
+ - Tags containing: task, todo, in_progress, wip, blocked, done
421
+ - Values containing: TODO:, WIP:, DONE:, BLOCKED:, Status:, [ ], [x]
422
+
423
+ Features:
424
+ - Dry-run mode to preview before executing
425
+ - Confidence scoring (0-100%) for each detection
426
+ - Links tasks to original decisions for traceability
427
+ - Optional deprecation of original decisions
428
+ - Adjustable confidence threshold
429
+
430
+ Usage:
431
+ 1. Dry-run: migrateDecisionsToTasks(db, true, 50, false)
432
+ 2. Execute: migrateDecisionsToTasks(db, false, 70, true)
433
+ - minConfidence=70: Only migrate high-confidence detections
434
+ - deprecateOriginal=true: Mark original decisions as deprecated
435
+
436
+ This migration is safe and reversible via:
437
+ - Original decisions remain linked to tasks
438
+ - Can be re-run with different confidence thresholds
439
+ - Hard-delete function available for manual cleanup
440
+ `.trim();
441
+ }
442
+ //# sourceMappingURL=migrate-decisions-to-tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-decisions-to-tasks.js","sourceRoot":"","sources":["../../src/migrations/migrate-decisions-to-tasks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAwBH;;;;;;;;;;;GAWG;AACH,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAEvC,oCAAoC;IACpC,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACxD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,MAAM,KAAK,KAAK;gBAAE,OAAO,aAAa,CAAC;YAC1E,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,OAAO,gBAAgB,CAAC;YACrF,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAC3C,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,UAAU;gBAAE,OAAO,MAAM,CAAC;YAC9D,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,aAAa,CAAC;IACjG,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,MAAM,CAAC;IACzF,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,MAAM,CAAC;IACvF,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAEnG,gCAAgC;IAChC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACpF,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAElD,kBAAkB;IAClB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,KAAa,EAAE,IAAc;IACpD,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAE7C,sCAAsC;IACtC,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAClE,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,UAAU,CAAC;QAClH,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QAC1G,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,QAAQ,CAAC;QAC9G,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1G,CAAC;IAED,aAAa;IACb,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,UAAU,CAAC;IAClF,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,MAAM,CAAC;IAC7E,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE1C,oBAAoB;IACpB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,GAAW;IACjC,yBAAyB;IACzB,IAAI,OAAO,GAAG,GAAG;SACd,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAE1B,mCAAmC;IACnC,OAAO,GAAG,OAAO;SACd,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACvE,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,KAAa;IACvC,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,yBAAyB;IACzB,WAAW,GAAG,WAAW;SACtB,OAAO,CAAC,qDAAqD,EAAE,EAAE,CAAC;SAClE,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC;SACtC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAEhC,OAAO;IACP,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAEjC,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,sBAAsB,CAC7B,GAAW,EACX,KAAa,EACb,IAAc;IAEd,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAE7C,yCAAyC;IACzC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7D,UAAU,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7D,UAAU,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,UAAU,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACrE,UAAU,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACvD,CAAC;IAED,iCAAiC;IACjC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,UAAU,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,UAAU,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/D,UAAU,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,UAAU,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,UAAU,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAClD,CAAC;IAED,6CAA6C;IAC7C,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,UAAU,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACtG,UAAU,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QACrC,UAAU,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,UAAU,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC5C,CAAC;IAED,aAAa;IACb,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAEvC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACjC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,EAAY,EACZ,gBAAwB,EAAE;IAE1B,MAAM,QAAQ,GAA0B,EAAE,CAAC;IAE3C,IAAI,CAAC;QACH,wDAAwD;QACxD,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;KAgB5B,CAAC,CAAC,GAAG,EAOJ,CAAC;QAEH,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEjF,sBAAsB;YACtB,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,sBAAsB,CACpD,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,KAAK,EACd,IAAI,CACL,CAAC;YAEF,IAAI,UAAU,IAAI,aAAa,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAwB;oBACnC,WAAW,EAAE,QAAQ,CAAC,YAAY;oBAClC,SAAS,EAAE,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC;oBAChD,WAAW,EAAE,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAC/C,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACrC,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;oBAC/C,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC5G,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,QAAQ,EAAE,QAAQ,CAAC,UAAU;oBAC7B,UAAU;oBACV,gBAAgB,EAAE,OAAO;iBAC1B,CAAC;gBAEF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;QAErD,OAAO,QAAQ,CAAC;IAElB,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,yCAAyC,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACrC,EAAY,EACZ,SAAkB,IAAI,EACtB,gBAAwB,EAAE,EAC1B,oBAA6B,KAAK;IAElC,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,uBAAuB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QAE5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,iCAAiC;gBAC1C,OAAO,EAAE,CAAC,iCAAiC,aAAa,GAAG,CAAC;gBAC5D,QAAQ,EAAE,EAAE;aACb,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,MAAM,sCAAsC,aAAa,IAAI,CAAC,CAAC;QAEjG,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAEnC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;gBAC9B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC,UAAU,eAAe,CAAC,CAAC;gBAC/F,OAAO,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/C,OAAO,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACnD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,OAAO,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxD,CAAC;gBACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAClB,OAAO,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/C,CAAC;gBACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACrB,OAAO,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACrD,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,2BAA2B,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjF,CAAC,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,qBAAqB,QAAQ,CAAC,MAAM,8BAA8B;gBAC3E,OAAO;gBACP,QAAQ;aACT,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,YAAY,GAAa,EAAE,CAAC;YAElC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,8BAA8B;gBAC9B,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAA+B,CAAC;gBAC/H,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBACvD,CAAC;gBAED,IAAI,OAAO,GAAkB,IAAI,CAAC;gBAClC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAClB,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAA+B,CAAC;oBACpH,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBACpC,CAAC;gBAED,IAAI,UAAU,GAAkB,IAAI,CAAC;gBACrC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACrB,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAA+B,CAAC;oBACvH,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBACvC,CAAC;gBAED,mBAAmB;gBACnB,MAAM,WAAW,GAA2B;oBAC1C,GAAG,EAAE,CAAC;oBACN,MAAM,EAAE,CAAC;oBACT,IAAI,EAAE,CAAC;oBACP,QAAQ,EAAE,CAAC;iBACZ,CAAC;gBACF,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAEpD,iBAAiB;gBACjB,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;SAG7B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;gBAEtE,MAAM,MAAM,GAAG,UAAU,CAAC,eAAyB,CAAC;gBACpD,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAE1B,uCAAuC;gBACvC,EAAE,CAAC,OAAO,CAAC;;;SAGV,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;gBAEpC,sBAAsB;gBACtB,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBACnC,oBAAoB;oBACpB,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC1E,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAmB,CAAC;oBAE9F,EAAE,CAAC,OAAO,CAAC;;;WAGV,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBACzB,CAAC;gBAED,oCAAoC;gBACpC,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAA+B,CAAC;gBACrI,IAAI,WAAW,EAAE,CAAC;oBAChB,EAAE,CAAC,OAAO,CAAC;;;WAGV,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;gBACjC,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,kBAAkB,MAAM,KAAK,OAAO,CAAC,SAAS,oBAAoB,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;gBAEvG,4CAA4C;gBAC5C,IAAI,iBAAiB,IAAI,WAAW,EAAE,CAAC;oBACrC,EAAE,CAAC,OAAO,CAAC;;;;WAIV,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;oBAEvB,OAAO,CAAC,IAAI,CAAC,qCAAqC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;YAED,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,yBAAyB,YAAY,CAAC,MAAM,qBAAqB;gBAC1E,OAAO;gBACP,QAAQ;aACT,CAAC;QAEJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpB,MAAM,KAAK,CAAC;QACd,CAAC;IAEH,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,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,qBAAqB,OAAO,EAAE;YACvC,OAAO;SACR,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BN,CAAC,IAAI,EAAE,CAAC;AACX,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAQ1C;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAyBnD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAUzD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAwBA;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,GAAG;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAiGA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAQ1C;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAyBnD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAUzD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAwBA;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,GAAG;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CA6GA"}
package/dist/schema.js CHANGED
@@ -100,15 +100,18 @@ export function verifySchemaIntegrity(db) {
100
100
  };
101
101
  const requiredTables = [
102
102
  'm_agents', 'm_files', 'm_context_keys', 'm_constraint_categories',
103
- 'm_layers', 'm_tags', 'm_scopes', 'm_config',
103
+ 'm_layers', 'm_tags', 'm_scopes', 'm_config', 'm_task_statuses',
104
104
  't_decisions', 't_decisions_numeric', 't_decision_history',
105
105
  't_decision_tags', 't_decision_scopes',
106
106
  't_agent_messages', 't_file_changes', 't_constraints', 't_constraint_tags',
107
107
  't_activity_log', 't_decision_templates',
108
+ 't_tasks', 't_task_details', 't_task_tags', 't_task_decision_links',
109
+ 't_task_constraint_links', 't_task_file_links',
108
110
  ];
109
111
  const requiredViews = [
110
112
  'v_tagged_decisions', 'v_active_context', 'v_layer_summary',
111
113
  'v_unread_messages_by_priority', 'v_recent_file_changes', 'v_tagged_constraints',
114
+ 'v_task_board',
112
115
  ];
113
116
  const requiredTriggers = [
114
117
  'trg_record_decision_history',
@@ -116,6 +119,9 @@ export function verifySchemaIntegrity(db) {
116
119
  'trg_log_decision_update',
117
120
  'trg_log_message_send',
118
121
  'trg_log_file_record',
122
+ 'trg_log_task_create',
123
+ 'trg_log_task_status_change',
124
+ 'trg_update_task_timestamp',
119
125
  ];
120
126
  try {
121
127
  // Check tables
@@ -159,8 +165,13 @@ export function verifySchemaIntegrity(db) {
159
165
  result.valid = false;
160
166
  }
161
167
  const configCount = db.prepare('SELECT COUNT(*) as count FROM m_config').get().count;
162
- if (configCount < 3) {
163
- result.errors.push(`Expected 3 m_config entries, found ${configCount}`);
168
+ if (configCount < 6) {
169
+ result.errors.push(`Expected 6 m_config entries, found ${configCount}`);
170
+ result.valid = false;
171
+ }
172
+ const taskStatusCount = db.prepare('SELECT COUNT(*) as count FROM m_task_statuses').get().count;
173
+ if (taskStatusCount < 6) {
174
+ result.errors.push(`Expected 6 task statuses, found ${taskStatusCount}`);
164
175
  result.valid = false;
165
176
  }
166
177
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAY;IAC3C,IAAI,CAAC;QACH,mBAAmB;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEpD,gDAAgD;QAChD,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE7B,IAAI,CAAC;YACH,4BAA4B;YAC5B,yEAAyE;YACzE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEnB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,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,gCAAgC,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAY;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,0FAA0F,CAC3F,CAAC,GAAG,EAAE,CAAC;QAER,OAAO,MAAM,KAAK,SAAS,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,EAAY;IASxC,MAAM,MAAM,GAAG;QACb,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,CAAC;QACR,YAAY,EAAE,CAAC;QACf,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,qBAAqB,EAAE,CAAC;KACzB,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,GAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACxG,MAAM,CAAC,KAAK,GAAI,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACtG,MAAM,CAAC,YAAY,GAAI,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACpH,MAAM,CAAC,MAAM,GAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACxG,MAAM,CAAC,IAAI,GAAI,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACpG,MAAM,CAAC,MAAM,GAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACxG,MAAM,CAAC,qBAAqB,GAAI,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;IACxI,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0CAA0C;IAC5C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAY;IAKhD,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,EAAc;QACvB,MAAM,EAAE,EAAc;KACvB,CAAC;IAEF,MAAM,cAAc,GAAG;QACrB,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,yBAAyB;QAClE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU;QAC5C,aAAa,EAAE,qBAAqB,EAAE,oBAAoB;QAC1D,iBAAiB,EAAE,mBAAmB;QACtC,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB;QAC1E,gBAAgB,EAAE,sBAAsB;KACzC,CAAC;IAEF,MAAM,aAAa,GAAG;QACpB,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB;QAC3D,+BAA+B,EAAE,uBAAuB,EAAE,sBAAsB;KACjF,CAAC;IAEF,MAAM,gBAAgB,GAAG;QACvB,6BAA6B;QAC7B,sBAAsB;QACtB,yBAAyB;QACzB,sBAAsB;QACtB,qBAAqB;KACtB,CAAC;IAEF,IAAI,CAAC;QACH,eAAe;QACf,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,8DAA8D,CAC/D,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEb,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;gBACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,cAAc;QACd,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,6DAA6D,CAC9D,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEZ,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;gBACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,gEAAgE,CACjE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAEf,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;gBACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,MAAM,UAAU,GAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QAC3G,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,UAAU,EAAE,CAAC,CAAC;YACtE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,MAAM,aAAa,GAAI,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QAC7H,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,aAAa,EAAE,CAAC,CAAC;YAC7E,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,MAAM,QAAQ,GAAI,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACvG,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;YAClB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;YACnE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,MAAM,WAAW,GAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QAC5G,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,WAAW,EAAE,CAAC,CAAC;YACxE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAY;IAC3C,IAAI,CAAC;QACH,mBAAmB;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEpD,gDAAgD;QAChD,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE7B,IAAI,CAAC;YACH,4BAA4B;YAC5B,yEAAyE;YACzE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEnB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,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,gCAAgC,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAY;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,0FAA0F,CAC3F,CAAC,GAAG,EAAE,CAAC;QAER,OAAO,MAAM,KAAK,SAAS,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,EAAY;IASxC,MAAM,MAAM,GAAG;QACb,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,CAAC;QACR,YAAY,EAAE,CAAC;QACf,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,qBAAqB,EAAE,CAAC;KACzB,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,GAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACxG,MAAM,CAAC,KAAK,GAAI,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACtG,MAAM,CAAC,YAAY,GAAI,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACpH,MAAM,CAAC,MAAM,GAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACxG,MAAM,CAAC,IAAI,GAAI,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACpG,MAAM,CAAC,MAAM,GAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACxG,MAAM,CAAC,qBAAqB,GAAI,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;IACxI,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0CAA0C;IAC5C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAY;IAKhD,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,EAAc;QACvB,MAAM,EAAE,EAAc;KACvB,CAAC;IAEF,MAAM,cAAc,GAAG;QACrB,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,yBAAyB;QAClE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB;QAC/D,aAAa,EAAE,qBAAqB,EAAE,oBAAoB;QAC1D,iBAAiB,EAAE,mBAAmB;QACtC,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB;QAC1E,gBAAgB,EAAE,sBAAsB;QACxC,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,uBAAuB;QACnE,yBAAyB,EAAE,mBAAmB;KAC/C,CAAC;IAEF,MAAM,aAAa,GAAG;QACpB,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB;QAC3D,+BAA+B,EAAE,uBAAuB,EAAE,sBAAsB;QAChF,cAAc;KACf,CAAC;IAEF,MAAM,gBAAgB,GAAG;QACvB,6BAA6B;QAC7B,sBAAsB;QACtB,yBAAyB;QACzB,sBAAsB;QACtB,qBAAqB;QACrB,qBAAqB;QACrB,4BAA4B;QAC5B,2BAA2B;KAC5B,CAAC;IAEF,IAAI,CAAC;QACH,eAAe;QACf,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,8DAA8D,CAC/D,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEb,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;gBACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,cAAc;QACd,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,6DAA6D,CAC9D,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEZ,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;gBACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,gEAAgE,CACjE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAEf,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;gBACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,MAAM,UAAU,GAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QAC3G,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,UAAU,EAAE,CAAC,CAAC;YACtE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,MAAM,aAAa,GAAI,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QAC7H,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,aAAa,EAAE,CAAC,CAAC;YAC7E,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,MAAM,QAAQ,GAAI,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACvG,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;YAClB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;YACnE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,MAAM,WAAW,GAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QAC5G,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,WAAW,EAAE,CAAC,CAAC;YACxE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,MAAM,eAAe,GAAI,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACvH,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,eAAe,EAAE,CAAC,CAAC;YACzE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -3,6 +3,10 @@
3
3
  * Handles constraint tracking with priority, layer assignment, and tags
4
4
  */
5
5
  import type { AddConstraintParams, AddConstraintResponse, GetConstraintsParams, GetConstraintsResponse, DeactivateConstraintParams, DeactivateConstraintResponse } from '../types.js';
6
+ /**
7
+ * Get or create constraint category ID
8
+ * Uses INSERT OR IGNORE for idempotent operation
9
+ */
6
10
  /**
7
11
  * Add a constraint with priority, layer, and tags
8
12
  *
@@ -1 +1 @@
1
- {"version":3,"file":"constraints.d.ts","sourceRoot":"","sources":["../../src/tools/constraints.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,EAI7B,MAAM,aAAa,CAAC;AA+BrB;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,qBAAqB,CAsEhF;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,sBAAsB,CAmEnF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,0BAA0B,GAAG,4BAA4B,CA0BrG"}
1
+ {"version":3,"file":"constraints.d.ts","sourceRoot":"","sources":["../../src/tools/constraints.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,EAI7B,MAAM,aAAa,CAAC;AAErB;;;GAGG;AAEH;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,qBAAqB,CAoEhF;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,sBAAsB,CAmEnF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,0BAA0B,GAAG,4BAA4B,CA0BrG"}
@@ -2,32 +2,13 @@
2
2
  * Constraint management tools for MCP Shared Context Server
3
3
  * Handles constraint tracking with priority, layer assignment, and tags
4
4
  */
5
- import { getDatabase, getOrCreateAgent, getLayerId, transaction, getOrCreateTag } from '../database.js';
5
+ import { getDatabase, getOrCreateAgent, getLayerId, transaction, getOrCreateTag, getOrCreateCategoryId } from '../database.js';
6
6
  import { STRING_TO_PRIORITY, DEFAULT_PRIORITY, SQLITE_TRUE, SQLITE_FALSE } from '../constants.js';
7
- /**
8
- * Validate constraint category (must be one of predefined)
9
- * Categories: performance, architecture, security
10
- */
11
- function validateCategory(category) {
12
- const validCategories = ['performance', 'architecture', 'security'];
13
- if (!validCategories.includes(category)) {
14
- throw new Error(`Invalid category. Must be one of: ${validCategories.join(', ')}`);
15
- }
16
- }
7
+ import { validateCategory, validatePriority } from '../utils/validators.js';
17
8
  /**
18
9
  * Get or create constraint category ID
19
10
  * Uses INSERT OR IGNORE for idempotent operation
20
11
  */
21
- function getOrCreateCategoryId(db, category) {
22
- // Insert if doesn't exist
23
- db.prepare('INSERT OR IGNORE INTO m_constraint_categories (name) VALUES (?)').run(category);
24
- // Get the ID
25
- const result = db.prepare('SELECT id FROM m_constraint_categories WHERE name = ?').get(category);
26
- if (!result) {
27
- throw new Error(`Failed to get or create category: ${category}`);
28
- }
29
- return result.id;
30
- }
31
12
  /**
32
13
  * Add a constraint with priority, layer, and tags
33
14
  *
@@ -45,9 +26,7 @@ export function addConstraint(params) {
45
26
  validateCategory(params.category);
46
27
  // Validate priority if provided
47
28
  const priorityStr = params.priority || 'medium';
48
- if (!['low', 'medium', 'high', 'critical'].includes(priorityStr)) {
49
- throw new Error('Invalid priority. Must be: low, medium, high, or critical');
50
- }
29
+ validatePriority(priorityStr);
51
30
  const priority = STRING_TO_PRIORITY[priorityStr] || DEFAULT_PRIORITY;
52
31
  // Validate and get layer ID if provided
53
32
  let layerId = null;
@@ -69,9 +48,9 @@ export function addConstraint(params) {
69
48
  const createdBy = params.created_by || 'system';
70
49
  const agentId = getOrCreateAgent(db, createdBy);
71
50
  // Insert constraint
72
- const insertResult = db.prepare(`
73
- INSERT INTO t_constraints (category_id, layer_id, constraint_text, priority, active, created_by, ts)
74
- VALUES (?, ?, ?, ?, ?, ?, unixepoch())
51
+ const insertResult = db.prepare(`
52
+ INSERT INTO t_constraints (category_id, layer_id, constraint_text, priority, active, created_by, ts)
53
+ VALUES (?, ?, ?, ?, ?, ?, unixepoch())
75
54
  `).run(categoryId, layerId, params.constraint_text, priority, SQLITE_TRUE, agentId);
76
55
  const constraintId = insertResult.lastInsertRowid;
77
56
  // Insert m_tags if provided
@@ -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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"}