@lwelliott/cortex-cli 1.0.3
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/LICENSE +21 -0
- package/README.md +159 -0
- package/dist/cli/audit.d.ts +3 -0
- package/dist/cli/audit.d.ts.map +1 -0
- package/dist/cli/audit.js +78 -0
- package/dist/cli/audit.js.map +1 -0
- package/dist/cli/doc.d.ts +3 -0
- package/dist/cli/doc.d.ts.map +1 -0
- package/dist/cli/doc.js +291 -0
- package/dist/cli/doc.js.map +1 -0
- package/dist/cli/entity.d.ts +3 -0
- package/dist/cli/entity.d.ts.map +1 -0
- package/dist/cli/entity.js +135 -0
- package/dist/cli/entity.js.map +1 -0
- package/dist/cli/format-selector.d.ts +30 -0
- package/dist/cli/format-selector.d.ts.map +1 -0
- package/dist/cli/format-selector.js +101 -0
- package/dist/cli/format-selector.js.map +1 -0
- package/dist/cli/formatters/audit-formatter.d.ts +33 -0
- package/dist/cli/formatters/audit-formatter.d.ts.map +1 -0
- package/dist/cli/formatters/audit-formatter.js +204 -0
- package/dist/cli/formatters/audit-formatter.js.map +1 -0
- package/dist/cli/formatters/json.d.ts +10 -0
- package/dist/cli/formatters/json.d.ts.map +1 -0
- package/dist/cli/formatters/json.js +31 -0
- package/dist/cli/formatters/json.js.map +1 -0
- package/dist/cli/formatters/markdown.d.ts +12 -0
- package/dist/cli/formatters/markdown.d.ts.map +1 -0
- package/dist/cli/formatters/markdown.js +341 -0
- package/dist/cli/formatters/markdown.js.map +1 -0
- package/dist/cli/formatters/quiet.d.ts +15 -0
- package/dist/cli/formatters/quiet.d.ts.map +1 -0
- package/dist/cli/formatters/quiet.js +75 -0
- package/dist/cli/formatters/quiet.js.map +1 -0
- package/dist/cli/formatters/table.d.ts +11 -0
- package/dist/cli/formatters/table.d.ts.map +1 -0
- package/dist/cli/formatters/table.js +726 -0
- package/dist/cli/formatters/table.js.map +1 -0
- package/dist/cli/graph.d.ts +3 -0
- package/dist/cli/graph.d.ts.map +1 -0
- package/dist/cli/graph.js +209 -0
- package/dist/cli/graph.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +144 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/lesson.d.ts +3 -0
- package/dist/cli/lesson.d.ts.map +1 -0
- package/dist/cli/lesson.js +85 -0
- package/dist/cli/lesson.js.map +1 -0
- package/dist/cli/project-resolver.d.ts +17 -0
- package/dist/cli/project-resolver.d.ts.map +1 -0
- package/dist/cli/project-resolver.js +25 -0
- package/dist/cli/project-resolver.js.map +1 -0
- package/dist/cli/project.d.ts +12 -0
- package/dist/cli/project.d.ts.map +1 -0
- package/dist/cli/project.js +169 -0
- package/dist/cli/project.js.map +1 -0
- package/dist/cli/relation.d.ts +3 -0
- package/dist/cli/relation.d.ts.map +1 -0
- package/dist/cli/relation.js +128 -0
- package/dist/cli/relation.js.map +1 -0
- package/dist/cli/review.d.ts +3 -0
- package/dist/cli/review.d.ts.map +1 -0
- package/dist/cli/review.js +131 -0
- package/dist/cli/review.js.map +1 -0
- package/dist/cli/router.d.ts +38 -0
- package/dist/cli/router.d.ts.map +1 -0
- package/dist/cli/router.js +49 -0
- package/dist/cli/router.js.map +1 -0
- package/dist/cli/schema.d.ts +3 -0
- package/dist/cli/schema.d.ts.map +1 -0
- package/dist/cli/schema.js +94 -0
- package/dist/cli/schema.js.map +1 -0
- package/dist/cli/sprint.d.ts +12 -0
- package/dist/cli/sprint.d.ts.map +1 -0
- package/dist/cli/sprint.js +200 -0
- package/dist/cli/sprint.js.map +1 -0
- package/dist/cli/task.d.ts +12 -0
- package/dist/cli/task.d.ts.map +1 -0
- package/dist/cli/task.js +252 -0
- package/dist/cli/task.js.map +1 -0
- package/dist/cli/test-report.d.ts +3 -0
- package/dist/cli/test-report.d.ts.map +1 -0
- package/dist/cli/test-report.js +134 -0
- package/dist/cli/test-report.js.map +1 -0
- package/dist/cli/validate.d.ts +8 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +86 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/config/config.d.ts +18 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +70 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/registry.d.ts +52 -0
- package/dist/config/registry.d.ts.map +1 -0
- package/dist/config/registry.js +193 -0
- package/dist/config/registry.js.map +1 -0
- package/dist/config/resolver.d.ts +26 -0
- package/dist/config/resolver.d.ts.map +1 -0
- package/dist/config/resolver.js +87 -0
- package/dist/config/resolver.js.map +1 -0
- package/dist/db/builtin-schema-constants.d.ts +109 -0
- package/dist/db/builtin-schema-constants.d.ts.map +1 -0
- package/dist/db/builtin-schema-constants.js +32 -0
- package/dist/db/builtin-schema-constants.js.map +1 -0
- package/dist/db/connection.d.ts +34 -0
- package/dist/db/connection.d.ts.map +1 -0
- package/dist/db/connection.js +140 -0
- package/dist/db/connection.js.map +1 -0
- package/dist/db/generated/schema-types.d.ts +134 -0
- package/dist/db/generated/schema-types.d.ts.map +1 -0
- package/dist/db/generated/schema-types.js +31 -0
- package/dist/db/generated/schema-types.js.map +1 -0
- package/dist/db/locks.d.ts +106 -0
- package/dist/db/locks.d.ts.map +1 -0
- package/dist/db/locks.js +211 -0
- package/dist/db/locks.js.map +1 -0
- package/dist/db/migration.d.ts +65 -0
- package/dist/db/migration.d.ts.map +1 -0
- package/dist/db/migration.js +233 -0
- package/dist/db/migration.js.map +1 -0
- package/dist/db/retry.d.ts +26 -0
- package/dist/db/retry.d.ts.map +1 -0
- package/dist/db/retry.js +71 -0
- package/dist/db/retry.js.map +1 -0
- package/dist/db/schema.d.ts +21 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +830 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/models/common.d.ts +27 -0
- package/dist/models/common.d.ts.map +1 -0
- package/dist/models/common.js +4 -0
- package/dist/models/common.js.map +1 -0
- package/dist/models/document.d.ts +89 -0
- package/dist/models/document.d.ts.map +1 -0
- package/dist/models/document.js +5 -0
- package/dist/models/document.js.map +1 -0
- package/dist/models/entity-model.d.ts +30 -0
- package/dist/models/entity-model.d.ts.map +1 -0
- package/dist/models/entity-model.js +99 -0
- package/dist/models/entity-model.js.map +1 -0
- package/dist/models/entity.d.ts +88 -0
- package/dist/models/entity.d.ts.map +1 -0
- package/dist/models/entity.js +5 -0
- package/dist/models/entity.js.map +1 -0
- package/dist/models/graph-schema.d.ts +43 -0
- package/dist/models/graph-schema.d.ts.map +1 -0
- package/dist/models/graph-schema.js +76 -0
- package/dist/models/graph-schema.js.map +1 -0
- package/dist/models/project.d.ts +49 -0
- package/dist/models/project.d.ts.map +1 -0
- package/dist/models/project.js +18 -0
- package/dist/models/project.js.map +1 -0
- package/dist/models/relation.d.ts +35 -0
- package/dist/models/relation.d.ts.map +1 -0
- package/dist/models/relation.js +212 -0
- package/dist/models/relation.js.map +1 -0
- package/dist/models/review.d.ts +86 -0
- package/dist/models/review.d.ts.map +1 -0
- package/dist/models/review.js +5 -0
- package/dist/models/review.js.map +1 -0
- package/dist/models/sprint.d.ts +38 -0
- package/dist/models/sprint.d.ts.map +1 -0
- package/dist/models/sprint.js +4 -0
- package/dist/models/sprint.js.map +1 -0
- package/dist/models/task.d.ts +75 -0
- package/dist/models/task.d.ts.map +1 -0
- package/dist/models/task.js +4 -0
- package/dist/models/task.js.map +1 -0
- package/dist/models/validation.d.ts +25 -0
- package/dist/models/validation.d.ts.map +1 -0
- package/dist/models/validation.js +4 -0
- package/dist/models/validation.js.map +1 -0
- package/dist/services/audit-check-service.d.ts +16 -0
- package/dist/services/audit-check-service.d.ts.map +1 -0
- package/dist/services/audit-check-service.js +137 -0
- package/dist/services/audit-check-service.js.map +1 -0
- package/dist/services/audit-checks/dangling-relations-check.d.ts +7 -0
- package/dist/services/audit-checks/dangling-relations-check.d.ts.map +1 -0
- package/dist/services/audit-checks/dangling-relations-check.js +52 -0
- package/dist/services/audit-checks/dangling-relations-check.js.map +1 -0
- package/dist/services/audit-checks/duplicate-ids-check.d.ts +4 -0
- package/dist/services/audit-checks/duplicate-ids-check.d.ts.map +1 -0
- package/dist/services/audit-checks/duplicate-ids-check.js +49 -0
- package/dist/services/audit-checks/duplicate-ids-check.js.map +1 -0
- package/dist/services/audit-checks/fix-engine.d.ts +24 -0
- package/dist/services/audit-checks/fix-engine.d.ts.map +1 -0
- package/dist/services/audit-checks/fix-engine.js +114 -0
- package/dist/services/audit-checks/fix-engine.js.map +1 -0
- package/dist/services/audit-checks/fr-nfr-to-fs-nfs-check.d.ts +9 -0
- package/dist/services/audit-checks/fr-nfr-to-fs-nfs-check.d.ts.map +1 -0
- package/dist/services/audit-checks/fr-nfr-to-fs-nfs-check.js +56 -0
- package/dist/services/audit-checks/fr-nfr-to-fs-nfs-check.js.map +1 -0
- package/dist/services/audit-checks/fs-nfs-to-sad-ad-qa-check.d.ts +10 -0
- package/dist/services/audit-checks/fs-nfs-to-sad-ad-qa-check.d.ts.map +1 -0
- package/dist/services/audit-checks/fs-nfs-to-sad-ad-qa-check.js +57 -0
- package/dist/services/audit-checks/fs-nfs-to-sad-ad-qa-check.js.map +1 -0
- package/dist/services/audit-checks/fs-nfs-to-ts-check.d.ts +9 -0
- package/dist/services/audit-checks/fs-nfs-to-ts-check.d.ts.map +1 -0
- package/dist/services/audit-checks/fs-nfs-to-ts-check.js +56 -0
- package/dist/services/audit-checks/fs-nfs-to-ts-check.js.map +1 -0
- package/dist/services/audit-checks/inverse-consistency-check.d.ts +7 -0
- package/dist/services/audit-checks/inverse-consistency-check.d.ts.map +1 -0
- package/dist/services/audit-checks/inverse-consistency-check.js +54 -0
- package/dist/services/audit-checks/inverse-consistency-check.js.map +1 -0
- package/dist/services/audit-checks/mapping-check.d.ts +4 -0
- package/dist/services/audit-checks/mapping-check.d.ts.map +1 -0
- package/dist/services/audit-checks/mapping-check.js +74 -0
- package/dist/services/audit-checks/mapping-check.js.map +1 -0
- package/dist/services/audit-checks/orphan-documents-check.d.ts +9 -0
- package/dist/services/audit-checks/orphan-documents-check.d.ts.map +1 -0
- package/dist/services/audit-checks/orphan-documents-check.js +54 -0
- package/dist/services/audit-checks/orphan-documents-check.js.map +1 -0
- package/dist/services/audit-checks/orphan-entities-check.d.ts +4 -0
- package/dist/services/audit-checks/orphan-entities-check.d.ts.map +1 -0
- package/dist/services/audit-checks/orphan-entities-check.js +39 -0
- package/dist/services/audit-checks/orphan-entities-check.js.map +1 -0
- package/dist/services/audit-checks/sad-ad-qa-tc-to-src-check.d.ts +9 -0
- package/dist/services/audit-checks/sad-ad-qa-tc-to-src-check.d.ts.map +1 -0
- package/dist/services/audit-checks/sad-ad-qa-tc-to-src-check.js +56 -0
- package/dist/services/audit-checks/sad-ad-qa-tc-to-src-check.js.map +1 -0
- package/dist/services/audit-checks/sprint-consistency-check.d.ts +4 -0
- package/dist/services/audit-checks/sprint-consistency-check.d.ts.map +1 -0
- package/dist/services/audit-checks/sprint-consistency-check.js +80 -0
- package/dist/services/audit-checks/sprint-consistency-check.js.map +1 -0
- package/dist/services/audit-checks/src-filesystem-only-check.d.ts +10 -0
- package/dist/services/audit-checks/src-filesystem-only-check.d.ts.map +1 -0
- package/dist/services/audit-checks/src-filesystem-only-check.js +106 -0
- package/dist/services/audit-checks/src-filesystem-only-check.js.map +1 -0
- package/dist/services/audit-checks/ts-to-tc-check.d.ts +10 -0
- package/dist/services/audit-checks/ts-to-tc-check.d.ts.map +1 -0
- package/dist/services/audit-checks/ts-to-tc-check.js +58 -0
- package/dist/services/audit-checks/ts-to-tc-check.js.map +1 -0
- package/dist/services/audit-checks/type-mismatch-check.d.ts +4 -0
- package/dist/services/audit-checks/type-mismatch-check.d.ts.map +1 -0
- package/dist/services/audit-checks/type-mismatch-check.js +55 -0
- package/dist/services/audit-checks/type-mismatch-check.js.map +1 -0
- package/dist/services/audit-checks/types.d.ts +66 -0
- package/dist/services/audit-checks/types.d.ts.map +1 -0
- package/dist/services/audit-checks/types.js +30 -0
- package/dist/services/audit-checks/types.js.map +1 -0
- package/dist/services/audit-checks/us-to-fr-nfr-check.d.ts +9 -0
- package/dist/services/audit-checks/us-to-fr-nfr-check.d.ts.map +1 -0
- package/dist/services/audit-checks/us-to-fr-nfr-check.js +56 -0
- package/dist/services/audit-checks/us-to-fr-nfr-check.js.map +1 -0
- package/dist/services/doc-entity-mapping.d.ts +19 -0
- package/dist/services/doc-entity-mapping.d.ts.map +1 -0
- package/dist/services/doc-entity-mapping.js +35 -0
- package/dist/services/doc-entity-mapping.js.map +1 -0
- package/dist/services/document-service.d.ts +58 -0
- package/dist/services/document-service.d.ts.map +1 -0
- package/dist/services/document-service.js +409 -0
- package/dist/services/document-service.js.map +1 -0
- package/dist/services/graph-export-service.d.ts +12 -0
- package/dist/services/graph-export-service.d.ts.map +1 -0
- package/dist/services/graph-export-service.js +112 -0
- package/dist/services/graph-export-service.js.map +1 -0
- package/dist/services/graph-service.d.ts +21 -0
- package/dist/services/graph-service.d.ts.map +1 -0
- package/dist/services/graph-service.js +49 -0
- package/dist/services/graph-service.js.map +1 -0
- package/dist/services/graph-validation-service.d.ts +13 -0
- package/dist/services/graph-validation-service.d.ts.map +1 -0
- package/dist/services/graph-validation-service.js +171 -0
- package/dist/services/graph-validation-service.js.map +1 -0
- package/dist/services/project.d.ts +80 -0
- package/dist/services/project.d.ts.map +1 -0
- package/dist/services/project.js +256 -0
- package/dist/services/project.js.map +1 -0
- package/dist/services/review-service.d.ts +81 -0
- package/dist/services/review-service.d.ts.map +1 -0
- package/dist/services/review-service.js +242 -0
- package/dist/services/review-service.js.map +1 -0
- package/dist/services/schema-migration-service.d.ts +44 -0
- package/dist/services/schema-migration-service.d.ts.map +1 -0
- package/dist/services/schema-migration-service.js +894 -0
- package/dist/services/schema-migration-service.js.map +1 -0
- package/dist/services/sprint.d.ts +71 -0
- package/dist/services/sprint.d.ts.map +1 -0
- package/dist/services/sprint.js +238 -0
- package/dist/services/sprint.js.map +1 -0
- package/dist/services/stage-validator.d.ts +36 -0
- package/dist/services/stage-validator.d.ts.map +1 -0
- package/dist/services/stage-validator.js +78 -0
- package/dist/services/stage-validator.js.map +1 -0
- package/dist/services/task.d.ts +75 -0
- package/dist/services/task.d.ts.map +1 -0
- package/dist/services/task.js +487 -0
- package/dist/services/task.js.map +1 -0
- package/dist/services/validation.d.ts +24 -0
- package/dist/services/validation.d.ts.map +1 -0
- package/dist/services/validation.js +53 -0
- package/dist/services/validation.js.map +1 -0
- package/dist/state-machines/sprint-state.d.ts +25 -0
- package/dist/state-machines/sprint-state.d.ts.map +1 -0
- package/dist/state-machines/sprint-state.js +64 -0
- package/dist/state-machines/sprint-state.js.map +1 -0
- package/dist/state-machines/task-state.d.ts +31 -0
- package/dist/state-machines/task-state.d.ts.map +1 -0
- package/dist/state-machines/task-state.js +83 -0
- package/dist/state-machines/task-state.js.map +1 -0
- package/dist/utils/errors.d.ts +673 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +1447 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/format.d.ts +52 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +65 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/validators/board-integrity.d.ts +25 -0
- package/dist/validators/board-integrity.d.ts.map +1 -0
- package/dist/validators/board-integrity.js +102 -0
- package/dist/validators/board-integrity.js.map +1 -0
- package/dist/validators/board-shape.d.ts +13 -0
- package/dist/validators/board-shape.d.ts.map +1 -0
- package/dist/validators/board-shape.js +74 -0
- package/dist/validators/board-shape.js.map +1 -0
- package/dist/validators/owner-validator.d.ts +30 -0
- package/dist/validators/owner-validator.d.ts.map +1 -0
- package/dist/validators/owner-validator.js +70 -0
- package/dist/validators/owner-validator.js.map +1 -0
- package/dist/validators/spawn-legality.d.ts +19 -0
- package/dist/validators/spawn-legality.d.ts.map +1 -0
- package/dist/validators/spawn-legality.js +77 -0
- package/dist/validators/spawn-legality.js.map +1 -0
- package/dist/validators/state-field-checker.d.ts +8 -0
- package/dist/validators/state-field-checker.d.ts.map +1 -0
- package/dist/validators/state-field-checker.js +47 -0
- package/dist/validators/state-field-checker.js.map +1 -0
- package/dist/validators/state-field-recorder.d.ts +39 -0
- package/dist/validators/state-field-recorder.d.ts.map +1 -0
- package/dist/validators/state-field-recorder.js +62 -0
- package/dist/validators/state-field-recorder.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-migration-service.js","sourceRoot":"","sources":["../../src/services/schema-migration-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import type { Sprint, SprintResult, SprintOverview } from '../models/sprint';
|
|
3
|
+
import type { SprintStatus } from '../models/common';
|
|
4
|
+
/**
|
|
5
|
+
* Create a new sprint.
|
|
6
|
+
*
|
|
7
|
+
* @param db - Database connection
|
|
8
|
+
* @param id - Sprint ID (unique)
|
|
9
|
+
* @param name - Optional sprint name
|
|
10
|
+
* @param goal - Optional sprint goal
|
|
11
|
+
* @returns The created sprint result
|
|
12
|
+
* @throws SprintInvalidError if ID is empty
|
|
13
|
+
* @throws SprintDuplicateError if ID already exists
|
|
14
|
+
*/
|
|
15
|
+
export declare function createSprint(db: Database.Database, id: string, name?: string, goal?: string): SprintResult;
|
|
16
|
+
/**
|
|
17
|
+
* Get a sprint overview with task counts by status.
|
|
18
|
+
*
|
|
19
|
+
* @param db - Database connection
|
|
20
|
+
* @param sprintId - Optional sprint ID (resolves default if omitted)
|
|
21
|
+
* @returns Sprint overview with task counts
|
|
22
|
+
* @throws SprintNotFoundError if sprint doesn't exist
|
|
23
|
+
* @throws SprintNoneError if no sprintId and no sprints exist
|
|
24
|
+
*/
|
|
25
|
+
export declare function getSprintOverview(db: Database.Database, sprintId?: string): SprintOverview;
|
|
26
|
+
/**
|
|
27
|
+
* Get active (non-Done, non-Dropped) tasks for a sprint.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getSprintActiveTasks(db: Database.Database, sprintId?: string): Array<Record<string, unknown>>;
|
|
30
|
+
/**
|
|
31
|
+
* List sprints with optional filters.
|
|
32
|
+
*/
|
|
33
|
+
export declare function listSprints(db: Database.Database, filters?: {
|
|
34
|
+
status?: SprintStatus;
|
|
35
|
+
}): Sprint[];
|
|
36
|
+
/**
|
|
37
|
+
* Transition a sprint from one status to another.
|
|
38
|
+
*
|
|
39
|
+
* @param db - Database connection
|
|
40
|
+
* @param id - Sprint ID
|
|
41
|
+
* @param target - Target sprint status
|
|
42
|
+
* @returns Updated sprint result
|
|
43
|
+
* @throws SprintNotFoundError if sprint doesn't exist
|
|
44
|
+
* @throws SprintBadStatusError if target is not a valid sprint status
|
|
45
|
+
* @throws SprintTransitionError if transition is not allowed
|
|
46
|
+
*/
|
|
47
|
+
export declare function transitionSprintStatus(db: Database.Database, id: string, target: string): SprintResult;
|
|
48
|
+
/**
|
|
49
|
+
* Update a sprint's mutable properties (name, goal).
|
|
50
|
+
* Uses per-sprint advisory locking (kanban:sprint{<id>}) following AD-0015.
|
|
51
|
+
*
|
|
52
|
+
* @param db - Database connection
|
|
53
|
+
* @param id - Sprint ID
|
|
54
|
+
* @param updates - Partial update; absent fields are unchanged, empty string replaces
|
|
55
|
+
* @returns Updated sprint result
|
|
56
|
+
* @throws SprintNotFoundError if sprint doesn't exist
|
|
57
|
+
* @throws LockTimeoutError if lock cannot be acquired
|
|
58
|
+
*/
|
|
59
|
+
export declare function updateSprint(db: Database.Database, id: string, updates: {
|
|
60
|
+
name?: string;
|
|
61
|
+
goal?: string;
|
|
62
|
+
}): SprintResult;
|
|
63
|
+
/**
|
|
64
|
+
* Resolve the default sprint (most recently created non-CLOSED sprint).
|
|
65
|
+
* Implements AD-0010: Default Sprint Resolution by Recency.
|
|
66
|
+
*
|
|
67
|
+
* @throws SprintNoneError if no sprints exist
|
|
68
|
+
* @throws SprintNotFoundError if a specific ID was given but not found
|
|
69
|
+
*/
|
|
70
|
+
export declare function resolveSprint(db: Database.Database, sprintId?: string): Sprint;
|
|
71
|
+
//# sourceMappingURL=sprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprint.d.ts","sourceRoot":"","sources":["../../src/services/sprint.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,kBAAkB,CAAC;AAkBjE;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,YAAY,CAiCd;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,cAAc,CAuChB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAShC;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE,GAClC,MAAM,EAAE,CAYV;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,GACb,YAAY,CAkDd;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,YAAY,CA4Bd;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAmB9E"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Sprint service: orchestrates sprint lifecycle (create, overview, list, status transitions, resolution)
|
|
3
|
+
// Implements AD-0008: Centralized State Machines + Owner Validation
|
|
4
|
+
// + AD-0010: Default Sprint Resolution by Recency
|
|
5
|
+
// + FS-SS-004-0001..0008
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.createSprint = createSprint;
|
|
8
|
+
exports.getSprintOverview = getSprintOverview;
|
|
9
|
+
exports.getSprintActiveTasks = getSprintActiveTasks;
|
|
10
|
+
exports.listSprints = listSprints;
|
|
11
|
+
exports.transitionSprintStatus = transitionSprintStatus;
|
|
12
|
+
exports.updateSprint = updateSprint;
|
|
13
|
+
exports.resolveSprint = resolveSprint;
|
|
14
|
+
const errors_1 = require("../utils/errors");
|
|
15
|
+
const sprint_state_1 = require("../state-machines/sprint-state");
|
|
16
|
+
const locks_1 = require("../db/locks");
|
|
17
|
+
const retry_1 = require("../db/retry");
|
|
18
|
+
/**
|
|
19
|
+
* Create a new sprint.
|
|
20
|
+
*
|
|
21
|
+
* @param db - Database connection
|
|
22
|
+
* @param id - Sprint ID (unique)
|
|
23
|
+
* @param name - Optional sprint name
|
|
24
|
+
* @param goal - Optional sprint goal
|
|
25
|
+
* @returns The created sprint result
|
|
26
|
+
* @throws SprintInvalidError if ID is empty
|
|
27
|
+
* @throws SprintDuplicateError if ID already exists
|
|
28
|
+
*/
|
|
29
|
+
function createSprint(db, id, name, goal) {
|
|
30
|
+
if (!id || id.trim().length === 0) {
|
|
31
|
+
throw new errors_1.SprintInvalidError('Sprint ID cannot be empty');
|
|
32
|
+
}
|
|
33
|
+
const sprintName = name && name.trim().length > 0 ? name.trim() : id;
|
|
34
|
+
const sprintGoal = goal && goal.trim().length > 0 ? goal.trim() : null;
|
|
35
|
+
const lockName = `sprint:${id.trim()}`;
|
|
36
|
+
const owner = (0, locks_1.generateLockOwner)();
|
|
37
|
+
return (0, locks_1.withLock)(db, { name: lockName, owner }, () => {
|
|
38
|
+
// Check for duplicate
|
|
39
|
+
const existing = db.prepare('SELECT id FROM sprints WHERE id = ?').get(id.trim());
|
|
40
|
+
if (existing) {
|
|
41
|
+
throw new errors_1.SprintDuplicateError(id.trim());
|
|
42
|
+
}
|
|
43
|
+
const now = new Date().toISOString();
|
|
44
|
+
db.prepare(`
|
|
45
|
+
INSERT INTO sprints (id, name, status, goal, created_at, updated_at)
|
|
46
|
+
VALUES (?, ?, 'PLANNING', ?, ?, ?)
|
|
47
|
+
`).run(id.trim(), sprintName, sprintGoal, now, now);
|
|
48
|
+
return {
|
|
49
|
+
id: id.trim(),
|
|
50
|
+
name: sprintName,
|
|
51
|
+
goal: sprintGoal,
|
|
52
|
+
status: 'PLANNING',
|
|
53
|
+
created_at: now,
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get a sprint overview with task counts by status.
|
|
59
|
+
*
|
|
60
|
+
* @param db - Database connection
|
|
61
|
+
* @param sprintId - Optional sprint ID (resolves default if omitted)
|
|
62
|
+
* @returns Sprint overview with task counts
|
|
63
|
+
* @throws SprintNotFoundError if sprint doesn't exist
|
|
64
|
+
* @throws SprintNoneError if no sprintId and no sprints exist
|
|
65
|
+
*/
|
|
66
|
+
function getSprintOverview(db, sprintId) {
|
|
67
|
+
const sprint = resolveSprint(db, sprintId);
|
|
68
|
+
// Count tasks by status
|
|
69
|
+
const taskCounts = db.prepare(`
|
|
70
|
+
SELECT status, COUNT(*) as count
|
|
71
|
+
FROM tasks
|
|
72
|
+
WHERE sprint_id = ? AND removed_at IS NULL
|
|
73
|
+
GROUP BY status
|
|
74
|
+
`).all(sprint.id);
|
|
75
|
+
const counts = {
|
|
76
|
+
'Backlog': 0,
|
|
77
|
+
'To Do': 0,
|
|
78
|
+
'In Progress': 0,
|
|
79
|
+
'In Review': 0,
|
|
80
|
+
'Done': 0,
|
|
81
|
+
'Dropped': 0,
|
|
82
|
+
};
|
|
83
|
+
for (const row of taskCounts) {
|
|
84
|
+
if (row.status in counts) {
|
|
85
|
+
counts[row.status] = row.count;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const totalTasks = Object.values(counts).reduce((sum, c) => sum + (c ?? 0), 0);
|
|
89
|
+
return {
|
|
90
|
+
id: sprint.id,
|
|
91
|
+
name: sprint.name,
|
|
92
|
+
goal: sprint.goal,
|
|
93
|
+
status: sprint.status,
|
|
94
|
+
taskCounts: counts,
|
|
95
|
+
totalTasks,
|
|
96
|
+
created_at: sprint.created_at,
|
|
97
|
+
updated_at: sprint.updated_at,
|
|
98
|
+
closed_at: sprint.closed_at,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get active (non-Done, non-Dropped) tasks for a sprint.
|
|
103
|
+
*/
|
|
104
|
+
function getSprintActiveTasks(db, sprintId) {
|
|
105
|
+
const sprint = resolveSprint(db, sprintId);
|
|
106
|
+
return db.prepare(`
|
|
107
|
+
SELECT id, description, status, owner, task_type, priority, points, created_at, updated_at
|
|
108
|
+
FROM tasks
|
|
109
|
+
WHERE sprint_id = ? AND status NOT IN ('Done', 'Dropped') AND removed_at IS NULL
|
|
110
|
+
ORDER BY status, created_at
|
|
111
|
+
`).all(sprint.id);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* List sprints with optional filters.
|
|
115
|
+
*/
|
|
116
|
+
function listSprints(db, filters) {
|
|
117
|
+
let sql = 'SELECT * FROM sprints';
|
|
118
|
+
const params = [];
|
|
119
|
+
if (filters?.status) {
|
|
120
|
+
sql += ' WHERE status = ?';
|
|
121
|
+
params.push(filters.status);
|
|
122
|
+
}
|
|
123
|
+
sql += ' ORDER BY created_at DESC';
|
|
124
|
+
return db.prepare(sql).all(...params);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Transition a sprint from one status to another.
|
|
128
|
+
*
|
|
129
|
+
* @param db - Database connection
|
|
130
|
+
* @param id - Sprint ID
|
|
131
|
+
* @param target - Target sprint status
|
|
132
|
+
* @returns Updated sprint result
|
|
133
|
+
* @throws SprintNotFoundError if sprint doesn't exist
|
|
134
|
+
* @throws SprintBadStatusError if target is not a valid sprint status
|
|
135
|
+
* @throws SprintTransitionError if transition is not allowed
|
|
136
|
+
*/
|
|
137
|
+
function transitionSprintStatus(db, id, target) {
|
|
138
|
+
if (!(0, sprint_state_1.isValidSprintStatus)(target)) {
|
|
139
|
+
throw new errors_1.SprintBadStatusError(target);
|
|
140
|
+
}
|
|
141
|
+
const lockName = `sprint:${id}`;
|
|
142
|
+
const owner = (0, locks_1.generateLockOwner)();
|
|
143
|
+
return (0, locks_1.withLock)(db, { name: lockName, owner }, () => {
|
|
144
|
+
return (0, retry_1.withTransaction)(db, () => {
|
|
145
|
+
const sprint = db.prepare('SELECT * FROM sprints WHERE id = ?').get(id);
|
|
146
|
+
if (!sprint) {
|
|
147
|
+
throw new errors_1.SprintNotFoundError(id);
|
|
148
|
+
}
|
|
149
|
+
// Validate transition
|
|
150
|
+
if (!(0, sprint_state_1.isValidSprintTransition)(sprint.status, target)) {
|
|
151
|
+
const allowed = (0, sprint_state_1.getAllowedSprintTransitions)(sprint.status).map(s => s);
|
|
152
|
+
throw new errors_1.SprintTransitionError(sprint.status, target, allowed);
|
|
153
|
+
}
|
|
154
|
+
// Auto-timestamps
|
|
155
|
+
const timestamps = (0, sprint_state_1.getSprintAutoTimestamps)(sprint.status, target);
|
|
156
|
+
const now = new Date().toISOString();
|
|
157
|
+
const updates = ['status = ?', 'updated_at = ?'];
|
|
158
|
+
const params = [target, now];
|
|
159
|
+
if (timestamps.started_at) {
|
|
160
|
+
updates.push('started_at = ?');
|
|
161
|
+
params.push(timestamps.started_at);
|
|
162
|
+
}
|
|
163
|
+
if (timestamps.closed_at) {
|
|
164
|
+
updates.push('closed_at = ?');
|
|
165
|
+
params.push(timestamps.closed_at);
|
|
166
|
+
}
|
|
167
|
+
params.push(id);
|
|
168
|
+
db.prepare(`UPDATE sprints SET ${updates.join(', ')} WHERE id = ?`).run(...params);
|
|
169
|
+
return {
|
|
170
|
+
id: sprint.id,
|
|
171
|
+
name: sprint.name,
|
|
172
|
+
goal: sprint.goal,
|
|
173
|
+
status: target,
|
|
174
|
+
created_at: sprint.created_at,
|
|
175
|
+
};
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Update a sprint's mutable properties (name, goal).
|
|
181
|
+
* Uses per-sprint advisory locking (kanban:sprint{<id>}) following AD-0015.
|
|
182
|
+
*
|
|
183
|
+
* @param db - Database connection
|
|
184
|
+
* @param id - Sprint ID
|
|
185
|
+
* @param updates - Partial update; absent fields are unchanged, empty string replaces
|
|
186
|
+
* @returns Updated sprint result
|
|
187
|
+
* @throws SprintNotFoundError if sprint doesn't exist
|
|
188
|
+
* @throws LockTimeoutError if lock cannot be acquired
|
|
189
|
+
*/
|
|
190
|
+
function updateSprint(db, id, updates) {
|
|
191
|
+
const lockName = `sprint:${id}`;
|
|
192
|
+
const owner = (0, locks_1.generateLockOwner)();
|
|
193
|
+
return (0, locks_1.withLock)(db, { name: lockName, owner }, () => {
|
|
194
|
+
const sprint = db.prepare('SELECT * FROM sprints WHERE id = ?').get(id);
|
|
195
|
+
if (!sprint) {
|
|
196
|
+
throw new errors_1.SprintNotFoundError(id);
|
|
197
|
+
}
|
|
198
|
+
// Partial update: COALESCE means undefined fields are skipped, empty string is a value
|
|
199
|
+
const now = new Date().toISOString();
|
|
200
|
+
db.prepare(`
|
|
201
|
+
UPDATE sprints
|
|
202
|
+
SET name = COALESCE(?, name),
|
|
203
|
+
goal = COALESCE(?, goal),
|
|
204
|
+
updated_at = ?
|
|
205
|
+
WHERE id = ?
|
|
206
|
+
`).run(updates.name ?? null, updates.goal ?? null, now, id);
|
|
207
|
+
return {
|
|
208
|
+
id: sprint.id,
|
|
209
|
+
name: updates.name !== undefined ? updates.name : sprint.name,
|
|
210
|
+
goal: updates.goal !== undefined ? updates.goal : sprint.goal,
|
|
211
|
+
status: sprint.status,
|
|
212
|
+
created_at: sprint.created_at,
|
|
213
|
+
};
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Resolve the default sprint (most recently created non-CLOSED sprint).
|
|
218
|
+
* Implements AD-0010: Default Sprint Resolution by Recency.
|
|
219
|
+
*
|
|
220
|
+
* @throws SprintNoneError if no sprints exist
|
|
221
|
+
* @throws SprintNotFoundError if a specific ID was given but not found
|
|
222
|
+
*/
|
|
223
|
+
function resolveSprint(db, sprintId) {
|
|
224
|
+
if (sprintId) {
|
|
225
|
+
const sprint = db.prepare('SELECT * FROM sprints WHERE id = ?').get(sprintId);
|
|
226
|
+
if (!sprint) {
|
|
227
|
+
throw new errors_1.SprintNotFoundError(sprintId);
|
|
228
|
+
}
|
|
229
|
+
return sprint;
|
|
230
|
+
}
|
|
231
|
+
// AD-0010: resolve by recency — most recently created non-CLOSED sprint
|
|
232
|
+
const sprint = db.prepare("SELECT * FROM sprints WHERE status != 'CLOSED' ORDER BY created_at DESC LIMIT 1").get();
|
|
233
|
+
if (!sprint) {
|
|
234
|
+
throw new errors_1.SprintNoneError();
|
|
235
|
+
}
|
|
236
|
+
return sprint;
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=sprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprint.js","sourceRoot":"","sources":["../../src/services/sprint.ts"],"names":[],"mappings":";AAAA,yGAAyG;AACzG,oEAAoE;AACpE,kDAAkD;AAClD,yBAAyB;;AAiCzB,oCAsCC;AAWD,8CA0CC;AAKD,oDAYC;AAKD,kCAeC;AAaD,wDAsDC;AAaD,oCAgCC;AASD,sCAmBC;AAxSD,4CAOyB;AACzB,iEAKwC;AACxC,uCAA0D;AAC1D,uCAA8C;AAE9C;;;;;;;;;;GAUG;AACH,SAAgB,YAAY,CAC1B,EAAqB,EACrB,EAAU,EACV,IAAa,EACb,IAAa;IAEb,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,2BAAkB,CAAC,2BAA2B,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAEvE,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,IAAA,yBAAiB,GAAE,CAAC;IAElC,OAAO,IAAA,gBAAQ,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;QAClD,sBAAsB;QACtB,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAClF,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,6BAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,EAAE,CAAC,OAAO,CAAC;;;KAGV,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAEpD,OAAO;YACL,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE;YACb,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,UAA0B;YAClC,UAAU,EAAE,GAAG;SAChB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,iBAAiB,CAC/B,EAAqB,EACrB,QAAiB;IAEjB,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE3C,wBAAwB;IACxB,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;GAK7B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAwC,CAAC;IAEzD,MAAM,MAAM,GAAwC;QAClD,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,CAAC;QACd,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,CAAC;KACb,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;YACxB,MAAiC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE/E,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAoC;QAChD,UAAU;QACV,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,EAAqB,EACrB,QAAiB;IAEjB,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE3C,OAAO,EAAE,CAAC,OAAO,CAAC;;;;;GAKjB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAmC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CACzB,EAAqB,EACrB,OAAmC;IAEnC,IAAI,GAAG,GAAG,uBAAuB,CAAC;IAClC,MAAM,MAAM,GAAc,EAAE,CAAC;IAE7B,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,GAAG,IAAI,mBAAmB,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,IAAI,2BAA2B,CAAC;IAEnC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAa,CAAC;AACpD,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,sBAAsB,CACpC,EAAqB,EACrB,EAAU,EACV,MAAc;IAEd,IAAI,CAAC,IAAA,kCAAmB,EAAC,MAAM,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,6BAAoB,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,EAAE,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,IAAA,yBAAiB,GAAE,CAAC;IAElC,OAAO,IAAA,gBAAQ,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;QAClD,OAAO,IAAA,uBAAe,EAAC,EAAE,EAAE,GAAG,EAAE;YAC9B,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAuB,CAAC;YAC9F,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,4BAAmB,CAAC,EAAE,CAAC,CAAC;YACpC,CAAC;YAED,sBAAsB;YACtB,IAAI,CAAC,IAAA,sCAAuB,EAAC,MAAM,CAAC,MAAM,EAAE,MAAsB,CAAC,EAAE,CAAC;gBACpE,MAAM,OAAO,GAAG,IAAA,0CAA2B,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAW,CAAC,CAAC;gBACjF,MAAM,IAAI,8BAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAClE,CAAC;YAED,kBAAkB;YAClB,MAAM,UAAU,GAAG,IAAA,sCAAuB,EAAC,MAAM,CAAC,MAAM,EAAE,MAAsB,CAAC,CAAC;YAElF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,OAAO,GAAa,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAExC,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEhB,EAAE,CAAC,OAAO,CAAC,sBAAsB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;YAEnF,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,MAAsB;gBAC9B,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,YAAY,CAC1B,EAAqB,EACrB,EAAU,EACV,OAAyC;IAEzC,MAAM,QAAQ,GAAG,UAAU,EAAE,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,IAAA,yBAAiB,GAAE,CAAC;IAElC,OAAO,IAAA,gBAAQ,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAuB,CAAC;QAC9F,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,4BAAmB,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC;QAED,uFAAuF;QACvF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,EAAE,CAAC,OAAO,CAAC;;;;;;KAMV,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAE5D,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;YAC7D,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;YAC7D,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,EAAqB,EAAE,QAAiB;IACpE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAuB,CAAC;QACpG,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,4BAAmB,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wEAAwE;IACxE,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,iFAAiF,CAClF,CAAC,GAAG,EAAwB,CAAC;IAE9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,wBAAe,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { TaskStage } from '../models/common';
|
|
2
|
+
/** Canonical stage sequence in forward order */
|
|
3
|
+
export declare const CANONICAL_STAGES: TaskStage[];
|
|
4
|
+
/**
|
|
5
|
+
* Check if a given string is a valid stage value.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isValidStage(stage: string): stage is TaskStage;
|
|
8
|
+
/**
|
|
9
|
+
* Return the canonical stage sequence.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getValidStages(): TaskStage[];
|
|
12
|
+
/**
|
|
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).
|
|
15
|
+
*/
|
|
16
|
+
export declare function isForward(current: TaskStage, target: TaskStage): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Validate that a stage progression is valid.
|
|
19
|
+
*
|
|
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
|
|
26
|
+
*
|
|
27
|
+
* @param currentStage - The task's current stage
|
|
28
|
+
* @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
|
|
34
|
+
*/
|
|
35
|
+
export declare function validateProgression(currentStage: TaskStage, targetStage: TaskStage, taskStatus: string): void;
|
|
36
|
+
//# sourceMappingURL=stage-validator.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
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)
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.CANONICAL_STAGES = void 0;
|
|
9
|
+
exports.isValidStage = isValidStage;
|
|
10
|
+
exports.getValidStages = getValidStages;
|
|
11
|
+
exports.isForward = isForward;
|
|
12
|
+
exports.validateProgression = validateProgression;
|
|
13
|
+
const errors_1 = require("../utils/errors");
|
|
14
|
+
/** Canonical stage sequence in forward order */
|
|
15
|
+
exports.CANONICAL_STAGES = [
|
|
16
|
+
'Planning',
|
|
17
|
+
'Requirement',
|
|
18
|
+
'Specification',
|
|
19
|
+
'Design',
|
|
20
|
+
'Test Plan',
|
|
21
|
+
'Implementation',
|
|
22
|
+
'Testing',
|
|
23
|
+
'Release',
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* Check if a given string is a valid stage value.
|
|
27
|
+
*/
|
|
28
|
+
function isValidStage(stage) {
|
|
29
|
+
return exports.CANONICAL_STAGES.includes(stage);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Return the canonical stage sequence.
|
|
33
|
+
*/
|
|
34
|
+
function getValidStages() {
|
|
35
|
+
return [...exports.CANONICAL_STAGES];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
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).
|
|
40
|
+
*/
|
|
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;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Validate that a stage progression is valid.
|
|
48
|
+
*
|
|
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
|
|
55
|
+
*
|
|
56
|
+
* @param currentStage - The task's current stage
|
|
57
|
+
* @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
|
|
63
|
+
*/
|
|
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
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=stage-validator.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import type { Task, TaskResult, TaskDetail, TaskAddOptions, TaskMoveContext, TaskUpdateFields } from '../models/task';
|
|
3
|
+
import type { TaskStatus } from '../models/common';
|
|
4
|
+
import { validateOwnerRole, isValidRole } from '../validators/owner-validator';
|
|
5
|
+
/**
|
|
6
|
+
* Add a new task to a sprint.
|
|
7
|
+
*
|
|
8
|
+
* @param db - Database connection
|
|
9
|
+
* @param sprintId - Sprint ID
|
|
10
|
+
* @param description - Task description
|
|
11
|
+
* @param owner - Owner role (must be valid, captain-only for Backlog)
|
|
12
|
+
* @param opts - Optional task properties
|
|
13
|
+
* @returns The created task result
|
|
14
|
+
* @throws TaskBadSprintError if sprint doesn't exist or is closed
|
|
15
|
+
* @throws TaskOwnerRequiredError if owner is empty
|
|
16
|
+
* @throws various owner validation errors
|
|
17
|
+
*/
|
|
18
|
+
export declare function addTask(db: Database.Database, sprintId: string, description: string, owner: string, opts?: TaskAddOptions): TaskResult;
|
|
19
|
+
/**
|
|
20
|
+
* Move a task: status transition, stage transition, or combined.
|
|
21
|
+
*
|
|
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
|
+
*
|
|
25
|
+
* @param db - Database connection
|
|
26
|
+
* @param taskId - Task ID (4-digit NNNN)
|
|
27
|
+
* @param opts - Move options: targetStatus, targetStage, context
|
|
28
|
+
* @returns Updated task result
|
|
29
|
+
*/
|
|
30
|
+
export declare function moveTask(db: Database.Database, taskId: string, opts: {
|
|
31
|
+
targetStatus?: string;
|
|
32
|
+
targetStage?: string;
|
|
33
|
+
context?: TaskMoveContext;
|
|
34
|
+
sprintId?: string;
|
|
35
|
+
}): TaskResult;
|
|
36
|
+
/**
|
|
37
|
+
* Update task metadata (description, type, priority, points, scope, acceptance).
|
|
38
|
+
* Does NOT change task status, stage, owner, or sprint — use moveTask for those.
|
|
39
|
+
*
|
|
40
|
+
* 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
|
+
*/
|
|
45
|
+
export declare function updateTask(db: Database.Database, taskId: string, fields: TaskUpdateFields, sprintId?: string): TaskResult;
|
|
46
|
+
/**
|
|
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
|
|
52
|
+
*/
|
|
53
|
+
export declare function removeTask(db: Database.Database, taskId: string, sprintId?: string): void;
|
|
54
|
+
/**
|
|
55
|
+
* Show detailed task information including sprint name and parent description.
|
|
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
|
+
*/
|
|
62
|
+
export declare function showTask(db: Database.Database, taskId: string, sprintId?: string): TaskDetail;
|
|
63
|
+
/**
|
|
64
|
+
* List tasks for a sprint with optional filters.
|
|
65
|
+
*/
|
|
66
|
+
export declare function listTasks(db: Database.Database, sprintId: string, filters?: {
|
|
67
|
+
status?: TaskStatus;
|
|
68
|
+
owner?: string;
|
|
69
|
+
}): Task[];
|
|
70
|
+
/**
|
|
71
|
+
* Get task status counts for a sprint.
|
|
72
|
+
*/
|
|
73
|
+
export declare function getTaskStatusCounts(db: Database.Database, sprintId: string): Record<string, number>;
|
|
74
|
+
export { isValidRole, validateOwnerRole };
|
|
75
|
+
//# sourceMappingURL=task.d.ts.map
|
|
@@ -0,0 +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,WAAW,EAAE,MAAM,EACnB,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,CAmHZ;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,CA6HZ;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"}
|