@lovelybunch/core 1.0.75-alpha.1 → 1.0.75-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-instructions.d.ts +17 -0
- package/dist/agent-instructions.d.ts.map +1 -0
- package/dist/agent-instructions.js +160 -0
- package/dist/agent-instructions.js.map +1 -0
- package/dist/context.d.ts +8 -8
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/knowledge.d.ts +40 -40
- package/dist/knowledge.js +1 -1
- package/dist/knowledge.js.map +1 -1
- package/dist/logging/index.d.ts +5 -5
- package/dist/logging/index.d.ts.map +1 -1
- package/dist/logging/index.js +5 -5
- package/dist/logging/index.js.map +1 -1
- package/dist/logging/kinds.d.ts +24 -24
- package/dist/logging/kinds.d.ts.map +1 -1
- package/dist/logging/kinds.js +24 -24
- package/dist/logging/kinds.js.map +1 -1
- package/dist/markdown-storage.d.ts +12 -11
- package/dist/markdown-storage.d.ts.map +1 -1
- package/dist/markdown-storage.js +213 -143
- package/dist/markdown-storage.js.map +1 -1
- package/dist/proposals.d.ts +136 -136
- package/dist/skill-instructions.d.ts +19 -0
- package/dist/skill-instructions.d.ts.map +1 -0
- package/dist/skill-instructions.js +165 -0
- package/dist/skill-instructions.js.map +1 -0
- package/dist/storage.d.ts +21 -24
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +155 -181
- package/dist/storage.js.map +1 -1
- package/dist/system-prompts/coconut-assistant.md +40 -6
- package/dist/system-prompts/schema/agent.schema.md +1 -1
- package/dist/system-prompts/schema/knowledge.schema.md +2 -2
- package/dist/system-prompts/schema/skill.schema.md +73 -0
- package/dist/system-prompts/schema/{proposal.schema.md → task.schema.md} +2 -2
- package/dist/tasks.d.ts +764 -0
- package/dist/tasks.d.ts.map +1 -0
- package/dist/tasks.js +483 -0
- package/dist/tasks.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"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"}
|
package/dist/tasks.js
ADDED
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { zodToJsonSchema } from 'zod-to-json-schema';
|
|
3
|
+
import { MarkdownStorageAdapter } from './markdown-storage.js';
|
|
4
|
+
import Fuse from 'fuse.js';
|
|
5
|
+
import { getLogger, TaskKinds } from './logging/index.js';
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Storage initialization with environment-aware path resolution
|
|
8
|
+
// ============================================================================
|
|
9
|
+
function resolveGaitPath() {
|
|
10
|
+
if (process.env.NODE_ENV === 'development' && process.env.GAIT_DEV_ROOT) {
|
|
11
|
+
return process.env.GAIT_DEV_ROOT;
|
|
12
|
+
}
|
|
13
|
+
if (process.env.GAIT_DATA_PATH) {
|
|
14
|
+
return `${process.env.GAIT_DATA_PATH}/.nut`;
|
|
15
|
+
}
|
|
16
|
+
return '.nut';
|
|
17
|
+
}
|
|
18
|
+
// Create storage adapter with resolved path
|
|
19
|
+
function getStorage() {
|
|
20
|
+
return new MarkdownStorageAdapter(resolveGaitPath());
|
|
21
|
+
}
|
|
22
|
+
function logTaskEvent(kind, taskId, payload) {
|
|
23
|
+
try {
|
|
24
|
+
const logger = getLogger();
|
|
25
|
+
logger.log({
|
|
26
|
+
kind,
|
|
27
|
+
actor: 'cli:nut', // CLI operations
|
|
28
|
+
subject: `task:${taskId}`,
|
|
29
|
+
tags: ['task'],
|
|
30
|
+
payload: {
|
|
31
|
+
taskId,
|
|
32
|
+
...payload,
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
// Don't fail the operation if logging fails
|
|
38
|
+
console.error('Failed to log task event:', err);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// ============================================================================
|
|
42
|
+
// Zod Schemas
|
|
43
|
+
// ============================================================================
|
|
44
|
+
export const TaskStatusSchema = z.enum([
|
|
45
|
+
'draft', 'backlog', 'ready', 'queued', 'active', 'blocked', 'review', 'done', 'canceled', 'duplicate'
|
|
46
|
+
]);
|
|
47
|
+
export const TaskPrioritySchema = z.enum(['low', 'medium', 'high', 'critical']);
|
|
48
|
+
export const AuthorSchema = z.object({
|
|
49
|
+
id: z.string().min(1, 'Author ID is required'),
|
|
50
|
+
name: z.string().min(1, 'Author name is required'),
|
|
51
|
+
// Allow empty string, undefined, or valid email
|
|
52
|
+
email: z.union([z.string().email(), z.literal('')]).optional(),
|
|
53
|
+
role: z.string().optional(),
|
|
54
|
+
type: z.enum(['human', 'agent']),
|
|
55
|
+
});
|
|
56
|
+
export const TaskFiltersSchema = z.object({
|
|
57
|
+
status: TaskStatusSchema.optional(),
|
|
58
|
+
author: z.string().optional(),
|
|
59
|
+
priority: TaskPrioritySchema.optional(),
|
|
60
|
+
tags: z.array(z.string()).optional(),
|
|
61
|
+
search: z.string().optional(),
|
|
62
|
+
});
|
|
63
|
+
export const PlanStepInputSchema = z.union([
|
|
64
|
+
z.string(),
|
|
65
|
+
z.object({
|
|
66
|
+
id: z.string().optional(),
|
|
67
|
+
description: z.string().min(1, 'Step description is required'),
|
|
68
|
+
status: z.enum(['pending', 'in-progress', 'completed', 'failed']).optional(),
|
|
69
|
+
command: z.string().optional(),
|
|
70
|
+
expectedOutcome: z.string().optional(),
|
|
71
|
+
})
|
|
72
|
+
]);
|
|
73
|
+
export const CreateTaskInputSchema = z.object({
|
|
74
|
+
title: z.string().min(1, 'Title is required').optional(),
|
|
75
|
+
/** @deprecated Use `title` instead. Will be removed in a future version. */
|
|
76
|
+
intent: z.string().min(1).optional(),
|
|
77
|
+
content: z.string().min(1, 'Content is required'),
|
|
78
|
+
author: AuthorSchema.optional(),
|
|
79
|
+
planSteps: z.array(PlanStepInputSchema).optional(),
|
|
80
|
+
status: TaskStatusSchema.optional().default('draft'),
|
|
81
|
+
metadata: z.object({
|
|
82
|
+
tags: z.array(z.string()).optional(),
|
|
83
|
+
priority: TaskPrioritySchema.optional(),
|
|
84
|
+
reviewers: z.array(z.string()).optional(),
|
|
85
|
+
}).optional(),
|
|
86
|
+
productSpecRef: z.string().optional(),
|
|
87
|
+
}).refine(data => data.title || data.intent, {
|
|
88
|
+
message: 'Title is required (or intent for backward compatibility)'
|
|
89
|
+
});
|
|
90
|
+
export const UpdateTaskInputSchema = z.object({
|
|
91
|
+
title: z.string().min(1).optional(),
|
|
92
|
+
/** @deprecated Use `title` instead. Will be removed in a future version. */
|
|
93
|
+
intent: z.string().min(1).optional(),
|
|
94
|
+
content: z.string().min(1).optional(),
|
|
95
|
+
status: TaskStatusSchema.optional(),
|
|
96
|
+
planSteps: z.array(PlanStepInputSchema).optional(),
|
|
97
|
+
metadata: z.object({
|
|
98
|
+
tags: z.array(z.string()).optional(),
|
|
99
|
+
priority: TaskPrioritySchema.optional(),
|
|
100
|
+
reviewers: z.array(z.string()).optional(),
|
|
101
|
+
}).optional(),
|
|
102
|
+
productSpecRef: z.string().optional(),
|
|
103
|
+
}).refine(data => Object.keys(data).length > 0, {
|
|
104
|
+
message: 'At least one field must be provided for update'
|
|
105
|
+
});
|
|
106
|
+
// ============================================================================
|
|
107
|
+
// Helper Functions
|
|
108
|
+
// ============================================================================
|
|
109
|
+
function normalizePlanSteps(steps) {
|
|
110
|
+
if (!steps || steps.length === 0)
|
|
111
|
+
return [];
|
|
112
|
+
return steps.map((step, index) => {
|
|
113
|
+
if (typeof step === 'string') {
|
|
114
|
+
return {
|
|
115
|
+
id: `step-${index + 1}`,
|
|
116
|
+
description: step,
|
|
117
|
+
status: 'pending',
|
|
118
|
+
command: undefined,
|
|
119
|
+
output: undefined,
|
|
120
|
+
executedAt: undefined,
|
|
121
|
+
expectedOutcome: undefined,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
id: step.id || `step-${index + 1}`,
|
|
126
|
+
description: step.description,
|
|
127
|
+
status: step.status || 'pending',
|
|
128
|
+
command: step.command,
|
|
129
|
+
output: undefined,
|
|
130
|
+
executedAt: undefined,
|
|
131
|
+
expectedOutcome: step.expectedOutcome,
|
|
132
|
+
};
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
function createDefaultAuthor() {
|
|
136
|
+
return {
|
|
137
|
+
id: 'mcp-agent',
|
|
138
|
+
name: 'MCP Agent',
|
|
139
|
+
type: 'agent',
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function createEmptyTask(id, now) {
|
|
143
|
+
return {
|
|
144
|
+
id,
|
|
145
|
+
title: '',
|
|
146
|
+
content: '',
|
|
147
|
+
author: createDefaultAuthor(),
|
|
148
|
+
planSteps: [],
|
|
149
|
+
evidence: [],
|
|
150
|
+
policies: [],
|
|
151
|
+
featureFlags: [],
|
|
152
|
+
experiments: [],
|
|
153
|
+
telemetryContracts: [],
|
|
154
|
+
releasePlan: {
|
|
155
|
+
strategy: 'immediate',
|
|
156
|
+
stages: [],
|
|
157
|
+
rollbackPlan: '',
|
|
158
|
+
},
|
|
159
|
+
status: 'draft',
|
|
160
|
+
metadata: {
|
|
161
|
+
createdAt: now,
|
|
162
|
+
updatedAt: now,
|
|
163
|
+
reviewers: [],
|
|
164
|
+
aiInteractions: [],
|
|
165
|
+
tags: [],
|
|
166
|
+
priority: 'medium',
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
// ============================================================================
|
|
171
|
+
// Core Functions
|
|
172
|
+
// ============================================================================
|
|
173
|
+
/**
|
|
174
|
+
* List tasks with optional filtering and search
|
|
175
|
+
*/
|
|
176
|
+
export async function listTasks(filters) {
|
|
177
|
+
const opts = TaskFiltersSchema.parse(filters || {});
|
|
178
|
+
const storage = getStorage();
|
|
179
|
+
let tasks = await storage.loadAllTasks();
|
|
180
|
+
// Apply filters
|
|
181
|
+
if (opts.status) {
|
|
182
|
+
tasks = tasks.filter(p => p.status === opts.status);
|
|
183
|
+
}
|
|
184
|
+
if (opts.priority) {
|
|
185
|
+
tasks = tasks.filter(p => p.metadata?.priority === opts.priority);
|
|
186
|
+
}
|
|
187
|
+
if (opts.tags && opts.tags.length > 0) {
|
|
188
|
+
tasks = tasks.filter(p => opts.tags.some(tag => p.metadata?.tags?.includes(tag)));
|
|
189
|
+
}
|
|
190
|
+
if (opts.author) {
|
|
191
|
+
const authorLower = opts.author.toLowerCase();
|
|
192
|
+
tasks = tasks.filter(p => p.author.name?.toLowerCase().includes(authorLower) ||
|
|
193
|
+
p.author.id?.toLowerCase().includes(authorLower) ||
|
|
194
|
+
p.author.email?.toLowerCase().includes(authorLower));
|
|
195
|
+
}
|
|
196
|
+
// Apply fuzzy search
|
|
197
|
+
if (opts.search) {
|
|
198
|
+
const fuse = new Fuse(tasks, {
|
|
199
|
+
keys: ['title', 'intent', 'content', 'author.name', 'metadata.tags'],
|
|
200
|
+
threshold: 0.4,
|
|
201
|
+
ignoreLocation: true,
|
|
202
|
+
});
|
|
203
|
+
tasks = fuse.search(opts.search).map(r => r.item);
|
|
204
|
+
}
|
|
205
|
+
// Sort by updatedAt descending (most recent first)
|
|
206
|
+
tasks.sort((a, b) => {
|
|
207
|
+
const aTime = a.metadata?.updatedAt ? new Date(a.metadata.updatedAt).getTime() : 0;
|
|
208
|
+
const bTime = b.metadata?.updatedAt ? new Date(b.metadata.updatedAt).getTime() : 0;
|
|
209
|
+
return bTime - aTime;
|
|
210
|
+
});
|
|
211
|
+
return tasks;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Get a single task by ID
|
|
215
|
+
*/
|
|
216
|
+
export async function getTask(id) {
|
|
217
|
+
if (!id || typeof id !== 'string') {
|
|
218
|
+
throw new Error('Task ID is required');
|
|
219
|
+
}
|
|
220
|
+
const storage = getStorage();
|
|
221
|
+
return storage.loadTask(id);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Create a new task
|
|
225
|
+
*/
|
|
226
|
+
export async function createTask(input) {
|
|
227
|
+
const validated = CreateTaskInputSchema.parse(input);
|
|
228
|
+
const now = new Date();
|
|
229
|
+
// Add random suffix to prevent ID collisions when creating quickly
|
|
230
|
+
const randomSuffix = Math.random().toString(36).substring(2, 6);
|
|
231
|
+
const id = `cp-${Date.now()}-${randomSuffix}`;
|
|
232
|
+
// Use title, falling back to deprecated intent for backward compatibility
|
|
233
|
+
const titleValue = validated.title || validated.intent || '';
|
|
234
|
+
const task = {
|
|
235
|
+
...createEmptyTask(id, now),
|
|
236
|
+
title: titleValue,
|
|
237
|
+
content: validated.content,
|
|
238
|
+
author: validated.author || createDefaultAuthor(),
|
|
239
|
+
planSteps: normalizePlanSteps(validated.planSteps),
|
|
240
|
+
status: validated.status || 'draft',
|
|
241
|
+
productSpecRef: validated.productSpecRef,
|
|
242
|
+
metadata: {
|
|
243
|
+
createdAt: now,
|
|
244
|
+
updatedAt: now,
|
|
245
|
+
reviewers: validated.metadata?.reviewers || [],
|
|
246
|
+
aiInteractions: [],
|
|
247
|
+
tags: validated.metadata?.tags || [],
|
|
248
|
+
priority: validated.metadata?.priority || 'medium',
|
|
249
|
+
},
|
|
250
|
+
};
|
|
251
|
+
const storage = getStorage();
|
|
252
|
+
await storage.saveTask(task);
|
|
253
|
+
logTaskEvent(TaskKinds.CREATE, id, {
|
|
254
|
+
title: titleValue,
|
|
255
|
+
status: task.status,
|
|
256
|
+
authorType: task.author.type,
|
|
257
|
+
authorName: task.author.name,
|
|
258
|
+
tags: task.metadata?.tags,
|
|
259
|
+
priority: task.metadata?.priority,
|
|
260
|
+
});
|
|
261
|
+
return task;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Update an existing task
|
|
265
|
+
*/
|
|
266
|
+
export async function updateTask(id, updates) {
|
|
267
|
+
if (!id || typeof id !== 'string') {
|
|
268
|
+
throw new Error('Task ID is required');
|
|
269
|
+
}
|
|
270
|
+
const validated = UpdateTaskInputSchema.parse(updates);
|
|
271
|
+
const storage = getStorage();
|
|
272
|
+
const existing = await storage.loadTask(id);
|
|
273
|
+
if (!existing) {
|
|
274
|
+
throw new Error(`Task not found: ${id}`);
|
|
275
|
+
}
|
|
276
|
+
// Ensure updatedAt is at least 1ms after createdAt to avoid duplicate detection
|
|
277
|
+
const createdAtTime = existing.metadata.createdAt.getTime();
|
|
278
|
+
const now = Math.max(Date.now(), createdAtTime + 1);
|
|
279
|
+
// Use title, falling back to deprecated intent for backward compatibility
|
|
280
|
+
const titleUpdate = validated.title || validated.intent;
|
|
281
|
+
// Merge updates
|
|
282
|
+
const merged = {
|
|
283
|
+
...existing,
|
|
284
|
+
...(titleUpdate !== undefined && { title: titleUpdate }),
|
|
285
|
+
...(validated.content !== undefined && { content: validated.content }),
|
|
286
|
+
...(validated.status !== undefined && { status: validated.status }),
|
|
287
|
+
...(validated.productSpecRef !== undefined && { productSpecRef: validated.productSpecRef }),
|
|
288
|
+
...(validated.planSteps !== undefined && { planSteps: normalizePlanSteps(validated.planSteps) }),
|
|
289
|
+
metadata: {
|
|
290
|
+
...existing.metadata,
|
|
291
|
+
updatedAt: new Date(now),
|
|
292
|
+
...(validated.metadata?.tags !== undefined && { tags: validated.metadata.tags }),
|
|
293
|
+
...(validated.metadata?.priority !== undefined && { priority: validated.metadata.priority }),
|
|
294
|
+
...(validated.metadata?.reviewers !== undefined && { reviewers: validated.metadata.reviewers }),
|
|
295
|
+
},
|
|
296
|
+
};
|
|
297
|
+
await storage.saveTask(merged);
|
|
298
|
+
// Log status change specifically if status changed
|
|
299
|
+
if (validated.status !== undefined && validated.status !== existing.status) {
|
|
300
|
+
logTaskEvent(TaskKinds.STATUS_CHANGE, id, {
|
|
301
|
+
previousStatus: existing.status,
|
|
302
|
+
newStatus: validated.status,
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
logTaskEvent(TaskKinds.UPDATE, id, {
|
|
307
|
+
title: merged.title,
|
|
308
|
+
status: merged.status,
|
|
309
|
+
fieldsUpdated: Object.keys(validated),
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
return merged;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Delete a task by ID
|
|
316
|
+
*/
|
|
317
|
+
export async function deleteTask(id) {
|
|
318
|
+
if (!id || typeof id !== 'string') {
|
|
319
|
+
throw new Error('Task ID is required');
|
|
320
|
+
}
|
|
321
|
+
const storage = getStorage();
|
|
322
|
+
return storage.deleteTask(id);
|
|
323
|
+
}
|
|
324
|
+
// ============================================================================
|
|
325
|
+
// Plan Step Schema and Function
|
|
326
|
+
// ============================================================================
|
|
327
|
+
export const AddPlanStepInputSchema = z.object({
|
|
328
|
+
description: z.string().min(1, 'Step description is required'),
|
|
329
|
+
status: z.enum(['pending', 'in-progress', 'completed', 'failed']).optional(),
|
|
330
|
+
command: z.string().optional(),
|
|
331
|
+
expectedOutcome: z.string().optional(),
|
|
332
|
+
});
|
|
333
|
+
export const AddCommentInputSchema = z.object({
|
|
334
|
+
author: z.string().min(1, 'Comment author is required'),
|
|
335
|
+
content: z.string().min(1, 'Comment content is required'),
|
|
336
|
+
});
|
|
337
|
+
/**
|
|
338
|
+
* Add a plan step to an existing task
|
|
339
|
+
*/
|
|
340
|
+
export async function addPlanStep(taskId, step) {
|
|
341
|
+
if (!taskId || typeof taskId !== 'string') {
|
|
342
|
+
throw new Error('Task ID is required');
|
|
343
|
+
}
|
|
344
|
+
const validated = AddPlanStepInputSchema.parse(step);
|
|
345
|
+
const storage = getStorage();
|
|
346
|
+
const task = await storage.loadTask(taskId);
|
|
347
|
+
if (!task) {
|
|
348
|
+
throw new Error(`Task not found: ${taskId}`);
|
|
349
|
+
}
|
|
350
|
+
const existingSteps = task.planSteps || [];
|
|
351
|
+
const stepNum = (existingSteps.length + 1).toString().padStart(2, '0');
|
|
352
|
+
const stepId = `step-${stepNum}`;
|
|
353
|
+
const newStep = {
|
|
354
|
+
id: stepId,
|
|
355
|
+
description: validated.description,
|
|
356
|
+
status: validated.status || 'pending',
|
|
357
|
+
command: validated.command,
|
|
358
|
+
expectedOutcome: validated.expectedOutcome,
|
|
359
|
+
output: undefined,
|
|
360
|
+
executedAt: undefined,
|
|
361
|
+
};
|
|
362
|
+
// Ensure updatedAt is at least 1ms after createdAt to avoid duplicate detection
|
|
363
|
+
const createdAtTime = task.metadata.createdAt.getTime();
|
|
364
|
+
const now = Math.max(Date.now(), createdAtTime + 1);
|
|
365
|
+
const updatedTask = {
|
|
366
|
+
...task,
|
|
367
|
+
planSteps: [...existingSteps, newStep],
|
|
368
|
+
metadata: {
|
|
369
|
+
...task.metadata,
|
|
370
|
+
updatedAt: new Date(now),
|
|
371
|
+
},
|
|
372
|
+
};
|
|
373
|
+
await storage.saveTask(updatedTask);
|
|
374
|
+
logTaskEvent(TaskKinds.UPDATE, taskId, {
|
|
375
|
+
action: 'add_plan_step',
|
|
376
|
+
stepId,
|
|
377
|
+
stepDescription: validated.description,
|
|
378
|
+
});
|
|
379
|
+
return newStep;
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Add a comment to an existing task
|
|
383
|
+
*/
|
|
384
|
+
export async function addComment(taskId, comment) {
|
|
385
|
+
if (!taskId || typeof taskId !== 'string') {
|
|
386
|
+
throw new Error('Task ID is required');
|
|
387
|
+
}
|
|
388
|
+
const validated = AddCommentInputSchema.parse(comment);
|
|
389
|
+
const storage = getStorage();
|
|
390
|
+
const task = await storage.loadTask(taskId);
|
|
391
|
+
if (!task) {
|
|
392
|
+
throw new Error(`Task not found: ${taskId}`);
|
|
393
|
+
}
|
|
394
|
+
const existingComments = task.comments || [];
|
|
395
|
+
const commentNum = (existingComments.length + 1).toString().padStart(2, '0');
|
|
396
|
+
const commentId = `cmt-${commentNum}`;
|
|
397
|
+
const createdAt = new Date().toISOString();
|
|
398
|
+
const newComment = {
|
|
399
|
+
id: commentId,
|
|
400
|
+
author: validated.author,
|
|
401
|
+
content: validated.content,
|
|
402
|
+
createdAt,
|
|
403
|
+
};
|
|
404
|
+
// Ensure updatedAt is at least 1ms after createdAt to avoid duplicate detection
|
|
405
|
+
const createdAtTime = task.metadata.createdAt.getTime();
|
|
406
|
+
const now = Math.max(Date.now(), createdAtTime + 1);
|
|
407
|
+
const updatedTask = {
|
|
408
|
+
...task,
|
|
409
|
+
comments: [...existingComments, newComment],
|
|
410
|
+
metadata: {
|
|
411
|
+
...task.metadata,
|
|
412
|
+
updatedAt: new Date(now),
|
|
413
|
+
},
|
|
414
|
+
};
|
|
415
|
+
await storage.saveTask(updatedTask);
|
|
416
|
+
logTaskEvent(TaskKinds.UPDATE, taskId, {
|
|
417
|
+
action: 'add_comment',
|
|
418
|
+
commentId,
|
|
419
|
+
author: validated.author,
|
|
420
|
+
});
|
|
421
|
+
return newComment;
|
|
422
|
+
}
|
|
423
|
+
// ============================================================================
|
|
424
|
+
// Export all schemas for MCP tool generation
|
|
425
|
+
// ============================================================================
|
|
426
|
+
export const taskSchemas = {
|
|
427
|
+
TaskStatusSchema,
|
|
428
|
+
TaskPrioritySchema,
|
|
429
|
+
AuthorSchema,
|
|
430
|
+
TaskFiltersSchema,
|
|
431
|
+
PlanStepInputSchema,
|
|
432
|
+
CreateTaskInputSchema,
|
|
433
|
+
UpdateTaskInputSchema,
|
|
434
|
+
AddPlanStepInputSchema,
|
|
435
|
+
AddCommentInputSchema,
|
|
436
|
+
};
|
|
437
|
+
// ============================================================================
|
|
438
|
+
// Pre-computed JSON Schemas for MCP tool parameters
|
|
439
|
+
// ============================================================================
|
|
440
|
+
// Helper to extract properties from JSON schema
|
|
441
|
+
// Using 'any' to avoid TypeScript's deep type instantiation issues with zod-to-json-schema
|
|
442
|
+
function extractJsonSchemaProperties(schema) {
|
|
443
|
+
const jsonSchema = zodToJsonSchema(schema, { $refStrategy: 'none' });
|
|
444
|
+
return (jsonSchema.properties || {});
|
|
445
|
+
}
|
|
446
|
+
// Base schema for update (without .refine()) to avoid TypeScript issues
|
|
447
|
+
const UpdateTaskBaseSchema = z.object({
|
|
448
|
+
title: z.string().min(1).optional(),
|
|
449
|
+
/** @deprecated Use `title` instead. Will be removed in a future version. */
|
|
450
|
+
intent: z.string().min(1).optional(),
|
|
451
|
+
content: z.string().min(1).optional(),
|
|
452
|
+
status: TaskStatusSchema.optional(),
|
|
453
|
+
planSteps: z.array(PlanStepInputSchema).optional(),
|
|
454
|
+
metadata: z.object({
|
|
455
|
+
tags: z.array(z.string()).optional(),
|
|
456
|
+
priority: TaskPrioritySchema.optional(),
|
|
457
|
+
reviewers: z.array(z.string()).optional(),
|
|
458
|
+
}).optional(),
|
|
459
|
+
productSpecRef: z.string().optional(),
|
|
460
|
+
});
|
|
461
|
+
// Base schema for create (without .refine()) to avoid TypeScript issues
|
|
462
|
+
const CreateTaskBaseSchema = z.object({
|
|
463
|
+
title: z.string().min(1, 'Title is required').optional(),
|
|
464
|
+
/** @deprecated Use `title` instead. Will be removed in a future version. */
|
|
465
|
+
intent: z.string().min(1).optional(),
|
|
466
|
+
content: z.string().min(1, 'Content is required'),
|
|
467
|
+
author: AuthorSchema.optional(),
|
|
468
|
+
planSteps: z.array(PlanStepInputSchema).optional(),
|
|
469
|
+
status: TaskStatusSchema.optional().default('draft'),
|
|
470
|
+
metadata: z.object({
|
|
471
|
+
tags: z.array(z.string()).optional(),
|
|
472
|
+
priority: TaskPrioritySchema.optional(),
|
|
473
|
+
reviewers: z.array(z.string()).optional(),
|
|
474
|
+
}).optional(),
|
|
475
|
+
productSpecRef: z.string().optional(),
|
|
476
|
+
});
|
|
477
|
+
export const taskJsonSchemas = {
|
|
478
|
+
filters: extractJsonSchemaProperties(TaskFiltersSchema),
|
|
479
|
+
create: extractJsonSchemaProperties(CreateTaskBaseSchema),
|
|
480
|
+
update: extractJsonSchemaProperties(UpdateTaskBaseSchema),
|
|
481
|
+
createRequired: ['title', 'content'],
|
|
482
|
+
};
|
|
483
|
+
//# sourceMappingURL=tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lovelybunch/core",
|
|
3
|
-
"version": "1.0.75-alpha.
|
|
3
|
+
"version": "1.0.75-alpha.10",
|
|
4
4
|
"description": "Core Coconut functionality",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"test:ui": "vitest --ui"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@lovelybunch/types": "^1.0.75-alpha.
|
|
41
|
+
"@lovelybunch/types": "^1.0.75-alpha.10",
|
|
42
42
|
"fuse.js": "^7.0.0",
|
|
43
43
|
"gray-matter": "^4.0.3",
|
|
44
44
|
"nanoid": "^5.0.6",
|