@standardbeagle/dart-query 0.6.0 → 0.7.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/api/dartClient.d.ts +2 -2
- package/dist/api/dartClient.d.ts.map +1 -1
- package/dist/api/dartClient.js +24 -17
- package/dist/api/dartClient.js.map +1 -1
- package/dist/batch/batchOperations.d.ts +2 -2
- package/dist/batch/batchOperations.d.ts.map +1 -1
- package/dist/batch/batchOperations.js.map +1 -1
- package/dist/batch/validateUpdates.d.ts +5 -0
- package/dist/batch/validateUpdates.d.ts.map +1 -0
- package/dist/batch/validateUpdates.js +159 -0
- package/dist/batch/validateUpdates.js.map +1 -0
- package/dist/index.js +110 -82
- package/dist/index.js.map +1 -1
- package/dist/parsers/dartql.d.ts +34 -0
- package/dist/parsers/dartql.d.ts.map +1 -1
- package/dist/parsers/dartql.js +285 -0
- package/dist/parsers/dartql.js.map +1 -1
- package/dist/tools/batch_update_tasks.d.ts.map +1 -1
- package/dist/tools/batch_update_tasks.js +3 -179
- package/dist/tools/batch_update_tasks.js.map +1 -1
- package/dist/tools/execute_dartql.d.ts +4 -0
- package/dist/tools/execute_dartql.d.ts.map +1 -0
- package/dist/tools/execute_dartql.js +270 -0
- package/dist/tools/execute_dartql.js.map +1 -0
- package/dist/tools/info.d.ts.map +1 -1
- package/dist/tools/info.js +54 -5
- package/dist/tools/info.js.map +1 -1
- package/dist/tools/update_task.d.ts.map +1 -1
- package/dist/tools/update_task.js +114 -55
- package/dist/tools/update_task.js.map +1 -1
- package/dist/types/index.d.ts +71 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,7 +2,8 @@ import pLimit from 'p-limit';
|
|
|
2
2
|
import { DartClient } from '../api/dartClient.js';
|
|
3
3
|
import { handleGetConfig } from './get_config.js';
|
|
4
4
|
import { parseDartQLToAST, convertToFilters } from '../parsers/dartql.js';
|
|
5
|
-
import { DartAPIError, ValidationError,
|
|
5
|
+
import { DartAPIError, ValidationError, } from '../types/index.js';
|
|
6
|
+
import { validateUpdates, extractCurrentValues } from '../batch/validateUpdates.js';
|
|
6
7
|
import { createBatchOperation, completeBatchOperation, addSuccessfulItem, addFailedItem, } from '../batch/batchOperations.js';
|
|
7
8
|
export async function handleBatchUpdateTasks(input) {
|
|
8
9
|
const DART_TOKEN = process.env.DART_TOKEN;
|
|
@@ -103,10 +104,7 @@ export async function handleBatchUpdateTasks(input) {
|
|
|
103
104
|
const failedItems = [];
|
|
104
105
|
const updatePromises = matchingTasks.map((task) => limit(async () => {
|
|
105
106
|
try {
|
|
106
|
-
await client.updateTask(
|
|
107
|
-
dart_id: task.dart_id,
|
|
108
|
-
updates: validatedUpdates,
|
|
109
|
-
});
|
|
107
|
+
await client.updateTask(task.dart_id, validatedUpdates);
|
|
110
108
|
successfulDartIds.push(task.dart_id);
|
|
111
109
|
addSuccessfulItem(batchOperationId, task.dart_id);
|
|
112
110
|
}
|
|
@@ -141,178 +139,4 @@ export async function handleBatchUpdateTasks(input) {
|
|
|
141
139
|
execution_time_ms: executionTimeMs,
|
|
142
140
|
};
|
|
143
141
|
}
|
|
144
|
-
async function validateUpdates(updates, config) {
|
|
145
|
-
const validated = {};
|
|
146
|
-
if (updates.title !== undefined) {
|
|
147
|
-
if (typeof updates.title !== 'string' || updates.title.trim() === '') {
|
|
148
|
-
throw new ValidationError('title must be a non-empty string', 'title');
|
|
149
|
-
}
|
|
150
|
-
if (updates.title.length > 500) {
|
|
151
|
-
throw new ValidationError(`title exceeds maximum length of 500 characters (current: ${updates.title.length})`, 'title');
|
|
152
|
-
}
|
|
153
|
-
validated.title = updates.title;
|
|
154
|
-
}
|
|
155
|
-
if (updates.description !== undefined) {
|
|
156
|
-
validated.description = updates.description;
|
|
157
|
-
}
|
|
158
|
-
if (updates.dartboard !== undefined) {
|
|
159
|
-
if (!config.dartboards || config.dartboards.length === 0) {
|
|
160
|
-
throw new ValidationError('No dartboards found in workspace configuration. Cannot update dartboard.', 'dartboard');
|
|
161
|
-
}
|
|
162
|
-
const dartboard = findDartboard(config.dartboards, updates.dartboard);
|
|
163
|
-
if (!dartboard) {
|
|
164
|
-
const dartboardNames = getDartboardNames(config.dartboards);
|
|
165
|
-
const availableDartboards = dartboardNames.slice(0, 10).join(', ') +
|
|
166
|
-
(dartboardNames.length > 10 ? `, ... (${dartboardNames.length - 10} more)` : '');
|
|
167
|
-
throw new ValidationError(`Invalid dartboard: "${updates.dartboard}" not found in workspace. Available dartboards: ${availableDartboards}`, 'dartboard', dartboardNames);
|
|
168
|
-
}
|
|
169
|
-
validated.dartboard = typeof dartboard === 'string' ? dartboard : dartboard.dart_id;
|
|
170
|
-
}
|
|
171
|
-
if (updates.status !== undefined) {
|
|
172
|
-
if (!config.statuses || config.statuses.length === 0) {
|
|
173
|
-
throw new ValidationError('No statuses found in workspace configuration. Cannot update status.', 'status');
|
|
174
|
-
}
|
|
175
|
-
const status = findStatus(config.statuses, updates.status);
|
|
176
|
-
if (!status) {
|
|
177
|
-
const statusNames = getStatusNames(config.statuses);
|
|
178
|
-
const availableStatuses = statusNames.join(', ');
|
|
179
|
-
throw new ValidationError(`Invalid status: "${updates.status}" not found in workspace. Available statuses: ${availableStatuses}`, 'status', statusNames);
|
|
180
|
-
}
|
|
181
|
-
validated.status = typeof status === 'string' ? status : status.dart_id;
|
|
182
|
-
}
|
|
183
|
-
if (updates.priority !== undefined) {
|
|
184
|
-
if (!config.priorities || config.priorities.length === 0) {
|
|
185
|
-
throw new ValidationError('No priorities found in workspace configuration. Cannot update priority.', 'priority');
|
|
186
|
-
}
|
|
187
|
-
if (typeof updates.priority !== 'number' || updates.priority < 1 || updates.priority > 5) {
|
|
188
|
-
throw new ValidationError(`Invalid priority: ${updates.priority}. Valid range: 1-5 (1=lowest, 5=highest)`, 'priority', ['1', '2', '3', '4', '5']);
|
|
189
|
-
}
|
|
190
|
-
validated.priority = updates.priority;
|
|
191
|
-
}
|
|
192
|
-
if (updates.size !== undefined) {
|
|
193
|
-
if (!config.sizes || config.sizes.length === 0) {
|
|
194
|
-
throw new ValidationError('No sizes found in workspace configuration. Cannot update size.', 'size');
|
|
195
|
-
}
|
|
196
|
-
if (typeof updates.size !== 'number' || updates.size < 1 || updates.size > 5) {
|
|
197
|
-
throw new ValidationError(`Invalid size: ${updates.size}. Valid range: 1-5 (1=XS, 5=XL)`, 'size', ['1', '2', '3', '4', '5']);
|
|
198
|
-
}
|
|
199
|
-
validated.size = updates.size;
|
|
200
|
-
}
|
|
201
|
-
if (updates.assignees !== undefined) {
|
|
202
|
-
if (!Array.isArray(updates.assignees)) {
|
|
203
|
-
throw new ValidationError('assignees must be an array of assignee dart_ids, names, or emails', 'assignees');
|
|
204
|
-
}
|
|
205
|
-
if (updates.assignees.length > 0) {
|
|
206
|
-
if (!config.assignees || config.assignees.length === 0) {
|
|
207
|
-
throw new ValidationError('No assignees found in workspace configuration. Cannot update assignees.', 'assignees');
|
|
208
|
-
}
|
|
209
|
-
const resolvedAssignees = [];
|
|
210
|
-
for (const assigneeIdOrName of updates.assignees) {
|
|
211
|
-
if (typeof assigneeIdOrName !== 'string') {
|
|
212
|
-
throw new ValidationError(`assignees array must contain only strings, found: ${typeof assigneeIdOrName}`, 'assignees');
|
|
213
|
-
}
|
|
214
|
-
const assignee = config.assignees.find((a) => a.email === assigneeIdOrName ||
|
|
215
|
-
a.name === assigneeIdOrName);
|
|
216
|
-
if (!assignee) {
|
|
217
|
-
const availableAssignees = config.assignees
|
|
218
|
-
.map((a) => a.email ? `${a.name} <${a.email}>` : a.name)
|
|
219
|
-
.join(', ');
|
|
220
|
-
throw new ValidationError(`Invalid assignee: "${assigneeIdOrName}" not found in workspace. Available assignees: ${availableAssignees}`, 'assignees', config.assignees.map((a) => a.email || a.name));
|
|
221
|
-
}
|
|
222
|
-
resolvedAssignees.push(assignee.email || assignee.name);
|
|
223
|
-
}
|
|
224
|
-
validated.assignees = resolvedAssignees;
|
|
225
|
-
}
|
|
226
|
-
else {
|
|
227
|
-
validated.assignees = [];
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
if (updates.tags !== undefined) {
|
|
231
|
-
if (!Array.isArray(updates.tags)) {
|
|
232
|
-
throw new ValidationError('tags must be an array of tag dart_ids or names', 'tags');
|
|
233
|
-
}
|
|
234
|
-
if (updates.tags.length > 0) {
|
|
235
|
-
const resolvedTags = [];
|
|
236
|
-
for (const tagInput of updates.tags) {
|
|
237
|
-
if (typeof tagInput !== 'string') {
|
|
238
|
-
throw new ValidationError(`tags array must contain only strings, found: ${typeof tagInput}`, 'tags');
|
|
239
|
-
}
|
|
240
|
-
const tag = findTag(config.tags, tagInput);
|
|
241
|
-
resolvedTags.push(tag ? (typeof tag === 'string' ? tag : tag.dart_id) : tagInput);
|
|
242
|
-
}
|
|
243
|
-
validated.tags = resolvedTags;
|
|
244
|
-
}
|
|
245
|
-
else {
|
|
246
|
-
validated.tags = [];
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
if (updates.due_at !== undefined) {
|
|
250
|
-
const dueDate = new Date(updates.due_at);
|
|
251
|
-
if (isNaN(dueDate.getTime())) {
|
|
252
|
-
throw new ValidationError(`Invalid due_at date format: "${updates.due_at}". Expected ISO8601 format (e.g., "2026-01-17T10:00:00Z")`, 'due_at');
|
|
253
|
-
}
|
|
254
|
-
validated.due_at = updates.due_at;
|
|
255
|
-
}
|
|
256
|
-
if (updates.start_at !== undefined) {
|
|
257
|
-
const startDate = new Date(updates.start_at);
|
|
258
|
-
if (isNaN(startDate.getTime())) {
|
|
259
|
-
throw new ValidationError(`Invalid start_at date format: "${updates.start_at}". Expected ISO8601 format (e.g., "2026-01-17T10:00:00Z")`, 'start_at');
|
|
260
|
-
}
|
|
261
|
-
validated.start_at = updates.start_at;
|
|
262
|
-
}
|
|
263
|
-
if (updates.parent_task !== undefined) {
|
|
264
|
-
validated.parent_task = updates.parent_task;
|
|
265
|
-
}
|
|
266
|
-
const validateRelationshipArray = (fieldName, value) => {
|
|
267
|
-
if (value === undefined) {
|
|
268
|
-
return undefined;
|
|
269
|
-
}
|
|
270
|
-
if (!Array.isArray(value)) {
|
|
271
|
-
throw new ValidationError(`${fieldName} must be an array of task dart_ids`, fieldName);
|
|
272
|
-
}
|
|
273
|
-
if (value.length === 0) {
|
|
274
|
-
return [];
|
|
275
|
-
}
|
|
276
|
-
for (let i = 0; i < value.length; i++) {
|
|
277
|
-
const item = value[i];
|
|
278
|
-
if (typeof item !== 'string') {
|
|
279
|
-
throw new ValidationError(`${fieldName}[${i}] must be a string, found: ${typeof item}`, fieldName);
|
|
280
|
-
}
|
|
281
|
-
if (item.trim() === '') {
|
|
282
|
-
throw new ValidationError(`${fieldName}[${i}] must be a non-empty string`, fieldName);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
return value;
|
|
286
|
-
};
|
|
287
|
-
const subtaskIds = validateRelationshipArray('subtask_ids', updates.subtask_ids);
|
|
288
|
-
if (subtaskIds !== undefined) {
|
|
289
|
-
validated.subtask_ids = subtaskIds;
|
|
290
|
-
}
|
|
291
|
-
const blockerIds = validateRelationshipArray('blocker_ids', updates.blocker_ids);
|
|
292
|
-
if (blockerIds !== undefined) {
|
|
293
|
-
validated.blocker_ids = blockerIds;
|
|
294
|
-
}
|
|
295
|
-
const blockingIds = validateRelationshipArray('blocking_ids', updates.blocking_ids);
|
|
296
|
-
if (blockingIds !== undefined) {
|
|
297
|
-
validated.blocking_ids = blockingIds;
|
|
298
|
-
}
|
|
299
|
-
const duplicateIds = validateRelationshipArray('duplicate_ids', updates.duplicate_ids);
|
|
300
|
-
if (duplicateIds !== undefined) {
|
|
301
|
-
validated.duplicate_ids = duplicateIds;
|
|
302
|
-
}
|
|
303
|
-
const relatedIds = validateRelationshipArray('related_ids', updates.related_ids);
|
|
304
|
-
if (relatedIds !== undefined) {
|
|
305
|
-
validated.related_ids = relatedIds;
|
|
306
|
-
}
|
|
307
|
-
return validated;
|
|
308
|
-
}
|
|
309
|
-
function extractCurrentValues(task, updatedFields) {
|
|
310
|
-
const currentValues = {};
|
|
311
|
-
for (const field of updatedFields) {
|
|
312
|
-
if (field in task) {
|
|
313
|
-
currentValues[field] = task[field];
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
return currentValues;
|
|
317
|
-
}
|
|
318
142
|
//# sourceMappingURL=batch_update_tasks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch_update_tasks.js","sourceRoot":"","sources":["../../src/tools/batch_update_tasks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"batch_update_tasks.js","sourceRoot":"","sources":["../../src/tools/batch_update_tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ExecuteDartQLInput, ExecuteDartQLOutput, DartTask } from '../types/index.js';
|
|
2
|
+
export declare function interpolateTemplate(template: string, task: DartTask): string;
|
|
3
|
+
export declare function handleExecuteDartQL(input: ExecuteDartQLInput): Promise<ExecuteDartQLOutput>;
|
|
4
|
+
//# sourceMappingURL=execute_dartql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute_dartql.d.ts","sourceRoot":"","sources":["../../src/tools/execute_dartql.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EAQnB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAY3B,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAO5E;AA0GD,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAuH9B"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import pLimit from 'p-limit';
|
|
2
|
+
import { DartClient } from '../api/dartClient.js';
|
|
3
|
+
import { handleGetConfig } from './get_config.js';
|
|
4
|
+
import { parseDartQLStatements, convertToFilters } from '../parsers/dartql.js';
|
|
5
|
+
import { DartAPIError, ValidationError, } from '../types/index.js';
|
|
6
|
+
import { validateUpdates } from '../batch/validateUpdates.js';
|
|
7
|
+
import { createBatchOperation, completeBatchOperation, addSuccessfulItem, addFailedItem, } from '../batch/batchOperations.js';
|
|
8
|
+
export function interpolateTemplate(template, task) {
|
|
9
|
+
return template.replace(/\{(\w+)\}/g, (_match, field) => {
|
|
10
|
+
const val = task[field];
|
|
11
|
+
if (val === null || val === undefined)
|
|
12
|
+
return '';
|
|
13
|
+
if (Array.isArray(val))
|
|
14
|
+
return val.join(', ');
|
|
15
|
+
return String(val);
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
function setValueToPlainWithTemplate(sv, task) {
|
|
19
|
+
switch (sv.type) {
|
|
20
|
+
case 'string': return interpolateTemplate(sv.value, task);
|
|
21
|
+
case 'number': return sv.value;
|
|
22
|
+
case 'null': return undefined;
|
|
23
|
+
case 'array': return sv.elements.map(e => setValueToPlainWithTemplate(e, task));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function assignmentsToUpdates(assignments, task) {
|
|
27
|
+
const updates = {};
|
|
28
|
+
for (const { field, value } of assignments) {
|
|
29
|
+
updates[field] = setValueToPlainWithTemplate(value, task);
|
|
30
|
+
}
|
|
31
|
+
return updates;
|
|
32
|
+
}
|
|
33
|
+
function buildPlannedOps(stmt) {
|
|
34
|
+
if (stmt.type === 'delete') {
|
|
35
|
+
return ['DELETE task'];
|
|
36
|
+
}
|
|
37
|
+
const ops = [];
|
|
38
|
+
for (const a of stmt.assignments) {
|
|
39
|
+
ops.push(`SET ${a.field} = ${formatSetValue(a.value)}`);
|
|
40
|
+
}
|
|
41
|
+
if (stmt.comment) {
|
|
42
|
+
ops.push(`COMMENT '${stmt.comment}'`);
|
|
43
|
+
}
|
|
44
|
+
return ops;
|
|
45
|
+
}
|
|
46
|
+
function formatSetValue(sv) {
|
|
47
|
+
switch (sv.type) {
|
|
48
|
+
case 'string': return `'${sv.value}'`;
|
|
49
|
+
case 'number': return String(sv.value);
|
|
50
|
+
case 'null': return 'NULL';
|
|
51
|
+
case 'array': return `[${sv.elements.map(formatSetValue).join(', ')}]`;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async function fetchMatchingTasks(client, whereExpr) {
|
|
55
|
+
const filterResult = convertToFilters(whereExpr);
|
|
56
|
+
if (filterResult.errors.length > 0) {
|
|
57
|
+
throw new ValidationError(`DartQL filter conversion errors: ${filterResult.errors.join('; ')}`, 'query', filterResult.errors);
|
|
58
|
+
}
|
|
59
|
+
let matchingTasks = [];
|
|
60
|
+
const apiFilters = filterResult.apiFilters;
|
|
61
|
+
let offset = 0;
|
|
62
|
+
const pageSize = 500;
|
|
63
|
+
let hasMore = true;
|
|
64
|
+
while (hasMore) {
|
|
65
|
+
const response = await client.listTasks({
|
|
66
|
+
...apiFilters,
|
|
67
|
+
limit: pageSize,
|
|
68
|
+
offset,
|
|
69
|
+
});
|
|
70
|
+
matchingTasks.push(...(response.tasks || []));
|
|
71
|
+
hasMore = offset + pageSize < (response.total || 0);
|
|
72
|
+
offset += pageSize;
|
|
73
|
+
if (matchingTasks.length >= 10000) {
|
|
74
|
+
throw new ValidationError('Statement matches too many tasks (>10,000). Please narrow your WHERE clause.', 'query');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (filterResult.requiresClientSide && filterResult.clientFilter) {
|
|
78
|
+
matchingTasks = matchingTasks.filter(filterResult.clientFilter);
|
|
79
|
+
}
|
|
80
|
+
return matchingTasks;
|
|
81
|
+
}
|
|
82
|
+
export async function handleExecuteDartQL(input) {
|
|
83
|
+
const DART_TOKEN = process.env.DART_TOKEN;
|
|
84
|
+
if (!DART_TOKEN) {
|
|
85
|
+
throw new DartAPIError('DART_TOKEN environment variable is required. Get your token from: https://app.dartai.com/?settings=account', 401);
|
|
86
|
+
}
|
|
87
|
+
if (!input || typeof input !== 'object') {
|
|
88
|
+
throw new ValidationError('input is required and must be an object', 'input');
|
|
89
|
+
}
|
|
90
|
+
if (!input.query || typeof input.query !== 'string' || input.query.trim() === '') {
|
|
91
|
+
throw new ValidationError('query is required and must be a non-empty DartQL statement', 'query');
|
|
92
|
+
}
|
|
93
|
+
const dryRun = input.dry_run !== false;
|
|
94
|
+
let concurrency = input.concurrency ?? 5;
|
|
95
|
+
if (typeof concurrency !== 'number' || !Number.isInteger(concurrency)) {
|
|
96
|
+
throw new ValidationError('concurrency must be an integer', 'concurrency');
|
|
97
|
+
}
|
|
98
|
+
if (concurrency < 1 || concurrency > 20) {
|
|
99
|
+
throw new ValidationError('concurrency must be between 1 and 20', 'concurrency');
|
|
100
|
+
}
|
|
101
|
+
const parseResult = parseDartQLStatements(input.query);
|
|
102
|
+
if (parseResult.errors.length > 0) {
|
|
103
|
+
throw new ValidationError(`DartQL parse errors: ${parseResult.errors.join('; ')}`, 'query', parseResult.errors);
|
|
104
|
+
}
|
|
105
|
+
const { statements } = parseResult.program;
|
|
106
|
+
let config;
|
|
107
|
+
if (statements.some(s => s.type === 'update')) {
|
|
108
|
+
try {
|
|
109
|
+
config = await handleGetConfig({ cache_bust: false });
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
if (error instanceof DartAPIError) {
|
|
113
|
+
throw new DartAPIError(`Failed to retrieve workspace config for validation: ${error.message}`, error.statusCode, error.response);
|
|
114
|
+
}
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const client = new DartClient({ token: DART_TOKEN });
|
|
119
|
+
const batchOp = createBatchOperation('dartql', 0);
|
|
120
|
+
const batchId = batchOp.batch_operation_id;
|
|
121
|
+
const startTime = Date.now();
|
|
122
|
+
const statementResults = [];
|
|
123
|
+
let totalMatched = 0;
|
|
124
|
+
let totalSucceeded = 0;
|
|
125
|
+
let totalFailed = 0;
|
|
126
|
+
for (let i = 0; i < statements.length; i++) {
|
|
127
|
+
const stmt = statements[i];
|
|
128
|
+
try {
|
|
129
|
+
const matchingTasks = await fetchMatchingTasks(client, stmt.where);
|
|
130
|
+
totalMatched += matchingTasks.length;
|
|
131
|
+
if (stmt.type === 'update') {
|
|
132
|
+
const result = await executeUpdateStatement(stmt, matchingTasks, client, config, dryRun, concurrency, batchId);
|
|
133
|
+
result.statement_index = i;
|
|
134
|
+
totalSucceeded += result.succeeded;
|
|
135
|
+
totalFailed += result.failed;
|
|
136
|
+
statementResults.push(result);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
const result = await executeDeleteStatement(stmt, matchingTasks, client, dryRun, concurrency, batchId);
|
|
140
|
+
result.statement_index = i;
|
|
141
|
+
totalSucceeded += result.succeeded;
|
|
142
|
+
totalFailed += result.failed;
|
|
143
|
+
statementResults.push(result);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
148
|
+
statementResults.push({
|
|
149
|
+
statement_index: i,
|
|
150
|
+
statement_type: stmt.type,
|
|
151
|
+
selector_matched: 0,
|
|
152
|
+
succeeded: 0,
|
|
153
|
+
failed: 1,
|
|
154
|
+
failed_items: [{ dart_id: '', error: errMsg }],
|
|
155
|
+
});
|
|
156
|
+
totalFailed += 1;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
const executionTimeMs = Date.now() - startTime;
|
|
160
|
+
const status = totalFailed === 0 ? 'completed' : 'completed';
|
|
161
|
+
completeBatchOperation(batchId, status);
|
|
162
|
+
return {
|
|
163
|
+
batch_operation_id: dryRun ? 'dry_run' : batchId,
|
|
164
|
+
dry_run: dryRun,
|
|
165
|
+
statements: statementResults,
|
|
166
|
+
total_matched: totalMatched,
|
|
167
|
+
total_succeeded: totalSucceeded,
|
|
168
|
+
total_failed: totalFailed,
|
|
169
|
+
execution_time_ms: executionTimeMs,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
async function executeUpdateStatement(stmt, matchingTasks, client, config, dryRun, concurrency, batchId) {
|
|
173
|
+
const result = {
|
|
174
|
+
statement_index: 0,
|
|
175
|
+
statement_type: 'update',
|
|
176
|
+
selector_matched: matchingTasks.length,
|
|
177
|
+
succeeded: 0,
|
|
178
|
+
failed: 0,
|
|
179
|
+
};
|
|
180
|
+
if (dryRun) {
|
|
181
|
+
result.preview_tasks = matchingTasks.slice(0, 10).map(task => ({
|
|
182
|
+
dart_id: task.dart_id,
|
|
183
|
+
title: task.title,
|
|
184
|
+
planned_ops: buildPlannedOps(stmt),
|
|
185
|
+
}));
|
|
186
|
+
return result;
|
|
187
|
+
}
|
|
188
|
+
const limit = pLimit(concurrency);
|
|
189
|
+
const successfulIds = [];
|
|
190
|
+
const failedItems = [];
|
|
191
|
+
let commentsAdded = 0;
|
|
192
|
+
let commentsFailed = 0;
|
|
193
|
+
const promises = matchingTasks.map(task => limit(async () => {
|
|
194
|
+
try {
|
|
195
|
+
const rawUpdates = assignmentsToUpdates(stmt.assignments, task);
|
|
196
|
+
const validated = await validateUpdates(rawUpdates, config);
|
|
197
|
+
await client.updateTask(task.dart_id, validated);
|
|
198
|
+
successfulIds.push(task.dart_id);
|
|
199
|
+
addSuccessfulItem(batchId, task.dart_id);
|
|
200
|
+
if (stmt.comment) {
|
|
201
|
+
try {
|
|
202
|
+
const commentText = interpolateTemplate(stmt.comment, task);
|
|
203
|
+
await client.addComment(task.dart_id, commentText);
|
|
204
|
+
commentsAdded++;
|
|
205
|
+
}
|
|
206
|
+
catch {
|
|
207
|
+
commentsFailed++;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
213
|
+
failedItems.push({ dart_id: task.dart_id, error: errMsg });
|
|
214
|
+
addFailedItem(batchId, { id: task.dart_id, error: errMsg });
|
|
215
|
+
}
|
|
216
|
+
}));
|
|
217
|
+
await Promise.all(promises);
|
|
218
|
+
result.succeeded = successfulIds.length;
|
|
219
|
+
result.failed = failedItems.length;
|
|
220
|
+
result.successful_dart_ids = successfulIds;
|
|
221
|
+
result.failed_items = failedItems.length > 0 ? failedItems : undefined;
|
|
222
|
+
if (stmt.comment) {
|
|
223
|
+
result.comments_added = commentsAdded;
|
|
224
|
+
result.comments_failed = commentsFailed;
|
|
225
|
+
}
|
|
226
|
+
return result;
|
|
227
|
+
}
|
|
228
|
+
async function executeDeleteStatement(stmt, matchingTasks, client, dryRun, concurrency, batchId) {
|
|
229
|
+
const result = {
|
|
230
|
+
statement_index: 0,
|
|
231
|
+
statement_type: 'delete',
|
|
232
|
+
selector_matched: matchingTasks.length,
|
|
233
|
+
succeeded: 0,
|
|
234
|
+
failed: 0,
|
|
235
|
+
};
|
|
236
|
+
if (dryRun) {
|
|
237
|
+
result.preview_tasks = matchingTasks.slice(0, 10).map(task => ({
|
|
238
|
+
dart_id: task.dart_id,
|
|
239
|
+
title: task.title,
|
|
240
|
+
planned_ops: ['DELETE task' + (stmt.confirmed ? '' : ' (CONFIRM required)')],
|
|
241
|
+
}));
|
|
242
|
+
return result;
|
|
243
|
+
}
|
|
244
|
+
if (!stmt.confirmed) {
|
|
245
|
+
throw new ValidationError('DELETE statement requires CONFIRM keyword when dry_run=false. ' +
|
|
246
|
+
'Add CONFIRM to the end of the DELETE statement to proceed.', 'query');
|
|
247
|
+
}
|
|
248
|
+
const limit = pLimit(concurrency);
|
|
249
|
+
const successfulIds = [];
|
|
250
|
+
const failedItems = [];
|
|
251
|
+
const promises = matchingTasks.map(task => limit(async () => {
|
|
252
|
+
try {
|
|
253
|
+
await client.deleteTask(task.dart_id);
|
|
254
|
+
successfulIds.push(task.dart_id);
|
|
255
|
+
addSuccessfulItem(batchId, task.dart_id);
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
259
|
+
failedItems.push({ dart_id: task.dart_id, error: errMsg });
|
|
260
|
+
addFailedItem(batchId, { id: task.dart_id, error: errMsg });
|
|
261
|
+
}
|
|
262
|
+
}));
|
|
263
|
+
await Promise.all(promises);
|
|
264
|
+
result.succeeded = successfulIds.length;
|
|
265
|
+
result.failed = failedItems.length;
|
|
266
|
+
result.successful_dart_ids = successfulIds;
|
|
267
|
+
result.failed_items = failedItems.length > 0 ? failedItems : undefined;
|
|
268
|
+
return result;
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=execute_dartql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute_dartql.js","sourceRoot":"","sources":["../../src/tools/execute_dartql.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/info.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/tools/info.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/tools/info.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAqhB1D,wBAAsB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAuCtE"}
|
package/dist/tools/info.js
CHANGED
|
@@ -60,16 +60,20 @@ const TOOL_GROUPS = {
|
|
|
60
60
|
],
|
|
61
61
|
},
|
|
62
62
|
'task-batch': {
|
|
63
|
-
count:
|
|
63
|
+
count: 4,
|
|
64
64
|
purpose: 'Bulk operations on multiple tasks',
|
|
65
65
|
tools: [
|
|
66
|
+
{
|
|
67
|
+
name: 'execute_dartql',
|
|
68
|
+
description: 'Execute DartQL UPDATE/DELETE statements with template vars, array literals, comments, multi-statement (;). Preferred over batch_update/delete_tasks.',
|
|
69
|
+
},
|
|
66
70
|
{
|
|
67
71
|
name: 'batch_update_tasks',
|
|
68
|
-
description: 'Update multiple tasks matching a DartQL selector
|
|
72
|
+
description: '[Deprecated: use execute_dartql] Update multiple tasks matching a DartQL selector',
|
|
69
73
|
},
|
|
70
74
|
{
|
|
71
75
|
name: 'batch_delete_tasks',
|
|
72
|
-
description: 'Delete multiple tasks matching a DartQL selector
|
|
76
|
+
description: '[Deprecated: use execute_dartql] Delete multiple tasks matching a DartQL selector',
|
|
73
77
|
},
|
|
74
78
|
{
|
|
75
79
|
name: 'get_batch_status',
|
|
@@ -125,7 +129,7 @@ discovery | 1 | Progressive capability discovery
|
|
|
125
129
|
config | 1 | Workspace configuration
|
|
126
130
|
task-crud | 5 | Single task operations
|
|
127
131
|
task-query | 2 | Search and filter tasks
|
|
128
|
-
task-batch |
|
|
132
|
+
task-batch | 4 | Bulk operations on multiple tasks
|
|
129
133
|
doc-crud | 5 | Document management
|
|
130
134
|
import | 1 | CSV bulk import
|
|
131
135
|
|
|
@@ -218,7 +222,52 @@ Examples:
|
|
|
218
222
|
|
|
219
223
|
Token Budget: ~400 tokens
|
|
220
224
|
Performance: Fast (cached) / Medium (API call)`,
|
|
221
|
-
|
|
225
|
+
execute_dartql: `Tool: execute_dartql
|
|
226
|
+
Description: Execute DartQL UPDATE/DELETE statements with template vars, array literals, and multi-statement support
|
|
227
|
+
|
|
228
|
+
Input Schema:
|
|
229
|
+
query: string (required)
|
|
230
|
+
One or more DartQL statements separated by semicolons
|
|
231
|
+
|
|
232
|
+
dry_run?: boolean (default: true)
|
|
233
|
+
Preview matching tasks without executing (RECOMMENDED for first run)
|
|
234
|
+
|
|
235
|
+
concurrency?: integer (default: 5)
|
|
236
|
+
Max concurrent API calls per statement (1-20)
|
|
237
|
+
|
|
238
|
+
Statement Syntax:
|
|
239
|
+
UPDATE WHERE <expression> SET <field> = <value> [, ...] [COMMENT '<template>']
|
|
240
|
+
DELETE WHERE <expression> [CONFIRM]
|
|
241
|
+
|
|
242
|
+
Values: strings ('text'), numbers (42), NULL, arrays (['a', 'b'])
|
|
243
|
+
Template vars: {field} in strings resolves to pre-update task values
|
|
244
|
+
|
|
245
|
+
Examples:
|
|
246
|
+
-- Set blocker relationships
|
|
247
|
+
UPDATE WHERE dart_id = 'abc' SET blocker_ids = ['id1', 'id2']
|
|
248
|
+
|
|
249
|
+
-- Batch status change with comment
|
|
250
|
+
UPDATE WHERE status = 'Todo' SET status = 'Done' COMMENT 'Closed: {title}'
|
|
251
|
+
|
|
252
|
+
-- Multi-statement
|
|
253
|
+
UPDATE WHERE priority = 1 SET priority = 2;
|
|
254
|
+
DELETE WHERE status = 'Archived' AND completed_at < '2025-01-01' CONFIRM
|
|
255
|
+
|
|
256
|
+
Safety:
|
|
257
|
+
- dry_run=true (default): preview only
|
|
258
|
+
- DELETE requires CONFIRM keyword when dry_run=false
|
|
259
|
+
- WHERE is mandatory (no accidental "update all")
|
|
260
|
+
|
|
261
|
+
Output Schema:
|
|
262
|
+
batch_operation_id: string
|
|
263
|
+
dry_run: boolean
|
|
264
|
+
statements: Array<StatementResult>
|
|
265
|
+
total_matched, total_succeeded, total_failed: integer
|
|
266
|
+
execution_time_ms: integer
|
|
267
|
+
|
|
268
|
+
Token Budget: ~400 tokens
|
|
269
|
+
Performance: Slow (depends on match count)`,
|
|
270
|
+
batch_update_tasks: `Tool: batch_update_tasks [DEPRECATED: use execute_dartql instead]
|
|
222
271
|
Description: Update multiple tasks matching a DartQL selector expression (SQL-like WHERE syntax)
|
|
223
272
|
|
|
224
273
|
Input Schema:
|