@dain-os/mcp-server 0.9.0 → 0.10.0
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/index.js +0 -0
- package/dist/tools/cadence.d.ts +4 -0
- package/dist/tools/cadence.d.ts.map +1 -0
- package/dist/tools/cadence.js +245 -0
- package/dist/tools/cadence.js.map +1 -0
- package/dist/tools/comments.d.ts +3 -0
- package/dist/tools/comments.d.ts.map +1 -0
- package/dist/tools/comments.js +19 -0
- package/dist/tools/comments.js.map +1 -0
- package/dist/tools/developer.d.ts +3 -0
- package/dist/tools/developer.d.ts.map +1 -0
- package/dist/tools/developer.js +349 -0
- package/dist/tools/developer.js.map +1 -0
- package/dist/tools/iam.d.ts +3 -0
- package/dist/tools/iam.d.ts.map +1 -0
- package/dist/tools/iam.js +38 -0
- package/dist/tools/iam.js.map +1 -0
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/log-time-entry.d.ts +3 -0
- package/dist/tools/log-time-entry.d.ts.map +1 -0
- package/dist/tools/log-time-entry.js +54 -0
- package/dist/tools/log-time-entry.js.map +1 -0
- package/dist/tools/pr-review.d.ts +3 -0
- package/dist/tools/pr-review.d.ts.map +1 -0
- package/dist/tools/pr-review.js +83 -0
- package/dist/tools/pr-review.js.map +1 -0
- package/dist/tools/products.d.ts +3 -0
- package/dist/tools/products.d.ts.map +1 -0
- package/dist/tools/products.js +37 -0
- package/dist/tools/products.js.map +1 -0
- package/dist/tools/projects.d.ts +3 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +151 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/proposal-content.d.ts +3 -0
- package/dist/tools/proposal-content.d.ts.map +1 -0
- package/dist/tools/proposal-content.js +136 -0
- package/dist/tools/proposal-content.js.map +1 -0
- package/dist/tools/proposal-options.d.ts +3 -0
- package/dist/tools/proposal-options.d.ts.map +1 -0
- package/dist/tools/proposal-options.js +132 -0
- package/dist/tools/proposal-options.js.map +1 -0
- package/dist/tools/proposals.d.ts +22 -0
- package/dist/tools/proposals.d.ts.map +1 -0
- package/dist/tools/proposals.js +179 -0
- package/dist/tools/proposals.js.map +1 -0
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +4 -2
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/tasks.d.ts +3 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/tasks.js +255 -0
- package/dist/tools/tasks.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA8RjD,eAAO,MAAM,SAAS,EAAE,cAAc,EAQrC,CAAC"}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Task tools. Six operations: list, get, create, update, complete, archive.
|
|
4
|
+
*
|
|
5
|
+
* `complete_task` is a thin wrapper around `update_task` with `status: "done"` —
|
|
6
|
+
* but it makes the verb discoverable to the model, which matters more than DRY
|
|
7
|
+
* here. The model will reach for it when the user says "mark this task done".
|
|
8
|
+
*/
|
|
9
|
+
const taskStatusEnum = z.enum([
|
|
10
|
+
'backlog',
|
|
11
|
+
'todo',
|
|
12
|
+
'in_progress',
|
|
13
|
+
'in_review',
|
|
14
|
+
'blocked',
|
|
15
|
+
'done',
|
|
16
|
+
'cancelled',
|
|
17
|
+
]);
|
|
18
|
+
const priorityMoscowEnum = z.enum(['must', 'should', 'could', 'wont']);
|
|
19
|
+
const listTasks = {
|
|
20
|
+
name: 'list_tasks',
|
|
21
|
+
description: 'List tasks. All filters are optional. Common patterns: list_tasks({ projectId }) for one project, list_tasks({ assigneeId: "<me>" }) for the caller\'s work, list_tasks({ status: "in_progress" }) for active work.',
|
|
22
|
+
inputSchema: z.object({
|
|
23
|
+
projectId: z.string().uuid().optional().describe('Filter by project.'),
|
|
24
|
+
assigneeId: z.string().uuid().optional().describe('Filter by assignee user id.'),
|
|
25
|
+
status: taskStatusEnum.optional(),
|
|
26
|
+
limit: z.coerce.number().int().min(1).max(100).optional().describe('Default 25, max 100.'),
|
|
27
|
+
}),
|
|
28
|
+
handler: async (client, input) => {
|
|
29
|
+
const params = new URLSearchParams();
|
|
30
|
+
if (input.projectId)
|
|
31
|
+
params.set('projectId', input.projectId);
|
|
32
|
+
if (input.assigneeId)
|
|
33
|
+
params.set('assigneeId', input.assigneeId);
|
|
34
|
+
if (input.status)
|
|
35
|
+
params.set('status', input.status);
|
|
36
|
+
if (input.limit !== undefined)
|
|
37
|
+
params.set('limit', String(input.limit));
|
|
38
|
+
const query = params.toString() ? `?${params.toString()}` : '';
|
|
39
|
+
return client.get(`/tasks${query}`);
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
const getTask = {
|
|
43
|
+
name: 'get_task',
|
|
44
|
+
description: 'Get one task by id. Returns the task plus assignee, dependencies, and comment count.',
|
|
45
|
+
inputSchema: z.object({
|
|
46
|
+
id: z.string().uuid(),
|
|
47
|
+
}),
|
|
48
|
+
handler: async (client, input) => client.get(`/tasks/${input.id}`),
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Resolve a fuzzy milestone name to a milestone id under the given project.
|
|
52
|
+
* Case-insensitive substring match. Returns the id on a unique hit, throws
|
|
53
|
+
* with an actionable message on zero or multiple matches so the model can
|
|
54
|
+
* recover by calling list_milestones and picking an exact id.
|
|
55
|
+
*/
|
|
56
|
+
async function resolveMilestoneName(client, projectId, rawName) {
|
|
57
|
+
const needle = rawName.trim().toLowerCase();
|
|
58
|
+
if (!needle) {
|
|
59
|
+
throw new Error('milestoneName is empty after trimming. Pass a non-empty name or omit the field.');
|
|
60
|
+
}
|
|
61
|
+
const milestones = await client.get(`/projects/${projectId}/milestones`);
|
|
62
|
+
const list = Array.isArray(milestones) ? milestones : [];
|
|
63
|
+
const matches = list.filter((m) => m.name.toLowerCase().includes(needle));
|
|
64
|
+
const [first] = matches;
|
|
65
|
+
if (matches.length === 1 && first)
|
|
66
|
+
return first.id;
|
|
67
|
+
if (matches.length === 0) {
|
|
68
|
+
const available = list.map((m) => `"${m.name}"`).join(', ') || '(none)';
|
|
69
|
+
throw new Error(`No milestone matches "${rawName}" on project ${projectId}. Available: ${available}. Call list_milestones for ids, or omit milestoneName.`);
|
|
70
|
+
}
|
|
71
|
+
const names = matches.map((m) => `"${m.name}"`).join(', ');
|
|
72
|
+
throw new Error(`"${rawName}" matches ${matches.length} milestones on project ${projectId}: ${names}. Pass a more specific milestoneName or use milestoneId directly.`);
|
|
73
|
+
}
|
|
74
|
+
const createTask = {
|
|
75
|
+
name: 'create_task',
|
|
76
|
+
description: 'Create a new task. `title` is required. When `projectId` is supplied you should ALMOST ALWAYS also pass `milestoneId` (preferred) or `milestoneName` (fuzzy-matched server-side); orphan tasks under a project with milestones clutter the project view. Use list_milestones first if you don\'t know the ids. The nested route is used automatically when projectId is set.',
|
|
77
|
+
inputSchema: z.object({
|
|
78
|
+
title: z.string().min(1).max(500),
|
|
79
|
+
description: z.string().max(10000).optional(),
|
|
80
|
+
projectId: z.string().uuid().optional(),
|
|
81
|
+
milestoneId: z.string().uuid().optional(),
|
|
82
|
+
milestoneName: z
|
|
83
|
+
.string()
|
|
84
|
+
.min(1)
|
|
85
|
+
.max(200)
|
|
86
|
+
.optional()
|
|
87
|
+
.describe('Alternative to milestoneId. Case-insensitive substring match against the project\'s milestones. Requires projectId. Resolved server-side; fails fast on 0 or >1 matches with the candidate list so you can recover.'),
|
|
88
|
+
parentTaskId: z.string().uuid().optional().describe('For subtasks.'),
|
|
89
|
+
assigneeId: z.string().uuid().optional(),
|
|
90
|
+
reporterId: z.string().uuid().optional(),
|
|
91
|
+
status: taskStatusEnum.optional().describe('Defaults to backlog.'),
|
|
92
|
+
priorityMoscow: priorityMoscowEnum.optional(),
|
|
93
|
+
storyPoints: z.coerce.number().int().min(0).max(100).optional(),
|
|
94
|
+
estimatedHours: z.coerce.number().min(0).optional(),
|
|
95
|
+
dueDate: z.string().optional().describe('ISO 8601.'),
|
|
96
|
+
startDate: z.string().optional().describe('ISO 8601.'),
|
|
97
|
+
tags: z.array(z.string()).optional(),
|
|
98
|
+
isBillable: z.boolean().optional(),
|
|
99
|
+
}),
|
|
100
|
+
handler: async (client, input) => {
|
|
101
|
+
const { projectId, milestoneName, milestoneId, ...rest } = input;
|
|
102
|
+
let resolvedMilestoneId = milestoneId;
|
|
103
|
+
if (!resolvedMilestoneId && milestoneName) {
|
|
104
|
+
if (!projectId) {
|
|
105
|
+
throw new Error('milestoneName requires projectId. Pass projectId or use milestoneId directly.');
|
|
106
|
+
}
|
|
107
|
+
resolvedMilestoneId = await resolveMilestoneName(client, projectId, milestoneName);
|
|
108
|
+
}
|
|
109
|
+
const body = resolvedMilestoneId
|
|
110
|
+
? { ...rest, milestoneId: resolvedMilestoneId }
|
|
111
|
+
: rest;
|
|
112
|
+
if (projectId) {
|
|
113
|
+
return client.post(`/projects/${projectId}/tasks`, body);
|
|
114
|
+
}
|
|
115
|
+
return client.post('/tasks', body);
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
const updateTask = {
|
|
119
|
+
name: 'update_task',
|
|
120
|
+
description: 'Update a task. Pass any subset of fields. Covers internal content (title, description), client-view content (titleClient, descriptionClient), assignment to either an IAM user (assigneeId) or a portal user (portalAssigneeId), time logging (actualHoursDelta), and the clientViewLocked flag that protects hand-curated client copy from auto-regen. For just "mark done", prefer complete_task.',
|
|
121
|
+
inputSchema: z.object({
|
|
122
|
+
id: z.string().uuid(),
|
|
123
|
+
title: z.string().min(1).max(500).optional(),
|
|
124
|
+
description: z.string().max(10000).optional().describe('Plain-text description (internal).'),
|
|
125
|
+
/** Client-friendly title. Falls back to `title` when null. Pair with descriptionClient for full client-view updates. */
|
|
126
|
+
titleClient: z.string().max(500).nullable().optional(),
|
|
127
|
+
descriptionClient: z.string().max(60000).nullable().optional().describe('Plain-text client-facing description.'),
|
|
128
|
+
descriptionJson: z.array(z.unknown()).nullable().optional().describe('Plate JSON for the internal description editor.'),
|
|
129
|
+
descriptionClientJson: z.array(z.unknown()).nullable().optional().describe('Plate JSON for the client-facing description editor.'),
|
|
130
|
+
/** Locks the client view from auto-regeneration. True = `regenerate_client_view` will refuse without `force: true`. */
|
|
131
|
+
clientViewLocked: z.boolean().optional(),
|
|
132
|
+
status: taskStatusEnum.optional(),
|
|
133
|
+
assigneeId: z.string().uuid().optional(),
|
|
134
|
+
/** Portal-user assignee (client champion). Independent of `assigneeId`. */
|
|
135
|
+
portalAssigneeId: z.string().uuid().nullable().optional(),
|
|
136
|
+
priorityMoscow: priorityMoscowEnum.optional(),
|
|
137
|
+
storyPoints: z.coerce.number().int().min(0).max(100).optional(),
|
|
138
|
+
estimatedHours: z.coerce.number().min(0).optional(),
|
|
139
|
+
actualHoursDelta: z.coerce.number().min(0).max(9999).optional().describe('Additive hours increment. actual_hours = actual_hours + delta. Use to log time without knowing the current total.'),
|
|
140
|
+
milestoneId: z.string().uuid().nullable().optional().describe('Move the task to a different milestone (or detach with null). Call list_milestones first if you need ids.'),
|
|
141
|
+
dueDate: z.string().optional().describe('ISO 8601.'),
|
|
142
|
+
startDate: z.string().optional().describe('ISO 8601.'),
|
|
143
|
+
completedAt: z
|
|
144
|
+
.string()
|
|
145
|
+
.refine((val) => !isNaN(Date.parse(val)), 'Invalid date')
|
|
146
|
+
.nullable()
|
|
147
|
+
.optional()
|
|
148
|
+
.describe('ISO 8601. Override the completion timestamp. Auto-set when status changes to done.'),
|
|
149
|
+
completedBy: z.string().uuid().nullable().optional().describe('IAM user UUID of the person who completed the task.'),
|
|
150
|
+
tags: z.array(z.string()).optional(),
|
|
151
|
+
}),
|
|
152
|
+
handler: async (client, input) => {
|
|
153
|
+
const { id, ...rest } = input;
|
|
154
|
+
return client.put(`/tasks/${id}`, rest);
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* Triggers a server-side Anthropic rewrite of a task's internal title +
|
|
159
|
+
* description into the jargon-free client-view variants (titleClient,
|
|
160
|
+
* descriptionClient, descriptionClientJson). The model + prompt are owned
|
|
161
|
+
* by the Express service so this tool is a thin call to
|
|
162
|
+
* `POST /tasks/:id/regenerate-client-view`.
|
|
163
|
+
*
|
|
164
|
+
* Use after a /ship or /execute build round to keep the client portal copy
|
|
165
|
+
* in sync without hand-editing. Refuses with 423 Locked when the task has
|
|
166
|
+
* `clientViewLocked = true` unless `force: true` is set — locked tasks
|
|
167
|
+
* carry hand-curated client copy (e.g. session recaps) that auto-regen
|
|
168
|
+
* must not silently overwrite.
|
|
169
|
+
*/
|
|
170
|
+
const regenerateClientView = {
|
|
171
|
+
name: 'regenerate_client_view',
|
|
172
|
+
description: 'Regenerate a task\'s client-view content (titleClient, descriptionClient, descriptionClientJson) from its current internal title and description. Uses an Anthropic call on the dain-api side. Returns the updated task. Refuses with 423 on locked tasks unless force: true.',
|
|
173
|
+
inputSchema: z.object({
|
|
174
|
+
id: z.string().uuid(),
|
|
175
|
+
force: z
|
|
176
|
+
.boolean()
|
|
177
|
+
.optional()
|
|
178
|
+
.describe('Override clientViewLocked. Only use after confirming with the user.'),
|
|
179
|
+
// Allowlist mirrors the server-side schema and service guard. Keep this
|
|
180
|
+
// list in sync with REGEN_ALLOWED_MODELS in apps/api tasks.service.ts.
|
|
181
|
+
// If a caller passes anything else the server returns 400 INVALID_INPUT.
|
|
182
|
+
model: z
|
|
183
|
+
.enum(['claude-haiku-4-5-20251001', 'claude-sonnet-4-6'])
|
|
184
|
+
.optional()
|
|
185
|
+
.describe('Optional Anthropic model id. Defaults to Haiku 4.5 server-side. Only Haiku and Sonnet are allowed — Opus is rejected.'),
|
|
186
|
+
}),
|
|
187
|
+
handler: async (client, input) => {
|
|
188
|
+
const { id, ...rest } = input;
|
|
189
|
+
return client.post(`/tasks/${id}/regenerate-client-view`, rest);
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
/**
|
|
193
|
+
* The API enforces a task status state machine (see VALID_TASK_STATUS_TRANSITIONS
|
|
194
|
+
* in apps/api). `backlog`, `todo`, `blocked`, and `cancelled` cannot transition
|
|
195
|
+
* directly to `done` -- they must pass through `in_progress` first. Rather
|
|
196
|
+
* than ask the caller to manage that, we read the current status and walk
|
|
197
|
+
* through the minimum intermediate states. `in_progress` is the universal
|
|
198
|
+
* predecessor: every state can either reach it directly or via one step
|
|
199
|
+
* (`backlog -> todo -> in_progress`).
|
|
200
|
+
*/
|
|
201
|
+
async function stepTaskToDone(client, taskId) {
|
|
202
|
+
const path = `/tasks/${taskId}`;
|
|
203
|
+
const current = (await client.get(path));
|
|
204
|
+
const currentStatus = current.data?.status ??
|
|
205
|
+
current.status;
|
|
206
|
+
// No-op fast path.
|
|
207
|
+
if (currentStatus === 'done')
|
|
208
|
+
return current;
|
|
209
|
+
// Minimum-hop paths to in_progress (the universal predecessor of done),
|
|
210
|
+
// then to done.
|
|
211
|
+
const pathToInProgress = {
|
|
212
|
+
backlog: ['todo', 'in_progress'],
|
|
213
|
+
todo: ['in_progress'],
|
|
214
|
+
in_progress: [],
|
|
215
|
+
review: [], // can transition directly to done
|
|
216
|
+
production_ready: [], // can transition directly to done
|
|
217
|
+
blocked: ['in_progress'],
|
|
218
|
+
cancelled: ['backlog', 'todo', 'in_progress'],
|
|
219
|
+
};
|
|
220
|
+
const intermediates = currentStatus && currentStatus in pathToInProgress
|
|
221
|
+
? pathToInProgress[currentStatus]
|
|
222
|
+
: [];
|
|
223
|
+
// Walk through each intermediate state, then finally to done.
|
|
224
|
+
let last = current;
|
|
225
|
+
for (const step of intermediates ?? []) {
|
|
226
|
+
last = await client.put(path, { status: step });
|
|
227
|
+
}
|
|
228
|
+
return client.put(path, { status: 'done' });
|
|
229
|
+
}
|
|
230
|
+
const completeTask = {
|
|
231
|
+
name: 'complete_task',
|
|
232
|
+
description: 'Mark a task as done. Handles the API\'s status state machine automatically: if the task is in `backlog`, `todo`, `blocked`, or `cancelled`, it walks through `in_progress` first (since the API rejects direct transitions from those states to `done`). Already-done tasks are returned as-is. Returns the final task.',
|
|
233
|
+
inputSchema: z.object({
|
|
234
|
+
id: z.string().uuid(),
|
|
235
|
+
}),
|
|
236
|
+
handler: async (client, input) => stepTaskToDone(client, input.id),
|
|
237
|
+
};
|
|
238
|
+
const archiveTask = {
|
|
239
|
+
name: 'archive_task',
|
|
240
|
+
description: 'Archive a task. Soft-deletes the task (status -> cancelled and removed from active queries). Use this when the task is no longer needed, not when it\'s complete.',
|
|
241
|
+
inputSchema: z.object({
|
|
242
|
+
id: z.string().uuid(),
|
|
243
|
+
}),
|
|
244
|
+
handler: async (client, input) => client.delete(`/tasks/${input.id}`),
|
|
245
|
+
};
|
|
246
|
+
export const taskTools = [
|
|
247
|
+
listTasks,
|
|
248
|
+
getTask,
|
|
249
|
+
createTask,
|
|
250
|
+
updateTask,
|
|
251
|
+
completeTask,
|
|
252
|
+
regenerateClientView,
|
|
253
|
+
archiveTask,
|
|
254
|
+
];
|
|
255
|
+
//# sourceMappingURL=tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED