@cleocode/mcp-server 0.90.3 → 0.94.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 (112) hide show
  1. package/README.md +2 -2
  2. package/dist/domains/index.d.ts +1 -0
  3. package/dist/domains/index.d.ts.map +1 -1
  4. package/dist/domains/index.js +1 -0
  5. package/dist/domains/index.js.map +1 -1
  6. package/dist/domains/issues.d.ts +44 -0
  7. package/dist/domains/issues.d.ts.map +1 -0
  8. package/dist/domains/issues.js +182 -0
  9. package/dist/domains/issues.js.map +1 -0
  10. package/dist/domains/lifecycle.d.ts.map +1 -1
  11. package/dist/domains/lifecycle.js +8 -0
  12. package/dist/domains/lifecycle.js.map +1 -1
  13. package/dist/domains/orchestrate.js +6 -6
  14. package/dist/domains/orchestrate.js.map +1 -1
  15. package/dist/domains/release.js +4 -4
  16. package/dist/domains/release.js.map +1 -1
  17. package/dist/domains/research.d.ts.map +1 -1
  18. package/dist/domains/research.js +8 -0
  19. package/dist/domains/research.js.map +1 -1
  20. package/dist/domains/session.d.ts +20 -1
  21. package/dist/domains/session.d.ts.map +1 -1
  22. package/dist/domains/session.js +133 -7
  23. package/dist/domains/session.js.map +1 -1
  24. package/dist/domains/system.d.ts +20 -1
  25. package/dist/domains/system.d.ts.map +1 -1
  26. package/dist/domains/system.js +211 -7
  27. package/dist/domains/system.js.map +1 -1
  28. package/dist/domains/tasks.d.ts +20 -1
  29. package/dist/domains/tasks.d.ts.map +1 -1
  30. package/dist/domains/tasks.js +165 -1
  31. package/dist/domains/tasks.js.map +1 -1
  32. package/dist/domains/validate.d.ts.map +1 -1
  33. package/dist/domains/validate.js +8 -0
  34. package/dist/domains/validate.js.map +1 -1
  35. package/dist/engine/caamp-adapter.d.ts +93 -0
  36. package/dist/engine/caamp-adapter.d.ts.map +1 -0
  37. package/dist/engine/caamp-adapter.js +358 -0
  38. package/dist/engine/caamp-adapter.js.map +1 -0
  39. package/dist/engine/caamp-verify.d.ts +2 -0
  40. package/dist/engine/caamp-verify.d.ts.map +1 -0
  41. package/dist/engine/caamp-verify.js +15 -0
  42. package/dist/engine/caamp-verify.js.map +1 -0
  43. package/dist/engine/capability-matrix.d.ts +67 -0
  44. package/dist/engine/capability-matrix.d.ts.map +1 -0
  45. package/dist/engine/capability-matrix.js +227 -0
  46. package/dist/engine/capability-matrix.js.map +1 -0
  47. package/dist/engine/config-engine.d.ts +29 -0
  48. package/dist/engine/config-engine.d.ts.map +1 -0
  49. package/dist/engine/config-engine.js +110 -0
  50. package/dist/engine/config-engine.js.map +1 -0
  51. package/dist/engine/id-generator.d.ts +34 -0
  52. package/dist/engine/id-generator.d.ts.map +1 -0
  53. package/dist/engine/id-generator.js +91 -0
  54. package/dist/engine/id-generator.js.map +1 -0
  55. package/dist/engine/index.d.ts +18 -0
  56. package/dist/engine/index.d.ts.map +1 -0
  57. package/dist/engine/index.js +28 -0
  58. package/dist/engine/index.js.map +1 -0
  59. package/dist/engine/init-engine.d.ts +52 -0
  60. package/dist/engine/init-engine.d.ts.map +1 -0
  61. package/dist/engine/init-engine.js +222 -0
  62. package/dist/engine/init-engine.js.map +1 -0
  63. package/dist/engine/schema-validator.d.ts +47 -0
  64. package/dist/engine/schema-validator.d.ts.map +1 -0
  65. package/dist/engine/schema-validator.js +219 -0
  66. package/dist/engine/schema-validator.js.map +1 -0
  67. package/dist/engine/session-engine.d.ts +139 -0
  68. package/dist/engine/session-engine.d.ts.map +1 -0
  69. package/dist/engine/session-engine.js +401 -0
  70. package/dist/engine/session-engine.js.map +1 -0
  71. package/dist/engine/store.d.ts +67 -0
  72. package/dist/engine/store.d.ts.map +1 -0
  73. package/dist/engine/store.js +284 -0
  74. package/dist/engine/store.js.map +1 -0
  75. package/dist/engine/task-engine.d.ts +139 -0
  76. package/dist/engine/task-engine.d.ts.map +1 -0
  77. package/dist/engine/task-engine.js +481 -0
  78. package/dist/engine/task-engine.js.map +1 -0
  79. package/dist/engine/validation-rules.d.ts +78 -0
  80. package/dist/engine/validation-rules.d.ts.map +1 -0
  81. package/dist/engine/validation-rules.js +218 -0
  82. package/dist/engine/validation-rules.js.map +1 -0
  83. package/dist/gateways/mutate.d.ts +1 -1
  84. package/dist/gateways/mutate.d.ts.map +1 -1
  85. package/dist/gateways/mutate.js +6 -1
  86. package/dist/gateways/mutate.js.map +1 -1
  87. package/dist/gateways/query.d.ts +1 -1
  88. package/dist/gateways/query.d.ts.map +1 -1
  89. package/dist/gateways/query.js +4 -1
  90. package/dist/gateways/query.js.map +1 -1
  91. package/dist/index.js +31 -8
  92. package/dist/index.js.map +1 -1
  93. package/dist/lib/executor.d.ts +12 -0
  94. package/dist/lib/executor.d.ts.map +1 -1
  95. package/dist/lib/executor.js +16 -0
  96. package/dist/lib/executor.js.map +1 -1
  97. package/dist/lib/mode-detector.d.ts +71 -0
  98. package/dist/lib/mode-detector.d.ts.map +1 -0
  99. package/dist/lib/mode-detector.js +184 -0
  100. package/dist/lib/mode-detector.js.map +1 -0
  101. package/dist/lib/router.d.ts +2 -1
  102. package/dist/lib/router.d.ts.map +1 -1
  103. package/dist/lib/router.js +7 -5
  104. package/dist/lib/router.js.map +1 -1
  105. package/dist/types/index.d.ts +1 -1
  106. package/dist/types/index.js +1 -1
  107. package/package.json +8 -3
  108. package/schemas/requests/issues/create.schema.json +37 -0
  109. package/schemas/requests/issues/diagnostics.schema.json +8 -0
  110. package/schemas/responses/issues/create.schema.json +49 -0
  111. package/schemas/responses/issues/diagnostics.schema.json +45 -0
  112. package/server.json +2 -2
