@task-mcp/shared 1.0.20 → 1.0.21

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 (167) hide show
  1. package/package.json +1 -6
  2. package/dist/algorithms/critical-path.d.ts +0 -46
  3. package/dist/algorithms/critical-path.d.ts.map +0 -1
  4. package/dist/algorithms/critical-path.js +0 -320
  5. package/dist/algorithms/critical-path.js.map +0 -1
  6. package/dist/algorithms/critical-path.test.d.ts +0 -2
  7. package/dist/algorithms/critical-path.test.d.ts.map +0 -1
  8. package/dist/algorithms/critical-path.test.js +0 -194
  9. package/dist/algorithms/critical-path.test.js.map +0 -1
  10. package/dist/algorithms/dependency-integrity.d.ts +0 -81
  11. package/dist/algorithms/dependency-integrity.d.ts.map +0 -1
  12. package/dist/algorithms/dependency-integrity.js +0 -207
  13. package/dist/algorithms/dependency-integrity.js.map +0 -1
  14. package/dist/algorithms/dependency-integrity.test.d.ts +0 -2
  15. package/dist/algorithms/dependency-integrity.test.d.ts.map +0 -1
  16. package/dist/algorithms/dependency-integrity.test.js +0 -309
  17. package/dist/algorithms/dependency-integrity.test.js.map +0 -1
  18. package/dist/algorithms/index.d.ts +0 -5
  19. package/dist/algorithms/index.d.ts.map +0 -1
  20. package/dist/algorithms/index.js +0 -5
  21. package/dist/algorithms/index.js.map +0 -1
  22. package/dist/algorithms/tech-analysis.d.ts +0 -106
  23. package/dist/algorithms/tech-analysis.d.ts.map +0 -1
  24. package/dist/algorithms/tech-analysis.js +0 -344
  25. package/dist/algorithms/tech-analysis.js.map +0 -1
  26. package/dist/algorithms/tech-analysis.test.d.ts +0 -2
  27. package/dist/algorithms/tech-analysis.test.d.ts.map +0 -1
  28. package/dist/algorithms/tech-analysis.test.js +0 -338
  29. package/dist/algorithms/tech-analysis.test.js.map +0 -1
  30. package/dist/algorithms/topological-sort.d.ts +0 -41
  31. package/dist/algorithms/topological-sort.d.ts.map +0 -1
  32. package/dist/algorithms/topological-sort.js +0 -165
  33. package/dist/algorithms/topological-sort.js.map +0 -1
  34. package/dist/algorithms/topological-sort.test.d.ts +0 -2
  35. package/dist/algorithms/topological-sort.test.d.ts.map +0 -1
  36. package/dist/algorithms/topological-sort.test.js +0 -162
  37. package/dist/algorithms/topological-sort.test.js.map +0 -1
  38. package/dist/index.d.ts +0 -4
  39. package/dist/index.d.ts.map +0 -1
  40. package/dist/index.js +0 -7
  41. package/dist/index.js.map +0 -1
  42. package/dist/schemas/inbox.d.ts +0 -55
  43. package/dist/schemas/inbox.d.ts.map +0 -1
  44. package/dist/schemas/inbox.js +0 -25
  45. package/dist/schemas/inbox.js.map +0 -1
  46. package/dist/schemas/index.d.ts +0 -7
  47. package/dist/schemas/index.d.ts.map +0 -1
  48. package/dist/schemas/index.js +0 -17
  49. package/dist/schemas/index.js.map +0 -1
  50. package/dist/schemas/project.d.ts +0 -177
  51. package/dist/schemas/project.d.ts.map +0 -1
  52. package/dist/schemas/project.js +0 -56
  53. package/dist/schemas/project.js.map +0 -1
  54. package/dist/schemas/response-format.d.ts +0 -148
  55. package/dist/schemas/response-format.d.ts.map +0 -1
  56. package/dist/schemas/response-format.js +0 -18
  57. package/dist/schemas/response-format.js.map +0 -1
  58. package/dist/schemas/response-schema.d.ts +0 -307
  59. package/dist/schemas/response-schema.d.ts.map +0 -1
  60. package/dist/schemas/response-schema.js +0 -75
  61. package/dist/schemas/response-schema.js.map +0 -1
  62. package/dist/schemas/response-schema.test.d.ts +0 -2
  63. package/dist/schemas/response-schema.test.d.ts.map +0 -1
  64. package/dist/schemas/response-schema.test.js +0 -256
  65. package/dist/schemas/response-schema.test.js.map +0 -1
  66. package/dist/schemas/state.d.ts +0 -17
  67. package/dist/schemas/state.d.ts.map +0 -1
  68. package/dist/schemas/state.js +0 -17
  69. package/dist/schemas/state.js.map +0 -1
  70. package/dist/schemas/task.d.ts +0 -881
  71. package/dist/schemas/task.d.ts.map +0 -1
  72. package/dist/schemas/task.js +0 -189
  73. package/dist/schemas/task.js.map +0 -1
  74. package/dist/schemas/view.d.ts +0 -143
  75. package/dist/schemas/view.d.ts.map +0 -1
  76. package/dist/schemas/view.js +0 -48
  77. package/dist/schemas/view.js.map +0 -1
  78. package/dist/utils/dashboard-renderer.d.ts +0 -93
  79. package/dist/utils/dashboard-renderer.d.ts.map +0 -1
  80. package/dist/utils/dashboard-renderer.js +0 -424
  81. package/dist/utils/dashboard-renderer.js.map +0 -1
  82. package/dist/utils/dashboard-renderer.test.d.ts +0 -2
  83. package/dist/utils/dashboard-renderer.test.d.ts.map +0 -1
  84. package/dist/utils/dashboard-renderer.test.js +0 -774
  85. package/dist/utils/dashboard-renderer.test.js.map +0 -1
  86. package/dist/utils/date.d.ts +0 -94
  87. package/dist/utils/date.d.ts.map +0 -1
  88. package/dist/utils/date.js +0 -323
  89. package/dist/utils/date.js.map +0 -1
  90. package/dist/utils/date.test.d.ts +0 -2
  91. package/dist/utils/date.test.d.ts.map +0 -1
  92. package/dist/utils/date.test.js +0 -276
  93. package/dist/utils/date.test.js.map +0 -1
  94. package/dist/utils/hierarchy.d.ts +0 -102
  95. package/dist/utils/hierarchy.d.ts.map +0 -1
  96. package/dist/utils/hierarchy.js +0 -236
  97. package/dist/utils/hierarchy.js.map +0 -1
  98. package/dist/utils/hierarchy.test.d.ts +0 -2
  99. package/dist/utils/hierarchy.test.d.ts.map +0 -1
  100. package/dist/utils/hierarchy.test.js +0 -436
  101. package/dist/utils/hierarchy.test.js.map +0 -1
  102. package/dist/utils/id.d.ts +0 -60
  103. package/dist/utils/id.d.ts.map +0 -1
  104. package/dist/utils/id.js +0 -118
  105. package/dist/utils/id.js.map +0 -1
  106. package/dist/utils/id.test.d.ts +0 -2
  107. package/dist/utils/id.test.d.ts.map +0 -1
  108. package/dist/utils/id.test.js +0 -193
  109. package/dist/utils/id.test.js.map +0 -1
  110. package/dist/utils/index.d.ts +0 -12
  111. package/dist/utils/index.d.ts.map +0 -1
  112. package/dist/utils/index.js +0 -34
  113. package/dist/utils/index.js.map +0 -1
  114. package/dist/utils/natural-language.d.ts +0 -57
  115. package/dist/utils/natural-language.d.ts.map +0 -1
  116. package/dist/utils/natural-language.js +0 -211
  117. package/dist/utils/natural-language.js.map +0 -1
  118. package/dist/utils/natural-language.test.d.ts +0 -2
  119. package/dist/utils/natural-language.test.d.ts.map +0 -1
  120. package/dist/utils/natural-language.test.js +0 -197
  121. package/dist/utils/natural-language.test.js.map +0 -1
  122. package/dist/utils/priority-queue.d.ts +0 -17
  123. package/dist/utils/priority-queue.d.ts.map +0 -1
  124. package/dist/utils/priority-queue.js +0 -62
  125. package/dist/utils/priority-queue.js.map +0 -1
  126. package/dist/utils/priority-queue.test.d.ts +0 -2
  127. package/dist/utils/priority-queue.test.d.ts.map +0 -1
  128. package/dist/utils/priority-queue.test.js +0 -82
  129. package/dist/utils/priority-queue.test.js.map +0 -1
  130. package/dist/utils/projection.d.ts +0 -65
  131. package/dist/utils/projection.d.ts.map +0 -1
  132. package/dist/utils/projection.js +0 -180
  133. package/dist/utils/projection.js.map +0 -1
  134. package/dist/utils/projection.test.d.ts +0 -2
  135. package/dist/utils/projection.test.d.ts.map +0 -1
  136. package/dist/utils/projection.test.js +0 -336
  137. package/dist/utils/projection.test.js.map +0 -1
  138. package/dist/utils/terminal-ui.d.ts +0 -208
  139. package/dist/utils/terminal-ui.d.ts.map +0 -1
  140. package/dist/utils/terminal-ui.js +0 -611
  141. package/dist/utils/terminal-ui.js.map +0 -1
  142. package/dist/utils/terminal-ui.test.d.ts +0 -2
  143. package/dist/utils/terminal-ui.test.d.ts.map +0 -1
  144. package/dist/utils/terminal-ui.test.js +0 -683
  145. package/dist/utils/terminal-ui.test.js.map +0 -1
  146. package/dist/utils/workspace.d.ts +0 -100
  147. package/dist/utils/workspace.d.ts.map +0 -1
  148. package/dist/utils/workspace.js +0 -173
  149. package/dist/utils/workspace.js.map +0 -1
  150. package/dist/utils/workspace.test.d.ts +0 -2
  151. package/dist/utils/workspace.test.d.ts.map +0 -1
  152. package/dist/utils/workspace.test.js +0 -97
  153. package/dist/utils/workspace.test.js.map +0 -1
  154. package/src/algorithms/critical-path.test.ts +0 -241
  155. package/src/algorithms/dependency-integrity.test.ts +0 -348
  156. package/src/algorithms/tech-analysis.test.ts +0 -413
  157. package/src/algorithms/topological-sort.test.ts +0 -190
  158. package/src/schemas/response-schema.test.ts +0 -314
  159. package/src/utils/dashboard-renderer.test.ts +0 -983
  160. package/src/utils/date.test.ts +0 -329
  161. package/src/utils/hierarchy.test.ts +0 -505
  162. package/src/utils/id.test.ts +0 -235
  163. package/src/utils/natural-language.test.ts +0 -242
  164. package/src/utils/priority-queue.test.ts +0 -103
  165. package/src/utils/projection.test.ts +0 -425
  166. package/src/utils/terminal-ui.test.ts +0 -831
  167. package/src/utils/workspace.test.ts +0 -125
