@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.
Files changed (70) hide show
  1. package/README.md +51 -26
  2. package/dist/cli/formatters/markdown.d.ts.map +1 -1
  3. package/dist/cli/formatters/markdown.js +0 -4
  4. package/dist/cli/formatters/markdown.js.map +1 -1
  5. package/dist/cli/formatters/quiet.d.ts.map +1 -1
  6. package/dist/cli/formatters/quiet.js +0 -2
  7. package/dist/cli/formatters/quiet.js.map +1 -1
  8. package/dist/cli/formatters/table.d.ts.map +1 -1
  9. package/dist/cli/formatters/table.js +0 -5
  10. package/dist/cli/formatters/table.js.map +1 -1
  11. package/dist/cli/project-resolver.js +1 -1
  12. package/dist/cli/project-resolver.js.map +1 -1
  13. package/dist/cli/project.d.ts +0 -1
  14. package/dist/cli/project.d.ts.map +1 -1
  15. package/dist/cli/project.js +2 -35
  16. package/dist/cli/project.js.map +1 -1
  17. package/dist/cli/task.d.ts.map +1 -1
  18. package/dist/cli/task.js +22 -7
  19. package/dist/cli/task.js.map +1 -1
  20. package/dist/config/registry.d.ts +0 -9
  21. package/dist/config/registry.d.ts.map +1 -1
  22. package/dist/config/registry.js +1 -31
  23. package/dist/config/registry.js.map +1 -1
  24. package/dist/config/resolver.d.ts +3 -4
  25. package/dist/config/resolver.d.ts.map +1 -1
  26. package/dist/config/resolver.js +7 -24
  27. package/dist/config/resolver.js.map +1 -1
  28. package/dist/db/schema.d.ts +1 -1
  29. package/dist/db/schema.d.ts.map +1 -1
  30. package/dist/db/schema.js +70 -4
  31. package/dist/db/schema.js.map +1 -1
  32. package/dist/models/common.d.ts +2 -2
  33. package/dist/models/common.d.ts.map +1 -1
  34. package/dist/models/project.d.ts +2 -4
  35. package/dist/models/project.d.ts.map +1 -1
  36. package/dist/models/project.js +0 -1
  37. package/dist/models/project.js.map +1 -1
  38. package/dist/services/project.d.ts +0 -10
  39. package/dist/services/project.d.ts.map +1 -1
  40. package/dist/services/project.js +2 -26
  41. package/dist/services/project.js.map +1 -1
  42. package/dist/services/stage-validator.d.ts +19 -18
  43. package/dist/services/stage-validator.d.ts.map +1 -1
  44. package/dist/services/stage-validator.js +41 -42
  45. package/dist/services/stage-validator.js.map +1 -1
  46. package/dist/services/task.d.ts +18 -21
  47. package/dist/services/task.d.ts.map +1 -1
  48. package/dist/services/task.js +96 -86
  49. package/dist/services/task.js.map +1 -1
  50. package/dist/state-machines/task-state.d.ts +8 -8
  51. package/dist/state-machines/task-state.d.ts.map +1 -1
  52. package/dist/state-machines/task-state.js +33 -31
  53. package/dist/state-machines/task-state.js.map +1 -1
  54. package/dist/utils/errors.d.ts +21 -51
  55. package/dist/utils/errors.d.ts.map +1 -1
  56. package/dist/utils/errors.js +63 -114
  57. package/dist/utils/errors.js.map +1 -1
  58. package/dist/utils/format.d.ts +0 -11
  59. package/dist/utils/format.d.ts.map +1 -1
  60. package/dist/utils/format.js +1 -10
  61. package/dist/utils/format.js.map +1 -1
  62. package/dist/utils/levenshtein.d.ts +10 -0
  63. package/dist/utils/levenshtein.d.ts.map +1 -0
  64. package/dist/utils/levenshtein.js +42 -0
  65. package/dist/utils/levenshtein.js.map +1 -0
  66. package/dist/validators/owner-validator.d.ts +20 -16
  67. package/dist/validators/owner-validator.d.ts.map +1 -1
  68. package/dist/validators/owner-validator.js +37 -38
  69. package/dist/validators/owner-validator.js.map +1 -1
  70. package/package.json +9 -2
@@ -1,13 +1,12 @@
1
1
  "use strict";
2
2
  // Task service: orchestrates task/kanban lifecycle
