@lwelliott/cortex-cli 1.0.6 → 1.0.7
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/README.md +51 -26
- package/dist/cli/formatters/markdown.d.ts.map +1 -1
- package/dist/cli/formatters/markdown.js +0 -4
- package/dist/cli/formatters/markdown.js.map +1 -1
- package/dist/cli/formatters/quiet.d.ts.map +1 -1
- package/dist/cli/formatters/quiet.js +0 -2
- package/dist/cli/formatters/quiet.js.map +1 -1
- package/dist/cli/formatters/table.d.ts.map +1 -1
- package/dist/cli/formatters/table.js +0 -5
- package/dist/cli/formatters/table.js.map +1 -1
- package/dist/cli/project-resolver.js +1 -1
- package/dist/cli/project-resolver.js.map +1 -1
- package/dist/cli/project.d.ts +0 -1
- package/dist/cli/project.d.ts.map +1 -1
- package/dist/cli/project.js +2 -35
- package/dist/cli/project.js.map +1 -1
- package/dist/cli/task.d.ts.map +1 -1
- package/dist/cli/task.js +22 -7
- package/dist/cli/task.js.map +1 -1
- package/dist/config/registry.d.ts +0 -9
- package/dist/config/registry.d.ts.map +1 -1
- package/dist/config/registry.js +1 -31
- package/dist/config/registry.js.map +1 -1
- package/dist/config/resolver.d.ts +3 -4
- package/dist/config/resolver.d.ts.map +1 -1
- package/dist/config/resolver.js +7 -24
- package/dist/config/resolver.js.map +1 -1
- package/dist/db/schema.d.ts +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +70 -4
- package/dist/db/schema.js.map +1 -1
- package/dist/models/common.d.ts +2 -2
- package/dist/models/common.d.ts.map +1 -1
- package/dist/models/project.d.ts +2 -4
- package/dist/models/project.d.ts.map +1 -1
- package/dist/models/project.js +0 -1
- package/dist/models/project.js.map +1 -1
- package/dist/services/project.d.ts +0 -10
- package/dist/services/project.d.ts.map +1 -1
- package/dist/services/project.js +2 -26
- package/dist/services/project.js.map +1 -1
- package/dist/services/stage-validator.d.ts +19 -18
- package/dist/services/stage-validator.d.ts.map +1 -1
- package/dist/services/stage-validator.js +41 -42
- package/dist/services/stage-validator.js.map +1 -1
- package/dist/services/task.d.ts +18 -21
- package/dist/services/task.d.ts.map +1 -1
- package/dist/services/task.js +96 -86
- package/dist/services/task.js.map +1 -1
- package/dist/state-machines/task-state.d.ts +8 -8
- package/dist/state-machines/task-state.d.ts.map +1 -1
- package/dist/state-machines/task-state.js +33 -31
- package/dist/state-machines/task-state.js.map +1 -1
- package/dist/utils/errors.d.ts +21 -51
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +63 -114
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/format.d.ts +0 -11
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +1 -10
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/levenshtein.d.ts +10 -0
- package/dist/utils/levenshtein.d.ts.map +1 -0
- package/dist/utils/levenshtein.js +42 -0
- package/dist/utils/levenshtein.js.map +1 -0
- package/dist/validators/owner-validator.d.ts +20 -16
- package/dist/validators/owner-validator.d.ts.map +1 -1
- package/dist/validators/owner-validator.js +37 -38
- package/dist/validators/owner-validator.js.map +1 -1
- package/package.json +9 -2
package/dist/services/task.js
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Task service: orchestrates task/kanban lifecycle
|
|
3
|
-
// Implements AD-
|
|
4
|
-
// + AD-
|
|
3
|
+
// Implements AD-0031 v2: Consolidated Stage/Status Workflow Engine
|
|
4
|
+
// + AD-0039 v2: Combined Move Validation
|
|
5
5
|
// + AD-0014: Nullable Columns for State-Specific Fields
|
|
6
|
-
// +
|
|
7
|
-
// + FS-SS-
|
|
8
|
-
// + FS-SS-030-0001..0004
|
|
6
|
+
// + FS-SS-005-0001..0012 v2
|
|
7
|
+
// + FS-SS-030-0001..0004 v2
|
|
9
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.validateOwnerRole =
|
|
9
|
+
exports.validateOwnerRole = void 0;
|
|
11
10
|
exports.addTask = addTask;
|
|
12
11
|
exports.moveTask = moveTask;
|
|
13
12
|
exports.updateTask = updateTask;
|
|
@@ -19,12 +18,12 @@ const errors_1 = require("../utils/errors");
|
|
|
19
18
|
const task_state_1 = require("../state-machines/task-state");
|
|
20
19
|
const owner_validator_1 = require("../validators/owner-validator");
|
|
21
20
|
Object.defineProperty(exports, "validateOwnerRole", { enumerable: true, get: function () { return owner_validator_1.validateOwnerRole; } });
|
|
22
|
-
Object.defineProperty(exports, "isValidRole", { enumerable: true, get: function () { return owner_validator_1.isValidRole; } });
|
|
23
21
|
const state_field_recorder_1 = require("../validators/state-field-recorder");
|
|
24
22
|
const stage_validator_1 = require("./stage-validator");
|
|
25
23
|
const sprint_1 = require("./sprint");
|
|
26
24
|
const locks_1 = require("../db/locks");
|
|
27
25
|
const retry_1 = require("../db/retry");
|
|
26
|
+
const levenshtein_1 = require("../utils/levenshtein");
|
|
28
27
|
/** Valid task type values */
|
|
29
28
|
const VALID_TASK_TYPES = ['Feature', 'Bug', 'Chore'];
|
|
30
29
|
/** Valid task priority values */
|
|
@@ -71,15 +70,17 @@ function validatePriority(priority) {
|
|
|
71
70
|
/**
|
|
72
71
|
* Add a new task to a sprint.
|
|
73
72
|
*
|
|
73
|
+
* v2: No captain-only owner validation. Any valid role can own a task in any stage.
|
|
74
|
+
*
|
|
74
75
|
* @param db - Database connection
|
|
75
76
|
* @param sprintId - Sprint ID
|
|
76
77
|
* @param content - Task content (nullable; can be populated via --content-file)
|
|
77
|
-
* @param owner - Owner role (must be valid
|
|
78
|
+
* @param owner - Owner role (must be valid)
|
|
78
79
|
* @param opts - Optional task properties
|
|
79
80
|
* @returns The created task result
|
|
80
81
|
* @throws TaskBadSprintError if sprint doesn't exist or is closed
|
|
81
82
|
* @throws TaskOwnerRequiredError if owner is empty
|
|
82
|
-
* @throws various
|
|
83
|
+
* @throws various validation errors
|
|
83
84
|
*/
|
|
84
85
|
function addTask(db, sprintId, content, owner, opts) {
|
|
85
86
|
// Validate sprint exists and is not closed
|
|
@@ -97,16 +98,17 @@ function addTask(db, sprintId, content, owner, opts) {
|
|
|
97
98
|
if (sprintStatus === 'CLOSED') {
|
|
98
99
|
throw new errors_1.TaskBadSprintError(sprintId, 'sprint is closed');
|
|
99
100
|
}
|
|
100
|
-
// Validate owner
|
|
101
|
+
// Validate owner (v2: case-insensitive, basic role-name only)
|
|
101
102
|
if (!owner || owner.trim().length === 0) {
|
|
102
103
|
throw new errors_1.TaskOwnerRequiredError();
|
|
103
104
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
105
|
+
const normalizedOwner = (0, owner_validator_1.validateOwnerRole)(owner.trim());
|
|
106
|
+
// Validate stage (v2: case-insensitive)
|
|
107
|
+
const stageInput = opts?.stage ?? 'Planning';
|
|
108
|
+
if (!(0, stage_validator_1.isValidStage)(stageInput)) {
|
|
109
|
+
throw new errors_1.StageInvalidError(stageInput);
|
|
108
110
|
}
|
|
109
|
-
(0,
|
|
111
|
+
const stage = (0, stage_validator_1.validateStage)(stageInput);
|
|
110
112
|
// Validate optional type
|
|
111
113
|
const taskType = opts?.task_type ?? 'Feature';
|
|
112
114
|
if (opts?.task_type) {
|
|
@@ -128,11 +130,10 @@ function addTask(db, sprintId, content, owner, opts) {
|
|
|
128
130
|
const lockOwner = (0, locks_1.generateLockOwner)();
|
|
129
131
|
return (0, locks_1.withLock)(db, { name: lockName, owner: lockOwner }, () => {
|
|
130
132
|
return (0, retry_1.withTransaction)(db, () => {
|
|
131
|
-
// Support explicit task ID
|
|
133
|
+
// Support explicit task ID
|
|
132
134
|
let taskId;
|
|
133
135
|
if (opts?.task_id) {
|
|
134
136
|
validateTaskIdFormat(opts.task_id);
|
|
135
|
-
// Check for duplicate within the same sprint (per-sprint ID policy)
|
|
136
137
|
const existing = db.prepare('SELECT id FROM tasks WHERE id = ? AND sprint_id = ?').get(opts.task_id, sprintId);
|
|
137
138
|
if (existing) {
|
|
138
139
|
throw new errors_1.TaskDuplicateIdError(opts.task_id);
|
|
@@ -146,7 +147,7 @@ function addTask(db, sprintId, content, owner, opts) {
|
|
|
146
147
|
db.prepare(`
|
|
147
148
|
INSERT INTO tasks (id, sprint_id, parent_id, content, task_type, priority, owner, points, status, stage, created_at, updated_at)
|
|
148
149
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, 'Backlog', ?, ?, ?)
|
|
149
|
-
`).run(taskId, sprintId, opts?.parent_id ?? null, content?.trim() ?? null, taskType, priority,
|
|
150
|
+
`).run(taskId, sprintId, opts?.parent_id ?? null, content?.trim() ?? null, taskType, priority, normalizedOwner, opts?.points ?? 0, stage, now, now);
|
|
150
151
|
return {
|
|
151
152
|
id: taskId,
|
|
152
153
|
sprint_id: sprintId,
|
|
@@ -154,7 +155,7 @@ function addTask(db, sprintId, content, owner, opts) {
|
|
|
154
155
|
content: content?.trim() ?? null,
|
|
155
156
|
task_type: taskType,
|
|
156
157
|
priority: priority,
|
|
157
|
-
owner:
|
|
158
|
+
owner: normalizedOwner,
|
|
158
159
|
points: opts?.points ?? 0,
|
|
159
160
|
status: 'Backlog',
|
|
160
161
|
stage: stage,
|
|
@@ -176,67 +177,97 @@ function resolveActiveSprint(db) {
|
|
|
176
177
|
return sprint;
|
|
177
178
|
}
|
|
178
179
|
/**
|
|
179
|
-
* Move a task: status transition, stage transition, or combined.
|
|
180
|
+
* Move a task: status transition, stage transition, owner change, or combined.
|
|
180
181
|
*
|
|
181
|
-
*
|
|
182
|
-
*
|
|
182
|
+
* v2 per AD-0039 / AD-0031:
|
|
183
|
+
* - Case-insensitive validation for status, stage, owner
|
|
184
|
+
* - Closest-match suggestions via Levenshtein distance
|
|
185
|
+
* - Free stage transitions (forward, backward, same-stage all allowed)
|
|
186
|
+
* - Non-terminal Dropped (can recover to Backlog/To Do)
|
|
187
|
+
* - Dry-run mode: validate without persisting
|
|
188
|
+
* - Compulsory parameters: at least one of --to, --stage, --owner
|
|
189
|
+
* - No --sprint override; move always operates on active sprint
|
|
183
190
|
*
|
|
184
191
|
* @param db - Database connection
|
|
185
192
|
* @param taskId - Task ID (4-digit NNNN)
|
|
186
|
-
* @param opts - Move options: targetStatus, targetStage, context
|
|
193
|
+
* @param opts - Move options: targetStatus, targetStage, context, dryRun, sprintId
|
|
187
194
|
* @returns Updated task result
|
|
188
195
|
*/
|
|
189
196
|
function moveTask(db, taskId, opts) {
|
|
190
197
|
// Validate task ID format
|
|
191
198
|
validateTaskIdFormat(taskId);
|
|
192
|
-
//
|
|
199
|
+
// At least one of targetStatus, targetStage, or owner must be provided
|
|
200
|
+
const hasStatusTarget = opts.targetStatus !== undefined;
|
|
201
|
+
const hasStageTarget = opts.targetStage !== undefined;
|
|
202
|
+
const hasOwnerTarget = opts.context?.owner !== undefined;
|
|
203
|
+
if (!hasStatusTarget && !hasStageTarget && !hasOwnerTarget) {
|
|
204
|
+
throw new errors_1.TaskMoveNoTargetError();
|
|
205
|
+
}
|
|
206
|
+
const isDryRun = opts.dryRun === true;
|
|
207
|
+
// Resolve sprint for task lookup
|
|
193
208
|
const sprintId = opts.sprintId || resolveActiveSprint(db).id;
|
|
194
209
|
// Read task first (pre-lock, for validation)
|
|
195
|
-
// First try with sprint_id filter (exact match)
|
|
196
210
|
let task = db.prepare('SELECT * FROM tasks WHERE id = ? AND sprint_id = ? AND removed_at IS NULL').get(taskId, sprintId);
|
|
197
|
-
//
|
|
198
|
-
// to give a more specific error (TaskNotInActiveSprintError vs TaskNotFoundError)
|
|
211
|
+
// Cross-sprint fallback lookup
|
|
199
212
|
if (!task) {
|
|
200
213
|
const taskInAnySprint = db.prepare('SELECT * FROM tasks WHERE id = ? AND removed_at IS NULL').get(taskId);
|
|
201
214
|
if (taskInAnySprint) {
|
|
202
|
-
// Task exists but is in a different sprint → specific error
|
|
203
215
|
throw new errors_1.TaskNotInActiveSprintError(taskId);
|
|
204
216
|
}
|
|
205
|
-
// Task truly doesn't exist → generic error
|
|
206
217
|
throw new errors_1.TaskNotFoundError(taskId, sprintId);
|
|
207
218
|
}
|
|
208
|
-
// Active sprint enforcement
|
|
219
|
+
// Active sprint enforcement
|
|
209
220
|
const activeSprint = resolveActiveSprint(db);
|
|
210
221
|
if (task.sprint_id !== activeSprint.id) {
|
|
211
222
|
throw new errors_1.TaskNotInActiveSprintError(taskId);
|
|
212
223
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
// Validate owner for destination stage (captain-only for Planning/Release)
|
|
222
|
-
(0, owner_validator_1.validateOwnerForStage)(task.owner, targetStage);
|
|
223
|
-
}
|
|
224
|
-
// Phase 2: Validate status transition (runs second per AD-0039)
|
|
225
|
-
if (targetStatus !== undefined) {
|
|
226
|
-
if (!(0, task_state_1.isValidTaskStatus)(targetStatus)) {
|
|
227
|
-
throw new errors_1.TaskBadStatusError(targetStatus);
|
|
224
|
+
// Case-insensitive normalize and validate target status
|
|
225
|
+
let normalizedStatus;
|
|
226
|
+
if (hasStatusTarget) {
|
|
227
|
+
if (!(0, task_state_1.isValidTaskStatus)(opts.targetStatus)) {
|
|
228
|
+
const suggestions = (0, levenshtein_1.getClosestMatches)(opts.targetStatus, [
|
|
229
|
+
'Backlog', 'To Do', 'In Progress', 'In Review', 'Done', 'Dropped',
|
|
230
|
+
]);
|
|
231
|
+
throw new errors_1.TaskBadStatusError(opts.targetStatus, suggestions);
|
|
228
232
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
if (!(0, task_state_1.isValidTaskTransition)(task.status, targetStatus)) {
|
|
233
|
+
normalizedStatus = (0, task_state_1.normalizeTaskStatus)(opts.targetStatus);
|
|
234
|
+
// Validate transition
|
|
235
|
+
if (!(0, task_state_1.isValidTaskTransition)(task.status, normalizedStatus)) {
|
|
233
236
|
const allowed = (0, task_state_1.getAllowedTaskTransitions)(task.status).map(s => s);
|
|
234
|
-
throw new errors_1.
|
|
237
|
+
throw new errors_1.TaskInvalidTransitionError(task.status, normalizedStatus, allowed);
|
|
235
238
|
}
|
|
236
239
|
}
|
|
237
|
-
//
|
|
238
|
-
|
|
239
|
-
|
|
240
|
+
// Case-insensitive normalize and validate target stage
|
|
241
|
+
let normalizedStage;
|
|
242
|
+
if (hasStageTarget) {
|
|
243
|
+
normalizedStage = (0, stage_validator_1.validateStage)(opts.targetStage);
|
|
244
|
+
}
|
|
245
|
+
// Case-insensitive normalize and validate target owner
|
|
246
|
+
let normalizedOwner;
|
|
247
|
+
if (hasOwnerTarget) {
|
|
248
|
+
normalizedOwner = (0, owner_validator_1.validateOwnerRole)(opts.context.owner);
|
|
249
|
+
}
|
|
250
|
+
// Dry-run: validate everything but don't persist
|
|
251
|
+
if (isDryRun) {
|
|
252
|
+
const currentStatus = task.status;
|
|
253
|
+
const currentStage = task.stage;
|
|
254
|
+
const currentOwner = task.owner;
|
|
255
|
+
const targetStatusStr = normalizedStatus ?? currentStatus;
|
|
256
|
+
const targetStageStr = normalizedStage ?? currentStage;
|
|
257
|
+
const targetOwnerStr = normalizedOwner ?? currentOwner;
|
|
258
|
+
return {
|
|
259
|
+
id: taskId,
|
|
260
|
+
sprint_id: task.sprint_id,
|
|
261
|
+
parent_id: task.parent_id,
|
|
262
|
+
content: task.content,
|
|
263
|
+
task_type: task.task_type,
|
|
264
|
+
priority: task.priority,
|
|
265
|
+
owner: targetOwnerStr,
|
|
266
|
+
points: task.points,
|
|
267
|
+
status: targetStatusStr,
|
|
268
|
+
stage: targetStageStr,
|
|
269
|
+
created_at: task.created_at,
|
|
270
|
+
};
|
|
240
271
|
}
|
|
241
272
|
// Phase 3: Apply in atomic transaction
|
|
242
273
|
const lockName = `kanban:${task.sprint_id}`;
|
|
@@ -252,26 +283,27 @@ function moveTask(db, taskId, opts) {
|
|
|
252
283
|
const values = [];
|
|
253
284
|
const now = new Date().toISOString();
|
|
254
285
|
// Apply stage update if provided
|
|
255
|
-
if (
|
|
286
|
+
if (normalizedStage !== undefined) {
|
|
256
287
|
columns.push('stage = ?');
|
|
257
|
-
values.push(
|
|
288
|
+
values.push(normalizedStage);
|
|
258
289
|
}
|
|
259
290
|
// Apply status update and record state-specific fields if provided
|
|
260
|
-
if (
|
|
261
|
-
|
|
262
|
-
const stFields = (0, state_field_recorder_1.computeStateFields)(fresh.status, targetStatus, opts.context);
|
|
263
|
-
// build column+value pairs: stFields already includes status + updated_at
|
|
291
|
+
if (normalizedStatus !== undefined) {
|
|
292
|
+
const stFields = (0, state_field_recorder_1.computeStateFields)(fresh.status, normalizedStatus, opts.context);
|
|
264
293
|
for (let i = 0; i < stFields.columns.length; i++) {
|
|
265
|
-
// Avoid duplicating updated_at
|
|
266
294
|
const col = stFields.columns[i];
|
|
267
295
|
if (col.startsWith('updated_at')) {
|
|
268
|
-
// We'll add updated_at at the end
|
|
269
296
|
continue;
|
|
270
297
|
}
|
|
271
298
|
columns.push(col);
|
|
272
299
|
values.push(stFields.values[i]);
|
|
273
300
|
}
|
|
274
301
|
}
|
|
302
|
+
// Apply owner update if provided
|
|
303
|
+
if (normalizedOwner !== undefined) {
|
|
304
|
+
columns.push('owner = ?');
|
|
305
|
+
values.push(normalizedOwner);
|
|
306
|
+
}
|
|
275
307
|
// Always update updated_at
|
|
276
308
|
columns.push('updated_at = ?');
|
|
277
309
|
values.push(now);
|
|
@@ -290,9 +322,6 @@ function moveTask(db, taskId, opts) {
|
|
|
290
322
|
* Does NOT change task status, stage, owner, or sprint — use moveTask for those.
|
|
291
323
|
*
|
|
292
324
|
* Per AD-0038: rejects stage, owner, sprint fields at the service layer.
|
|
293
|
-
*
|
|
294
|
-
* @throws TaskNotFoundError if task doesn't exist
|
|
295
|
-
* @throws TaskInvalidFieldError if prohibited fields are present
|
|
296
325
|
*/
|
|
297
326
|
function updateTask(db, taskId, fields, sprintId) {
|
|
298
327
|
// Guard clause: reject prohibited fields before any DB access (AD-0038)
|
|
@@ -302,9 +331,9 @@ function updateTask(db, taskId, fields, sprintId) {
|
|
|
302
331
|
throw new errors_1.TaskInvalidFieldError('owner');
|
|
303
332
|
if ('sprint' in fields)
|
|
304
333
|
throw new errors_1.TaskInvalidFieldError('sprint');
|
|
305
|
-
// Resolve sprint for task lookup
|
|
334
|
+
// Resolve sprint for task lookup
|
|
306
335
|
const resolvedSprintId = sprintId || resolveActiveSprint(db).id;
|
|
307
|
-
// Read task first
|
|
336
|
+
// Read task first
|
|
308
337
|
const task = db.prepare('SELECT * FROM tasks WHERE id = ? AND sprint_id = ? AND removed_at IS NULL').get(taskId, resolvedSprintId);
|
|
309
338
|
if (!task) {
|
|
310
339
|
throw new errors_1.TaskNotFoundError(taskId, resolvedSprintId);
|
|
@@ -313,14 +342,12 @@ function updateTask(db, taskId, fields, sprintId) {
|
|
|
313
342
|
const lockOwner = (0, locks_1.generateLockOwner)();
|
|
314
343
|
return (0, locks_1.withLock)(db, { name: lockName, owner: lockOwner }, () => {
|
|
315
344
|
return (0, retry_1.withTransaction)(db, () => {
|
|
316
|
-
// Re-read task inside transaction for consistency under lock
|
|
317
345
|
const fresh = db.prepare('SELECT * FROM tasks WHERE id = ? AND sprint_id = ? AND removed_at IS NULL').get(taskId, resolvedSprintId);
|
|
318
346
|
if (!fresh) {
|
|
319
347
|
throw new errors_1.TaskNotFoundError(taskId, resolvedSprintId);
|
|
320
348
|
}
|
|
321
349
|
const updates = [];
|
|
322
350
|
const params = [];
|
|
323
|
-
// Handle content_file_content: store raw content from file in content column
|
|
324
351
|
if (fields.content_file_content !== undefined) {
|
|
325
352
|
updates.push('content = ?');
|
|
326
353
|
params.push(fields.content_file_content);
|
|
@@ -383,33 +410,24 @@ function updateTask(db, taskId, fields, sprintId) {
|
|
|
383
410
|
params.push(taskId);
|
|
384
411
|
params.push(resolvedSprintId);
|
|
385
412
|
db.prepare(`UPDATE tasks SET ${updates.join(', ')} WHERE id = ? AND sprint_id = ?`).run(...params);
|
|
386
|
-
// Re-read
|
|
387
413
|
const updated = db.prepare('SELECT id, sprint_id, parent_id, content, task_type, priority, owner, points, status, stage, created_at FROM tasks WHERE id = ? AND sprint_id = ?').get(taskId, resolvedSprintId);
|
|
388
414
|
return updated;
|
|
389
415
|
});
|
|
390
416
|
});
|
|
391
417
|
}
|
|
392
418
|
/**
|
|
393
|
-
* Remove a task (
|
|
394
|
-
*
|
|
395
|
-
* @param db - Database connection
|
|
396
|
-
* @param taskId - Task ID
|
|
397
|
-
* @throws TaskNotFoundError if task doesn't exist
|
|
419
|
+
* Remove a task (permanent delete).
|
|
398
420
|
*/
|
|
399
421
|
function removeTask(db, taskId, sprintId) {
|
|
400
|
-
// Resolve sprint for task lookup (per-sprint ID policy)
|
|
401
422
|
const resolvedSprintId = sprintId || resolveActiveSprint(db).id;
|
|
402
|
-
// Read task first to resolve sprint ID for per-sprint locking (AD-0015)
|
|
403
423
|
const task = db.prepare('SELECT id, sprint_id FROM tasks WHERE id = ? AND sprint_id = ?').get(taskId, resolvedSprintId);
|
|
404
424
|
if (!task) {
|
|
405
425
|
throw new errors_1.TaskNotFoundError(taskId, resolvedSprintId);
|
|
406
426
|
}
|
|
407
|
-
// FS-SS-005-0007 v3 / AD-0011: Always permanent delete
|
|
408
427
|
const lockName = `kanban:${task.sprint_id}`;
|
|
409
428
|
const owner = (0, locks_1.generateLockOwner)();
|
|
410
429
|
(0, locks_1.withLock)(db, { name: lockName, owner }, () => {
|
|
411
430
|
return (0, retry_1.withTransaction)(db, () => {
|
|
412
|
-
// Re-read inside transaction for consistency under lock
|
|
413
431
|
const fresh = db.prepare('SELECT id FROM tasks WHERE id = ? AND sprint_id = ?').get(taskId, resolvedSprintId);
|
|
414
432
|
if (!fresh) {
|
|
415
433
|
throw new errors_1.TaskNotFoundError(taskId, resolvedSprintId);
|
|
@@ -421,11 +439,6 @@ function removeTask(db, taskId, sprintId) {
|
|
|
421
439
|
}
|
|
422
440
|
/**
|
|
423
441
|
* Show detailed task information including sprint name and parent content.
|
|
424
|
-
*
|
|
425
|
-
* @param db - Database connection
|
|
426
|
-
* @param taskId - Task ID
|
|
427
|
-
* @param sprintId - Sprint ID (required for sprint-scoped lookup per URD-026)
|
|
428
|
-
* @throws TaskNotFoundError if task doesn't exist or is not in the specified sprint
|
|
429
442
|
*/
|
|
430
443
|
function showTask(db, taskId, sprintId) {
|
|
431
444
|
let sql = `SELECT t.*, s.name as sprint_name, p.content as parent_content
|
|
@@ -454,15 +467,12 @@ function showTask(db, taskId, sprintId) {
|
|
|
454
467
|
function listTasks(db, sprintId, filters) {
|
|
455
468
|
let sql = 'SELECT * FROM tasks WHERE removed_at IS NULL';
|
|
456
469
|
const params = [];
|
|
457
|
-
// Sprint filter
|
|
458
470
|
sql += ' AND sprint_id = ?';
|
|
459
471
|
params.push(sprintId);
|
|
460
|
-
// Status filter
|
|
461
472
|
if (filters?.status) {
|
|
462
473
|
sql += ' AND status = ?';
|
|
463
474
|
params.push(filters.status);
|
|
464
475
|
}
|
|
465
|
-
// Owner filter
|
|
466
476
|
if (filters?.owner) {
|
|
467
477
|
sql += ' AND owner = ?';
|
|
468
478
|
params.push(filters.owner);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/services/task.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/services/task.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import type { TaskStatus } from '../models/common';
|
|
2
|
-
/** Valid task status values — Blocked removed
|
|
2
|
+
/** Valid task status values — Blocked permanently removed */
|
|
3
3
|
export declare const VALID_TASK_STATUSES: TaskStatus[];
|
|
4
4
|
/**
|
|
5
|
-
* Check if a given string is a valid TaskStatus value.
|
|
5
|
+
* Check if a given string is a valid TaskStatus value (case-insensitive).
|
|
6
6
|
*/
|
|
7
7
|
export declare function isValidTaskStatus(status: string): status is TaskStatus;
|
|
8
|
+
/**
|
|
9
|
+
* Normalize a status value to canonical case.
|
|
10
|
+
*/
|
|
11
|
+
export declare function normalizeTaskStatus(status: string): TaskStatus | null;
|
|
8
12
|
/**
|
|
9
13
|
* Get all allowed target statuses from a given current status.
|
|
10
14
|
*/
|
|
@@ -15,17 +19,13 @@ export declare function getAllowedTaskTransitions(current: TaskStatus): TaskStat
|
|
|
15
19
|
export declare function isValidTaskTransition(current: TaskStatus, target: TaskStatus): boolean;
|
|
16
20
|
/**
|
|
17
21
|
* Get the auto timestamps for a task state transition.
|
|
18
|
-
* - Any
|
|
19
|
-
* - Any
|
|
22
|
+
* - Any -> In Progress: set started_at (if not already set)
|
|
23
|
+
* - Any -> Done: set completed_at
|
|
20
24
|
*/
|
|
21
25
|
export declare function getTaskAutoTimestamps(current: TaskStatus, target: TaskStatus): {
|
|
22
26
|
started_at?: string;
|
|
23
27
|
completed_at?: string;
|
|
24
28
|
};
|
|
25
|
-
/**
|
|
26
|
-
* Captain-only stages for owner validation.
|
|
27
|
-
* Per AD-0008 (updated per URD-030): Planning and Release require captain.
|
|
28
|
-
*/
|
|
29
29
|
export declare const CAPTAIN_ONLY_STAGES: string[];
|
|
30
30
|
export declare const CAPTAIN_ONLY_STATES: string[];
|
|
31
31
|
//# sourceMappingURL=task-state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-state.d.ts","sourceRoot":"","sources":["../../src/state-machines/task-state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"task-state.d.ts","sourceRoot":"","sources":["../../src/state-machines/task-state.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,6DAA6D;AAC7D,eAAO,MAAM,mBAAmB,EAAE,UAAU,EAO3C,CAAC;AAqBF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,UAAU,CAEtE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAErE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,EAAE,CAE3E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,UAAU,GACjB;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAahD;AAID,eAAO,MAAM,mBAAmB,EAAE,MAAM,EAAO,CAAC;AAGhD,eAAO,MAAM,mBAAmB,UAAsB,CAAC"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Task state machine (Kanban lifecycle)
|
|
3
|
-
// Encodes freely reversible primary flow within a stage + Dropped
|
|
4
|
-
// Implements AD-
|
|
5
|
-
// + FS-SS-005-0002 (move task between states)
|
|
6
|
-
// + FS-SS-005-0003 (enforce task state machine)
|
|
7
|
-
// + FS-SS-005-0004 (reject invalid task transition)
|
|
8
|
-
// + FS-SS-030-0002 (status reversal within stage)
|
|
9
|
-
// + FS-SS-030-0004 (Blocked status removal)
|
|
3
|
+
// Encodes freely reversible primary flow within a stage + non-terminal Dropped
|
|
4
|
+
// Implements AD-0031 v2: Consolidated Stage/Status Workflow Engine
|
|
5
|
+
// + FS-SS-005-0002 (move task between states v2)
|
|
6
|
+
// + FS-SS-005-0003 (enforce task state machine v2)
|
|
7
|
+
// + FS-SS-005-0004 (reject invalid task transition v2)
|
|
8
|
+
// + FS-SS-030-0002 (status reversal within stage v2)
|
|
10
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
10
|
exports.CAPTAIN_ONLY_STATES = exports.CAPTAIN_ONLY_STAGES = exports.VALID_TASK_STATUSES = void 0;
|
|
12
11
|
exports.isValidTaskStatus = isValidTaskStatus;
|
|
12
|
+
exports.normalizeTaskStatus = normalizeTaskStatus;
|
|
13
13
|
exports.getAllowedTaskTransitions = getAllowedTaskTransitions;
|
|
14
14
|
exports.isValidTaskTransition = isValidTaskTransition;
|
|
15
15
|
exports.getTaskAutoTimestamps = getTaskAutoTimestamps;
|
|
16
|
-
/** Valid task status values — Blocked removed
|
|
16
|
+
/** Valid task status values — Blocked permanently removed */
|
|
17
17
|
exports.VALID_TASK_STATUSES = [
|
|
18
18
|
'Backlog',
|
|
19
19
|
'To Do',
|
|
@@ -22,28 +22,32 @@ exports.VALID_TASK_STATUSES = [
|
|
|
22
22
|
'Done',
|
|
23
23
|
'Dropped',
|
|
24
24
|
];
|
|
25
|
+
/** Lowercase mapping for case-insensitive lookup */
|
|
26
|
+
const STATUS_LOWERCASE_MAP = new Map(exports.VALID_TASK_STATUSES.map(s => [s.toLowerCase(), s]));
|
|
25
27
|
/**
|
|
26
|
-
* Transition table for task statuses
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* Per FS-SS-030-0002:
|
|
30
|
-
* Within a stage, any non-Dropped status can transition to any other non-Dropped status
|
|
31
|
-
* (including reverse moves like Done → In Review). Dropped is the sole escape state,
|
|
32
|
-
* reachable from any non-Dropped state, and is terminal.
|
|
28
|
+
* Transition table for task statuses (v2).
|
|
29
|
+
* Dropped is no longer terminal — transitions to Backlog and To Do.
|
|
30
|
+
* All other transitions remain freely reversible within a stage.
|
|
33
31
|
*/
|
|
34
32
|
const TRANSITIONS = {
|
|
35
|
-
'Backlog': ['To Do', '
|
|
36
|
-
'To Do': ['Backlog', 'In Progress', '
|
|
37
|
-
'In Progress': ['
|
|
38
|
-
'In Review': ['
|
|
39
|
-
'Done': ['
|
|
40
|
-
'Dropped': [], //
|
|
33
|
+
'Backlog': ['To Do', 'Dropped'],
|
|
34
|
+
'To Do': ['Backlog', 'In Progress', 'Dropped'],
|
|
35
|
+
'In Progress': ['To Do', 'In Review', 'Done', 'Dropped'],
|
|
36
|
+
'In Review': ['To Do', 'In Progress', 'Done', 'Dropped'],
|
|
37
|
+
'Done': ['In Progress', 'In Review', 'Dropped'],
|
|
38
|
+
'Dropped': ['Backlog', 'To Do'], // Non-terminal — can recover
|
|
41
39
|
};
|
|
42
40
|
/**
|
|
43
|
-
* Check if a given string is a valid TaskStatus value.
|
|
41
|
+
* Check if a given string is a valid TaskStatus value (case-insensitive).
|
|
44
42
|
*/
|
|
45
43
|
function isValidTaskStatus(status) {
|
|
46
|
-
return
|
|
44
|
+
return STATUS_LOWERCASE_MAP.has(status.toLowerCase());
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Normalize a status value to canonical case.
|
|
48
|
+
*/
|
|
49
|
+
function normalizeTaskStatus(status) {
|
|
50
|
+
return STATUS_LOWERCASE_MAP.get(status.toLowerCase()) ?? null;
|
|
47
51
|
}
|
|
48
52
|
/**
|
|
49
53
|
* Get all allowed target statuses from a given current status.
|
|
@@ -59,8 +63,8 @@ function isValidTaskTransition(current, target) {
|
|
|
59
63
|
}
|
|
60
64
|
/**
|
|
61
65
|
* Get the auto timestamps for a task state transition.
|
|
62
|
-
* - Any
|
|
63
|
-
* - Any
|
|
66
|
+
* - Any -> In Progress: set started_at (if not already set)
|
|
67
|
+
* - Any -> Done: set completed_at
|
|
64
68
|
*/
|
|
65
69
|
function getTaskAutoTimestamps(current, target) {
|
|
66
70
|
const now = new Date().toISOString();
|
|
@@ -73,11 +77,9 @@ function getTaskAutoTimestamps(current, target) {
|
|
|
73
77
|
}
|
|
74
78
|
return result;
|
|
75
79
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
exports.CAPTAIN_ONLY_STAGES = ['Planning', 'Release'];
|
|
81
|
-
// Backward compatibility alias — tests may import CAPTAIN_ONLY_STATES
|
|
80
|
+
// Captain-only stages are removed in v2 — owner validation is basic role-name only.
|
|
81
|
+
// This constant is kept for backward compatibility but is no longer used for gating.
|
|
82
|
+
exports.CAPTAIN_ONLY_STAGES = [];
|
|
83
|
+
// Backward compatibility alias
|
|
82
84
|
exports.CAPTAIN_ONLY_STATES = exports.CAPTAIN_ONLY_STAGES;
|
|
83
85
|
//# sourceMappingURL=task-state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-state.js","sourceRoot":"","sources":["../../src/state-machines/task-state.ts"],"names":[],"mappings":";AAAA,wCAAwC;AACxC
|
|
1
|
+
{"version":3,"file":"task-state.js","sourceRoot":"","sources":["../../src/state-machines/task-state.ts"],"names":[],"mappings":";AAAA,wCAAwC;AACxC,+EAA+E;AAC/E,mEAAmE;AACnE,iDAAiD;AACjD,mDAAmD;AACnD,uDAAuD;AACvD,qDAAqD;;;AAoCrD,8CAEC;AAKD,kDAEC;AAKD,8DAEC;AAKD,sDAEC;AAOD,sDAgBC;AA9ED,6DAA6D;AAChD,QAAA,mBAAmB,GAAiB;IAC/C,SAAS;IACT,OAAO;IACP,aAAa;IACb,WAAW;IACX,MAAM;IACN,SAAS;CACV,CAAC;AAEF,oDAAoD;AACpD,MAAM,oBAAoB,GAA4B,IAAI,GAAG,CAC3D,2BAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CACnD,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,GAAqC;IACpD,SAAS,EAAO,CAAC,OAAO,EAAE,SAAS,CAAC;IACpC,OAAO,EAAS,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,CAAC;IACrD,aAAa,EAAG,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC;IACzD,WAAW,EAAK,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC;IAC3D,MAAM,EAAU,CAAC,aAAa,EAAE,WAAW,EAAE,SAAS,CAAC;IACvD,SAAS,EAAO,CAAC,SAAS,EAAE,OAAO,CAAC,EAAG,6BAA6B;CACrE,CAAC;AAEF;;GAEG;AACH,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,OAAO,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,MAAc;IAChD,OAAO,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CAAC,OAAmB;IAC3D,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,OAAmB,EAAE,MAAkB;IAC3E,OAAO,WAAW,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CACnC,OAAmB,EACnB,MAAkB;IAElB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,MAAM,GAAmD,EAAE,CAAC;IAElE,IAAI,OAAO,KAAK,aAAa,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;QAC1D,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;IAC1B,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,oFAAoF;AACpF,qFAAqF;AACxE,QAAA,mBAAmB,GAAa,EAAE,CAAC;AAEhD,+BAA+B;AAClB,QAAA,mBAAmB,GAAG,2BAAmB,CAAC"}
|