@@ -1,5 +0,0 @@
1
- export { topologicalSort, wouldCreateCycle, findDependents, findDependencies, priorityToNumber, taskToNode, } from "./topological-sort.js";
2
- export { criticalPathAnalysis, findParallelTasks, suggestNextTask, } from "./critical-path.js";
3
- export { suggestSafeOrder, findBreakingChanges, findHighRiskTasks, groupByTechArea, getComplexitySummary, getTechStackSummary, suggestSubtaskCount, } from "./tech-analysis.js";
4
- export { validateDependency, findInvalidDependencies, findSelfDependencies, detectCircularDependencies, checkDependencyIntegrity, DependencyErrorCode, } from "./dependency-integrity.js";
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,GAEX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,GAGhB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,GAMpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,GAKpB,MAAM,2BAA2B,CAAC"}
@@ -1,106 +0,0 @@
1
- import type { Task, TechArea, RiskLevel } from "../schemas/task.js";
2
- /**
3
- * Result of safe order suggestion
4
- */
5
- export interface SafeOrderResult {
6
- /** Tasks ordered for safe execution */
7
- orderedTasks: Task[];
8
- /** Grouping by phase/tech level */
9
- phases: SafeOrderPhase[];
10
- /** Summary statistics */
11
- summary: {
12
- totalTasks: number;
13
- breakingChanges: number;
14
- highRiskCount: number;
15
- };
16
- }
17
- /**
18
- * A phase in the safe execution order
19
- */
20
- export interface SafeOrderPhase {
21
- /** Phase number (1-based) */
22
- phase: number;
23
- /** Primary tech area for this phase */
24
- primaryArea: TechArea | "mixed";
25
- /** Tasks in this phase */
26
- tasks: Task[];
27
- /** Notes about this phase */
28
- notes: string[];
29
- }
30
- /**
31
- * Suggest safe execution order for tasks
32
- *
33
- * Ordering strategy:
34
- * 1. Tech level (schema → infra → devops → backend → frontend → test → docs → refactor)
35
- * 2. Risk level within same tech level (low → medium → high → critical)
36
- * 3. Breaking changes last within same tech/risk level
37
- * 4. Priority as tiebreaker (critical > high > medium > low)
38
- */
39
- export declare function suggestSafeOrder(tasks: Task[]): SafeOrderResult;
40
- /**
41
- * Find tasks with breaking changes
42
- */
43
- export declare function findBreakingChanges(tasks: Task[]): Task[];
44
- /**
45
- * Find high-risk tasks (high or critical risk level)
46
- */
47
- export declare function findHighRiskTasks(tasks: Task[]): Task[];
48
- /**
49
- * Group tasks by tech area
50
- * A task may appear in multiple groups if it spans multiple areas
51
- */
52
- export declare function groupByTechArea(tasks: Task[]): Map<TechArea, Task[]>;
53
- /**
54
- * Complexity distribution by level
55
- */
56
- export interface ComplexityDistribution {
57
- low: number;
58
- medium: number;
59
- high: number;
60
- }
61
- /**
62
- * Get complexity summary for a project
63
- */
64
- export interface ComplexitySummary {
65
- /** Distribution of complexity scores */
66
- distribution: ComplexityDistribution;
67
- /** Tasks that should be broken down (score >= BREAKDOWN_MIN) */
68
- needsBreakdown: Task[];
69
- /** Average complexity score */
70
- averageScore: number;
71
- /** Tasks without complexity analysis */
72
- unanalyzed: Task[];
73
- }
74
- /**
75
- * Analyze complexity distribution across tasks
76
- */
77
- export declare function getComplexitySummary(tasks: Task[]): ComplexitySummary;
78
- /**
79
- * Get tech stack summary for a project
80
- */
81
- export interface TechStackSummary {
82
- /** Count of tasks per tech area */
83
- areaCounts: Record<TechArea, number>;
84
- /** Tasks with breaking changes */
85
- breakingChanges: Task[];
86
- /** Risk distribution */
87
- riskDistribution: Record<RiskLevel, number>;
88
- /** Tasks without tech stack analysis */
89
- unanalyzed: Task[];
90
- }
91
- /**
92
- * Analyze tech stack distribution across tasks
93
- */
94
- export declare function getTechStackSummary(tasks: Task[]): TechStackSummary;
95
- /**
96
- * Suggest number of subtasks based on complexity score
97
- *
98
- * Mapping:
99
- * 1-2: 0 (no breakdown needed)
100
- * 3-4: 2 (minimal breakdown)
101
- * 5-6: 3-4 (moderate breakdown)
102
- * 7-8: 5-6 (significant breakdown)
103
- * 9-10: 7-10 (extensive breakdown)
104
- */
105
- export declare function suggestSubtaskCount(score: number): number;
106
- //# sourceMappingURL=tech-analysis.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tech-analysis.d.ts","sourceRoot":"","sources":["../../src/algorithms/tech-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AA8EpE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,YAAY,EAAE,IAAI,EAAE,CAAC;IACrB,mCAAmC;IACnC,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,yBAAyB;IACzB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC;IAChC,0BAA0B;IAC1B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,6BAA6B;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AA4BD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,eAAe,CA4F/D;AAoBD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAMzD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAMvD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CA6BpE;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,YAAY,EAAE,sBAAsB,CAAC;IACrC,gEAAgE;IAChE,cAAc,EAAE,IAAI,EAAE,CAAC;IACvB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,UAAU,EAAE,IAAI,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAsCrE;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrC,kCAAkC;IAClC,eAAe,EAAE,IAAI,EAAE,CAAC;IACxB,wBAAwB;IACxB,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC5C,wCAAwC;IACxC,UAAU,EAAE,IAAI,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAgDnE;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAwBzD"}
@@ -1,344 +0,0 @@
1
- /**
2
- * Tech area ordering rules (lower = execute first)
3
- * Based on dependency flow: DB changes → Infrastructure → Backend → Frontend → Tests
4
- */
5
- const TECH_ORDER = {
6
- schema: 0, // DB/schema changes first
7
- infra: 0, // Infrastructure setup
8
- devops: 1, // CI/CD pipelines
9
- backend: 2, // API/server
10
- frontend: 3, // UI
11
- test: 4, // Tests
12
- docs: 4, // Documentation
13
- refactor: 5, // Refactoring last
14
- };
15
- /**
16
- * Risk level ordering (lower = safer, execute first)
17
- */
18
- const RISK_ORDER = {
19
- low: 0,
20
- medium: 1,
21
- high: 2,
22
- critical: 3,
23
- };
24
- /**
25
- * Priority ordering for tiebreaker sorting (lower = higher priority)
26
- */
27
- const PRIORITY_ORDER = {
28
- critical: 0,
29
- high: 1,
30
- medium: 2,
31
- low: 3,
32
- };
33
- /** Default priority order when priority is undefined */
34
- const DEFAULT_PRIORITY_ORDER = PRIORITY_ORDER.medium;
35
- /** Initial value for tech order tracking (before any phase) */
36
- const INITIAL_TECH_ORDER = -1;
37
- /**
38
- * Complexity score thresholds for categorization
39
- */
40
- const COMPLEXITY_THRESHOLDS = {
41
- /** Maximum score for "low" complexity (1-3) */
42
- LOW_MAX: 3,
43
- /** Maximum score for "medium" complexity (4-6) */
44
- MEDIUM_MAX: 6,
45
- /** Minimum score requiring task breakdown (7+) */
46
- BREAKDOWN_MIN: 7,
47
- };
48
- /**
49
- * Complexity score ranges for subtask suggestion calculation
50
- */
51
- const SUBTASK_CALCULATION = {
52
- /** Maximum score requiring no breakdown */
53
- NO_BREAKDOWN_MAX: 2,
54
- /** Maximum score for minimal breakdown */
55
- MINIMAL_BREAKDOWN_MAX: 4,
56
- /** Subtask count for minimal breakdown */
57
- MINIMAL_SUBTASK_COUNT: 2,
58
- /** Maximum score for moderate breakdown (3-4 subtasks) */
59
- MODERATE_BREAKDOWN_MAX: 6,
60
- /** Maximum score for significant breakdown (5-6 subtasks) */
61
- SIGNIFICANT_BREAKDOWN_MAX: 8,
62
- /** Coefficients for subtask count calculation */
63
- MODERATE_COEFFICIENT: 0.5,
64
- MODERATE_BASE: 3,
65
- SIGNIFICANT_COEFFICIENT: 0.5,
66
- SIGNIFICANT_BASE: 5,
67
- EXTENSIVE_COEFFICIENT: 1.5,
68
- EXTENSIVE_BASE: 7,
69
- };
70
- /**
71
- * Get the minimum tech order value for a task
72
- * If multiple areas, use the lowest (most foundational)
73
- */
74
- function getMinTechOrder(task) {
75
- const areas = task.techStack?.areas ?? [];
76
- if (areas.length === 0)
77
- return TECH_ORDER.backend; // Default to backend
78
- return Math.min(...areas.map((area) => TECH_ORDER[area]));
79
- }
80
- /**
81
- * Get the risk order value for a task
82
- */
83
- function getRiskOrder(task) {
84
- const riskLevel = task.techStack?.riskLevel ?? "medium";
85
- return RISK_ORDER[riskLevel];
86
- }
87
- /**
88
- * Check if a task has breaking changes
89
- */
90
- function hasBreakingChange(task) {
91
- return task.techStack?.hasBreakingChange === true;
92
- }
93
- /**
94
- * Suggest safe execution order for tasks
95
- *
96
- * Ordering strategy:
97
- * 1. Tech level (schema → infra → devops → backend → frontend → test → docs → refactor)
98
- * 2. Risk level within same tech level (low → medium → high → critical)
99
- * 3. Breaking changes last within same tech/risk level
100
- * 4. Priority as tiebreaker (critical > high > medium > low)
101
- */
102
- export function suggestSafeOrder(tasks) {
103
- // Filter to active tasks only
104
- const activeTasks = tasks.filter((t) => t.status === "pending" || t.status === "in_progress");
105
- if (activeTasks.length === 0) {
106
- return {
107
- orderedTasks: [],
108
- phases: [],
109
- summary: {
110
- totalTasks: 0,
111
- breakingChanges: 0,
112
- highRiskCount: 0,
113
- },
114
- };
115
- }
116
- // Sort tasks
117
- const sorted = [...activeTasks].sort((a, b) => {
118
- // 1. Tech level (lower first)
119
- const techDiff = getMinTechOrder(a) - getMinTechOrder(b);
120
- if (techDiff !== 0)
121
- return techDiff;
122
- // 2. Risk level (lower first)
123
- const riskDiff = getRiskOrder(a) - getRiskOrder(b);
124
- if (riskDiff !== 0)
125
- return riskDiff;
126
- // 3. Breaking changes last
127
- const aBreaking = hasBreakingChange(a) ? 1 : 0;
128
- const bBreaking = hasBreakingChange(b) ? 1 : 0;
129
- if (aBreaking !== bBreaking)
130
- return aBreaking - bBreaking;
131
- // 4. Priority as tiebreaker (higher priority first)
132
- return (PRIORITY_ORDER[a.priority] ?? DEFAULT_PRIORITY_ORDER) - (PRIORITY_ORDER[b.priority] ?? DEFAULT_PRIORITY_ORDER);
133
- });
134
- // Group into phases by tech level
135
- const phases = [];
136
- let currentTechOrder = INITIAL_TECH_ORDER;
137
- let currentPhase = null;
138
- for (const task of sorted) {
139
- const techOrder = getMinTechOrder(task);
140
- if (techOrder !== currentTechOrder) {
141
- // Start new phase
142
- const primaryArea = getPrimaryArea(task);
143
- currentPhase = {
144
- phase: phases.length + 1,
145
- primaryArea,
146
- tasks: [task],
147
- notes: [],
148
- };
149
- phases.push(currentPhase);
150
- currentTechOrder = techOrder;
151
- }
152
- else {
153
- // Add to current phase
154
- currentPhase.tasks.push(task);
155
- }
156
- }
157
- // Add notes to phases
158
- for (const phase of phases) {
159
- const breakingCount = phase.tasks.filter(hasBreakingChange).length;
160
- const highRiskCount = phase.tasks.filter((t) => t.techStack?.riskLevel === "high" || t.techStack?.riskLevel === "critical").length;
161
- if (breakingCount > 0) {
162
- phase.notes.push(`${breakingCount} breaking change(s) - test thoroughly`);
163
- }
164
- if (highRiskCount > 0) {
165
- phase.notes.push(`${highRiskCount} high-risk task(s) - review carefully`);
166
- }
167
- }
168
- // Calculate summary
169
- const breakingChanges = sorted.filter(hasBreakingChange).length;
170
- const highRiskCount = sorted.filter((t) => t.techStack?.riskLevel === "high" || t.techStack?.riskLevel === "critical").length;
171
- return {
172
- orderedTasks: sorted,
173
- phases,
174
- summary: {
175
- totalTasks: sorted.length,
176
- breakingChanges,
177
- highRiskCount,
178
- },
179
- };
180
- }
181
- /**
182
- * Get the primary tech area for a task
183
- */
184
- function getPrimaryArea(task) {
185
- const areas = task.techStack?.areas;
186
- if (!areas || areas.length === 0)
187
- return "mixed";
188
- // Return the one with lowest order (most foundational)
189
- let primary = areas[0];
190
- for (let i = 1; i < areas.length; i++) {
191
- const area = areas[i];
192
- if (TECH_ORDER[area] < TECH_ORDER[primary]) {
193
- primary = area;
194
- }
195
- }
196
- return primary;
197
- }
198
- /**
199
- * Find tasks with breaking changes
200
- */
201
- export function findBreakingChanges(tasks) {
202
- return tasks.filter((t) => (t.status === "pending" || t.status === "in_progress") &&
203
- hasBreakingChange(t));
204
- }
205
- /**
206
- * Find high-risk tasks (high or critical risk level)
207
- */
208
- export function findHighRiskTasks(tasks) {
209
- return tasks.filter((t) => (t.status === "pending" || t.status === "in_progress") &&
210
- (t.techStack?.riskLevel === "high" || t.techStack?.riskLevel === "critical"));
211
- }
212
- /**
213
- * Group tasks by tech area
214
- * A task may appear in multiple groups if it spans multiple areas
215
- */
216
- export function groupByTechArea(tasks) {
217
- const groups = new Map();
218
- // Initialize all groups
219
- const allAreas = [
220
- "schema", "infra", "devops", "backend", "frontend", "test", "docs", "refactor"
221
- ];
222
- for (const area of allAreas) {
223
- groups.set(area, []);
224
- }
225
- // Group active tasks
226
- const activeTasks = tasks.filter((t) => t.status === "pending" || t.status === "in_progress");
227
- for (const task of activeTasks) {
228
- const areas = task.techStack?.areas ?? [];
229
- if (areas.length === 0) {
230
- // Default to backend if no area specified
231
- groups.get("backend").push(task);
232
- }
233
- else {
234
- for (const area of areas) {
235
- groups.get(area).push(task);
236
- }
237
- }
238
- }
239
- return groups;
240
- }
241
- /**
242
- * Analyze complexity distribution across tasks
243
- */
244
- export function getComplexitySummary(tasks) {
245
- const activeTasks = tasks.filter((t) => t.status === "pending" || t.status === "in_progress");
246
- const analyzed = activeTasks.filter((t) => t.complexity?.score !== undefined);
247
- const unanalyzed = activeTasks.filter((t) => t.complexity?.score === undefined);
248
- // Calculate distribution
249
- const distribution = {
250
- low: 0,
251
- medium: 0,
252
- high: 0,
253
- };
254
- let totalScore = 0;
255
- const needsBreakdown = [];
256
- for (const task of analyzed) {
257
- const score = task.complexity.score;
258
- totalScore += score;
259
- if (score <= COMPLEXITY_THRESHOLDS.LOW_MAX) {
260
- distribution.low++;
261
- }
262
- else if (score <= COMPLEXITY_THRESHOLDS.MEDIUM_MAX) {
263
- distribution.medium++;
264
- }
265
- else {
266
- distribution.high++;
267
- needsBreakdown.push(task);
268
- }
269
- }
270
- return {
271
- distribution,
272
- needsBreakdown,
273
- averageScore: analyzed.length > 0 ? totalScore / analyzed.length : 0,
274
- unanalyzed,
275
- };
276
- }
277
- /**
278
- * Analyze tech stack distribution across tasks
279
- */
280
- export function getTechStackSummary(tasks) {
281
- const activeTasks = tasks.filter((t) => t.status === "pending" || t.status === "in_progress");
282
- const analyzed = activeTasks.filter((t) => t.techStack?.areas !== undefined);
283
- const unanalyzed = activeTasks.filter((t) => t.techStack?.areas === undefined);
284
- // Count by area
285
- const areaCounts = {
286
- schema: 0,
287
- infra: 0,
288
- devops: 0,
289
- backend: 0,
290
- frontend: 0,
291
- test: 0,
292
- docs: 0,
293
- refactor: 0,
294
- };
295
- for (const task of analyzed) {
296
- for (const area of task.techStack.areas) {
297
- areaCounts[area]++;
298
- }
299
- }
300
- // Risk distribution
301
- const riskDistribution = {
302
- low: 0,
303
- medium: 0,
304
- high: 0,
305
- critical: 0,
306
- };
307
- for (const task of analyzed) {
308
- const risk = task.techStack?.riskLevel ?? "medium";
309
- riskDistribution[risk]++;
310
- }
311
- // Breaking changes
312
- const breakingChanges = findBreakingChanges(activeTasks);
313
- return {
314
- areaCounts,
315
- breakingChanges,
316
- riskDistribution,
317
- unanalyzed,
318
- };
319
- }
320
- /**
321
- * Suggest number of subtasks based on complexity score
322
- *
323
- * Mapping:
324
- * 1-2: 0 (no breakdown needed)
325
- * 3-4: 2 (minimal breakdown)
326
- * 5-6: 3-4 (moderate breakdown)
327
- * 7-8: 5-6 (significant breakdown)
328
- * 9-10: 7-10 (extensive breakdown)
329
- */
330
- export function suggestSubtaskCount(score) {
331
- const { NO_BREAKDOWN_MAX, MINIMAL_BREAKDOWN_MAX, MINIMAL_SUBTASK_COUNT, MODERATE_BREAKDOWN_MAX, SIGNIFICANT_BREAKDOWN_MAX, MODERATE_COEFFICIENT, MODERATE_BASE, SIGNIFICANT_COEFFICIENT, SIGNIFICANT_BASE, EXTENSIVE_COEFFICIENT, EXTENSIVE_BASE, } = SUBTASK_CALCULATION;
332
- if (score <= NO_BREAKDOWN_MAX)
333
- return 0;
334
- if (score <= MINIMAL_BREAKDOWN_MAX)
335
- return MINIMAL_SUBTASK_COUNT;
336
- if (score <= MODERATE_BREAKDOWN_MAX) {
337
- return Math.ceil((score - MINIMAL_BREAKDOWN_MAX) * MODERATE_COEFFICIENT + MODERATE_BASE);
338
- }
339
- if (score <= SIGNIFICANT_BREAKDOWN_MAX) {
340
- return Math.ceil((score - MODERATE_BREAKDOWN_MAX) * SIGNIFICANT_COEFFICIENT + SIGNIFICANT_BASE);
341
- }
342
- return Math.ceil((score - SIGNIFICANT_BREAKDOWN_MAX) * EXTENSIVE_COEFFICIENT + EXTENSIVE_BASE);
343
- }
344
- //# sourceMappingURL=tech-analysis.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tech-analysis.js","sourceRoot":"","sources":["../../src/algorithms/tech-analysis.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tech-analysis.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tech-analysis.test.d.ts","sourceRoot":"","sources":["../../src/algorithms/tech-analysis.test.ts"],"names":[],"mappings":""}