@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
@@ -8,8 +8,6 @@ exports.createProject = createProject;
8
8
  exports.registerProject = registerProject;
9
9
  exports.removeProject = removeProject;
10
10
  exports.listAllProjects = listAllProjects;
11
- exports.setProjectDefault = setProjectDefault;
12
- exports.getDefaultProjectName = getDefaultProjectName;
13
11
  exports.getProjectInfo = getProjectInfo;
14
12
  exports.resolveProjectForCommand = resolveProjectForCommand;
15
13
  const fs_1 = require("fs");
@@ -109,14 +107,12 @@ function createProject(name, folder, opts) {
109
107
  db.close();
110
108
  }
111
109
  // Register in global registry
112
- const registry = (0, registry_1.addProject)(name, absoluteFolder, opts?.registryPath);
113
- const isDefault = registry.default === name;
110
+ (0, registry_1.addProject)(name, absoluteFolder, opts?.registryPath);
114
111
  return {
115
112
  name,
116
113
  folder: absoluteFolder,
117
114
  dbPath,
118
115
  isNew: !dbExisted,
119
- isDefault,
120
116
  };
121
117
  }
122
118
  /**
@@ -159,14 +155,12 @@ function registerProject(name, folder, opts) {
159
155
  db.close();
160
156
  }
161
157
  // Register in global registry
162
- const registry = (0, registry_1.addProject)(name, absoluteFolder, opts?.registryPath);
163
- const isDefault = registry.default === name;
158
+ (0, registry_1.addProject)(name, absoluteFolder, opts?.registryPath);
164
159
  return {
165
160
  name,
166
161
  folder: absoluteFolder,
167
162
  dbPath,
168
163
  isNew: !dbExisted,
169
- isDefault,
170
164
  };
171
165
  }
172
166
  /**
@@ -190,21 +184,6 @@ function removeProject(name, opts) {
190
184
  function listAllProjects(opts) {
191
185
  return (0, registry_1.listProjects)(opts?.registryPath);
192
186
  }
193
- /**
194
- * Set the default project.
195
- *
196
- * @throws ProjectNotFoundError (ERR-PROJ-007) if the project doesn't exist
197
- */
198
- function setProjectDefault(name, opts) {
199
- (0, registry_1.setDefaultProject)(name, opts?.registryPath);
200
- }
201
- /**
202
- * Get the current default project name.
203
- */
204
- function getDefaultProjectName(opts) {
205
- const registry = (0, registry_1.loadRegistry)(opts?.registryPath);
206
- return registry.default;
207
- }
208
187
  /**
209
188
  * Show project details: folder, database path, sprint summary, entity counts.
210
189
  *
@@ -212,9 +191,7 @@ function getDefaultProjectName(opts) {
212
191
  */