@@ -0,0 +1,481 @@
1
+ /**
2
+ * Task Engine
3
+ *
4
+ * Native TypeScript implementation of core task CRUD operations.
5
+ * Reads/writes .cleo/todo.json directly without CLI subprocess.
6
+ *
7
+ * Supports: show, get, list, find, exists, create/add, update, complete, delete, archive
8
+ */
9
+ import { readJsonFile, writeJsonFileAtomic, withFileLock, withMultiLock, getDataPath } from './store.js';
10
+ import { validateNewTask, validateTitleDescription, validateStatusTransition, hasErrors, } from './validation-rules.js';
11
+ import { generateNextIdFromSet, collectAllIds } from './id-generator.js';
12
+ /**
13
+ * Load the todo.json file
14
+ */
15
+ function loadTodoFile(projectRoot) {
16
+ const todoPath = getDataPath(projectRoot, 'todo.json');
17
+ return readJsonFile(todoPath);
18
+ }
19
+ /**
20
+ * Compute SHA-256 truncated checksum for _meta
21
+ */
22
+ function computeChecksum(tasks) {
23
+ const { createHash } = require('crypto');
24
+ const content = JSON.stringify(tasks);
25
+ return createHash('sha256').update(content).digest('hex').substring(0, 16);
26
+ }
27
+ /**
28
+ * Save todo.json with updated metadata
29
+ */
30
+ function saveTodoFile(projectRoot, data) {
31
+ const todoPath = getDataPath(projectRoot, 'todo.json');
32
+ // Update metadata
33
+ data.lastUpdated = new Date().toISOString();
34
+ if (data._meta) {
35
+ data._meta.checksum = computeChecksum(data.tasks);
36
+ data._meta.generation = (data._meta.generation || 0) + 1;
37
+ }
38
+ writeJsonFileAtomic(todoPath, data);
39
+ }
40
+ // ===== Query Operations =====
41
+ /**
42
+ * Get a single task by ID
43
+ */
44
+ export function taskShow(projectRoot, taskId) {
45
+ const todo = loadTodoFile(projectRoot);
46
+ if (!todo) {
47
+ return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
48
+ }
49
+ const task = todo.tasks.find((t) => t.id === taskId);
50
+ if (!task) {
51
+ return {
52
+ success: false,
53
+ error: {
54
+ code: 'E_NOT_FOUND',
55
+ message: `Task '${taskId}' not found`,
56
+ },
57
+ };
58
+ }
59
+ return { success: true, data: task };
60
+ }
61
+ /**
62
+ * List tasks with optional filters
63
+ */
64
+ export function taskList(projectRoot, params) {
65
+ const todo = loadTodoFile(projectRoot);
66
+ if (!todo) {
67
+ return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
68
+ }
69
+ let tasks = todo.tasks;
70
+ if (params?.parent) {
71
+ tasks = tasks.filter((t) => t.parentId === params.parent);
72
+ }
73
+ if (params?.status) {
74
+ tasks = tasks.filter((t) => t.status === params.status);
75
+ }
76
+ if (params?.limit && params.limit > 0) {
77
+ tasks = tasks.slice(0, params.limit);
78
+ }
79
+ return { success: true, data: tasks };
80
+ }
81
+ /**
82
+ * Fuzzy search tasks by title/description/ID
83
+ */
84
+ export function taskFind(projectRoot, query, limit) {
85
+ const todo = loadTodoFile(projectRoot);
86
+ if (!todo) {
87
+ return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
88
+ }
89
+ const queryLower = query.toLowerCase();
90
+ // Score-based fuzzy matching
91
+ const scored = todo.tasks
92
+ .map((task) => {
93
+ let score = 0;
94
+ const idLower = task.id.toLowerCase();
95
+ const titleLower = task.title.toLowerCase();
96
+ const descLower = (task.description || '').toLowerCase();
97
+ // Exact ID match
98
+ if (idLower === queryLower)
99
+ score += 100;
100
+ // ID contains query
101
+ else if (idLower.includes(queryLower))
102
+ score += 50;
103
+ // Exact title match
104
+ if (titleLower === queryLower)
105
+ score += 80;
106
+ // Title starts with query
107
+ else if (titleLower.startsWith(queryLower))
108
+ score += 40;
109
+ // Title contains query
110
+ else if (titleLower.includes(queryLower))
111
+ score += 20;
112
+ // Description contains query
113
+ if (descLower.includes(queryLower))
114
+ score += 10;
115
+ // Label match
116
+ if (task.labels?.some((l) => l.toLowerCase().includes(queryLower))) {
117
+ score += 15;
118
+ }
119
+ return { task, score };
120
+ })
121
+ .filter((item) => item.score > 0)
122
+ .sort((a, b) => b.score - a.score);
123
+ let results = scored.map((item) => ({
124
+ id: item.task.id,
125
+ title: item.task.title,
126
+ status: item.task.status,
127
+ priority: item.task.priority,
128
+ parentId: item.task.parentId,
129
+ }));
130
+ if (limit && limit > 0) {
131
+ results = results.slice(0, limit);
132
+ }
133
+ return { success: true, data: results };
134
+ }
135
+ /**
136
+ * Check if a task exists
137
+ */
138
+ export function taskExists(projectRoot, taskId) {
139
+ const todo = loadTodoFile(projectRoot);
140
+ if (!todo) {
141
+ return { success: true, data: { exists: false, taskId } };
142
+ }
143
+ const exists = todo.tasks.some((t) => t.id === taskId);
144
+ return { success: true, data: { exists, taskId } };
145
+ }
146
+ // ===== Mutate Operations =====
147
+ /**
148
+ * Create a new task
149
+ */
150
+ export async function taskCreate(projectRoot, params) {
151
+ const todoPath = getDataPath(projectRoot, 'todo.json');
152
+ return await withFileLock(todoPath, () => {
153
+ const current = loadTodoFile(projectRoot);
154
+ if (!current || !current.tasks) {
155
+ return {
156
+ success: false,
157
+ error: { code: 'E_NOT_INITIALIZED', message: 'No valid todo.json found' },
158
+ };
159
+ }
160
+ // Collect all IDs for uniqueness check
161
+ const allIds = new Set(current.tasks.map((t) => t.id));
162
+ // Also check archive
163
+ const archiveIds = collectAllIds(projectRoot);
164
+ for (const id of archiveIds)
165
+ allIds.add(id);
166
+ // Generate new ID
167
+ const newId = generateNextIdFromSet(allIds);
168
+ // Get existing descriptions for duplicate check
169
+ const existingDescriptions = current.tasks
170
+ .map((t) => t.description)
171
+ .filter(Boolean);
172
+ // Validate
173
+ const violations = validateNewTask({
174
+ id: newId,
175
+ title: params.title,
176
+ description: params.description,
177
+ parentId: params.parent || null,
178
+ type: params.type,
179
+ }, allIds, existingDescriptions, current.tasks.map((t) => ({
180
+ id: t.id,
181
+ parentId: t.parentId,
182
+ type: t.type,
183
+ })));
184
+ if (hasErrors(violations)) {
185
+ const errorMessages = violations
186
+ .filter((v) => v.severity === 'error')
187
+ .map((v) => v.message);
188
+ return {
189
+ success: false,
190
+ error: {
191
+ code: 'E_VALIDATION_FAILED',
192
+ message: errorMessages.join('; '),
193
+ details: violations,
194
+ },
195
+ };
196
+ }
197
+ const now = new Date().toISOString();
198
+ // Determine type from parent
199
+ let taskType = params.type || 'task';
200
+ if (params.parent) {
201
+ const parent = current.tasks.find((t) => t.id === params.parent);
202
+ if (parent) {
203
+ if (parent.type === 'epic')
204
+ taskType = 'task';
205
+ else if (parent.type === 'task')
206
+ taskType = 'subtask';
207
+ }
208
+ }
209
+ const newTask = {
210
+ id: newId,
211
+ title: params.title,
212
+ description: params.description,
213
+ status: 'pending',
214
+ priority: params.priority || 'medium',
215
+ type: taskType,
216
+ createdAt: now,
217
+ updatedAt: null,
218
+ parentId: params.parent || null,
219
+ depends: params.depends || [],
220
+ labels: params.labels || [],
221
+ acceptance: [],
222
+ notes: [],
223
+ files: [],
224
+ };
225
+ current.tasks.push(newTask);
226
+ // Update metadata
227
+ current.lastUpdated = now;
228
+ if (current._meta) {
229
+ current._meta.checksum = computeChecksum(current.tasks);
230
+ current._meta.generation = (current._meta.generation || 0) + 1;
231
+ }
232
+ // Write back (the lock handler will write this)
233
+ // But withLock expects us to return the full file data for writing
234
+ // We need to restructure: return the file for writing and wrap differently
235
+ // Actually, withLock writes the return value as the file content.
236
+ // We need to handle this differently - write the file ourselves and return the result.
237
+ writeJsonFileAtomic(todoPath, current);
238
+ return { success: true, data: newTask };
239
+ });
240
+ }
241
+ /**
242
+ * Update a task
243
+ */
244
+ export async function taskUpdate(projectRoot, taskId, updates) {
245
+ const todoPath = getDataPath(projectRoot, 'todo.json');
246
+ return await withFileLock(todoPath, () => {
247
+ const current = loadTodoFile(projectRoot);
248
+ if (!current || !current.tasks) {
249
+ return {
250
+ success: false,
251
+ error: { code: 'E_NOT_INITIALIZED', message: 'No valid todo.json found' },
252
+ };
253
+ }
254
+ const taskIndex = current.tasks.findIndex((t) => t.id === taskId);
255
+ if (taskIndex === -1) {
256
+ return {
257
+ success: false,
258
+ error: { code: 'E_NOT_FOUND', message: `Task '${taskId}' not found` },
259
+ };
260
+ }
261
+ const task = current.tasks[taskIndex];
262
+ const violations = [];
263
+ // Validate title/description if being updated
264
+ if (updates.title !== undefined || updates.description !== undefined) {
265
+ const newTitle = updates.title ?? task.title;
266
+ const newDesc = updates.description ?? task.description;
267
+ violations.push(...validateTitleDescription(newTitle, newDesc));
268
+ }
269
+ // Validate status transition
270
+ if (updates.status && updates.status !== task.status) {
271
+ violations.push(...validateStatusTransition(task.status, updates.status));
272
+ }
273
+ if (hasErrors(violations)) {
274
+ const errorMessages = violations
275
+ .filter((v) => v.severity === 'error')
276
+ .map((v) => v.message);
277
+ return {
278
+ success: false,
279
+ error: {
280
+ code: 'E_VALIDATION_FAILED',
281
+ message: errorMessages.join('; '),
282
+ details: violations,
283
+ },
284
+ };
285
+ }
286
+ const now = new Date().toISOString();
287
+ // Apply updates
288
+ if (updates.title !== undefined)
289
+ task.title = updates.title;
290
+ if (updates.description !== undefined)
291
+ task.description = updates.description;
292
+ if (updates.priority !== undefined)
293
+ task.priority = updates.priority;
294
+ if (updates.labels !== undefined)
295
+ task.labels = updates.labels;
296
+ if (updates.depends !== undefined)
297
+ task.depends = updates.depends;
298
+ if (updates.acceptance !== undefined)
299
+ task.acceptance = updates.acceptance;
300
+ if (updates.status !== undefined) {
301
+ task.status = updates.status;
302
+ if (updates.status === 'done') {
303
+ task.completedAt = now;
304
+ }
305
+ if (updates.status === 'cancelled') {
306
+ task.cancelledAt = now;
307
+ }
308
+ }
309
+ // Append note if provided
310
+ if (updates.notes) {
311
+ if (!task.notes)
312
+ task.notes = [];
313
+ task.notes.push(`[${now}] ${updates.notes}`);
314
+ }
315
+ task.updatedAt = now;
316
+ current.tasks[taskIndex] = task;
317
+ // Save
318
+ saveTodoFile(projectRoot, current);
319
+ return { success: true, data: task };
320
+ });
321
+ }
322
+ /**
323
+ * Complete a task (set status to done)
324
+ */
325
+ export async function taskComplete(projectRoot, taskId, notes) {
326
+ return taskUpdate(projectRoot, taskId, {
327
+ status: 'done',
328
+ notes: notes || undefined,
329
+ });
330
+ }
331
+ /**
332
+ * Delete a task
333
+ */
334
+ export async function taskDelete(projectRoot, taskId, force) {
335
+ const todoPath = getDataPath(projectRoot, 'todo.json');
336
+ return await withFileLock(todoPath, () => {
337
+ const current = loadTodoFile(projectRoot);
338
+ if (!current || !current.tasks) {
339
+ return {
340
+ success: false,
341
+ error: { code: 'E_NOT_INITIALIZED', message: 'No valid todo.json found' },
342
+ };
343
+ }
344
+ const taskIndex = current.tasks.findIndex((t) => t.id === taskId);
345
+ if (taskIndex === -1) {
346
+ return {
347
+ success: false,
348
+ error: { code: 'E_NOT_FOUND', message: `Task '${taskId}' not found` },
349
+ };
350
+ }
351
+ const task = current.tasks[taskIndex];
352
+ // Check for children
353
+ if (!force) {
354
+ const children = current.tasks.filter((t) => t.parentId === taskId);
355
+ if (children.length > 0) {
356
+ return {
357
+ success: false,
358
+ error: {
359
+ code: 'E_HAS_CHILDREN',
360
+ message: `Task '${taskId}' has ${children.length} children. Use force=true to delete anyway.`,
361
+ },
362
+ };
363
+ }
364
+ }
365
+ // Remove task (and optionally children if force)
366
+ if (force) {
367
+ const toRemove = new Set([taskId]);
368
+ // Collect all descendants
369
+ const collectDescendants = (parentId) => {
370
+ for (const t of current.tasks) {
371
+ if (t.parentId === parentId && !toRemove.has(t.id)) {
372
+ toRemove.add(t.id);
373
+ collectDescendants(t.id);
374
+ }
375
+ }
376
+ };
377
+ collectDescendants(taskId);
378
+ current.tasks = current.tasks.filter((t) => !toRemove.has(t.id));
379
+ }
380
+ else {
381
+ current.tasks.splice(taskIndex, 1);
382
+ }
383
+ saveTodoFile(projectRoot, current);
384
+ return { success: true, data: { deleted: true, taskId } };
385
+ });
386
+ }
387
+ /**
388
+ * Archive completed tasks.
389
+ * Moves done/cancelled tasks from todo.json to todo-archive.json.
390
+ */
391
+ export async function taskArchive(projectRoot, taskId, before) {
392
+ const todoPath = getDataPath(projectRoot, 'todo.json');
393
+ const archivePath = getDataPath(projectRoot, 'todo-archive.json');
394
+ return await withMultiLock([todoPath, archivePath], () => {
395
+ const todo = readJsonFile(todoPath);
396
+ if (!todo || !todo.tasks) {
397
+ return {
398
+ success: false,
399
+ error: { code: 'E_NOT_INITIALIZED', message: 'No valid todo.json found' },
400
+ };
401
+ }
402
+ // Determine which tasks to archive
403
+ let tasksToArchive;
404
+ if (taskId) {
405
+ const task = todo.tasks.find((t) => t.id === taskId);
406
+ if (!task) {
407
+ return {
408
+ success: false,
409
+ error: { code: 'E_NOT_FOUND', message: `Task '${taskId}' not found` },
410
+ };
411
+ }
412
+ if (task.status !== 'done' && task.status !== 'cancelled') {
413
+ return {
414
+ success: false,
415
+ error: {
416
+ code: 'E_INVALID_STATUS',
417
+ message: `Task '${taskId}' has status '${task.status}', must be done or cancelled to archive`,
418
+ },
419
+ };
420
+ }
421
+ tasksToArchive = [task];
422
+ }
423
+ else {
424
+ // Archive all completed tasks
425
+ tasksToArchive = todo.tasks.filter((t) => {
426
+ if (t.status !== 'done' && t.status !== 'cancelled')
427
+ return false;
428
+ if (before) {
429
+ const completedDate = t.completedAt || t.cancelledAt;
430
+ if (completedDate && completedDate > before)
431
+ return false;
432
+ }
433
+ return true;
434
+ });
435
+ }
436
+ if (tasksToArchive.length === 0) {
437
+ return { success: true, data: { archived: 0, taskIds: [] } };
438
+ }
439
+ // Load or create archive
440
+ let archive = readJsonFile(archivePath);
441
+ if (!archive) {
442
+ archive = {
443
+ _meta: {
444
+ schemaVersion: '2.4.0',
445
+ totalArchived: 0,
446
+ lastArchived: null,
447
+ },
448
+ archivedTasks: [],
449
+ };
450
+ }
451
+ const now = new Date().toISOString();
452
+ const archivedIds = [];
453
+ // Move tasks to archive
454
+ for (const task of tasksToArchive) {
455
+ const archivedTask = {
456
+ ...task,
457
+ _archive: {
458
+ archivedAt: now,
459
+ reason: taskId ? 'manual' : 'auto',
460
+ },
461
+ };
462
+ archive.archivedTasks.push(archivedTask);
463
+ archivedIds.push(task.id);
464
+ }
465
+ // Remove from todo
466
+ todo.tasks = todo.tasks.filter((t) => !archivedIds.includes(t.id));
467
+ // Update archive metadata
468
+ if (archive._meta) {
469
+ archive._meta.totalArchived = archive.archivedTasks.length;
470
+ archive._meta.lastArchived = now;
471
+ }
472
+ // Save both files
473
+ writeJsonFileAtomic(todoPath, todo);
474
+ writeJsonFileAtomic(archivePath, archive);
475
+ return {
476
+ success: true,
477
+ data: { archived: archivedIds.length, taskIds: archivedIds },
478
+ };
479
+ });
480
+ }
481
+ //# sourceMappingURL=task-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-engine.js","sourceRoot":"","sources":["../../src/engine/task-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Anti-Hallucination Validation Rules
3
+ *
4
+ * Implements CLEO's anti-hallucination requirements:
5
+ * - Title and description both required and different
6
+ * - No future timestamps
7
+ * - No duplicate task descriptions
8
+ * - Unique IDs across todo.json AND todo-archive.json
9
+ * - Valid status transitions
10
+ * - Hierarchy constraints (max depth 3, max 7 siblings)
11
+ */
12
+ /**
13
+ * Validation error from anti-hallucination checks
14
+ */
15
+ export interface RuleViolation {
16
+ rule: string;
17
+ field: string;
18
+ message: string;
19
+ severity: 'error' | 'warning';
20
+ }
21
+ /**
22
+ * Task-like object for validation (doesn't need full Task type)
23
+ */
24
+ interface TaskLike {
25
+ id?: string;
26
+ title?: string;
27
+ description?: string;
28
+ status?: string;
29
+ createdAt?: string;
30
+ updatedAt?: string;
31
+ completedAt?: string;
32
+ cancelledAt?: string;
33
+ parentId?: string | null;
34
+ type?: string;
35
+ }
36
+ /**
37
+ * Validate that title and description are both present and different.
38
+ * This is a critical anti-hallucination check.
39
+ */
40
+ export declare function validateTitleDescription(title?: string, description?: string): RuleViolation[];
41
+ /**
42
+ * Validate that timestamps are not in the future
43
+ */
44
+ export declare function validateTimestamps(task: TaskLike): RuleViolation[];
45
+ /**
46
+ * Validate ID uniqueness across all tasks (todo + archive)
47
+ */
48
+ export declare function validateIdUniqueness(taskId: string, existingIds: Set<string>): RuleViolation[];
49
+ /**
50
+ * Validate no duplicate task descriptions
51
+ */
52
+ export declare function validateNoDuplicateDescription(description: string, existingDescriptions: string[], excludeTaskId?: string): RuleViolation[];
53
+ /**
54
+ * Validate hierarchy constraints
55
+ */
56
+ export declare function validateHierarchy(parentId: string | null | undefined, tasks: Array<{
57
+ id: string;
58
+ parentId?: string | null;
59
+ type?: string;
60
+ }>, taskType?: string): RuleViolation[];
61
+ /**
62
+ * Validate status transition
63
+ */
64
+ export declare function validateStatusTransition(currentStatus: string, newStatus: string): RuleViolation[];
65
+ /**
66
+ * Run all validation rules on a task being created
67
+ */
68
+ export declare function validateNewTask(task: TaskLike, existingIds: Set<string>, existingDescriptions: string[], existingTasks: Array<{
69
+ id: string;
70
+ parentId?: string | null;
71
+ type?: string;
72
+ }>): RuleViolation[];
73
+ /**
74
+ * Check if violations contain any errors (not just warnings)
75
+ */
76
+ export declare function hasErrors(violations: RuleViolation[]): boolean;
77
+ export {};
78
+ //# sourceMappingURL=validation-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-rules.d.ts","sourceRoot":"","sources":["../../src/engine/validation-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED;;GAEG;AACH,UAAU,QAAQ;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,CAAC,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,aAAa,EAAE,CAmCjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,EAAE,CAmClE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GACvB,aAAa,EAAE,CAUjB;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,MAAM,EACnB,oBAAoB,EAAE,MAAM,EAAE,EAC9B,aAAa,CAAC,EAAE,MAAM,GACrB,aAAa,EAAE,CAejB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,KAAK,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACrE,QAAQ,CAAC,EAAE,MAAM,GAChB,aAAa,EAAE,CAmDjB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,aAAa,EAAE,CA6BjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,oBAAoB,EAAE,MAAM,EAAE,EAC9B,aAAa,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC5E,aAAa,EAAE,CAuBjB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,OAAO,CAE9D"}