3
- // Implements AD-0008: Centralized State Machines + Owner Validation
4
- // + AD-0011: Soft Delete for Task Removal → now permanent delete (FS-SS-005-0007 v3)
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
- // + AD-0031: Stage-Driven Workflow Engine
7
- // + FS-SS-005-0001..0012
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 = exports.isValidRole = void 0;
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, captain-only for Backlog)
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 owner validation errors
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
- // Default stage is Planning — captain-only for Planning stage (FS-SS-005-0010, FS-SS-030-0003)
105
- const stage = opts?.stage ?? 'Planning';
106
- if (!(0, stage_validator_1.isValidStage)(stage)) {
107
- throw new errors_1.StageInvalidError(stage);
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, owner_validator_1.validateOwnerForStage)(owner.trim(), stage);
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 (FS-SS-028-0001: positional <id> on task add)
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, owner.trim(), opts?.points ?? 0, stage, now, now);
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: owner.trim(),
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
- * Per AD-0039: stage validation runs before status validation in combined moves.
182
- * Per FR-URD-034-0004: active sprint is required — no --sprint override.
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
- // Resolve sprint for task lookup (per-sprint ID policy)
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
- // If not found in the resolved sprint, check if it exists in any sprint
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: task must belong to the active sprint
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
- const targetStatus = opts.targetStatus;
214
- const targetStage = opts.targetStage;
215
- // Phase 1: Validate stage progression (runs first per AD-0039)
216
- if (targetStage !== undefined) {
217
- if (!(0, stage_validator_1.isValidStage)(targetStage)) {
218
- throw new errors_1.StageInvalidError(targetStage);
219
- }
220
- (0, stage_validator_1.validateProgression)(task.stage, targetStage, task.status);
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
- if (task.status === targetStatus) {
230
- throw new errors_1.TaskNoopError(taskId, task.status);
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.TaskTransitionError(taskId, task.status, targetStatus, allowed);
237
+ throw new errors_1.TaskInvalidTransitionError(task.status, normalizedStatus, allowed);
235
238
  }
236
239
  }
237
- // At least one of targetStatus or targetStage must be provided
238
- if (targetStatus === undefined && targetStage === undefined) {
239
- throw new errors_1.TaskNoopError(taskId, task.status);
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 (targetStage !== undefined) {
286
+ if (normalizedStage !== undefined) {
256
287
  columns.push('stage = ?');
257
- values.push(targetStage);
288
+ values.push(normalizedStage);
258
289
  }
259
290
  // Apply status update and record state-specific fields if provided
260
- if (targetStatus !== undefined) {
261
- // Record state-specific fields inline
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 (per-sprint ID policy)
334
+ // Resolve sprint for task lookup
306
335
  const resolvedSprintId = sprintId || resolveActiveSprint(db).id;
307
- // Read task first to resolve sprint ID for per-sprint locking (AD-0015)
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 (soft delete by default per AD-0011).
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 per FS-SS-030-0004 */
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 In Progress: set started_at (if not already set)
19
- * - Any Done: set completed_at
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":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,oEAAoE;AACpE,eAAO,MAAM,mBAAmB,EAAE,UAAU,EAO3C,CAAC;AAoBF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,UAAU,CAEtE;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;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,EAA4B,CAAC;AAGrE,eAAO,MAAM,mBAAmB,UAAsB,CAAC"}
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 escape
4
- // Implements AD-0008: Centralized State Machines + Owner Validation
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 per FS-SS-030-0004 */
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 within the same stage.
27
- * Maps each current status to the set of allowed target statuses.
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', 'In Progress', 'In Review', 'Done', 'Dropped'],
36
- 'To Do': ['Backlog', 'In Progress', 'In Review', 'Done', 'Dropped'],
37
- 'In Progress': ['Backlog', 'To Do', 'In Review', 'Done', 'Dropped'],
38
- 'In Review': ['Backlog', 'To Do', 'In Progress', 'Done', 'Dropped'],
39
- 'Done': ['Backlog', 'To Do', 'In Progress', 'In Review', 'Dropped'],
40
- 'Dropped': [], // Terminal abandon state
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 exports.VALID_TASK_STATUSES.includes(status);
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 In Progress: set started_at (if not already set)
63
- * - Any Done: set completed_at
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
- * Captain-only stages for owner validation.
78
- * Per AD-0008 (updated per URD-030): Planning and Release require captain.
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,yEAAyE;AACzE,oEAAoE;AACpE,8CAA8C;AAC9C,gDAAgD;AAChD,oDAAoD;AACpD,kDAAkD;AAClD,4CAA4C;;;AAmC5C,8CAEC;AAKD,8DAEC;AAKD,sDAEC;AAOD,sDAgBC;AAtED,oEAAoE;AACvD,QAAA,mBAAmB,GAAiB;IAC/C,SAAS;IACT,OAAO;IACP,aAAa;IACb,WAAW;IACX,MAAM;IACN,SAAS;CACV,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,WAAW,GAAqC;IACpD,SAAS,EAAO,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC;IACxE,OAAO,EAAS,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC;IAC1E,aAAa,EAAG,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC;IACpE,WAAW,EAAK,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC;IACtE,MAAM,EAAU,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,CAAC;IAC3E,SAAS,EAAO,EAAE,EAAG,yBAAyB;CAC/C,CAAC;AAEF;;GAEG;AACH,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,OAAQ,2BAAyC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrE,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;;;GAGG;AACU,QAAA,mBAAmB,GAAa,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAErE,sEAAsE;AACzD,QAAA,mBAAmB,GAAG,2BAAmB,CAAC"}
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"}