213
192
  function getProjectInfo(name, opts) {
214
193
  const entry = (0, registry_1.getProject)(name, opts?.registryPath);
215
- const registry = (0, registry_1.loadRegistry)(opts?.registryPath);
216
194
  const dbPath = `${entry.folder}/pmp/project.db`;
217
- const isDefault = registry.default === name;
218
195
  // Query the database for summary counts
219
196
  let sprintCount = 0;
220
197
  let activeSprintCount = 0;
@@ -236,7 +213,6 @@ function getProjectInfo(name, opts) {
236
213
  name,
237
214
  folder: entry.folder,
238
215
  dbPath,
239
- isDefault,
240
216
  sprintCount,
241
217
  activeSprintCount,
242
218
  docCount,
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/services/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/services/project.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,37 @@
1
1
  import type { TaskStage } from '../models/common';
2
- /** Canonical stage sequence in forward order */
2
+ /** Canonical stage sequence 6 consolidated stages */
3
3
  export declare const CANONICAL_STAGES: TaskStage[];
4
4
  /**
5
- * Check if a given string is a valid stage value.
5
+ * Check if a given string is a valid stage value (case-insensitive).
6
6
  */
7
7
  export declare function isValidStage(stage: string): stage is TaskStage;
8
+ /**
9
+ * Normalize a stage value to canonical case.
10
+ * Returns null if the value is not a valid stage.
11
+ */
12
+ export declare function normalizeStage(stage: string): TaskStage | null;
8
13
  /**
9
14
  * Return the canonical stage sequence.
10
15
  */
11
16
  export declare function getValidStages(): TaskStage[];
12
17
  /**
13
- * Check if target stage is strictly forward of current stage in the canonical sequence.
14
- * Returns true if target position > current position (allows skipping).
18
+ * Validate a stage value case-insensitively with closest-match suggestions.
19
+ *
20
+ * @param stage - The stage value to validate
21
+ * @returns The canonical stage value if valid
22
+ * @throws StageInvalidError with closest-match suggestions if invalid
15
23
  */
16
- export declare function isForward(current: TaskStage, target: TaskStage): boolean;
24
+ export declare function validateStage(stage: string): TaskStage;
17
25
  /**
18
26
  * Validate that a stage progression is valid.
19
27
  *
20
- * Rules (FS-SS-030-0001):
21
- * - SR-001: Only forward progression (never backward)
22
- * - SR-002: Intermediate stages may be skipped
23
- * - SR-003: Release is the final stage
24
- * - SR-004: Dropped status locks the task — no stage changes
25
- * - SR-005: Same-stage transitions are rejected
28
+ * v2: Free stage transitions. Forward, backward, and same-stage all allowed.
29
+ * No forward-only enforcement. No Dropped lock. No owner-for-stage check.
26
30
  *
27
- * @param currentStage - The task's current stage
31
+ * @param currentStage - The task's current stage (unused in v2, kept for API compatibility)
28
32
  * @param targetStage - The desired target stage
29
- * @param taskStatus - The task's current status (to check Dropped lock)
30
- * @throws StageInvalidError if target is not a valid stage
31
- * @throws StageLockedError if task is Dropped
32
- * @throws StageNoProgressError if target is same as current
33
- * @throws StageBackwardError if target is backward of current
33
+ * @param taskStatus - The task's current status (unused in v2, kept for API compatibility)
34
34
  */
35
- export declare function validateProgression(currentStage: TaskStage, targetStage: TaskStage, taskStatus: string): void;
35
+ export declare function validateProgression(_currentStage: TaskStage, _targetStage: TaskStage, _taskStatus: string): void;
36
+ export { validateStage as validateStageValue };
36
37
  //# sourceMappingURL=stage-validator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stage-validator.d.ts","sourceRoot":"","sources":["../../src/services/stage-validator.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAOlD,gDAAgD;AAChD,eAAO,MAAM,gBAAgB,EAAE,SAAS,EASvC,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,SAAS,CAE9D;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,SAAS,EAAE,CAE5C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAIxE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,SAAS,EACvB,WAAW,EAAE,SAAS,EACtB,UAAU,EAAE,MAAM,GACjB,IAAI,CAeN"}
1
+ {"version":3,"file":"stage-validator.d.ts","sourceRoot":"","sources":["../../src/services/stage-validator.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,EAAE,SAAS,EAOvC,CAAC;AAOF;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,SAAS,CAE9D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAE9D;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,SAAS,EAAE,CAE5C;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAQtD;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,SAAS,EACxB,YAAY,EAAE,SAAS,EACvB,WAAW,EAAE,MAAM,GAClB,IAAI,CAIN;AAGD,OAAO,EAAE,aAAa,IAAI,kBAAkB,EAAE,CAAC"}
@@ -1,32 +1,42 @@
1
1
  "use strict";
2
2
  // Stage progression validator
3
- // Pure function module — validates one-way forward stage progression
4
- // Implements AD-0031: Stage-Driven Workflow Engine
5
- // + FS-SS-030-0001 (stage progression engine)
6
- // + FS-SS-030-0003 (task stage assignment)
3
+ // Pure function module — validates stage values case-insensitively
4
+ // Implements AD-0031 v2: Consolidated Stage/Status Workflow Engine
5
+ // + FS-SS-030-0001 (stage progression engine v2)
6
+ // 6 consolidated stages, freely reversible, case-insensitive with closest-match suggestions
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.CANONICAL_STAGES = void 0;
9
9
  exports.isValidStage = isValidStage;
10
+ exports.normalizeStage = normalizeStage;
10
11
  exports.getValidStages = getValidStages;
11
- exports.isForward = isForward;
12
+ exports.validateStage = validateStage;
13
+ exports.validateStageValue = validateStage;
12
14
  exports.validateProgression = validateProgression;
13
15
  const errors_1 = require("../utils/errors");
14
- /** Canonical stage sequence in forward order */
16
+ const levenshtein_1 = require("../utils/levenshtein");
17
+ /** Canonical stage sequence — 6 consolidated stages */
15
18
  exports.CANONICAL_STAGES = [
16
19
  'Planning',
17
- 'Requirement',
18
- 'Specification',
20
+ 'Requirement+Specification',
19
21
  'Design',
20
- 'Test Plan',
21
22
  'Implementation',
22
23
  'Testing',
23
24
  'Release',
24
25
  ];
26
+ /** Lowercase mapping for case-insensitive lookup */
27
+ const STAGE_LOWERCASE_MAP = new Map(exports.CANONICAL_STAGES.map(s => [s.toLowerCase(), s]));
25
28
  /**
26
- * Check if a given string is a valid stage value.
29
+ * Check if a given string is a valid stage value (case-insensitive).
27
30
  */
28
31
  function isValidStage(stage) {
29
- return exports.CANONICAL_STAGES.includes(stage);
32
+ return STAGE_LOWERCASE_MAP.has(stage.toLowerCase());
33
+ }
34
+ /**
35
+ * Normalize a stage value to canonical case.
36
+ * Returns null if the value is not a valid stage.
37
+ */
38
+ function normalizeStage(stage) {
39
+ return STAGE_LOWERCASE_MAP.get(stage.toLowerCase()) ?? null;
30
40
  }
31
41
  /**
32
42
  * Return the canonical stage sequence.
@@ -35,44 +45,33 @@ function getValidStages() {
35
45
  return [...exports.CANONICAL_STAGES];
36
46
  }
37
47
  /**
38
- * Check if target stage is strictly forward of current stage in the canonical sequence.
39
- * Returns true if target position > current position (allows skipping).
48
+ * Validate a stage value case-insensitively with closest-match suggestions.
49
+ *
50
+ * @param stage - The stage value to validate
51
+ * @returns The canonical stage value if valid
52
+ * @throws StageInvalidError with closest-match suggestions if invalid
40
53
  */
41
- function isForward(current, target) {
42
- const currentIdx = exports.CANONICAL_STAGES.indexOf(current);
43
- const targetIdx = exports.CANONICAL_STAGES.indexOf(target);
44
- return targetIdx > currentIdx;
54
+ function validateStage(stage) {
55
+ const normalized = normalizeStage(stage);
56
+ if (normalized !== null) {
57
+ return normalized;
58
+ }
59
+ const suggestions = (0, levenshtein_1.getClosestMatches)(stage, exports.CANONICAL_STAGES);
60
+ throw new errors_1.StageInvalidError(stage, suggestions);
45
61
  }
46
62
  /**
47
63
  * Validate that a stage progression is valid.
48
64
  *
49
- * Rules (FS-SS-030-0001):
50
- * - SR-001: Only forward progression (never backward)
51
- * - SR-002: Intermediate stages may be skipped
52
- * - SR-003: Release is the final stage
53
- * - SR-004: Dropped status locks the task — no stage changes
54
- * - SR-005: Same-stage transitions are rejected
65
+ * v2: Free stage transitions. Forward, backward, and same-stage all allowed.
66
+ * No forward-only enforcement. No Dropped lock. No owner-for-stage check.
55
67
  *
56
- * @param currentStage - The task's current stage
68
+ * @param currentStage - The task's current stage (unused in v2, kept for API compatibility)
57
69
  * @param targetStage - The desired target stage
58
- * @param taskStatus - The task's current status (to check Dropped lock)
59
- * @throws StageInvalidError if target is not a valid stage
60
- * @throws StageLockedError if task is Dropped
61
- * @throws StageNoProgressError if target is same as current
62
- * @throws StageBackwardError if target is backward of current
70
+ * @param taskStatus - The task's current status (unused in v2, kept for API compatibility)
63
71
  */
64
- function validateProgression(currentStage, targetStage, taskStatus) {
65
- // Check Dropped lock first
66
- if (taskStatus === 'Dropped') {
67
- throw new errors_1.StageLockedError('(task)');
68
- }
69
- // Check same-stage no-op
70
- if (currentStage === targetStage) {
71
- throw new errors_1.StageNoProgressError('(task)', currentStage);
72
- }
73
- // Check forward progression
74
- if (!isForward(currentStage, targetStage)) {
75
- throw new errors_1.StageBackwardError(currentStage, targetStage);
76
- }
72
+ function validateProgression(_currentStage, _targetStage, _taskStatus) {
73
+ // v2: No validation restrictions. All stage transitions are freely allowed.
74
+ // No forward-only enforcement, no backward rejection, no same-stage rejection,
75
+ // no Dropped lock, no owner-for-stage check.
77
76
  }
78
77
  //# sourceMappingURL=stage-validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stage-validator.js","sourceRoot":"","sources":["../../src/services/stage-validator.ts"],"names":[],"mappings":";AAAA,8BAA8B;AAC9B,qEAAqE;AACrE,mDAAmD;AACnD,8CAA8C;AAC9C,2CAA2C;;;AAwB3C,oCAEC;AAKD,wCAEC;AAMD,8BAIC;AAoBD,kDAmBC;AA/ED,4CAIyB;AAEzB,gDAAgD;AACnC,QAAA,gBAAgB,GAAgB;IAC3C,UAAU;IACV,aAAa;IACb,eAAe;IACf,QAAQ;IACR,WAAW;IACX,gBAAgB;IAChB,SAAS;IACT,SAAS;CACV,CAAC;AAEF;;GAEG;AACH,SAAgB,YAAY,CAAC,KAAa;IACxC,OAAQ,wBAAsC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc;IAC5B,OAAO,CAAC,GAAG,wBAAgB,CAAC,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,OAAkB,EAAE,MAAiB;IAC7D,MAAM,UAAU,GAAG,wBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,wBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,SAAS,GAAG,UAAU,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,mBAAmB,CACjC,YAAuB,EACvB,WAAsB,EACtB,UAAkB;IAElB,2BAA2B;IAC3B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,yBAAgB,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,yBAAyB;IACzB,IAAI,YAAY,KAAK,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,6BAAoB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACzD,CAAC;IAED,4BAA4B;IAC5B,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,2BAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"stage-validator.js","sourceRoot":"","sources":["../../src/services/stage-validator.ts"],"names":[],"mappings":";AAAA,8BAA8B;AAC9B,mEAAmE;AACnE,mEAAmE;AACnE,iDAAiD;AACjD,4FAA4F;;;AAwB5F,oCAEC;AAMD,wCAEC;AAKD,wCAEC;AASD,sCAQC;AAuByB,2CAAkB;AAX5C,kDAQC;AA3ED,4CAAoD;AACpD,sDAAyD;AAEzD,uDAAuD;AAC1C,QAAA,gBAAgB,GAAgB;IAC3C,UAAU;IACV,2BAA2B;IAC3B,QAAQ;IACR,gBAAgB;IAChB,SAAS;IACT,SAAS;CACV,CAAC;AAEF,oDAAoD;AACpD,MAAM,mBAAmB,GAA2B,IAAI,GAAG,CACzD,wBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAChD,CAAC;AAEF;;GAEG;AACH,SAAgB,YAAY,CAAC,KAAa;IACxC,OAAO,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAAa;IAC1C,OAAO,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc;IAC5B,OAAO,CAAC,GAAG,wBAAgB,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,KAAa;IACzC,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,+BAAiB,EAAC,KAAK,EAAE,wBAA4B,CAAC,CAAC;IAC3E,MAAM,IAAI,0BAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CACjC,aAAwB,EACxB,YAAuB,EACvB,WAAmB;IAEnB,4EAA4E;IAC5E,+EAA+E;IAC/E,6CAA6C;AAC/C,CAAC"}
@@ -1,30 +1,38 @@
1
1
  import type Database from 'better-sqlite3';
2
2
  import type { Task, TaskResult, TaskDetail, TaskAddOptions, TaskMoveContext, TaskUpdateFields } from '../models/task';
3
3
  import type { TaskStatus } from '../models/common';
4
- import { validateOwnerRole, isValidRole } from '../validators/owner-validator';
4
+ import { validateOwnerRole } from '../validators/owner-validator';
5
5
  /**
6
6
  * Add a new task to a sprint.
7
7
  *
8
+ * v2: No captain-only owner validation. Any valid role can own a task in any stage.
9
+ *
8
10
  * @param db - Database connection
9
11
  * @param sprintId - Sprint ID
10
12
  * @param content - Task content (nullable; can be populated via --content-file)
11
- * @param owner - Owner role (must be valid, captain-only for Backlog)
13
+ * @param owner - Owner role (must be valid)
12
14
  * @param opts - Optional task properties
13
15
  * @returns The created task result
14
16
  * @throws TaskBadSprintError if sprint doesn't exist or is closed
15
17
  * @throws TaskOwnerRequiredError if owner is empty
16
- * @throws various owner validation errors
18
+ * @throws various validation errors
17
19
  */
18
20
  export declare function addTask(db: Database.Database, sprintId: string, content: string | null, owner: string, opts?: TaskAddOptions): TaskResult;
19
21
  /**
20
- * Move a task: status transition, stage transition, or combined.
22
+ * Move a task: status transition, stage transition, owner change, or combined.
21
23
  *
22
- * Per AD-0039: stage validation runs before status validation in combined moves.
23
- * Per FR-URD-034-0004: active sprint is required — no --sprint override.
24
+ * v2 per AD-0039 / AD-0031:
25
+ * - Case-insensitive validation for status, stage, owner
26
+ * - Closest-match suggestions via Levenshtein distance
27
+ * - Free stage transitions (forward, backward, same-stage all allowed)
28
+ * - Non-terminal Dropped (can recover to Backlog/To Do)
29
+ * - Dry-run mode: validate without persisting
30
+ * - Compulsory parameters: at least one of --to, --stage, --owner
31
+ * - No --sprint override; move always operates on active sprint
24
32
  *
25
33
  * @param db - Database connection
26
34
  * @param taskId - Task ID (4-digit NNNN)
27
- * @param opts - Move options: targetStatus, targetStage, context
35
+ * @param opts - Move options: targetStatus, targetStage, context, dryRun, sprintId
28
36
  * @returns Updated task result
29
37
  */
30
38
  export declare function moveTask(db: Database.Database, taskId: string, opts: {
@@ -32,32 +40,21 @@ export declare function moveTask(db: Database.Database, taskId: string, opts: {
32
40
  targetStage?: string;
33
41
  context?: TaskMoveContext;
34
42
  sprintId?: string;
43
+ dryRun?: boolean;
35
44
  }): TaskResult;
36
45
  /**
37
46
  * Update task metadata (content/type/priority/points/scope/acceptance).
38
47
  * Does NOT change task status, stage, owner, or sprint — use moveTask for those.
39
48
  *
40
49
  * Per AD-0038: rejects stage, owner, sprint fields at the service layer.
41
- *
42
- * @throws TaskNotFoundError if task doesn't exist
43
- * @throws TaskInvalidFieldError if prohibited fields are present
44
50
  */
45
51
  export declare function updateTask(db: Database.Database, taskId: string, fields: TaskUpdateFields, sprintId?: string): TaskResult;
46
52
  /**
47
- * Remove a task (soft delete by default per AD-0011).
48
- *
49
- * @param db - Database connection
50
- * @param taskId - Task ID
51
- * @throws TaskNotFoundError if task doesn't exist
53
+ * Remove a task (permanent delete).
52
54
  */
53
55
  export declare function removeTask(db: Database.Database, taskId: string, sprintId?: string): void;
54
56
  /**
55
57
  * Show detailed task information including sprint name and parent content.
56
- *
57
- * @param db - Database connection
58
- * @param taskId - Task ID
59
- * @param sprintId - Sprint ID (required for sprint-scoped lookup per URD-026)
60
- * @throws TaskNotFoundError if task doesn't exist or is not in the specified sprint
61
58
  */
62
59
  export declare function showTask(db: Database.Database, taskId: string, sprintId?: string): TaskDetail;
63
60
  /**
@@ -71,5 +68,5 @@ export declare function listTasks(db: Database.Database, sprintId: string, filte
71
68
  * Get task status counts for a sprint.
72
69
  */
73
70
  export declare function getTaskStatusCounts(db: Database.Database, sprintId: string): Record<string, number>;
74
- export { isValidRole, validateOwnerRole };
71
+ export { validateOwnerRole };
75
72
  //# sourceMappingURL=task.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/services/task.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtH,OAAO,KAAK,EAAE,UAAU,EAA+C,MAAM,kBAAkB,CAAC;AAwBhG,OAAO,EAAyB,iBAAiB,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AA4DtG;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CACrB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,cAAc,GACpB,UAAU,CAoGZ;AAmBD;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CACtB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IACJ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,UAAU,CAgIZ;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,EACxB,QAAQ,CAAC,EAAE,MAAM,GAChB,UAAU,CAqHZ;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAgCN;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAwB7F;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,IAAI,EAAE,CAuBR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxB;AAGD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/services/task.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtH,OAAO,KAAK,EAAE,UAAU,EAA+C,MAAM,kBAAkB,CAAC;AAyBhG,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AA6DlE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CACrB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,cAAc,GACpB,UAAU,CAqGZ;AAmBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CACtB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IACJ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,UAAU,CA2JZ;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,EACxB,QAAQ,CAAC,EAAE,MAAM,GAChB,UAAU,CAkHZ;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CA4BN;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAwB7F;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,IAAI,EAAE,CAoBR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxB;AAGD,OAAO,EAAE,iBAAiB,EAAE,CAAC"}